summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitattributes1
-rw-r--r--.travis.yml58
-rw-r--r--AUTHORS.md2
-rw-r--r--CONTRIBUTING.md2
-rw-r--r--DONORS.md51
-rw-r--r--LICENSE.txt2
-rw-r--r--README.md2
-rw-r--r--compat.py4
-rw-r--r--core/bind/core_bind.cpp1
-rw-r--r--core/class_db.cpp19
-rw-r--r--core/class_db.h1
-rw-r--r--core/command_queue_mt.h46
-rw-r--r--core/error_macros.cpp7
-rw-r--r--core/error_macros.h41
-rw-r--r--core/global_constants.cpp150
-rw-r--r--core/image.cpp2
-rw-r--r--core/io/SCsub1
-rw-r--r--core/io/compression.cpp20
-rw-r--r--core/io/compression.h2
-rw-r--r--core/io/file_access_encrypted.cpp4
-rw-r--r--core/io/http_client.cpp12
-rw-r--r--core/io/http_client.h2
-rw-r--r--core/io/logger.cpp6
-rw-r--r--core/io/resource_format_binary.cpp18
-rw-r--r--core/make_binders.py2
-rw-r--r--core/map.h1
-rw-r--r--core/math/a_star.cpp56
-rw-r--r--core/math/a_star.h6
-rw-r--r--core/math/math_funcs.h17
-rw-r--r--core/math/matrix3.cpp38
-rw-r--r--core/math/matrix3.h15
-rw-r--r--core/os/input.cpp1
-rw-r--r--core/os/input_event.cpp2
-rw-r--r--core/os/input_event.h4
-rw-r--r--core/os/keyboard.cpp22
-rw-r--r--core/os/main_loop.cpp1
-rw-r--r--core/os/os.h1
-rw-r--r--core/project_settings.cpp59
-rw-r--r--core/project_settings.h2
-rw-r--r--core/script_debugger_remote.cpp12
-rw-r--r--core/script_language.cpp1
-rw-r--r--core/script_language.h3
-rw-r--r--core/set.h1
-rw-r--r--core/translation.cpp149
-rw-r--r--core/translation.h7
-rw-r--r--core/typedefs.h4
-rw-r--r--core/ustring.cpp22
-rw-r--r--core/ustring.h4
-rw-r--r--core/variant.h8
-rw-r--r--core/variant_call.cpp599
-rw-r--r--core/variant_op.cpp8
-rw-r--r--doc/Makefile2
-rw-r--r--doc/classes/@Global Scope.xml288
-rw-r--r--doc/classes/ARVRAnchor.xml1
-rw-r--r--doc/classes/ARVRController.xml2
-rw-r--r--doc/classes/ARVRInterface.xml2
-rw-r--r--doc/classes/ARVROrigin.xml2
-rw-r--r--doc/classes/ARVRPositionalTracker.xml4
-rw-r--r--doc/classes/ARVRScriptInterface.xml118
-rw-r--r--doc/classes/ARVRServer.xml15
-rw-r--r--doc/classes/AStar.xml25
-rw-r--r--doc/classes/AnimationPlayer.xml6
-rw-r--r--doc/classes/AnimationTreePlayer.xml2
-rw-r--r--doc/classes/Area.xml4
-rw-r--r--doc/classes/Area2D.xml4
-rw-r--r--doc/classes/Array.xml6
-rw-r--r--doc/classes/ArrayMesh.xml2
-rw-r--r--doc/classes/AudioEffectBandLimitFilter.xml2
-rw-r--r--doc/classes/AudioEffectBandPassFilter.xml2
-rw-r--r--doc/classes/AudioEffectDistortion.xml2
-rw-r--r--doc/classes/AudioEffectFilter.xml7
-rw-r--r--doc/classes/AudioEffectHighPassFilter.xml2
-rw-r--r--doc/classes/AudioEffectLowPassFilter.xml2
-rw-r--r--doc/classes/AudioEffectNotchFilter.xml2
-rw-r--r--doc/classes/AudioEffectReverb.xml2
-rw-r--r--doc/classes/AudioServer.xml2
-rw-r--r--doc/classes/AudioStreamPlayer3D.xml8
-rw-r--r--doc/classes/BaseButton.xml11
-rw-r--r--doc/classes/BitmapFont.xml31
-rw-r--r--doc/classes/Camera.xml2
-rw-r--r--doc/classes/Camera2D.xml15
-rw-r--r--doc/classes/CanvasItem.xml6
-rw-r--r--doc/classes/CanvasLayer.xml2
-rw-r--r--doc/classes/CapsuleShape2D.xml8
-rw-r--r--doc/classes/CheckBox.xml2
-rw-r--r--doc/classes/CollisionObject.xml2
-rw-r--r--doc/classes/CollisionObject2D.xml2
-rw-r--r--doc/classes/ColorPicker.xml2
-rw-r--r--doc/classes/ColorPickerButton.xml2
-rw-r--r--doc/classes/ConcavePolygonShape2D.xml2
-rw-r--r--doc/classes/ConeTwistJoint.xml25
-rw-r--r--doc/classes/ConfigFile.xml31
-rw-r--r--doc/classes/Container.xml2
-rw-r--r--doc/classes/Control.xml37
-rw-r--r--doc/classes/ConvexPolygonShape2D.xml2
-rw-r--r--doc/classes/CubeMap.xml14
-rw-r--r--doc/classes/Curve.xml2
-rw-r--r--doc/classes/Curve2D.xml3
-rw-r--r--doc/classes/DampedSpringJoint2D.xml4
-rw-r--r--doc/classes/Dictionary.xml4
-rw-r--r--doc/classes/DynamicFont.xml28
-rw-r--r--doc/classes/DynamicFontData.xml5
-rw-r--r--doc/classes/EditorImportPlugin.xml6
-rw-r--r--doc/classes/EditorInterface.xml22
-rw-r--r--doc/classes/EditorPlugin.xml2
-rw-r--r--doc/classes/EditorResourcePreview.xml2
-rw-r--r--doc/classes/EditorScript.xml16
-rw-r--r--doc/classes/EditorSelection.xml2
-rw-r--r--doc/classes/EditorSettings.xml52
-rw-r--r--doc/classes/EditorSpatialGizmo.xml2
-rw-r--r--doc/classes/Engine.xml2
-rw-r--r--doc/classes/Environment.xml72
-rw-r--r--doc/classes/FileDialog.xml6
-rw-r--r--doc/classes/FuncRef.xml2
-rw-r--r--doc/classes/GIProbe.xml2
-rw-r--r--doc/classes/Generic6DOFJoint.xml73
-rw-r--r--doc/classes/GraphEdit.xml4
-rw-r--r--doc/classes/GrooveJoint2D.xml2
-rw-r--r--doc/classes/HSlider.xml2
-rw-r--r--doc/classes/HTTPClient.xml24
-rw-r--r--doc/classes/HTTPRequest.xml2
-rw-r--r--doc/classes/HingeJoint.xml22
-rw-r--r--doc/classes/Image.xml67
-rw-r--r--doc/classes/ImageTexture.xml18
-rw-r--r--doc/classes/Input.xml30
-rw-r--r--doc/classes/InputEvent.xml20
-rw-r--r--doc/classes/InputEventAction.xml4
-rw-r--r--doc/classes/InputEventJoypadButton.xml10
-rw-r--r--doc/classes/InputEventJoypadMotion.xml8
-rw-r--r--doc/classes/InputEventKey.xml10
-rw-r--r--doc/classes/InputEventMouse.xml6
-rw-r--r--doc/classes/InputEventMouseButton.xml7
-rw-r--r--doc/classes/InputEventMouseMotion.xml6
-rw-r--r--doc/classes/InputEventScreenDrag.xml9
-rw-r--r--doc/classes/InputEventScreenTouch.xml9
-rw-r--r--doc/classes/InputEventWithModifiers.xml4
-rw-r--r--doc/classes/InputMap.xml24
-rw-r--r--doc/classes/ItemList.xml4
-rw-r--r--doc/classes/JSONParseResult.xml4
-rw-r--r--doc/classes/Joint.xml6
-rw-r--r--doc/classes/Joint2D.xml4
-rw-r--r--doc/classes/KinematicBody.xml2
-rw-r--r--doc/classes/KinematicBody2D.xml4
-rw-r--r--doc/classes/Light.xml2
-rw-r--r--doc/classes/LineEdit.xml78
-rw-r--r--doc/classes/LinkButton.xml2
-rw-r--r--doc/classes/MainLoop.xml4
-rw-r--r--doc/classes/Mutex.xml6
-rw-r--r--doc/classes/NetworkedMultiplayerPeer.xml4
-rw-r--r--doc/classes/NinePatchRect.xml2
-rw-r--r--doc/classes/Node.xml123
-rw-r--r--doc/classes/Node2D.xml44
-rw-r--r--doc/classes/NodePath.xml4
-rw-r--r--doc/classes/OS.xml18
-rw-r--r--doc/classes/Object.xml4
-rw-r--r--doc/classes/OccluderPolygon2D.xml8
-rw-r--r--doc/classes/OptionButton.xml2
-rw-r--r--doc/classes/PacketPeerUDP.xml8
-rw-r--r--doc/classes/ParallaxBackground.xml8
-rw-r--r--doc/classes/ParallaxLayer.xml6
-rw-r--r--doc/classes/Particles2D.xml12
-rw-r--r--doc/classes/Path2D.xml5
-rw-r--r--doc/classes/Physics2DDirectSpaceState.xml10
-rw-r--r--doc/classes/Physics2DServer.xml180
-rw-r--r--doc/classes/Physics2DServerSW.xml2
-rw-r--r--doc/classes/Physics2DShapeQueryParameters.xml6
-rw-r--r--doc/classes/PhysicsDirectSpaceState.xml4
-rw-r--r--doc/classes/PhysicsServer.xml243
-rw-r--r--doc/classes/PhysicsServerSW.xml2
-rw-r--r--doc/classes/PinJoint.xml12
-rw-r--r--doc/classes/PinJoint2D.xml1
-rw-r--r--doc/classes/PluginScript.xml15
-rw-r--r--doc/classes/PoolByteArray.xml8
-rw-r--r--doc/classes/PoolColorArray.xml2
-rw-r--r--doc/classes/PoolIntArray.xml2
-rw-r--r--doc/classes/PoolVector2Array.xml4
-rw-r--r--doc/classes/PoolVector3Array.xml2
-rw-r--r--doc/classes/ProjectSettings.xml20
-rw-r--r--doc/classes/Quat.xml15
-rw-r--r--doc/classes/RayCast.xml39
-rw-r--r--doc/classes/RayCast2D.xml36
-rw-r--r--doc/classes/Rect2.xml26
-rw-r--r--doc/classes/Rect3.xml43
-rw-r--r--doc/classes/RemoteTransform.xml8
-rw-r--r--doc/classes/RemoteTransform2D.xml8
-rw-r--r--doc/classes/Resource.xml4
-rw-r--r--doc/classes/ResourceLoader.xml2
-rw-r--r--doc/classes/RichTextLabel.xml40
-rw-r--r--doc/classes/RigidBody.xml12
-rw-r--r--doc/classes/RigidBody2D.xml107
-rw-r--r--doc/classes/SceneTree.xml18
-rw-r--r--doc/classes/Script.xml6
-rw-r--r--doc/classes/Semaphore.xml4
-rw-r--r--doc/classes/SliderJoint.xml50
-rw-r--r--doc/classes/Spatial.xml10
-rw-r--r--doc/classes/SpatialMaterial.xml24
-rw-r--r--doc/classes/SpatialVelocityTracker.xml4
-rw-r--r--doc/classes/SpriteBase3D.xml2
-rw-r--r--doc/classes/StreamPeer.xml6
-rw-r--r--doc/classes/StreamPeerSSL.xml6
-rw-r--r--doc/classes/StreamPeerTCP.xml8
-rw-r--r--doc/classes/String.xml143
-rw-r--r--doc/classes/StyleBoxFlat.xml8
-rw-r--r--doc/classes/SurfaceTool.xml4
-rw-r--r--doc/classes/TabContainer.xml44
-rw-r--r--doc/classes/Tabs.xml4
-rw-r--r--doc/classes/TextEdit.xml32
-rw-r--r--doc/classes/Texture.xml6
-rw-r--r--doc/classes/Thread.xml10
-rw-r--r--doc/classes/Timer.xml4
-rw-r--r--doc/classes/TouchScreenButton.xml31
-rw-r--r--doc/classes/Transform.xml4
-rw-r--r--doc/classes/Transform2D.xml8
-rw-r--r--doc/classes/TranslationServer.xml8
-rw-r--r--doc/classes/TreeItem.xml4
-rw-r--r--doc/classes/Tween.xml16
-rw-r--r--doc/classes/VSlider.xml2
-rw-r--r--doc/classes/Vector3.xml23
-rw-r--r--doc/classes/VehicleWheel.xml6
-rw-r--r--doc/classes/VideoPlayer.xml4
-rw-r--r--doc/classes/Viewport.xml6
-rw-r--r--doc/classes/VisibilityEnabler.xml6
-rw-r--r--doc/classes/VisibilityEnabler2D.xml18
-rw-r--r--doc/classes/VisualScript.xml2
-rw-r--r--doc/classes/VisualScriptBuiltinFunc.xml66
-rw-r--r--doc/classes/VisualScriptClassConstant.xml12
-rw-r--r--doc/classes/VisualScriptConstant.xml8
-rw-r--r--doc/classes/VisualScriptEmitSignal.xml8
-rw-r--r--doc/classes/VisualScriptIterator.xml9
-rw-r--r--doc/classes/VisualScriptLocalVar.xml8
-rw-r--r--doc/classes/VisualScriptLocalVarSet.xml10
-rw-r--r--doc/classes/VisualScriptMathConstant.xml15
-rw-r--r--doc/classes/VisualScriptOperator.xml4
-rw-r--r--doc/classes/VisualScriptPreload.xml7
-rw-r--r--doc/classes/VisualScriptReturn.xml9
-rw-r--r--doc/classes/VisualScriptSelect.xml9
-rw-r--r--doc/classes/VisualScriptSelf.xml6
-rw-r--r--doc/classes/VisualScriptSequence.xml9
-rw-r--r--doc/classes/VisualScriptSwitch.xml11
-rw-r--r--doc/classes/VisualScriptVariableGet.xml7
-rw-r--r--doc/classes/VisualScriptVariableSet.xml8
-rw-r--r--doc/classes/VisualScriptWhile.xml8
-rw-r--r--doc/classes/VisualScriptYield.xml2
-rw-r--r--doc/classes/VisualServer.xml2024
-rw-r--r--doc/classes/WeakRef.xml2
-rw-r--r--doc/classes/WorldEnvironment.xml2
-rw-r--r--doc/tools/doc_status.py11
-rw-r--r--doc/tools/makerst.py49
-rw-r--r--drivers/gles3/rasterizer_scene_gles3.cpp103
-rw-r--r--drivers/gles3/rasterizer_scene_gles3.h13
-rw-r--r--drivers/gles3/rasterizer_storage_gles3.cpp3
-rw-r--r--drivers/gles3/shader_compiler_gles3.cpp5
-rw-r--r--drivers/gles3/shaders/copy.glsl24
-rw-r--r--drivers/gles3/shaders/scene.glsl205
-rw-r--r--drivers/gles3/shaders/ssao.glsl24
-rw-r--r--drivers/gles3/shaders/ssao_blur.glsl20
-rw-r--r--drivers/gles3/shaders/tonemap.glsl7
-rw-r--r--drivers/unix/os_unix.cpp6
-rw-r--r--drivers/windows/dir_access_windows.cpp2
-rw-r--r--editor/SCsub9
-rw-r--r--editor/animation_editor.cpp36
-rw-r--r--editor/code_editor.cpp1
-rw-r--r--editor/collada/collada.cpp30
-rw-r--r--editor/dependency_editor.cpp156
-rw-r--r--editor/dependency_editor.h27
-rw-r--r--editor/editor_export.cpp5
-rw-r--r--editor/editor_file_dialog.cpp36
-rw-r--r--editor/editor_file_system.cpp56
-rw-r--r--editor/editor_help.cpp11
-rw-r--r--editor/editor_node.cpp62
-rw-r--r--editor/editor_node.h4
-rw-r--r--editor/editor_plugin.cpp11
-rw-r--r--editor/editor_plugin.h4
-rw-r--r--editor/editor_profiler.cpp2
-rw-r--r--editor/editor_resource_preview.cpp9
-rw-r--r--editor/editor_settings.cpp7
-rw-r--r--editor/editor_themes.cpp10
-rw-r--r--editor/filesystem_dock.cpp1196
-rw-r--r--editor/filesystem_dock.h76
-rw-r--r--editor/icons/icon_GUI_unchecked.svg4
-rw-r--r--editor/icons/icon_a_r_v_r_anchor.svg3
-rw-r--r--editor/icons/icon_a_r_v_r_camera.svg2
-rw-r--r--editor/icons/icon_a_r_v_r_controller.svg3
-rw-r--r--editor/icons/icon_a_r_v_r_origin.svg3
-rw-r--r--editor/icons/icon_animated_sprite.svg8
-rw-r--r--editor/icons/icon_animated_sprite_3d.svg8
-rw-r--r--editor/icons/icon_center_container.svg4
-rw-r--r--editor/icons/icon_color_pick.svg2
-rw-r--r--editor/icons/icon_color_picker.svg4
-rw-r--r--editor/icons/icon_color_picker_button.svg6
-rw-r--r--editor/icons/icon_connection_and_groups.svg5
-rw-r--r--editor/icons/icon_control_layout.svg3
-rw-r--r--editor/icons/icon_edit.svg2
-rw-r--r--editor/icons/icon_edit_key.svg5
-rw-r--r--editor/icons/icon_groups.svg4
-rw-r--r--editor/icons/icon_key_position.svg (renamed from editor/icons/icon_key_move_enabled.svg)0
-rw-r--r--editor/icons/icon_key_rotation.svg (renamed from editor/icons/icon_key_rotate_enabled.svg)0
-rw-r--r--editor/icons/icon_key_scale.svg (renamed from editor/icons/icon_key_scale_enabled.svg)0
-rw-r--r--editor/icons/icon_kinematic_body.svg2
-rw-r--r--editor/icons/icon_kinematic_body_2d.svg4
-rw-r--r--editor/icons/icon_multi_edit.svg2
-rw-r--r--editor/icons/icon_shader.svg12
-rw-r--r--editor/icons/icon_signals.svg (renamed from editor/icons/icon_connect.svg)0
-rw-r--r--editor/icons/icon_signals_and_groups.svg5
-rw-r--r--editor/icons/icon_sprite.svg4
-rw-r--r--editor/icons/icon_sprite_3d.svg4
-rw-r--r--editor/icons/icon_sprite_frames.svg4
-rw-r--r--editor/icons/icon_viewport_speed.svg4
-rw-r--r--editor/icons/icon_viewport_sprite.svg7
-rw-r--r--editor/icons/icon_viewport_zoom.svg6
-rw-r--r--editor/import/editor_import_collada.cpp19
-rw-r--r--editor/node_dock.cpp4
-rw-r--r--editor/plugins/abstract_polygon_2d_editor.cpp21
-rw-r--r--editor/plugins/abstract_polygon_2d_editor.h6
-rw-r--r--editor/plugins/animation_player_editor_plugin.cpp2
-rw-r--r--editor/plugins/canvas_item_editor_plugin.cpp457
-rw-r--r--editor/plugins/canvas_item_editor_plugin.h36
-rw-r--r--[-rwxr-xr-x]editor/plugins/collision_polygon_2d_editor_plugin.cpp0
-rw-r--r--[-rwxr-xr-x]editor/plugins/collision_polygon_2d_editor_plugin.h0
-rw-r--r--editor/plugins/collision_shape_2d_editor_plugin.cpp44
-rw-r--r--editor/plugins/collision_shape_2d_editor_plugin.h7
-rw-r--r--editor/plugins/gi_probe_editor_plugin.cpp26
-rw-r--r--editor/plugins/gi_probe_editor_plugin.h5
-rw-r--r--editor/plugins/light_occluder_2d_editor_plugin.cpp27
-rw-r--r--editor/plugins/light_occluder_2d_editor_plugin.h7
-rw-r--r--editor/plugins/line_2d_editor_plugin.cpp24
-rw-r--r--editor/plugins/line_2d_editor_plugin.h37
-rw-r--r--editor/plugins/material_editor_plugin.cpp47
-rw-r--r--editor/plugins/material_editor_plugin.h8
-rw-r--r--editor/plugins/navigation_mesh_generator.cpp2
-rw-r--r--[-rwxr-xr-x]editor/plugins/navigation_polygon_editor_plugin.cpp0
-rw-r--r--[-rwxr-xr-x]editor/plugins/navigation_polygon_editor_plugin.h0
-rw-r--r--editor/plugins/path_2d_editor_plugin.cpp19
-rw-r--r--editor/plugins/path_2d_editor_plugin.h5
-rw-r--r--[-rwxr-xr-x]editor/plugins/polygon_2d_editor_plugin.cpp8
-rw-r--r--[-rwxr-xr-x]editor/plugins/polygon_2d_editor_plugin.h0
-rw-r--r--editor/plugins/script_editor_plugin.cpp21
-rw-r--r--editor/plugins/shader_editor_plugin.cpp1
-rw-r--r--editor/plugins/spatial_editor_plugin.cpp318
-rw-r--r--editor/plugins/spatial_editor_plugin.h16
-rw-r--r--editor/plugins/sprite_frames_editor_plugin.cpp40
-rw-r--r--editor/plugins/sprite_frames_editor_plugin.h2
-rw-r--r--editor/plugins/texture_region_editor_plugin.cpp107
-rw-r--r--editor/plugins/texture_region_editor_plugin.h4
-rw-r--r--editor/plugins/theme_editor_plugin.cpp6
-rw-r--r--editor/plugins/tile_map_editor_plugin.cpp54
-rw-r--r--editor/plugins/tile_map_editor_plugin.h6
-rw-r--r--editor/project_export.cpp13
-rw-r--r--editor/project_export.h1
-rw-r--r--editor/project_manager.cpp79
-rw-r--r--editor/project_manager.h5
-rw-r--r--editor/project_settings_editor.cpp231
-rw-r--r--editor/project_settings_editor.h14
-rw-r--r--editor/property_editor.cpp31
-rw-r--r--editor/scene_tree_dock.cpp8
-rw-r--r--editor/scene_tree_editor.cpp4
-rw-r--r--editor/script_create_dialog.cpp37
-rw-r--r--editor/script_create_dialog.h1
-rw-r--r--editor/script_editor_debugger.cpp67
-rw-r--r--editor/script_editor_debugger.h8
-rw-r--r--editor/settings_config_dialog.cpp104
-rw-r--r--editor/settings_config_dialog.h5
-rw-r--r--editor/spatial_editor_gizmos.cpp4
-rw-r--r--editor/translations/ar.po2901
-rw-r--r--editor/translations/bg.po2235
-rw-r--r--editor/translations/bn.po2975
-rw-r--r--editor/translations/ca.po2568
-rw-r--r--editor/translations/cs.po2184
-rw-r--r--editor/translations/da.po2176
-rw-r--r--editor/translations/de.po3437
-rw-r--r--editor/translations/de_CH.po2222
-rw-r--r--editor/translations/editor.pot2081
-rw-r--r--editor/translations/el.po3418
-rw-r--r--editor/translations/es.po3377
-rw-r--r--editor/translations/es_AR.po3405
-rw-r--r--editor/translations/fa.po2203
-rw-r--r--editor/translations/fi.po2725
-rw-r--r--editor/translations/fr.po3893
-rw-r--r--editor/translations/hu.po2084
-rw-r--r--editor/translations/id.po2437
-rw-r--r--editor/translations/it.po3154
-rw-r--r--editor/translations/ja.po3275
-rw-r--r--editor/translations/ko.po3394
-rw-r--r--editor/translations/lt.po7371
-rw-r--r--editor/translations/nb.po2105
-rw-r--r--editor/translations/nl.po2559
-rw-r--r--editor/translations/pl.po2913
-rw-r--r--editor/translations/pr.po2109
-rw-r--r--editor/translations/pt_BR.po3874
-rw-r--r--editor/translations/pt_PT.po2173
-rw-r--r--editor/translations/ru.po3420
-rw-r--r--editor/translations/sk.po2122
-rw-r--r--editor/translations/sl.po2103
-rw-r--r--editor/translations/th.po3368
-rw-r--r--editor/translations/tr.po2989
-rw-r--r--editor/translations/ur_PK.po2103
-rw-r--r--editor/translations/zh_CN.po3501
-rw-r--r--editor/translations/zh_HK.po2179
-rw-r--r--editor/translations/zh_TW.po2165
-rw-r--r--main/SCsub2
-rw-r--r--main/main.cpp26
-rw-r--r--main/performance.cpp40
-rw-r--r--main/performance.h8
-rw-r--r--main/splash.pngbin29867 -> 21504 bytes
-rw-r--r--methods.py10
-rw-r--r--misc/dist/ios_xcode/godot_ios.xcodeproj/xcshareddata/xcschemes/godot_ios.xcscheme10
-rw-r--r--modules/gdnative/SCsub6
-rw-r--r--modules/gdnative/config.py8
-rw-r--r--modules/gdnative/doc_classes/ARVRInterfaceGDNative.xml17
-rw-r--r--modules/gdnative/doc_classes/GDNative.xml (renamed from doc/classes/GDNative.xml)6
-rw-r--r--modules/gdnative/doc_classes/GDNativeLibrary.xml (renamed from doc/classes/GDNativeLibrary.xml)6
-rw-r--r--modules/gdnative/doc_classes/NativeScript.xml (renamed from doc/classes/NativeScript.xml)0
-rw-r--r--modules/gdnative/gdnative.cpp65
-rw-r--r--modules/gdnative/gdnative.h12
-rw-r--r--modules/gdnative/gdnative/string.cpp4
-rw-r--r--modules/gdnative/gdnative_api.json79
-rw-r--r--modules/gdnative/include/gdnative/array.h9
-rw-r--r--modules/gdnative/include/gdnative/basis.h9
-rw-r--r--modules/gdnative/include/gdnative/color.h9
-rw-r--r--modules/gdnative/include/gdnative/dictionary.h9
-rw-r--r--modules/gdnative/include/gdnative/gdnative.h4
-rw-r--r--modules/gdnative/include/gdnative/node_path.h9
-rw-r--r--modules/gdnative/include/gdnative/plane.h9
-rw-r--r--modules/gdnative/include/gdnative/pool_arrays.h9
-rw-r--r--modules/gdnative/include/gdnative/quat.h9
-rw-r--r--modules/gdnative/include/gdnative/rect2.h9
-rw-r--r--modules/gdnative/include/gdnative/rect3.h9
-rw-r--r--modules/gdnative/include/gdnative/rid.h9
-rw-r--r--modules/gdnative/include/gdnative/string.h9
-rw-r--r--modules/gdnative/include/gdnative/string_name.h9
-rw-r--r--modules/gdnative/include/gdnative/transform.h9
-rw-r--r--modules/gdnative/include/gdnative/transform2d.h9
-rw-r--r--modules/gdnative/include/gdnative/variant.h9
-rw-r--r--modules/gdnative/include/gdnative/vector2.h9
-rw-r--r--modules/gdnative/include/gdnative/vector3.h9
-rw-r--r--modules/gdnative/include/nativearvr/godot_nativearvr.h78
-rw-r--r--modules/gdnative/include/pluginscript/godot_pluginscript.h171
-rw-r--r--modules/gdnative/nativearvr/SCsub13
-rw-r--r--modules/gdnative/nativearvr/arvr_interface_gdnative.cpp386
-rw-r--r--modules/gdnative/nativearvr/arvr_interface_gdnative.h86
-rw-r--r--modules/gdnative/nativearvr/config.py5
-rw-r--r--modules/gdnative/nativearvr/register_types.cpp39
-rw-r--r--modules/gdnative/nativearvr/register_types.h32
-rw-r--r--modules/gdnative/nativescript/SCsub1
-rw-r--r--modules/gdnative/nativescript/api_generator.cpp2
-rw-r--r--modules/gdnative/nativescript/api_generator.h2
-rw-r--r--modules/gdnative/nativescript/nativescript.cpp58
-rw-r--r--modules/gdnative/nativescript/nativescript.h9
-rw-r--r--modules/gdnative/nativescript/register_types.cpp50
-rw-r--r--modules/gdnative/pluginscript/SCsub9
-rw-r--r--modules/gdnative/pluginscript/pluginscript_instance.cpp181
-rw-r--r--modules/gdnative/pluginscript/pluginscript_instance.h90
-rw-r--r--modules/gdnative/pluginscript/pluginscript_language.cpp435
-rw-r--r--modules/gdnative/pluginscript/pluginscript_language.h132
-rw-r--r--modules/gdnative/pluginscript/pluginscript_loader.cpp113
-rw-r--r--modules/gdnative/pluginscript/pluginscript_loader.h62
-rw-r--r--modules/gdnative/pluginscript/pluginscript_script.cpp449
-rw-r--r--modules/gdnative/pluginscript/pluginscript_script.h127
-rw-r--r--modules/gdnative/pluginscript/register_types.cpp118
-rw-r--r--modules/gdnative/pluginscript/register_types.h31
-rw-r--r--modules/gdnative/register_types.cpp79
-rw-r--r--modules/gdscript/gd_editor.cpp15
-rw-r--r--modules/gdscript/gd_parser.cpp3
-rw-r--r--modules/gdscript/gd_script.cpp5
-rw-r--r--modules/gdscript/gd_script.h2
-rw-r--r--modules/gridmap/doc_classes/GridMap.xml52
-rw-r--r--modules/gridmap/grid_map.cpp33
-rw-r--r--modules/gridmap/grid_map.h5
-rw-r--r--modules/hdr/image_loader_hdr.cpp4
-rw-r--r--modules/mobile_vr/mobile_interface.h2
-rw-r--r--modules/mono/SCsub141
-rw-r--r--modules/mono/config.py88
-rw-r--r--modules/mono/csharp_script.cpp225
-rw-r--r--modules/mono/csharp_script.h6
-rw-r--r--modules/mono/editor/GodotSharpTools/Build/BuildSystem.cs66
-rw-r--r--modules/mono/editor/bindings_generator.cpp1218
-rw-r--r--modules/mono/editor/bindings_generator.h7
-rw-r--r--modules/mono/editor/godotsharp_builds.cpp97
-rw-r--r--modules/mono/editor/godotsharp_builds.h9
-rw-r--r--modules/mono/editor/godotsharp_editor.cpp72
-rw-r--r--modules/mono/editor/godotsharp_editor.h24
-rw-r--r--modules/mono/editor/mono_bottom_panel.cpp37
-rw-r--r--modules/mono/editor/mono_bottom_panel.h4
-rw-r--r--modules/mono/glue/cs_files/ExportAttribute.cs4
-rw-r--r--modules/mono/godotsharp_dirs.cpp30
-rw-r--r--modules/mono/mono_gd/gd_mono.cpp25
-rw-r--r--modules/mono/mono_gd/gd_mono_assembly.cpp9
-rw-r--r--modules/mono/mono_gd/gd_mono_class.cpp32
-rw-r--r--modules/mono/mono_gd/gd_mono_class.h6
-rw-r--r--modules/mono/mono_gd/gd_mono_field.cpp20
-rw-r--r--modules/mono/mono_gd/gd_mono_marshal.cpp16
-rw-r--r--modules/mono/mono_gd/gd_mono_marshal.h1
-rw-r--r--modules/mono/mono_gd/gd_mono_method.cpp41
-rw-r--r--modules/mono/mono_gd/gd_mono_utils.cpp8
-rw-r--r--modules/mono/mono_gd/gd_mono_utils.h8
-rw-r--r--modules/mono/mono_reg_utils.py94
-rw-r--r--modules/mono/signal_awaiter_utils.cpp77
-rw-r--r--modules/mono/signal_awaiter_utils.h19
-rw-r--r--modules/mono/utils/path_utils.cpp6
-rw-r--r--modules/mono/utils/string_utils.cpp29
-rw-r--r--modules/mono/utils/string_utils.h6
-rw-r--r--modules/openssl/stream_peer_openssl.cpp6
-rw-r--r--modules/openssl/stream_peer_openssl.h2
-rw-r--r--modules/opus/audio_stream_opus.cpp6
-rw-r--r--modules/opus/audio_stream_opus.h2
-rw-r--r--modules/regex/SCsub2
-rw-r--r--modules/stb_vorbis/audio_stream_ogg_vorbis.cpp3
-rw-r--r--modules/visual_script/visual_script.cpp9
-rw-r--r--modules/visual_script/visual_script.h3
-rw-r--r--modules/visual_script/visual_script_builtin_funcs.cpp57
-rw-r--r--modules/visual_script/visual_script_builtin_funcs.h3
-rw-r--r--modules/visual_script/visual_script_editor.cpp2
-rw-r--r--modules/visual_script/visual_script_nodes.cpp1
-rw-r--r--modules/visual_script/visual_script_yield_nodes.cpp4
-rw-r--r--modules/vorbis/audio_stream_ogg_vorbis.cpp8
-rw-r--r--modules/vorbis/audio_stream_ogg_vorbis.h2
-rw-r--r--platform/android/export/export.cpp1
-rw-r--r--platform/android/java/src/org/godotengine/godot/Godot.java10
-rw-r--r--platform/android/java/src/org/godotengine/godot/GodotView.java8
-rw-r--r--platform/android/os_android.cpp4
-rw-r--r--platform/haiku/context_gl_haiku.cpp2
-rw-r--r--platform/haiku/context_gl_haiku.h2
-rw-r--r--platform/haiku/os_haiku.cpp4
-rw-r--r--platform/haiku/os_haiku.h2
-rw-r--r--platform/iphone/export/export.cpp24
-rw-r--r--platform/iphone/game_center.h9
-rw-r--r--platform/iphone/game_center.mm72
-rw-r--r--platform/iphone/os_iphone.cpp4
-rw-r--r--platform/javascript/audio_driver_javascript.cpp79
-rw-r--r--platform/javascript/audio_driver_javascript.h16
-rw-r--r--platform/javascript/detect.py7
-rw-r--r--platform/javascript/javascript_eval.cpp82
-rw-r--r--platform/osx/export/export.cpp4
-rw-r--r--platform/osx/os_osx.h3
-rw-r--r--platform/osx/os_osx.mm23
-rw-r--r--platform/server/detect.py3
-rw-r--r--platform/uwp/SCsub1
-rw-r--r--platform/uwp/os_uwp.cpp4
-rw-r--r--platform/windows/context_gl_win.cpp2
-rw-r--r--platform/windows/context_gl_win.h2
-rw-r--r--platform/windows/detect.py6
-rw-r--r--platform/windows/key_mapping_win.cpp2
-rw-r--r--platform/windows/os_windows.cpp4
-rw-r--r--platform/x11/context_gl_x11.cpp2
-rw-r--r--platform/x11/context_gl_x11.h2
-rw-r--r--platform/x11/detect.py7
-rw-r--r--platform/x11/os_x11.cpp52
-rw-r--r--platform/x11/os_x11.h4
-rw-r--r--scene/2d/camera_2d.cpp2
-rw-r--r--scene/2d/canvas_item.cpp2
-rw-r--r--scene/2d/joints_2d.cpp107
-rw-r--r--scene/2d/joints_2d.h13
-rw-r--r--scene/2d/navigation_polygon.cpp4
-rw-r--r--scene/2d/parallax_background.cpp2
-rw-r--r--scene/2d/physics_body_2d.cpp4
-rw-r--r--scene/2d/ray_cast_2d.cpp36
-rw-r--r--scene/2d/ray_cast_2d.h9
-rw-r--r--scene/2d/visibility_notifier_2d.cpp4
-rw-r--r--scene/3d/SCsub3
-rw-r--r--scene/3d/arvr_nodes.cpp3
-rw-r--r--scene/3d/audio_stream_player_3d.cpp2
-rw-r--r--scene/3d/camera.cpp2
-rw-r--r--scene/3d/gi_probe.cpp22
-rw-r--r--scene/3d/gi_probe.h8
-rw-r--r--scene/3d/light.cpp8
-rw-r--r--scene/3d/particles.cpp340
-rw-r--r--scene/3d/particles.h2
-rw-r--r--scene/3d/path.cpp52
-rw-r--r--scene/3d/path.h5
-rw-r--r--scene/3d/physics_body.cpp4
-rw-r--r--scene/3d/physics_joint.cpp31
-rw-r--r--scene/3d/ray_cast.cpp36
-rw-r--r--scene/3d/ray_cast.h9
-rw-r--r--scene/3d/visibility_notifier.cpp2
-rw-r--r--scene/animation/animation_player.cpp10
-rw-r--r--scene/animation/animation_tree_player.cpp2
-rw-r--r--scene/animation/tween.cpp2
-rw-r--r--scene/gui/color_picker.cpp4
-rw-r--r--scene/gui/control.cpp4
-rw-r--r--scene/gui/file_dialog.cpp28
-rw-r--r--scene/gui/graph_edit.cpp1
-rw-r--r--scene/gui/item_list.cpp6
-rw-r--r--scene/gui/line_edit.cpp111
-rw-r--r--scene/gui/line_edit.h14
-rw-r--r--scene/gui/nine_patch_rect.cpp (renamed from scene/gui/patch_9_rect.cpp)4
-rw-r--r--scene/gui/nine_patch_rect.h (renamed from scene/gui/patch_9_rect.h)8
-rw-r--r--scene/gui/rich_text_label.cpp18
-rw-r--r--scene/gui/rich_text_label.h4
-rw-r--r--scene/gui/separator.cpp6
-rw-r--r--scene/gui/slider.cpp6
-rw-r--r--scene/gui/tab_container.cpp16
-rw-r--r--scene/gui/tabs.cpp2
-rw-r--r--scene/gui/text_edit.cpp73
-rw-r--r--scene/gui/text_edit.h7
-rw-r--r--scene/gui/tree.cpp19
-rw-r--r--scene/gui/viewport_container.cpp35
-rw-r--r--scene/gui/viewport_container.h4
-rwxr-xr-xscene/main/node.cpp6
-rw-r--r--scene/main/scene_tree.cpp9
-rw-r--r--scene/main/scene_tree.h6
-rwxr-xr-xscene/main/timer.cpp2
-rw-r--r--scene/main/viewport.cpp11
-rw-r--r--scene/register_scene_types.cpp12
-rw-r--r--scene/resources/animation.cpp17
-rw-r--r--scene/resources/audio_stream_sample.cpp3
-rw-r--r--scene/resources/default_theme/default_theme.cpp4
-rw-r--r--scene/resources/environment.cpp73
-rw-r--r--scene/resources/environment.h29
-rw-r--r--scene/resources/material.cpp11
-rw-r--r--scene/resources/material.h2
-rw-r--r--scene/resources/shader.cpp2
-rw-r--r--scene/resources/style_box.cpp2
-rw-r--r--scene/resources/texture.cpp7
-rw-r--r--scene/resources/video_stream.h2
-rw-r--r--servers/arvr/arvr_script_interface.cpp136
-rw-r--r--servers/arvr/arvr_script_interface.h52
-rw-r--r--servers/arvr_server.cpp10
-rw-r--r--servers/audio/audio_stream.cpp6
-rw-r--r--servers/audio/audio_stream.h6
-rw-r--r--servers/audio/effects/audio_effect_filter.cpp2
-rw-r--r--servers/physics/body_sw.cpp5
-rw-r--r--servers/physics/joints/generic_6dof_joint_sw.cpp4
-rw-r--r--servers/physics/joints/pin_joint_sw.h4
-rw-r--r--servers/physics/physics_server_sw.cpp14
-rw-r--r--servers/physics/space_sw.cpp28
-rw-r--r--servers/physics/space_sw.h12
-rw-r--r--servers/physics_2d/collision_object_2d_sw.h45
-rw-r--r--servers/physics_2d/physics_2d_server_sw.cpp14
-rw-r--r--servers/physics_2d/space_2d_sw.cpp28
-rw-r--r--servers/physics_2d/space_2d_sw.h12
-rw-r--r--servers/physics_2d_server.cpp3
-rw-r--r--servers/physics_server.cpp4
-rw-r--r--servers/register_server_types.cpp8
-rw-r--r--servers/server_wrap_mt_common.h9
-rw-r--r--servers/visual/rasterizer.h2
-rw-r--r--servers/visual/shader_language.cpp2
-rw-r--r--servers/visual/visual_server_raster.cpp12
-rw-r--r--servers/visual/visual_server_raster.h6
-rw-r--r--servers/visual/visual_server_viewport.cpp3
-rw-r--r--servers/visual/visual_server_viewport.h3
-rw-r--r--servers/visual/visual_server_wrap_mt.h2
-rw-r--r--servers/visual_server.cpp407
-rw-r--r--servers/visual_server.h32
-rw-r--r--thirdparty/README.md4
-rw-r--r--thirdparty/enet/enet/enet.h1
-rw-r--r--thirdparty/libpng/LICENSE9
-rw-r--r--thirdparty/libpng/png.c32
-rw-r--r--thirdparty/libpng/png.h28
-rw-r--r--thirdparty/libpng/pngconf.h2
-rw-r--r--thirdparty/libpng/pnglibconf.h4
-rw-r--r--thirdparty/libpng/pngread.c14
-rw-r--r--thirdparty/libpng/pngrtran.c22
-rw-r--r--thirdparty/libpng/pngrutil.c47
-rw-r--r--thirdparty/libpng/pngtrans.c6
-rw-r--r--thirdparty/libpng/pngwrite.c2
-rw-r--r--thirdparty/zstd/SCsub6
-rw-r--r--thirdparty/zstd/common/bitstream.h58
-rw-r--r--thirdparty/zstd/common/compiler.h1
-rw-r--r--thirdparty/zstd/common/error_private.c6
-rw-r--r--thirdparty/zstd/common/error_private.h8
-rw-r--r--thirdparty/zstd/common/fse.h2
-rw-r--r--thirdparty/zstd/common/huf.h2
-rw-r--r--thirdparty/zstd/common/mem.h1
-rw-r--r--thirdparty/zstd/common/pool.c107
-rw-r--r--thirdparty/zstd/common/pool.h4
-rw-r--r--thirdparty/zstd/common/threading.c26
-rw-r--r--thirdparty/zstd/common/threading.h84
-rw-r--r--thirdparty/zstd/common/zstd_common.c4
-rw-r--r--thirdparty/zstd/common/zstd_errors.h4
-rw-r--r--thirdparty/zstd/common/zstd_internal.h116
-rw-r--r--thirdparty/zstd/compress/fse_compress.c4
-rw-r--r--thirdparty/zstd/compress/huf_compress.c7
-rw-r--r--thirdparty/zstd/compress/zstd_compress.c2650
-rw-r--r--thirdparty/zstd/compress/zstd_compress.h307
-rw-r--r--thirdparty/zstd/compress/zstd_double_fast.c308
-rw-r--r--thirdparty/zstd/compress/zstd_double_fast.h28
-rw-r--r--thirdparty/zstd/compress/zstd_fast.c242
-rw-r--r--thirdparty/zstd/compress/zstd_fast.h30
-rw-r--r--thirdparty/zstd/compress/zstd_lazy.c749
-rw-r--r--thirdparty/zstd/compress/zstd_lazy.h38
-rw-r--r--thirdparty/zstd/compress/zstd_ldm.c707
-rw-r--r--thirdparty/zstd/compress/zstd_ldm.h67
-rw-r--r--thirdparty/zstd/compress/zstd_opt.c957
-rw-r--r--thirdparty/zstd/compress/zstd_opt.h936
-rw-r--r--thirdparty/zstd/compress/zstdmt_compress.c343
-rw-r--r--thirdparty/zstd/compress/zstdmt_compress.h23
-rw-r--r--thirdparty/zstd/decompress/zstd_decompress.c569
-rw-r--r--thirdparty/zstd/zstd.h484
688 files changed, 74522 insertions, 57352 deletions
diff --git a/.gitattributes b/.gitattributes
index f8959dd2d1..03c6f96f80 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -8,3 +8,4 @@ drivers/* linguist-vendored
*.h eol=lf
*.py eol=lf
*.hpp eol=lf
+*.xml eol=lf
diff --git a/.travis.yml b/.travis.yml
index a2c3417412..409c870e79 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -6,45 +6,29 @@ sudo: false
cache: ccache
-compiler:
- - gcc
- - clang
-
-os:
- - linux
- - osx
-
-env:
- - GODOT_TARGET=iphone
- - GODOT_TARGET=osx
- - GODOT_TARGET=x11
- #- GODOT_TARGET=android
- #- GODOT_TARGET=windows
-
matrix:
include:
- env: STATIC_CHECKS=yes
- exclude:
- - os: linux
- env: GODOT_TARGET=iphone
- - os: linux
- env: GODOT_TARGET=osx
- - os: linux
- env: GODOT_TARGET=android
- - os: osx
- env: GODOT_TARGET=x11
- - os: osx
- env: GODOT_TARGET=windows
- - compiler: gcc
- env: GODOT_TARGET=iphone
- - compiler: gcc
- env: GODOT_TARGET=osx
- - compiler: clang
- env: GODOT_TARGET=android
- - compiler: clang
- env: GODOT_TARGET=windows
- - compiler: clang
- env: GODOT_TARGET=x11
+ os: linux
+ compiler: clang
+ - env: GODOT_TARGET=x11 TOOLS=yes
+ os: linux
+ compiler: gcc
+ - env: GODOT_TARGET=x11 TOOLS=no
+ os: linux
+ compiler: clang
+ #- env: GODOT_TARGET=windows TOOLS=yes
+ # os: linux
+ # compiler: gcc
+ - env: GODOT_TARGET=osx TOOLS=yes
+ os: osx
+ compiler: clang
+ #- env: GODOT_TARGET=android TOOLS=no
+ # os: osx
+ # compiler: clang
+ #- env: GODOT_TARGET=iphone TOOLS=no
+ # os: osx
+ # compiler: clang
addons:
apt:
@@ -92,5 +76,5 @@ script:
- if [ "$STATIC_CHECKS" = "yes" ]; then
sh ./misc/travis/clang-format.sh;
else
- scons -j 2 platform=$GODOT_TARGET progress=no verbose=yes CXX=$CXX;
+ scons -j2 CC=$CC CXX=$CXX platform=$GODOT_TARGET TOOLS=$TOOLS verbose=yes progress=no;
fi
diff --git a/AUTHORS.md b/AUTHORS.md
index bf833d1435..3fd8227fa7 100644
--- a/AUTHORS.md
+++ b/AUTHORS.md
@@ -47,9 +47,11 @@ name is available.
Geequlim
Gen (dbsGen)
George Marques (vnen)
+ Gerrit Großkopf (Grosskopf)
Gilles Roudiere (groud)
Guilherme Felipe (guilhermefelipecgs)
Hein-Pieter van Braam (hpvb)
+ Hiroshi Ogawa (hi-ogawa)
Hubert Jarosz (Marqin)
Hugo Locurcio (Calinou)
Ignacio Etcheverry (neikeq)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index a9ada58e64..6cb52cf5ff 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -87,7 +87,7 @@ rebase -i`` and relevant help about rebasing or ammending commits on the
Internet).
This git style guide has some good practices to have in mind:
-https://github.com/agis-/git-style-guide
+[Git Style Guide](https://github.com/agis-/git-style-guide)
#### Format your commit logs with readability in mind
diff --git a/DONORS.md b/DONORS.md
index 57902fb2fc..784cf58255 100644
--- a/DONORS.md
+++ b/DONORS.md
@@ -20,28 +20,38 @@ None so far, but your company could be the first! :)
## Mini sponsors
- Arron Washington
- Chris Phyffer
+ Andreas
+ Andreas Hirschauer
Christian Uldall Pedersen
+ E Hewert
Hein-Pieter van Braam
Matthieu Huvé
+ Nathan Warden
Neal Gompa (Conan Kudo)
Olimpiu Metiu
Ruslan Mustakov
+ Slobodan Milnovic
## Gold donors
Alexander Otto
+ Asdf
+ Blair Allen
+ cheese65536
Jake Bo
Javier
- Nathan Warden
+ Manuele Finocchiaro
+ Officine Pixel S.n.c.
Ranoller
Rémi Verschelde
Stephan Lanfermann
Andreas Schüle
+ Austen McRae
Bernhard Liebl
+ Gerald E Butler
Jordan M Lucas
+ Kris Michael
BanjoNode2D
Chris Serino
@@ -53,16 +63,20 @@ None so far, but your company could be the first! :)
Henrique Alves
Laurence Bannister
Leo
+ mhilbrunner
Przemysław Gołąb (n-pigeon)
Robert Willes
Robin Arys
+ ScottMakesGames
summerblind
Testus Maximus
Thomas Bjarnelöf
+ Xavier Tan
Amanda Haldy
Andreas Haas
Bryanna M
+ Chris Brown
Cody Parker
D
Ezra Theunissen
@@ -70,25 +84,32 @@ None so far, but your company could be the first! :)
François Cantin
Hendrik Mans
Jeppe Zapp
- Johannes Wuensch
Justin Arnold
Justo Delgado Baudí
Leandro Voltolino
+ Lucien Boudy
Myles
- Robert Podgorski
- Scott Beacon
+ Noah
+ Trent McPheron
x1212
## Silver donors
+ 1D_Inc
+ Alessandro Senese
Alex Barsukov
+ Anthony Bongiovanni
Avencherus
Bastian Böhm
Ben Vercammen
Bryan Stevenson
+ Christian Baune
+ Christian Winter
Collin Shooltz
+ Dominik Wetzel
Fabian Becker
fengjiongmax
+ Fredy Romero Sam
Geequlim
Gerrit Großkopf
Guldoman
@@ -96,14 +117,16 @@ None so far, but your company could be the first! :)
HeartBeast
Heribert Hirth
Hunter Jones
- imekon
- Jacob McKenney
Jonathon
Josh 'Cheeseness' Bush
+ JuDelCo
Julian Murgia
Juraj Móza
+ KC Chan
Kevin Boyer
+ Kevin Kamper Meejach Petersen
Klavdij Voncina
+ Kobi Malul
Lisandro Lorea
magodev
Martin Novák
@@ -113,26 +136,36 @@ None so far, but your company could be the first! :)
Max R.R. Collada
Michael Gringauz
Mikael Olsson
+ MoM
Moritz Laass
nee
+ Neil Blakey-Milner
+ Nik Lee
+ Niko Leopold
nvgrod
Pablo Seibelt
Pan Ip
+ Patrick Nafarrete
Paul Mason
Paweł Kowal
+ Pete Goodwin
Pietro Vertechi
rayos
Richman Stewart
Roger Smith
+ Ryan Estes
Sam Van Campenhout
Sam Vila
Sasori Olkof
+ Scott D. Yelich
Sootstone
Tavo Tell
+ TheHappieCat
+ Theo Cranmore
Tom Larrow
- Trent McPheron
Troy Bonneau
UltyX
+ Wout Standaert
Xananax & karroffel
## Bronze donors
diff --git a/LICENSE.txt b/LICENSE.txt
index 0b5b0c341f..bcce1a3a33 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -18,5 +18,3 @@ 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.
-
--- Godot Engine <https://godotengine.org>
diff --git a/README.md b/README.md
index 675e666ce6..6bb07a8c44 100644
--- a/README.md
+++ b/README.md
@@ -26,6 +26,8 @@ Before being open sourced in February 2014, Godot had been developed by Juan
Linietsky and Ariel Manzur (both still maintaining the project) for several
years as an in-house engine, used to publish several work-for-hire titles.
+![Screenshot of a 3D scene in Godot Engine](http://download.tuxfamily.org/godotengine/media/screenshots/editor_3d_fracteed.jpg)
+
### Getting the engine
#### Binary downloads
diff --git a/compat.py b/compat.py
index e1bc0ed673..32c685f5b8 100644
--- a/compat.py
+++ b/compat.py
@@ -12,6 +12,8 @@ if sys.version_info < (3,):
return cStringIO.StringIO()
def encode_utf8(x):
return x
+ def decode_utf8(x):
+ return x
def iteritems(d):
return d.iteritems()
def escape_string(s):
@@ -38,6 +40,8 @@ else:
import codecs
def encode_utf8(x):
return codecs.utf_8_encode(x)[0]
+ def decode_utf8(x):
+ return codecs.utf_8_decode(x)[0]
def iteritems(d):
return iter(d.items())
def charcode_to_c_escapes(c):
diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp
index b47e611a51..12b892d873 100644
--- a/core/bind/core_bind.cpp
+++ b/core/bind/core_bind.cpp
@@ -413,6 +413,7 @@ String _OS::get_latin_keyboard_variant() const {
case OS::LATIN_KEYBOARD_QZERTY: return "QZERTY";
case OS::LATIN_KEYBOARD_DVORAK: return "DVORAK";
case OS::LATIN_KEYBOARD_NEO: return "NEO";
+ case OS::LATIN_KEYBOARD_COLEMAK: return "COLEMAK";
default: return "ERROR";
}
}
diff --git a/core/class_db.cpp b/core/class_db.cpp
index 12310f6151..57e88044b5 100644
--- a/core/class_db.cpp
+++ b/core/class_db.cpp
@@ -187,6 +187,25 @@ MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_
return md;
}
+MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8, const char *p_arg9, const char *p_arg10, const char *p_arg11) {
+
+ MethodDefinition md;
+ md.name = StaticCString::create(p_name);
+ md.args.resize(11);
+ md.args[0] = StaticCString::create(p_arg1);
+ md.args[1] = StaticCString::create(p_arg2);
+ md.args[2] = StaticCString::create(p_arg3);
+ md.args[3] = StaticCString::create(p_arg4);
+ md.args[4] = StaticCString::create(p_arg5);
+ md.args[5] = StaticCString::create(p_arg6);
+ md.args[6] = StaticCString::create(p_arg7);
+ md.args[7] = StaticCString::create(p_arg8);
+ md.args[8] = StaticCString::create(p_arg9);
+ md.args[9] = StaticCString::create(p_arg10);
+ md.args[10] = StaticCString::create(p_arg11);
+ return md;
+}
+
#endif
ClassDB::APIType ClassDB::current_api = API_CORE;
diff --git a/core/class_db.h b/core/class_db.h
index 5910a2ce01..24db4c61bb 100644
--- a/core/class_db.h
+++ b/core/class_db.h
@@ -66,6 +66,7 @@ MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8);
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8, const char *p_arg9);
MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8, const char *p_arg9, const char *p_arg10);
+MethodDefinition D_METHOD(const char *p_name, const char *p_arg1, const char *p_arg2, const char *p_arg3, const char *p_arg4, const char *p_arg5, const char *p_arg6, const char *p_arg7, const char *p_arg8, const char *p_arg9, const char *p_arg10, const char *p_arg11);
#else
diff --git a/core/command_queue_mt.h b/core/command_queue_mt.h
index f99e16da15..e37d593f9f 100644
--- a/core/command_queue_mt.h
+++ b/core/command_queue_mt.h
@@ -227,6 +227,27 @@ class CommandQueueMT {
virtual void call() { (instance->*method)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); }
};
+ template <class T, class M, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class P11, class P12>
+ struct Command12 : public CommandBase {
+
+ T *instance;
+ M method;
+ typename GetSimpleTypeT<P1>::type_t p1;
+ typename GetSimpleTypeT<P2>::type_t p2;
+ typename GetSimpleTypeT<P3>::type_t p3;
+ typename GetSimpleTypeT<P4>::type_t p4;
+ typename GetSimpleTypeT<P5>::type_t p5;
+ typename GetSimpleTypeT<P6>::type_t p6;
+ typename GetSimpleTypeT<P7>::type_t p7;
+ typename GetSimpleTypeT<P8>::type_t p8;
+ typename GetSimpleTypeT<P9>::type_t p9;
+ typename GetSimpleTypeT<P10>::type_t p10;
+ typename GetSimpleTypeT<P11>::type_t p11;
+ typename GetSimpleTypeT<P12>::type_t p12;
+
+ virtual void call() { (instance->*method)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); }
+ };
+
/* comands that return */
template <class T, class M, class R>
@@ -906,6 +927,31 @@ public:
if (sync) sync->post();
}
+ template <class T, class M, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8, class P9, class P10, class P11, class P12>
+ void push(T *p_instance, M p_method, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5, P6 p6, P7 p7, P8 p8, P9 p9, P10 p10, P11 p11, P12 p12) {
+
+ Command12<T, M, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12> *cmd = allocate_and_lock<Command12<T, M, P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12> >();
+
+ cmd->instance = p_instance;
+ cmd->method = p_method;
+ cmd->p1 = p1;
+ cmd->p2 = p2;
+ cmd->p3 = p3;
+ cmd->p4 = p4;
+ cmd->p5 = p5;
+ cmd->p6 = p6;
+ cmd->p7 = p7;
+ cmd->p8 = p8;
+ cmd->p9 = p9;
+ cmd->p10 = p10;
+ cmd->p11 = p11;
+ cmd->p12 = p12;
+
+ unlock();
+
+ if (sync) sync->post();
+ }
+
/*** PUSH AND RET COMMANDS ***/
template <class T, class M, class R>
diff --git a/core/error_macros.cpp b/core/error_macros.cpp
index 170a22e8dd..7d85aa9001 100644
--- a/core/error_macros.cpp
+++ b/core/error_macros.cpp
@@ -97,3 +97,10 @@ void _err_print_error(const char *p_function, const char *p_file, int p_line, co
_err_error_exists = false;
}
}
+
+void _err_print_index_error(const char *p_function, const char *p_file, int p_line, int64_t p_index, int64_t p_size, const char *p_index_str, const char *p_size_str, bool fatal) {
+
+ String fstr(fatal ? "FATAL: " : "");
+ String err(fstr + "Index" + p_index_str + "=" + itos(p_index) + " out of size (" + p_size_str + "=" + itos(p_size) + ")");
+ _err_print_error(p_function, p_file, p_line, err.utf8().get_data());
+}
diff --git a/core/error_macros.h b/core/error_macros.h
index 1fa7f2c134..8d2f588706 100644
--- a/core/error_macros.h
+++ b/core/error_macros.h
@@ -76,6 +76,7 @@ void add_error_handler(ErrorHandlerList *p_handler);
void remove_error_handler(ErrorHandlerList *p_handler);
void _err_print_error(const char *p_function, const char *p_file, int p_line, const char *p_error, ErrorHandlerType p_type = ERR_HANDLER_ERROR);
+void _err_print_index_error(const char *p_function, const char *p_file, int p_line, int64_t p_index, int64_t p_size, const char *p_index_str, const char *p_size_str, bool fatal = false);
#ifndef _STR
#define _STR(m_x) #m_x
@@ -129,13 +130,13 @@ extern bool _err_error_exists;
// (*): See https://stackoverflow.com/questions/257418/do-while-0-what-is-it-good-for
-#define ERR_FAIL_INDEX(m_index, m_size) \
- do { \
- if (unlikely((m_index) < 0 || (m_index) >= (m_size))) { \
- _err_print_error(FUNCTION_STR, __FILE__, __LINE__, "Index " _STR(m_index) " out of size (" _STR(m_size) ")."); \
- return; \
- } else \
- _err_error_exists = false; \
+#define ERR_FAIL_INDEX(m_index, m_size) \
+ do { \
+ if (unlikely((m_index) < 0 || (m_index) >= (m_size))) { \
+ _err_print_index_error(FUNCTION_STR, __FILE__, __LINE__, m_index, m_size, _STR(m_index), _STR(m_size)); \
+ return; \
+ } else \
+ _err_error_exists = false; \
} while (0); // (*)
/** An index has failed if m_index<0 or m_index >=m_size, the function exists.
@@ -143,24 +144,24 @@ extern bool _err_error_exists;
* appropriate error condition from error_macros.h
*/
-#define ERR_FAIL_INDEX_V(m_index, m_size, m_retval) \
- do { \
- if (unlikely((m_index) < 0 || (m_index) >= (m_size))) { \
- _err_print_error(FUNCTION_STR, __FILE__, __LINE__, "Index " _STR(m_index) " out of size (" _STR(m_size) ")."); \
- return m_retval; \
- } else \
- _err_error_exists = false; \
+#define ERR_FAIL_INDEX_V(m_index, m_size, m_retval) \
+ do { \
+ if (unlikely((m_index) < 0 || (m_index) >= (m_size))) { \
+ _err_print_index_error(FUNCTION_STR, __FILE__, __LINE__, m_index, m_size, _STR(m_index), _STR(m_size)); \
+ return m_retval; \
+ } else \
+ _err_error_exists = false; \
} while (0); // (*)
/** Use this one if there is no sensible fallback, that is, the error is unrecoverable.
* We'll return a null reference and try to keep running.
*/
-#define CRASH_BAD_INDEX(m_index, m_size) \
- do { \
- if (unlikely((m_index) < 0 || (m_index) >= (m_size))) { \
- _err_print_error(FUNCTION_STR, __FILE__, __LINE__, "FATAL: Index " _STR(m_index) " out of size (" _STR(m_size) ")."); \
- GENERATE_TRAP \
- } \
+#define CRASH_BAD_INDEX(m_index, m_size) \
+ do { \
+ if (unlikely((m_index) < 0 || (m_index) >= (m_size))) { \
+ _err_print_index_error(FUNCTION_STR, __FILE__, __LINE__, m_index, m_size, _STR(m_index), _STR(m_size), true); \
+ GENERATE_TRAP \
+ } \
} while (0); // (*)
/** An error condition happened (m_cond tested true) (WARNING this is the opposite as assert().
diff --git a/core/global_constants.cpp b/core/global_constants.cpp
index 6f58af2ccf..8bddeae69a 100644
--- a/core/global_constants.cpp
+++ b/core/global_constants.cpp
@@ -86,6 +86,8 @@ static Vector<_GlobalConstant> _global_constants;
VARIANT_ENUM_CAST(KeyList);
VARIANT_ENUM_CAST(KeyModifierMask);
+VARIANT_ENUM_CAST(ButtonList);
+VARIANT_ENUM_CAST(JoystickList);
void register_global_constants() {
@@ -367,82 +369,82 @@ void register_global_constants() {
BIND_GLOBAL_ENUM_CONSTANT(KEY_MASK_GROUP_SWITCH);
// mouse
- BIND_GLOBAL_CONSTANT(BUTTON_LEFT);
- BIND_GLOBAL_CONSTANT(BUTTON_RIGHT);
- BIND_GLOBAL_CONSTANT(BUTTON_MIDDLE);
- BIND_GLOBAL_CONSTANT(BUTTON_WHEEL_UP);
- BIND_GLOBAL_CONSTANT(BUTTON_WHEEL_DOWN);
- BIND_GLOBAL_CONSTANT(BUTTON_WHEEL_LEFT);
- BIND_GLOBAL_CONSTANT(BUTTON_WHEEL_RIGHT);
- BIND_GLOBAL_CONSTANT(BUTTON_MASK_LEFT);
- BIND_GLOBAL_CONSTANT(BUTTON_MASK_RIGHT);
- BIND_GLOBAL_CONSTANT(BUTTON_MASK_MIDDLE);
+ BIND_GLOBAL_ENUM_CONSTANT(BUTTON_LEFT);
+ BIND_GLOBAL_ENUM_CONSTANT(BUTTON_RIGHT);
+ BIND_GLOBAL_ENUM_CONSTANT(BUTTON_MIDDLE);
+ BIND_GLOBAL_ENUM_CONSTANT(BUTTON_WHEEL_UP);
+ BIND_GLOBAL_ENUM_CONSTANT(BUTTON_WHEEL_DOWN);
+ BIND_GLOBAL_ENUM_CONSTANT(BUTTON_WHEEL_LEFT);
+ BIND_GLOBAL_ENUM_CONSTANT(BUTTON_WHEEL_RIGHT);
+ BIND_GLOBAL_ENUM_CONSTANT(BUTTON_MASK_LEFT);
+ BIND_GLOBAL_ENUM_CONSTANT(BUTTON_MASK_RIGHT);
+ BIND_GLOBAL_ENUM_CONSTANT(BUTTON_MASK_MIDDLE);
//joypads
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_0);
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_1);
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_2);
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_3);
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_4);
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_5);
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_6);
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_7);
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_8);
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_9);
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_10);
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_11);
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_12);
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_13);
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_14);
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_15);
- BIND_GLOBAL_CONSTANT(JOY_BUTTON_MAX);
-
- BIND_GLOBAL_CONSTANT(JOY_SONY_CIRCLE);
- BIND_GLOBAL_CONSTANT(JOY_SONY_X);
- BIND_GLOBAL_CONSTANT(JOY_SONY_SQUARE);
- BIND_GLOBAL_CONSTANT(JOY_SONY_TRIANGLE);
-
- BIND_GLOBAL_CONSTANT(JOY_XBOX_B);
- BIND_GLOBAL_CONSTANT(JOY_XBOX_A);
- BIND_GLOBAL_CONSTANT(JOY_XBOX_X);
- BIND_GLOBAL_CONSTANT(JOY_XBOX_Y);
-
- BIND_GLOBAL_CONSTANT(JOY_DS_A);
- BIND_GLOBAL_CONSTANT(JOY_DS_B);
- BIND_GLOBAL_CONSTANT(JOY_DS_X);
- BIND_GLOBAL_CONSTANT(JOY_DS_Y);
-
- BIND_GLOBAL_CONSTANT(JOY_SELECT);
- BIND_GLOBAL_CONSTANT(JOY_START);
- BIND_GLOBAL_CONSTANT(JOY_DPAD_UP);
- BIND_GLOBAL_CONSTANT(JOY_DPAD_DOWN);
- BIND_GLOBAL_CONSTANT(JOY_DPAD_LEFT);
- BIND_GLOBAL_CONSTANT(JOY_DPAD_RIGHT);
- BIND_GLOBAL_CONSTANT(JOY_L);
- BIND_GLOBAL_CONSTANT(JOY_L2);
- BIND_GLOBAL_CONSTANT(JOY_L3);
- BIND_GLOBAL_CONSTANT(JOY_R);
- BIND_GLOBAL_CONSTANT(JOY_R2);
- BIND_GLOBAL_CONSTANT(JOY_R3);
-
- BIND_GLOBAL_CONSTANT(JOY_AXIS_0);
- BIND_GLOBAL_CONSTANT(JOY_AXIS_1);
- BIND_GLOBAL_CONSTANT(JOY_AXIS_2);
- BIND_GLOBAL_CONSTANT(JOY_AXIS_3);
- BIND_GLOBAL_CONSTANT(JOY_AXIS_4);
- BIND_GLOBAL_CONSTANT(JOY_AXIS_5);
- BIND_GLOBAL_CONSTANT(JOY_AXIS_6);
- BIND_GLOBAL_CONSTANT(JOY_AXIS_7);
- BIND_GLOBAL_CONSTANT(JOY_AXIS_MAX);
-
- BIND_GLOBAL_CONSTANT(JOY_ANALOG_LX);
- BIND_GLOBAL_CONSTANT(JOY_ANALOG_LY);
-
- BIND_GLOBAL_CONSTANT(JOY_ANALOG_RX);
- BIND_GLOBAL_CONSTANT(JOY_ANALOG_RY);
-
- BIND_GLOBAL_CONSTANT(JOY_ANALOG_L2);
- BIND_GLOBAL_CONSTANT(JOY_ANALOG_R2);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_0);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_1);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_2);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_3);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_4);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_5);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_6);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_7);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_8);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_9);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_10);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_11);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_12);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_13);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_14);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_15);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_BUTTON_MAX);
+
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_SONY_CIRCLE);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_SONY_X);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_SONY_SQUARE);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_SONY_TRIANGLE);
+
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_XBOX_B);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_XBOX_A);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_XBOX_X);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_XBOX_Y);
+
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_DS_A);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_DS_B);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_DS_X);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_DS_Y);
+
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_SELECT);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_START);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_DPAD_UP);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_DPAD_DOWN);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_DPAD_LEFT);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_DPAD_RIGHT);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_L);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_L2);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_L3);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_R);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_R2);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_R3);
+
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_AXIS_0);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_AXIS_1);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_AXIS_2);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_AXIS_3);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_AXIS_4);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_AXIS_5);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_AXIS_6);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_AXIS_7);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_AXIS_MAX);
+
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_ANALOG_LX);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_ANALOG_LY);
+
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_ANALOG_RX);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_ANALOG_RY);
+
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_ANALOG_L2);
+ BIND_GLOBAL_ENUM_CONSTANT(JOY_ANALOG_R2);
// error list
diff --git a/core/image.cpp b/core/image.cpp
index c7f21d5599..42684e7ea7 100644
--- a/core/image.cpp
+++ b/core/image.cpp
@@ -1061,7 +1061,6 @@ Error Image::generate_mipmaps() {
int size = _get_dst_image_size(width, height, format, mmcount);
data.resize(size);
- print_line("to gen mipmaps w " + itos(width) + " h " + itos(height) + " format " + get_format_name(format) + " mipmaps " + itos(mmcount) + " new size is: " + itos(size));
PoolVector<uint8_t>::Write wp = data.write();
@@ -2474,6 +2473,7 @@ void Image::fix_alpha_edges() {
if (rp[3] < alpha_threshold)
continue;
+ closest_dist = dist;
closest_color[0] = rp[0];
closest_color[1] = rp[1];
closest_color[2] = rp[2];
diff --git a/core/io/SCsub b/core/io/SCsub
index 4efc902717..79b56cb716 100644
--- a/core/io/SCsub
+++ b/core/io/SCsub
@@ -5,3 +5,4 @@ Import('env')
env.add_source_files(env.core_sources, "*.cpp")
Export('env')
+
diff --git a/core/io/compression.cpp b/core/io/compression.cpp
index fbe97e54c7..51d48901cf 100644
--- a/core/io/compression.cpp
+++ b/core/io/compression.cpp
@@ -78,9 +78,16 @@ int Compression::compress(uint8_t *p_dst, const uint8_t *p_src, int p_src_size,
} break;
case MODE_ZSTD: {
-
+ ZSTD_CCtx *cctx = ZSTD_createCCtx();
+ ZSTD_CCtx_setParameter(cctx, ZSTD_p_compressionLevel, zstd_level);
+ if (zstd_long_distance_matching) {
+ ZSTD_CCtx_setParameter(cctx, ZSTD_p_enableLongDistanceMatching, 1);
+ ZSTD_CCtx_setParameter(cctx, ZSTD_p_windowLog, zstd_window_log_size);
+ }
int max_dst_size = get_max_compressed_buffer_size(p_src_size, MODE_ZSTD);
- return ZSTD_compress(p_dst, max_dst_size, p_src, p_src_size, zstd_level);
+ int ret = ZSTD_compressCCtx(cctx, p_dst, max_dst_size, p_src, p_src_size, zstd_level);
+ ZSTD_freeCCtx(cctx);
+ return ret;
} break;
}
@@ -165,8 +172,11 @@ int Compression::decompress(uint8_t *p_dst, int p_dst_max_size, const uint8_t *p
return total;
} break;
case MODE_ZSTD: {
-
- return ZSTD_decompress(p_dst, p_dst_max_size, p_src, p_src_size);
+ ZSTD_DCtx *dctx = ZSTD_createDCtx();
+ if (zstd_long_distance_matching) ZSTD_DCtx_setMaxWindowSize(dctx, 1 << zstd_window_log_size);
+ int ret = ZSTD_decompressDCtx(dctx, p_dst, p_dst_max_size, p_src, p_src_size);
+ ZSTD_freeDCtx(dctx);
+ return ret;
} break;
}
@@ -176,3 +186,5 @@ int Compression::decompress(uint8_t *p_dst, int p_dst_max_size, const uint8_t *p
int Compression::zlib_level = Z_DEFAULT_COMPRESSION;
int Compression::gzip_level = Z_DEFAULT_COMPRESSION;
int Compression::zstd_level = 3;
+bool Compression::zstd_long_distance_matching = false;
+int Compression::zstd_window_log_size = 27;
diff --git a/core/io/compression.h b/core/io/compression.h
index 22d8109d4f..5a9aedec31 100644
--- a/core/io/compression.h
+++ b/core/io/compression.h
@@ -38,6 +38,8 @@ public:
static int zlib_level;
static int gzip_level;
static int zstd_level;
+ static bool zstd_long_distance_matching;
+ static int zstd_window_log_size;
enum Mode {
MODE_FASTLZ,
diff --git a/core/io/file_access_encrypted.cpp b/core/io/file_access_encrypted.cpp
index c93e12f7da..e5da307153 100644
--- a/core/io/file_access_encrypted.cpp
+++ b/core/io/file_access_encrypted.cpp
@@ -62,12 +62,12 @@ Error FileAccessEncrypted::open_and_parse(FileAccess *p_base, const Vector<uint8
writing = false;
key = p_key;
uint32_t magic = p_base->get_32();
- print_line("MAGIC: " + itos(magic));
ERR_FAIL_COND_V(magic != COMP_MAGIC, ERR_FILE_UNRECOGNIZED);
+
mode = Mode(p_base->get_32());
ERR_FAIL_INDEX_V(mode, MODE_MAX, ERR_FILE_CORRUPT);
ERR_FAIL_COND_V(mode == 0, ERR_FILE_CORRUPT);
- print_line("MODE: " + itos(mode));
+
unsigned char md5d[16];
p_base->get_buffer(md5d, 16);
length = p_base->get_64();
diff --git a/core/io/http_client.cpp b/core/io/http_client.cpp
index b8c0a2b616..46d52384e5 100644
--- a/core/io/http_client.cpp
+++ b/core/io/http_client.cpp
@@ -189,16 +189,6 @@ Error HTTPClient::request(Method p_method, const String &p_url, const Vector<Str
return OK;
}
-Error HTTPClient::send_body_text(const String &p_body) {
-
- return OK;
-}
-
-Error HTTPClient::send_body_data(const PoolByteArray &p_body) {
-
- return OK;
-}
-
bool HTTPClient::has_response() const {
return response_headers.size() != 0;
@@ -629,8 +619,6 @@ void HTTPClient::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_connection"), &HTTPClient::get_connection);
ClassDB::bind_method(D_METHOD("request_raw", "method", "url", "headers", "body"), &HTTPClient::request_raw);
ClassDB::bind_method(D_METHOD("request", "method", "url", "headers", "body"), &HTTPClient::request, DEFVAL(String()));
- ClassDB::bind_method(D_METHOD("send_body_text", "body"), &HTTPClient::send_body_text);
- ClassDB::bind_method(D_METHOD("send_body_data", "body"), &HTTPClient::send_body_data);
ClassDB::bind_method(D_METHOD("close"), &HTTPClient::close);
ClassDB::bind_method(D_METHOD("has_response"), &HTTPClient::has_response);
diff --git a/core/io/http_client.h b/core/io/http_client.h
index 023370ae81..f8a3349e6e 100644
--- a/core/io/http_client.h
+++ b/core/io/http_client.h
@@ -169,8 +169,6 @@ public:
Error request_raw(Method p_method, const String &p_url, const Vector<String> &p_headers, const PoolVector<uint8_t> &p_body);
Error request(Method p_method, const String &p_url, const Vector<String> &p_headers, const String &p_body = String());
- Error send_body_text(const String &p_body);
- Error send_body_data(const PoolByteArray &p_body);
void close();
diff --git a/core/io/logger.cpp b/core/io/logger.cpp
index ad6371f1e1..ce2ce44b1d 100644
--- a/core/io/logger.cpp
+++ b/core/io/logger.cpp
@@ -110,7 +110,7 @@ void RotatedFileLogger::close_file() {
void RotatedFileLogger::clear_old_backups() {
int max_backups = max_files - 1; // -1 for the current file
- String basename = base_path.get_basename();
+ String basename = base_path.get_file().get_basename();
String extension = "." + base_path.get_extension();
DirAccess *da = DirAccess::open(base_path.get_base_dir());
@@ -122,7 +122,7 @@ void RotatedFileLogger::clear_old_backups() {
String f = da->get_next();
Set<String> backups;
while (f != String()) {
- if (!da->current_is_dir() && f.begins_with(basename) && f.ends_with(extension) && f != base_path) {
+ if (!da->current_is_dir() && f.begins_with(basename) && f.ends_with(extension) && f != base_path.get_file()) {
backups.insert(f);
}
f = da->get_next();
@@ -149,7 +149,7 @@ void RotatedFileLogger::rotate_file() {
char timestamp[21];
OS::Date date = OS::get_singleton()->get_date();
OS::Time time = OS::get_singleton()->get_time();
- sprintf(timestamp, "-%04d-%02d-%02d-%02d-%02d-%02d", date.year, date.month, date.day + 1, time.hour, time.min, time.sec);
+ sprintf(timestamp, "-%04d-%02d-%02d-%02d-%02d-%02d", date.year, date.month, date.day, time.hour, time.min, time.sec);
String backup_name = base_path.get_basename() + timestamp + "." + base_path.get_extension();
diff --git a/core/io/resource_format_binary.cpp b/core/io/resource_format_binary.cpp
index 900db7c2dc..03c3c5f615 100644
--- a/core/io/resource_format_binary.cpp
+++ b/core/io/resource_format_binary.cpp
@@ -282,7 +282,6 @@ Error ResourceInteractiveLoaderBinary::parse_variant(Variant &r_v) {
property = _get_string();
NodePath np = NodePath(names, subnames, absolute, property);
- //print_line("got path: "+String(np));
r_v = np;
@@ -640,7 +639,6 @@ Error ResourceInteractiveLoaderBinary::poll() {
String path = external_resources[s].path;
- print_line("load external res: " + path);
if (remaps.has(path)) {
path = remaps[path];
}
@@ -706,8 +704,6 @@ Error ResourceInteractiveLoaderBinary::poll() {
String t = get_unicode_string();
- // print_line("loading resource of type "+t+" path is "+path);
-
Object *obj = ClassDB::instance(t);
if (!obj) {
error = ERR_FILE_CORRUPT;
@@ -907,20 +903,6 @@ void ResourceInteractiveLoaderBinary::open(FileAccess *p_f) {
external_resources.push_back(er);
}
- //see if the exporter has different set of external resources for more efficient loading
- /*
- String preload_depts = "deps/"+res_path.md5_text();
- if (Globals::get_singleton()->has(preload_depts)) {
- external_resources.clear();
- //ignore external resources and use these
- NodePath depts=Globals::get_singleton()->get(preload_depts);
- external_resources.resize(depts.get_name_count());
- for(int i=0;i<depts.get_name_count();i++) {
- external_resources[i].path=depts.get_name(i);
- }
- print_line(res_path+" - EXTERNAL RESOURCES: "+itos(external_resources.size()));
- }*/
-
print_bl("ext resources: " + itos(ext_resources_size));
uint32_t int_resources_size = f->get_32();
diff --git a/core/make_binders.py b/core/make_binders.py
index 6468c029f0..6f42c6e8eb 100644
--- a/core/make_binders.py
+++ b/core/make_binders.py
@@ -244,7 +244,7 @@ def make_version(template, nargs, argmax, const, ret):
def run(target, source, env):
- versions = 10
+ versions = 11
versions_ext = 6
text = ""
text_ext = ""
diff --git a/core/map.h b/core/map.h
index f01062ebed..fb24a5868c 100644
--- a/core/map.h
+++ b/core/map.h
@@ -438,7 +438,6 @@ private:
Element *rp = ((p_node->left == _data._nil) || (p_node->right == _data._nil)) ? p_node : p_node->_next;
Element *node = (rp->left == _data._nil) ? rp->right : rp->left;
- node->parent = rp->parent;
Element *sibling;
if (rp == rp->parent->left) {
diff --git a/core/math/a_star.cpp b/core/math/a_star.cpp
index 4f80fb2491..f43af49754 100644
--- a/core/math/a_star.cpp
+++ b/core/math/a_star.cpp
@@ -42,8 +42,10 @@ int AStar::get_available_point_id() const {
}
void AStar::add_point(int p_id, const Vector3 &p_pos, real_t p_weight_scale) {
+
ERR_FAIL_COND(p_id < 0);
ERR_FAIL_COND(p_weight_scale < 1);
+
if (!points.has(p_id)) {
Point *pt = memnew(Point);
pt->id = p_id;
@@ -64,12 +66,29 @@ Vector3 AStar::get_point_position(int p_id) const {
return points[p_id]->pos;
}
+
+void AStar::set_point_position(int p_id, const Vector3 &p_pos) {
+
+ ERR_FAIL_COND(!points.has(p_id));
+
+ points[p_id]->pos = p_pos;
+}
+
real_t AStar::get_point_weight_scale(int p_id) const {
ERR_FAIL_COND_V(!points.has(p_id), 0);
return points[p_id]->weight_scale;
}
+
+void AStar::set_point_weight_scale(int p_id, real_t p_weight_scale) {
+
+ ERR_FAIL_COND(!points.has(p_id));
+ ERR_FAIL_COND(p_weight_scale < 1);
+
+ points[p_id]->weight_scale = p_weight_scale;
+}
+
void AStar::remove_point(int p_id) {
ERR_FAIL_COND(!points.has(p_id));
@@ -130,6 +149,7 @@ bool AStar::has_point(int p_id) const {
}
Array AStar::get_points() {
+
Array point_list;
for (const Map<int, Point *>::Element *E = points.front(); E; E = E->next()) {
@@ -171,6 +191,7 @@ int AStar::get_closest_point(const Vector3 &p_point) const {
return closest_id;
}
+
Vector3 AStar::get_closest_position_in_segment(const Vector3 &p_point) const {
real_t closest_dist = 1e20;
@@ -222,15 +243,15 @@ bool AStar::_solve(Point *begin_point, Point *end_point) {
while (!found_route) {
if (open_list.first() == NULL) {
- //could not find path sadly
+ // No path found
break;
}
- //check open list
+ // Check open list
SelfList<Point> *least_cost_point = NULL;
real_t least_cost = 1e30;
- //this could be faster (cache previous results)
+ // TODO: Cache previous results
for (SelfList<Point> *E = open_list.first(); E; E = E->next()) {
Point *p = E->self();
@@ -246,7 +267,7 @@ bool AStar::_solve(Point *begin_point, Point *end_point) {
}
Point *p = least_cost_point->self();
- //open the neighbours for search
+ // Open the neighbours for search
int es = p->neighbours.size();
for (int i = 0; i < es; i++) {
@@ -256,7 +277,7 @@ bool AStar::_solve(Point *begin_point, Point *end_point) {
real_t distance = _compute_cost(p->id, e->id) * e->weight_scale + p->distance;
if (e->last_pass == pass) {
- //oh this was visited already, can we win the cost?
+ // Already visited, is this cheaper?
if (e->distance > distance) {
@@ -264,15 +285,15 @@ bool AStar::_solve(Point *begin_point, Point *end_point) {
e->distance = distance;
}
} else {
- //add to open neighbours
+ // Add to open neighbours
e->prev_point = p;
e->distance = distance;
- e->last_pass = pass; //mark as used
+ e->last_pass = pass; // Mark as used
open_list.add(&e->list);
if (e == end_point) {
- //oh my reached end! stop algorithm
+ // End reached; stop algorithm
found_route = true;
break;
}
@@ -285,7 +306,7 @@ bool AStar::_solve(Point *begin_point, Point *end_point) {
open_list.remove(least_cost_point);
}
- //clear the openf list
+ // Clear the openf list
while (open_list.first()) {
open_list.remove(open_list.first());
}
@@ -294,6 +315,7 @@ bool AStar::_solve(Point *begin_point, Point *end_point) {
}
float AStar::_estimate_cost(int p_from_id, int p_to_id) {
+
if (get_script_instance() && get_script_instance()->has_method(SceneStringNames::get_singleton()->_estimate_cost))
return get_script_instance()->call(SceneStringNames::get_singleton()->_estimate_cost, p_from_id, p_to_id);
@@ -301,6 +323,7 @@ float AStar::_estimate_cost(int p_from_id, int p_to_id) {
}
float AStar::_compute_cost(int p_from_id, int p_to_id) {
+
if (get_script_instance() && get_script_instance()->has_method(SceneStringNames::get_singleton()->_compute_cost))
return get_script_instance()->call(SceneStringNames::get_singleton()->_compute_cost, p_from_id, p_to_id);
@@ -331,9 +354,9 @@ PoolVector<Vector3> AStar::get_point_path(int p_from_id, int p_to_id) {
if (!found_route)
return PoolVector<Vector3>();
- //midpoints
+ // Midpoints
Point *p = end_point;
- int pc = 1; //begin point
+ int pc = 1; // Begin point
while (p != begin_point) {
pc++;
p = p->prev_point;
@@ -352,7 +375,7 @@ PoolVector<Vector3> AStar::get_point_path(int p_from_id, int p_to_id) {
p = p->prev_point;
}
- w[0] = p->pos; //assign first
+ w[0] = p->pos; // Assign first
}
return path;
@@ -382,9 +405,9 @@ PoolVector<int> AStar::get_id_path(int p_from_id, int p_to_id) {
if (!found_route)
return PoolVector<int>();
- //midpoints
+ // Midpoints
Point *p = end_point;
- int pc = 1; //begin point
+ int pc = 1; // Begin point
while (p != begin_point) {
pc++;
p = p->prev_point;
@@ -403,7 +426,7 @@ PoolVector<int> AStar::get_id_path(int p_from_id, int p_to_id) {
p = p->prev_point;
}
- w[0] = p->id; //assign first
+ w[0] = p->id; // Assign first
}
return path;
@@ -414,7 +437,9 @@ void AStar::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_available_point_id"), &AStar::get_available_point_id);
ClassDB::bind_method(D_METHOD("add_point", "id", "position", "weight_scale"), &AStar::add_point, DEFVAL(1.0));
ClassDB::bind_method(D_METHOD("get_point_position", "id"), &AStar::get_point_position);
+ ClassDB::bind_method(D_METHOD("set_point_position", "id", "position"), &AStar::set_point_position);
ClassDB::bind_method(D_METHOD("get_point_weight_scale", "id"), &AStar::get_point_weight_scale);
+ ClassDB::bind_method(D_METHOD("set_point_weight_scale", "id", "weight_scale"), &AStar::set_point_weight_scale);
ClassDB::bind_method(D_METHOD("remove_point", "id"), &AStar::remove_point);
ClassDB::bind_method(D_METHOD("has_point", "id"), &AStar::has_point);
ClassDB::bind_method(D_METHOD("get_points"), &AStar::get_points);
@@ -443,4 +468,5 @@ AStar::AStar() {
AStar::~AStar() {
pass = 1;
+ clear();
}
diff --git a/core/math/a_star.h b/core/math/a_star.h
index 2c1e2e2cf7..23773e82e2 100644
--- a/core/math/a_star.h
+++ b/core/math/a_star.h
@@ -33,6 +33,8 @@
#include "reference.h"
#include "self_list.h"
/**
+ A* pathfinding algorithm
+
@author Juan Linietsky <reduzio@gmail.com>
*/
@@ -53,7 +55,7 @@ class AStar : public Reference {
Vector<Point *> neighbours;
- //used for pathfinding
+ // Used for pathfinding
Point *prev_point;
real_t distance;
@@ -102,7 +104,9 @@ public:
void add_point(int p_id, const Vector3 &p_pos, real_t p_weight_scale = 1);
Vector3 get_point_position(int p_id) const;
+ void set_point_position(int p_id, const Vector3 &p_pos);
real_t get_point_weight_scale(int p_id) const;
+ void set_point_weight_scale(int p_id, real_t p_weight_scale);
void remove_point(int p_id);
bool has_point(int p_id) const;
Array get_points();
diff --git a/core/math/math_funcs.h b/core/math/math_funcs.h
index 4644a00d7c..7715e5d6e5 100644
--- a/core/math/math_funcs.h
+++ b/core/math/math_funcs.h
@@ -390,6 +390,23 @@ public:
return hf;
}
+
+ static _ALWAYS_INLINE_ float snap_scalar(float p_offset, float p_step, float p_target) {
+ return p_step != 0 ? Math::stepify(p_target - p_offset, p_step) + p_offset : p_target;
+ }
+
+ static _ALWAYS_INLINE_ float snap_scalar_seperation(float p_offset, float p_step, float p_target, float p_separation) {
+ if (p_step != 0) {
+ float a = Math::stepify(p_target - p_offset, p_step + p_separation) + p_offset;
+ float b = a;
+ if (p_target >= 0)
+ b -= p_separation;
+ else
+ b += p_step;
+ return (Math::abs(p_target - a) < Math::abs(p_target - b)) ? a : b;
+ }
+ return p_target;
+ }
};
#endif // MATH_FUNCS_H
diff --git a/core/math/matrix3.cpp b/core/math/matrix3.cpp
index 4051de7afb..ab3bca79ae 100644
--- a/core/math/matrix3.cpp
+++ b/core/math/matrix3.cpp
@@ -279,7 +279,7 @@ Vector3 Basis::get_signed_scale() const {
// Decomposes a Basis into a rotation-reflection matrix (an element of the group O(3)) and a positive scaling matrix as B = O.S.
// Returns the rotation-reflection matrix via reference argument, and scaling information is returned as a Vector3.
-// This (internal) function is too specıfıc and named too ugly to expose to users, and probably there's no need to do so.
+// This (internal) function is too specific and named too ugly to expose to users, and probably there's no need to do so.
Vector3 Basis::rotref_posscale_decomposition(Basis &rotref) const {
#ifdef MATH_CHECKS
ERR_FAIL_COND_V(determinant() == 0, Vector3());
@@ -371,31 +371,30 @@ Vector3 Basis::get_euler_xyz() const {
#ifdef MATH_CHECKS
ERR_FAIL_COND_V(is_rotation() == false, euler);
#endif
- euler.y = Math::asin(elements[0][2]);
- if (euler.y < Math_PI * 0.5) {
- if (euler.y > -Math_PI * 0.5) {
+ real_t sy = elements[0][2];
+ if (sy < 1.0) {
+ if (sy > -1.0) {
// is this a pure Y rotation?
if (elements[1][0] == 0.0 && elements[0][1] == 0.0 && elements[1][2] == 0 && elements[2][1] == 0 && elements[1][1] == 1) {
- // return the simplest form
+ // return the simplest form (human friendlier in editor and scripts)
euler.x = 0;
euler.y = atan2(elements[0][2], elements[0][0]);
euler.z = 0;
} else {
euler.x = Math::atan2(-elements[1][2], elements[2][2]);
+ euler.y = Math::asin(sy);
euler.z = Math::atan2(-elements[0][1], elements[0][0]);
}
-
} else {
- real_t r = Math::atan2(elements[1][0], elements[1][1]);
+ euler.x = -Math::atan2(elements[0][1], elements[1][1]);
+ euler.y = -Math_PI / 2.0;
euler.z = 0.0;
- euler.x = euler.z - r;
}
} else {
- real_t r = Math::atan2(elements[0][1], elements[1][1]);
- euler.z = 0;
- euler.x = r - euler.z;
+ euler.x = Math::atan2(elements[0][1], elements[1][1]);
+ euler.y = Math_PI / 2.0;
+ euler.z = 0.0;
}
-
return euler;
}
@@ -445,7 +444,7 @@ Vector3 Basis::get_euler_yxz() const {
if (m12 > -1) {
// is this a pure X rotation?
if (elements[1][0] == 0 && elements[0][1] == 0 && elements[0][2] == 0 && elements[2][0] == 0 && elements[0][0] == 1) {
- // return the simplest form
+ // return the simplest form (human friendlier in editor and scripts)
euler.x = atan2(-m12, elements[1][1]);
euler.y = 0;
euler.z = 0;
@@ -538,7 +537,7 @@ Basis::operator String() const {
return mtx;
}
-Basis::operator Quat() const {
+Quat Basis::get_quat() const {
//commenting this check because precision issues cause it to fail when it shouldn't
//#ifdef MATH_CHECKS
//ERR_FAIL_COND_V(is_rotation() == false, Quat());
@@ -710,12 +709,7 @@ void Basis::get_axis_angle(Vector3 &r_axis, real_t &r_angle) const {
r_angle = angle;
}
-Basis::Basis(const Vector3 &p_euler) {
-
- set_euler(p_euler);
-}
-
-Basis::Basis(const Quat &p_quat) {
+void Basis::set_quat(const Quat &p_quat) {
real_t d = p_quat.length_squared();
real_t s = 2.0 / d;
@@ -750,7 +744,3 @@ void Basis::set_axis_angle(const Vector3 &p_axis, real_t p_phi) {
elements[2][1] = p_axis.y * p_axis.z * (1.0 - cosine) + p_axis.x * sine;
elements[2][2] = axis_sq.z + cosine * (1.0 - axis_sq.z);
}
-
-Basis::Basis(const Vector3 &p_axis, real_t p_phi) {
- set_axis_angle(p_axis, p_phi);
-}
diff --git a/core/math/matrix3.h b/core/math/matrix3.h
index 23429888e0..9a33b8203d 100644
--- a/core/math/matrix3.h
+++ b/core/math/matrix3.h
@@ -88,8 +88,11 @@ public:
Vector3 get_euler_yxz() const;
void set_euler_yxz(const Vector3 &p_euler);
- Vector3 get_euler() const { return get_euler_yxz(); };
- void set_euler(const Vector3 &p_euler) { set_euler_yxz(p_euler); };
+ Quat get_quat() const;
+ void set_quat(const Quat &p_quat);
+
+ Vector3 get_euler() const { return get_euler_yxz(); }
+ void set_euler(const Vector3 &p_euler) { set_euler_yxz(p_euler); }
void get_axis_angle(Vector3 &r_axis, real_t &r_angle) const;
void set_axis_angle(const Vector3 &p_axis, real_t p_phi);
@@ -205,11 +208,11 @@ public:
bool is_symmetric() const;
Basis diagonalize();
- operator Quat() const;
+ operator Quat() const { return get_quat(); }
- Basis(const Quat &p_quat); // euler
- Basis(const Vector3 &p_euler); // euler
- Basis(const Vector3 &p_axis, real_t p_phi);
+ Basis(const Quat &p_quat) { set_quat(p_quat); };
+ Basis(const Vector3 &p_euler) { set_euler(p_euler); }
+ Basis(const Vector3 &p_axis, real_t p_phi) { set_axis_angle(p_axis, p_phi); }
_FORCE_INLINE_ Basis(const Vector3 &row0, const Vector3 &row1, const Vector3 &row2) {
elements[0] = row0;
diff --git a/core/os/input.cpp b/core/os/input.cpp
index a4b82299a7..848b003d5e 100644
--- a/core/os/input.cpp
+++ b/core/os/input.cpp
@@ -58,6 +58,7 @@ void Input::_bind_methods() {
ClassDB::bind_method(D_METHOD("is_action_just_released", "action"), &Input::is_action_just_released);
ClassDB::bind_method(D_METHOD("add_joy_mapping", "mapping", "update_existing"), &Input::add_joy_mapping, DEFVAL(false));
ClassDB::bind_method(D_METHOD("remove_joy_mapping", "guid"), &Input::remove_joy_mapping);
+ ClassDB::bind_method(D_METHOD("joy_connection_changed", "device", "connected", "name", "guid"), &Input::joy_connection_changed);
ClassDB::bind_method(D_METHOD("is_joy_known", "device"), &Input::is_joy_known);
ClassDB::bind_method(D_METHOD("get_joy_axis", "device", "axis"), &Input::get_joy_axis);
ClassDB::bind_method(D_METHOD("get_joy_name", "device"), &Input::get_joy_name);
diff --git a/core/os/input_event.cpp b/core/os/input_event.cpp
index bef98ac3f2..6b43f2c63b 100644
--- a/core/os/input_event.cpp
+++ b/core/os/input_event.cpp
@@ -637,7 +637,7 @@ bool InputEventJoypadMotion::action_match(const Ref<InputEvent> &p_event) const
if (jm.is_null())
return false;
- return (axis == jm->axis && (axis_value < 0) == (jm->axis_value < 0));
+ return (axis == jm->axis && ((axis_value < 0) == (jm->axis_value < 0) || jm->axis_value == 0));
}
String InputEventJoypadMotion::as_text() const {
diff --git a/core/os/input_event.h b/core/os/input_event.h
index 5dc0f91d5f..f2c8cc802d 100644
--- a/core/os/input_event.h
+++ b/core/os/input_event.h
@@ -44,7 +44,7 @@
* The events are pretty obvious.
*/
-enum {
+enum ButtonList {
BUTTON_LEFT = 1,
BUTTON_RIGHT = 2,
BUTTON_MIDDLE = 3,
@@ -58,7 +58,7 @@ enum {
};
-enum {
+enum JoystickList {
JOY_BUTTON_0 = 0,
JOY_BUTTON_1 = 1,
diff --git a/core/os/keyboard.cpp b/core/os/keyboard.cpp
index 30e7d5e791..edf4f3e2f9 100644
--- a/core/os/keyboard.cpp
+++ b/core/os/keyboard.cpp
@@ -505,6 +505,27 @@ static const _KeyCodeReplace _keycode_replace_neo[] = {
{ 0, 0 }
};
+static const _KeyCodeReplace _keycode_replace_colemak[] = {
+ { KEY_E, KEY_F },
+ { KEY_R, KEY_P },
+ { KEY_T, KEY_G },
+ { KEY_Y, KEY_J },
+ { KEY_U, KEY_L },
+ { KEY_I, KEY_U },
+ { KEY_O, KEY_Y },
+ { KEY_P, KEY_SEMICOLON },
+ { KEY_S, KEY_R },
+ { KEY_D, KEY_S },
+ { KEY_F, KEY_T },
+ { KEY_G, KEY_D },
+ { KEY_J, KEY_N },
+ { KEY_K, KEY_E },
+ { KEY_L, KEY_I },
+ { KEY_SEMICOLON, KEY_O },
+ { KEY_N, KEY_K },
+ { 0, 0 }
+};
+
int keycode_get_count() {
const _KeyCodeText *kct = &_keycodes[0];
@@ -537,6 +558,7 @@ int latin_keyboard_keycode_convert(int p_keycode) {
case OS::LATIN_KEYBOARD_QZERTY: kcr = _keycode_replace_qzerty; break;
case OS::LATIN_KEYBOARD_DVORAK: kcr = _keycode_replace_dvorak; break;
case OS::LATIN_KEYBOARD_NEO: kcr = _keycode_replace_neo; break;
+ case OS::LATIN_KEYBOARD_COLEMAK: kcr = _keycode_replace_colemak; break;
default: return p_keycode;
}
diff --git a/core/os/main_loop.cpp b/core/os/main_loop.cpp
index b146d370f1..8b4449586b 100644
--- a/core/os/main_loop.cpp
+++ b/core/os/main_loop.cpp
@@ -52,6 +52,7 @@ void MainLoop::_bind_methods() {
BIND_CONSTANT(NOTIFICATION_WM_FOCUS_IN);
BIND_CONSTANT(NOTIFICATION_WM_FOCUS_OUT);
BIND_CONSTANT(NOTIFICATION_WM_QUIT_REQUEST);
+ BIND_CONSTANT(NOTIFICATION_WM_GO_BACK_REQUEST);
BIND_CONSTANT(NOTIFICATION_WM_UNFOCUS_REQUEST);
BIND_CONSTANT(NOTIFICATION_OS_MEMORY_WARNING);
BIND_CONSTANT(NOTIFICATION_TRANSLATION_CHANGED);
diff --git a/core/os/os.h b/core/os/os.h
index 48effe99da..f5e479ac0b 100644
--- a/core/os/os.h
+++ b/core/os/os.h
@@ -409,6 +409,7 @@ public:
LATIN_KEYBOARD_QZERTY,
LATIN_KEYBOARD_DVORAK,
LATIN_KEYBOARD_NEO,
+ LATIN_KEYBOARD_COLEMAK,
};
virtual LatinKeyboardVariant get_latin_keyboard_variant() const;
diff --git a/core/project_settings.cpp b/core/project_settings.cpp
index 3994011c06..2e4fc26784 100644
--- a/core/project_settings.cpp
+++ b/core/project_settings.cpp
@@ -261,7 +261,7 @@ bool ProjectSettings::_load_resource_pack(const String &p_pack) {
return true;
}
-Error ProjectSettings::setup(const String &p_path, const String &p_main_pack) {
+Error ProjectSettings::setup(const String &p_path, const String &p_main_pack, bool p_upwards) {
//If looking for files in network, just use network!
@@ -270,11 +270,6 @@ Error ProjectSettings::setup(const String &p_path, const String &p_main_pack) {
if (_load_settings("res://project.godot") == OK || _load_settings_binary("res://project.binary") == OK) {
_load_settings("res://override.cfg");
-#ifdef DEBUG_ENABLED
- } else {
- // when debug version of godot is used, provide some feedback to the developer
- print_line("Couldn't open project over network");
-#endif
}
return OK;
@@ -292,12 +287,6 @@ Error ProjectSettings::setup(const String &p_path, const String &p_main_pack) {
if (_load_settings("res://project.godot") == OK || _load_settings_binary("res://project.binary") == OK) {
//load override from location of the main pack
_load_settings(p_main_pack.get_base_dir().plus_file("override.cfg"));
-#ifdef DEBUG_ENABLED
- // when debug version of godot is used, provide some feedback to the developer
- print_line("Successfully loaded " + p_main_pack + "/project.godot or project.binary");
- } else {
- print_line("Couldn't load/find " + p_main_pack + "/project.godot or project.binary");
-#endif
}
return OK;
@@ -315,18 +304,9 @@ Error ProjectSettings::setup(const String &p_path, const String &p_main_pack) {
if (_load_resource_pack(datapack_name)) {
found = true;
} else {
-#ifdef DEBUG_ENABLED
- // when debug version of godot is used, provide some feedback to the developer
- print_line("Couldn't open " + datapack_name);
-#endif
datapack_name = filebase_name + ".pck";
if (_load_resource_pack(datapack_name)) {
found = true;
-#ifdef DEBUG_ENABLED
- } else {
- // when debug version of godot is used, provide some feedback to the developer
- print_line("Couldn't open " + datapack_name);
-#endif
}
}
@@ -335,13 +315,6 @@ Error ProjectSettings::setup(const String &p_path, const String &p_main_pack) {
if (_load_settings("res://project.godot") == OK || _load_settings_binary("res://project.binary") == OK) {
// load override from location of executable
_load_settings(exec_path.get_base_dir().plus_file("override.cfg"));
-
-#ifdef DEBUG_ENABLED
- // when debug version of godot is used, provide some feedback to the developer
- print_line("Successfully loaded " + datapack_name + "/project.godot or project.binary");
- } else {
- print_line("Couldn't load/find " + datapack_name + "/project.godot or project.binary");
-#endif
}
return OK;
@@ -362,12 +335,6 @@ Error ProjectSettings::setup(const String &p_path, const String &p_main_pack) {
if (_load_settings("res://project.godot") == OK || _load_settings_binary("res://project.binary") == OK) {
_load_settings("res://override.cfg");
-#ifdef DEBUG_ENABLED
- // when debug version of godot is used, provide some feedback to the developer
- print_line("Successfully loaded " + resource_path + "/project.godot or project.binary");
- } else {
- print_line("Couldn't load/find " + resource_path + "/project.godot or project.binary");
-#endif
}
return OK;
@@ -393,18 +360,16 @@ Error ProjectSettings::setup(const String &p_path, const String &p_main_pack) {
candidate = current_dir;
found = true;
break;
-#ifdef DEBUG_ENABLED
- // when debug version of godot is used, provide some feedback to the developer
- print_line("Successfully loaded " + current_dir + "/project.godot or project.binary");
- } else {
- print_line("Couldn't load/find " + current_dir + "/project.godot or project.binary");
-#endif
}
- d->change_dir("..");
- if (d->get_current_dir() == current_dir)
- break; //not doing anything useful
- current_dir = d->get_current_dir();
+ if (p_upwards) {
+ d->change_dir("..");
+ if (d->get_current_dir() == current_dir)
+ break; //not doing anything useful
+ current_dir = d->get_current_dir();
+ } else {
+ break;
+ }
}
resource_path = candidate;
@@ -1071,10 +1036,16 @@ ProjectSettings::ProjectSettings() {
GLOBAL_DEF("debug/settings/profiler/max_functions", 16384);
//assigning here, because using GLOBAL_GET on every block for compressing can be slow
+ Compression::zstd_long_distance_matching = GLOBAL_DEF("compression/formats/zstd/long_distance_matching", false);
+ custom_prop_info["compression/formats/zstd/long_distance_matching"] = PropertyInfo(Variant::BOOL, "compression/formats/zstd/long_distance_matching");
Compression::zstd_level = GLOBAL_DEF("compression/formats/zstd/compression_level", 3);
custom_prop_info["compression/formats/zstd/compression_level"] = PropertyInfo(Variant::INT, "compression/formats/zstd/compression_level", PROPERTY_HINT_RANGE, "1,22,1");
+ Compression::zstd_window_log_size = GLOBAL_DEF("compression/formats/zstd/window_log_size", 27);
+ custom_prop_info["compression/formats/zstd/window_log_size"] = PropertyInfo(Variant::INT, "compression/formats/zstd/window_log_size", PROPERTY_HINT_RANGE, "10,30,1");
+
Compression::zlib_level = GLOBAL_DEF("compression/formats/zlib/compression_level", Z_DEFAULT_COMPRESSION);
custom_prop_info["compression/formats/zlib/compression_level"] = PropertyInfo(Variant::INT, "compression/formats/zlib/compression_level", PROPERTY_HINT_RANGE, "-1,9,1");
+
Compression::gzip_level = GLOBAL_DEF("compression/formats/gzip/compression_level", Z_DEFAULT_COMPRESSION);
custom_prop_info["compression/formats/gzip/compression_level"] = PropertyInfo(Variant::INT, "compression/formats/gzip/compression_level", PROPERTY_HINT_RANGE, "-1,9,1");
diff --git a/core/project_settings.h b/core/project_settings.h
index ea6034dc84..f75cad815f 100644
--- a/core/project_settings.h
+++ b/core/project_settings.h
@@ -139,7 +139,7 @@ public:
void set_order(const String &p_name, int p_order);
void set_builtin_order(const String &p_name);
- Error setup(const String &p_path, const String &p_main_pack);
+ Error setup(const String &p_path, const String &p_main_pack, bool p_upwards = false);
Error save_custom(const String &p_path = "", const CustomMap &p_custom = CustomMap(), const Vector<String> &p_custom_features = Vector<String>(), bool p_merge_with_current = true);
Error save();
diff --git a/core/script_debugger_remote.cpp b/core/script_debugger_remote.cpp
index 4653ade294..2feb068ecb 100644
--- a/core/script_debugger_remote.cpp
+++ b/core/script_debugger_remote.cpp
@@ -855,15 +855,19 @@ void ScriptDebuggerRemote::_print_handler(void *p_this, const String &p_string)
}
sdr->char_count += allowed_chars;
-
- if (sdr->char_count >= sdr->max_cps) {
- s += "\n[output overflow, print less text!]\n";
- }
+ bool overflowed = sdr->char_count >= sdr->max_cps;
sdr->mutex->lock();
if (!sdr->locking && sdr->tcp_client->is_connected_to_host()) {
+ if (overflowed)
+ s += "[...]";
+
sdr->output_strings.push_back(s);
+
+ if (overflowed) {
+ sdr->output_strings.push_back("[output overflow, print less text!]");
+ }
}
sdr->mutex->unlock();
}
diff --git a/core/script_language.cpp b/core/script_language.cpp
index 5ead91f26e..384e41e4bd 100644
--- a/core/script_language.cpp
+++ b/core/script_language.cpp
@@ -58,7 +58,6 @@ void Script::_bind_methods() {
ClassDB::bind_method(D_METHOD("has_script_signal", "signal_name"), &Script::has_script_signal);
ClassDB::bind_method(D_METHOD("is_tool"), &Script::is_tool);
- ClassDB::bind_method(D_METHOD("get_node_type"), &Script::get_node_type);
}
void ScriptServer::set_scripting_enabled(bool p_enabled) {
diff --git a/core/script_language.h b/core/script_language.h
index 25767a2f7a..5da72d0492 100644
--- a/core/script_language.h
+++ b/core/script_language.h
@@ -107,8 +107,6 @@ public:
virtual bool is_tool() const = 0;
- virtual String get_node_type() const = 0;
-
virtual ScriptLanguage *get_language() const = 0;
virtual bool has_script_signal(const StringName &p_signal) const = 0;
@@ -202,6 +200,7 @@ public:
virtual bool validate(const String &p_script, int &r_line_error, int &r_col_error, String &r_test_error, const String &p_path = "", List<String> *r_functions = NULL) const = 0;
virtual Script *create_script() const = 0;
virtual bool has_named_classes() const = 0;
+ virtual bool supports_builtin_mode() const = 0;
virtual bool can_inherit_from_file() { return false; }
virtual int find_function(const String &p_function, const String &p_code) const = 0;
virtual String make_function(const String &p_class, const String &p_name, const PoolStringArray &p_args) const = 0;
diff --git a/core/set.h b/core/set.h
index 0f48e07520..331979d4e3 100644
--- a/core/set.h
+++ b/core/set.h
@@ -424,7 +424,6 @@ private:
Element *rp = ((p_node->left == _data._nil) || (p_node->right == _data._nil)) ? p_node : p_node->_next;
Element *node = (rp->left == _data._nil) ? rp->right : rp->left;
- node->parent = rp->parent;
Element *sibling;
if (rp == rp->parent->left) {
diff --git a/core/translation.cpp b/core/translation.cpp
index 27e3b202d0..058db956e5 100644
--- a/core/translation.cpp
+++ b/core/translation.cpp
@@ -753,65 +753,17 @@ static const char *locale_names[] = {
0
};
-bool TranslationServer::is_locale_valid(const String &p_locale) {
-
- const char **ptr = locale_list;
-
- while (*ptr) {
-
- if (*ptr == p_locale)
- return true;
- ptr++;
- }
-
- return false;
-}
-
-Vector<String> TranslationServer::get_all_locales() {
-
- Vector<String> locales;
-
- const char **ptr = locale_list;
-
- while (*ptr) {
- locales.push_back(*ptr);
- ptr++;
- }
-
- return locales;
-}
-
-Vector<String> TranslationServer::get_all_locale_names() {
-
- Vector<String> locales;
-
- const char **ptr = locale_names;
-
- while (*ptr) {
- locales.push_back(*ptr);
- ptr++;
- }
-
- return locales;
-}
+static const char *locale_renames[][2] = {
+ { "no", "nb" },
+ { NULL, NULL }
+};
static String get_trimmed_locale(const String &p_locale) {
return p_locale.substr(0, 2);
}
-static bool is_valid_locale(const String &p_locale) {
-
- const char **ptr = locale_list;
-
- while (*ptr) {
- if (p_locale == *ptr)
- return true;
- ptr++;
- }
-
- return false;
-}
+///////////////////////////////////////////////
PoolVector<String> Translation::_get_messages() const {
@@ -857,14 +809,13 @@ void Translation::_set_messages(const PoolVector<String> &p_messages) {
void Translation::set_locale(const String &p_locale) {
- // replaces '-' with '_' for macOS Sierra-style locales
- String univ_locale = p_locale.replace("-", "_");
+ String univ_locale = TranslationServer::standardize_locale(p_locale);
- if (!is_valid_locale(univ_locale)) {
+ if (!TranslationServer::is_locale_valid(univ_locale)) {
String trimmed_locale = get_trimmed_locale(univ_locale);
- ERR_EXPLAIN("Invalid Locale: " + trimmed_locale);
- ERR_FAIL_COND(!is_valid_locale(trimmed_locale));
+ ERR_EXPLAIN("Invalid locale: " + trimmed_locale);
+ ERR_FAIL_COND(!TranslationServer::is_locale_valid(trimmed_locale));
locale = trimmed_locale;
} else {
@@ -929,16 +880,47 @@ Translation::Translation()
///////////////////////////////////////////////
-void TranslationServer::set_locale(const String &p_locale) {
+bool TranslationServer::is_locale_valid(const String &p_locale) {
+
+ const char **ptr = locale_list;
+
+ while (*ptr) {
+
+ if (*ptr == p_locale)
+ return true;
+ ptr++;
+ }
- // replaces '-' with '_' for macOS Sierra-style locales
+ return false;
+}
+
+String TranslationServer::standardize_locale(const String &p_locale) {
+
+ // Replaces '-' with '_' for macOS Sierra-style locales
String univ_locale = p_locale.replace("-", "_");
- if (!is_valid_locale(univ_locale)) {
+ // Handles known non-ISO locale names used e.g. on Windows
+ int idx = 0;
+ while (locale_renames[idx][0] != NULL) {
+ if (locale_renames[idx][0] == univ_locale) {
+ univ_locale = locale_renames[idx][1];
+ break;
+ }
+ idx++;
+ }
+
+ return univ_locale;
+}
+
+void TranslationServer::set_locale(const String &p_locale) {
+
+ String univ_locale = standardize_locale(p_locale);
+
+ if (!is_locale_valid(univ_locale)) {
String trimmed_locale = get_trimmed_locale(univ_locale);
- ERR_EXPLAIN("Invalid Locale: " + trimmed_locale);
- ERR_FAIL_COND(!is_valid_locale(trimmed_locale));
+ ERR_EXPLAIN("Invalid locale: " + trimmed_locale);
+ ERR_FAIL_COND(!is_locale_valid(trimmed_locale));
locale = trimmed_locale;
} else {
@@ -957,6 +939,40 @@ String TranslationServer::get_locale() const {
return locale;
}
+String TranslationServer::get_locale_name(const String &p_locale) const {
+
+ if (!locale_name_map.has(p_locale)) return String();
+ return locale_name_map[p_locale];
+}
+
+Vector<String> TranslationServer::get_all_locales() {
+
+ Vector<String> locales;
+
+ const char **ptr = locale_list;
+
+ while (*ptr) {
+ locales.push_back(*ptr);
+ ptr++;
+ }
+
+ return locales;
+}
+
+Vector<String> TranslationServer::get_all_locale_names() {
+
+ Vector<String> locales;
+
+ const char **ptr = locale_names;
+
+ while (*ptr) {
+ locales.push_back(*ptr);
+ ptr++;
+ }
+
+ return locales;
+}
+
void TranslationServer::add_translation(const Ref<Translation> &p_translation) {
translations.insert(p_translation);
@@ -1122,6 +1138,8 @@ void TranslationServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_locale", "locale"), &TranslationServer::set_locale);
ClassDB::bind_method(D_METHOD("get_locale"), &TranslationServer::get_locale);
+ ClassDB::bind_method(D_METHOD("get_locale_name", "locale"), &TranslationServer::get_locale_name);
+
ClassDB::bind_method(D_METHOD("translate", "message"), &TranslationServer::translate);
ClassDB::bind_method(D_METHOD("add_translation", "translation"), &TranslationServer::add_translation);
@@ -1147,4 +1165,9 @@ TranslationServer::TranslationServer()
: locale("en"),
enabled(true) {
singleton = this;
+
+ for (int i = 0; locale_list[i]; ++i) {
+
+ locale_name_map.insert(locale_list[i], locale_names[i]);
+ }
}
diff --git a/core/translation.h b/core/translation.h
index cf59583ad6..0cdab3b0bc 100644
--- a/core/translation.h
+++ b/core/translation.h
@@ -73,6 +73,8 @@ class TranslationServer : public Object {
Set<Ref<Translation> > translations;
Ref<Translation> tool_translation;
+ Map<String, String> locale_name_map;
+
bool enabled;
static TranslationServer *singleton;
@@ -83,14 +85,14 @@ class TranslationServer : public Object {
public:
_FORCE_INLINE_ static TranslationServer *get_singleton() { return singleton; }
- //yes, portuguese is supported!
-
void set_enabled(bool p_enabled) { enabled = p_enabled; }
_FORCE_INLINE_ bool is_enabled() const { return enabled; }
void set_locale(const String &p_locale);
String get_locale() const;
+ String get_locale_name(const String &p_locale) const;
+
void add_translation(const Ref<Translation> &p_translation);
void remove_translation(const Ref<Translation> &p_translation);
@@ -99,6 +101,7 @@ public:
static Vector<String> get_all_locales();
static Vector<String> get_all_locale_names();
static bool is_locale_valid(const String &p_locale);
+ static String standardize_locale(const String &p_locale);
void set_tool_translation(const Ref<Translation> &p_translation);
StringName tool_translate(const StringName &p_message) const;
diff --git a/core/typedefs.h b/core/typedefs.h
index bf5c8b0f75..c509edf9fe 100644
--- a/core/typedefs.h
+++ b/core/typedefs.h
@@ -98,11 +98,11 @@ T *_nullptr() {
#undef OK
#endif
+#include "int_types.h"
+
#include "error_list.h"
#include "error_macros.h"
-#include "int_types.h"
-
/** Generic ABS function, for math uses please use Math::abs */
#ifndef ABS
diff --git a/core/ustring.cpp b/core/ustring.cpp
index b85996e3d1..80881f1adb 100644
--- a/core/ustring.cpp
+++ b/core/ustring.cpp
@@ -2476,6 +2476,11 @@ bool String::begins_with(const char *p_string) const {
return *p_string == 0;
}
+bool String::is_enclosed_in(const String &p_string) const {
+
+ return begins_with(p_string) && ends_with(p_string);
+}
+
bool String::is_subsequence_of(const String &p_string) const {
return _base_is_subsequence_of(p_string, false);
@@ -2486,6 +2491,11 @@ bool String::is_subsequence_ofi(const String &p_string) const {
return _base_is_subsequence_of(p_string, true);
}
+bool String::is_quoted() const {
+
+ return is_enclosed_in("\"") || is_enclosed_in("'");
+}
+
bool String::_base_is_subsequence_of(const String &p_string, bool case_insensitive) const {
int len = length();
@@ -3906,6 +3916,18 @@ String String::sprintf(const Array &values, bool *error) const {
return formatted;
}
+String String::quote(String quotechar) const {
+ return quotechar + *this + quotechar;
+}
+
+String String::unquote() const {
+ if (!is_quoted()) {
+ return *this;
+ }
+
+ return substr(1, length() - 2);
+}
+
#include "translation.h"
#ifdef TOOLS_ENABLED
diff --git a/core/ustring.h b/core/ustring.h
index ab4e325f2c..aa4a5c910d 100644
--- a/core/ustring.h
+++ b/core/ustring.h
@@ -118,8 +118,10 @@ public:
bool begins_with(const String &p_string) const;
bool begins_with(const char *p_string) const;
bool ends_with(const String &p_string) const;
+ bool is_enclosed_in(const String &p_string) const;
bool is_subsequence_of(const String &p_string) const;
bool is_subsequence_ofi(const String &p_string) const;
+ bool is_quoted() const;
Vector<String> bigrams() const;
float similarity(const String &p_string) const;
String format(const Variant &values, String placeholder = "{_}") const;
@@ -132,6 +134,8 @@ public:
String lpad(int min_length, const String &character = " ") const;
String rpad(int min_length, const String &character = " ") const;
String sprintf(const Array &values, bool *error) const;
+ String quote(String quotechar = "\"") const;
+ String unquote() const;
static String num(double p_num, int p_decimals = -1);
static String num_scientific(double p_num);
static String num_real(double p_num);
diff --git a/core/variant.h b/core/variant.h
index e0d0bf05c8..45066af401 100644
--- a/core/variant.h
+++ b/core/variant.h
@@ -99,15 +99,15 @@ public:
_RID,
OBJECT,
DICTIONARY,
- ARRAY, // 20
+ ARRAY,
// arrays
- POOL_BYTE_ARRAY,
+ POOL_BYTE_ARRAY, // 20
POOL_INT_ARRAY,
POOL_REAL_ARRAY,
POOL_STRING_ARRAY,
- POOL_VECTOR2_ARRAY, // 25
- POOL_VECTOR3_ARRAY,
+ POOL_VECTOR2_ARRAY,
+ POOL_VECTOR3_ARRAY, // 25
POOL_COLOR_ARRAY,
VARIANT_MAX
diff --git a/core/variant_call.cpp b/core/variant_call.cpp
index d141621fbb..cdf1ea46a3 100644
--- a/core/variant_call.cpp
+++ b/core/variant_call.cpp
@@ -54,9 +54,8 @@ struct _VariantCall {
Variant::Type return_type;
bool _const;
-#ifdef DEBUG_ENABLED
bool returns;
-#endif
+
VariantFunc func;
_FORCE_INLINE_ bool verify_arguments(const Variant **p_args, Variant::CallError &r_error) {
@@ -146,7 +145,7 @@ struct _VariantCall {
#endif
}
- static void addfunc(bool p_const, Variant::Type p_type, Variant::Type p_return, const StringName &p_name, VariantFunc p_func, const Vector<Variant> &p_defaultarg, const Arg &p_argtype1 = Arg(), const Arg &p_argtype2 = Arg(), const Arg &p_argtype3 = Arg(), const Arg &p_argtype4 = Arg(), const Arg &p_argtype5 = Arg()) {
+ static void addfunc(bool p_const, Variant::Type p_type, Variant::Type p_return, bool p_has_return, const StringName &p_name, VariantFunc p_func, const Vector<Variant> &p_defaultarg, const Arg &p_argtype1 = Arg(), const Arg &p_argtype2 = Arg(), const Arg &p_argtype3 = Arg(), const Arg &p_argtype4 = Arg(), const Arg &p_argtype5 = Arg()) {
FuncData funcdata;
funcdata.func = p_func;
@@ -154,7 +153,7 @@ struct _VariantCall {
funcdata._const = p_const;
#ifdef DEBUG_ENABLED
funcdata.return_type = p_return;
- funcdata.returns = p_return != Variant::NIL;
+ funcdata.returns = p_has_return;
#endif
if (p_argtype1.name) {
@@ -1051,7 +1050,6 @@ Variant Variant::construct(const Variant::Type p_type, const Variant **p_args, i
return String();
// math types
-
case VECTOR2:
return Vector2(); // 5
case RECT2: return Rect2();
@@ -1234,7 +1232,7 @@ Variant::Type Variant::get_method_return_type(Variant::Type p_type, const String
return Variant::NIL;
if (r_has_return)
- *r_has_return = E->get().return_type;
+ *r_has_return = E->get().returns;
return E->get().return_type;
}
@@ -1376,215 +1374,237 @@ void register_variant_methods() {
_VariantCall::construct_funcs = memnew_arr(_VariantCall::ConstructFunc, Variant::VARIANT_MAX);
_VariantCall::constant_data = memnew_arr(_VariantCall::ConstantData, Variant::VARIANT_MAX);
+#define ADDFUNC0R(m_vtype, m_ret, m_class, m_method, m_defarg) \
+ _VariantCall::addfunc(true, Variant::m_vtype, Variant::m_ret, true, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg);
+#define ADDFUNC1R(m_vtype, m_ret, m_class, m_method, m_arg1, m_argname1, m_defarg) \
+ _VariantCall::addfunc(true, Variant::m_vtype, Variant::m_ret, true, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)));
+#define ADDFUNC2R(m_vtype, m_ret, m_class, m_method, m_arg1, m_argname1, m_arg2, m_argname2, m_defarg) \
+ _VariantCall::addfunc(true, Variant::m_vtype, Variant::m_ret, true, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)), _VariantCall::Arg(Variant::m_arg2, _scs_create(m_argname2)));
+#define ADDFUNC3R(m_vtype, m_ret, m_class, m_method, m_arg1, m_argname1, m_arg2, m_argname2, m_arg3, m_argname3, m_defarg) \
+ _VariantCall::addfunc(true, Variant::m_vtype, Variant::m_ret, true, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)), _VariantCall::Arg(Variant::m_arg2, _scs_create(m_argname2)), _VariantCall::Arg(Variant::m_arg3, _scs_create(m_argname3)));
+#define ADDFUNC4R(m_vtype, m_ret, m_class, m_method, m_arg1, m_argname1, m_arg2, m_argname2, m_arg3, m_argname3, m_arg4, m_argname4, m_defarg) \
+ _VariantCall::addfunc(true, Variant::m_vtype, Variant::m_ret, true, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)), _VariantCall::Arg(Variant::m_arg2, _scs_create(m_argname2)), _VariantCall::Arg(Variant::m_arg3, _scs_create(m_argname3)), _VariantCall::Arg(Variant::m_arg4, _scs_create(m_argname4)));
+
+#define ADDFUNC0RNC(m_vtype, m_ret, m_class, m_method, m_defarg) \
+ _VariantCall::addfunc(false, Variant::m_vtype, Variant::m_ret, true, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg);
+#define ADDFUNC1RNC(m_vtype, m_ret, m_class, m_method, m_arg1, m_argname1, m_defarg) \
+ _VariantCall::addfunc(false, Variant::m_vtype, Variant::m_ret, true, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)));
+#define ADDFUNC2RNC(m_vtype, m_ret, m_class, m_method, m_arg1, m_argname1, m_arg2, m_argname2, m_defarg) \
+ _VariantCall::addfunc(false, Variant::m_vtype, Variant::m_ret, true, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)), _VariantCall::Arg(Variant::m_arg2, _scs_create(m_argname2)));
+#define ADDFUNC3RNC(m_vtype, m_ret, m_class, m_method, m_arg1, m_argname1, m_arg2, m_argname2, m_arg3, m_argname3, m_defarg) \
+ _VariantCall::addfunc(false, Variant::m_vtype, Variant::m_ret, true, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)), _VariantCall::Arg(Variant::m_arg2, _scs_create(m_argname2)), _VariantCall::Arg(Variant::m_arg3, _scs_create(m_argname3)));
+#define ADDFUNC4RNC(m_vtype, m_ret, m_class, m_method, m_arg1, m_argname1, m_arg2, m_argname2, m_arg3, m_argname3, m_arg4, m_argname4, m_defarg) \
+ _VariantCall::addfunc(false, Variant::m_vtype, Variant::m_ret, true, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)), _VariantCall::Arg(Variant::m_arg2, _scs_create(m_argname2)), _VariantCall::Arg(Variant::m_arg3, _scs_create(m_argname3)), _VariantCall::Arg(Variant::m_arg4, _scs_create(m_argname4)));
+
#define ADDFUNC0(m_vtype, m_ret, m_class, m_method, m_defarg) \
- _VariantCall::addfunc(true, Variant::m_vtype, Variant::m_ret, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg);
+ _VariantCall::addfunc(true, Variant::m_vtype, Variant::m_ret, false, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg);
#define ADDFUNC1(m_vtype, m_ret, m_class, m_method, m_arg1, m_argname1, m_defarg) \
- _VariantCall::addfunc(true, Variant::m_vtype, Variant::m_ret, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)));
+ _VariantCall::addfunc(true, Variant::m_vtype, Variant::m_ret, false, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)));
#define ADDFUNC2(m_vtype, m_ret, m_class, m_method, m_arg1, m_argname1, m_arg2, m_argname2, m_defarg) \
- _VariantCall::addfunc(true, Variant::m_vtype, Variant::m_ret, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)), _VariantCall::Arg(Variant::m_arg2, _scs_create(m_argname2)));
+ _VariantCall::addfunc(true, Variant::m_vtype, Variant::m_ret, false, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)), _VariantCall::Arg(Variant::m_arg2, _scs_create(m_argname2)));
#define ADDFUNC3(m_vtype, m_ret, m_class, m_method, m_arg1, m_argname1, m_arg2, m_argname2, m_arg3, m_argname3, m_defarg) \
- _VariantCall::addfunc(true, Variant::m_vtype, Variant::m_ret, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)), _VariantCall::Arg(Variant::m_arg2, _scs_create(m_argname2)), _VariantCall::Arg(Variant::m_arg3, _scs_create(m_argname3)));
+ _VariantCall::addfunc(true, Variant::m_vtype, Variant::m_ret, false, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)), _VariantCall::Arg(Variant::m_arg2, _scs_create(m_argname2)), _VariantCall::Arg(Variant::m_arg3, _scs_create(m_argname3)));
#define ADDFUNC4(m_vtype, m_ret, m_class, m_method, m_arg1, m_argname1, m_arg2, m_argname2, m_arg3, m_argname3, m_arg4, m_argname4, m_defarg) \
- _VariantCall::addfunc(true, Variant::m_vtype, Variant::m_ret, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)), _VariantCall::Arg(Variant::m_arg2, _scs_create(m_argname2)), _VariantCall::Arg(Variant::m_arg3, _scs_create(m_argname3)), _VariantCall::Arg(Variant::m_arg4, _scs_create(m_argname4)));
+ _VariantCall::addfunc(true, Variant::m_vtype, Variant::m_ret, false, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)), _VariantCall::Arg(Variant::m_arg2, _scs_create(m_argname2)), _VariantCall::Arg(Variant::m_arg3, _scs_create(m_argname3)), _VariantCall::Arg(Variant::m_arg4, _scs_create(m_argname4)));
#define ADDFUNC0NC(m_vtype, m_ret, m_class, m_method, m_defarg) \
- _VariantCall::addfunc(false, Variant::m_vtype, Variant::m_ret, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg);
+ _VariantCall::addfunc(false, Variant::m_vtype, Variant::m_ret, false, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg);
#define ADDFUNC1NC(m_vtype, m_ret, m_class, m_method, m_arg1, m_argname1, m_defarg) \
- _VariantCall::addfunc(false, Variant::m_vtype, Variant::m_ret, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)));
+ _VariantCall::addfunc(false, Variant::m_vtype, Variant::m_ret, false, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)));
#define ADDFUNC2NC(m_vtype, m_ret, m_class, m_method, m_arg1, m_argname1, m_arg2, m_argname2, m_defarg) \
- _VariantCall::addfunc(false, Variant::m_vtype, Variant::m_ret, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)), _VariantCall::Arg(Variant::m_arg2, _scs_create(m_argname2)));
+ _VariantCall::addfunc(false, Variant::m_vtype, Variant::m_ret, false, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)), _VariantCall::Arg(Variant::m_arg2, _scs_create(m_argname2)));
#define ADDFUNC3NC(m_vtype, m_ret, m_class, m_method, m_arg1, m_argname1, m_arg2, m_argname2, m_arg3, m_argname3, m_defarg) \
- _VariantCall::addfunc(false, Variant::m_vtype, Variant::m_ret, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)), _VariantCall::Arg(Variant::m_arg2, _scs_create(m_argname2)), _VariantCall::Arg(Variant::m_arg3, _scs_create(m_argname3)));
+ _VariantCall::addfunc(false, Variant::m_vtype, Variant::m_ret, false, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)), _VariantCall::Arg(Variant::m_arg2, _scs_create(m_argname2)), _VariantCall::Arg(Variant::m_arg3, _scs_create(m_argname3)));
#define ADDFUNC4NC(m_vtype, m_ret, m_class, m_method, m_arg1, m_argname1, m_arg2, m_argname2, m_arg3, m_argname3, m_arg4, m_argname4, m_defarg) \
- _VariantCall::addfunc(false, Variant::m_vtype, Variant::m_ret, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)), _VariantCall::Arg(Variant::m_arg2, _scs_create(m_argname2)), _VariantCall::Arg(Variant::m_arg3, _scs_create(m_argname3)), _VariantCall::Arg(Variant::m_arg4, _scs_create(m_argname4)));
+ _VariantCall::addfunc(false, Variant::m_vtype, Variant::m_ret, false, _scs_create(#m_method), VCALL(m_class, m_method), m_defarg, _VariantCall::Arg(Variant::m_arg1, _scs_create(m_argname1)), _VariantCall::Arg(Variant::m_arg2, _scs_create(m_argname2)), _VariantCall::Arg(Variant::m_arg3, _scs_create(m_argname3)), _VariantCall::Arg(Variant::m_arg4, _scs_create(m_argname4)));
/* STRING */
- ADDFUNC1(STRING, INT, String, casecmp_to, STRING, "to", varray());
- ADDFUNC1(STRING, INT, String, nocasecmp_to, STRING, "to", varray());
- ADDFUNC0(STRING, INT, String, length, varray());
- ADDFUNC2(STRING, STRING, String, substr, INT, "from", INT, "len", varray());
-
- ADDFUNC2(STRING, INT, String, find, STRING, "what", INT, "from", varray(0));
-
- ADDFUNC1(STRING, INT, String, find_last, STRING, "what", varray());
- ADDFUNC2(STRING, INT, String, findn, STRING, "what", INT, "from", varray(0));
- ADDFUNC2(STRING, INT, String, rfind, STRING, "what", INT, "from", varray(-1));
- ADDFUNC2(STRING, INT, String, rfindn, STRING, "what", INT, "from", varray(-1));
- ADDFUNC1(STRING, BOOL, String, match, STRING, "expr", varray());
- ADDFUNC1(STRING, BOOL, String, matchn, STRING, "expr", varray());
- ADDFUNC1(STRING, BOOL, String, begins_with, STRING, "text", varray());
- ADDFUNC1(STRING, BOOL, String, ends_with, STRING, "text", varray());
- ADDFUNC1(STRING, BOOL, String, is_subsequence_of, STRING, "text", varray());
- ADDFUNC1(STRING, BOOL, String, is_subsequence_ofi, STRING, "text", varray());
- ADDFUNC0(STRING, POOL_STRING_ARRAY, String, bigrams, varray());
- ADDFUNC1(STRING, REAL, String, similarity, STRING, "text", varray());
-
- ADDFUNC2(STRING, STRING, String, format, NIL, "values", STRING, "placeholder", varray("{_}"));
- ADDFUNC2(STRING, STRING, String, replace, STRING, "what", STRING, "forwhat", varray());
- ADDFUNC2(STRING, STRING, String, replacen, STRING, "what", STRING, "forwhat", varray());
- ADDFUNC2(STRING, STRING, String, insert, INT, "position", STRING, "what", varray());
- ADDFUNC0(STRING, STRING, String, capitalize, varray());
- ADDFUNC2(STRING, POOL_STRING_ARRAY, String, split, STRING, "divisor", BOOL, "allow_empty", varray(true));
- ADDFUNC2(STRING, POOL_REAL_ARRAY, String, split_floats, STRING, "divisor", BOOL, "allow_empty", varray(true));
-
- ADDFUNC0(STRING, STRING, String, to_upper, varray());
- ADDFUNC0(STRING, STRING, String, to_lower, varray());
-
- ADDFUNC1(STRING, STRING, String, left, INT, "position", varray());
- ADDFUNC1(STRING, STRING, String, right, INT, "position", varray());
- ADDFUNC2(STRING, STRING, String, strip_edges, BOOL, "left", BOOL, "right", varray(true, true));
- ADDFUNC0(STRING, STRING, String, get_extension, varray());
- ADDFUNC0(STRING, STRING, String, get_basename, varray());
- ADDFUNC1(STRING, STRING, String, plus_file, STRING, "file", varray());
- ADDFUNC1(STRING, INT, String, ord_at, INT, "at", varray());
+ ADDFUNC1R(STRING, INT, String, casecmp_to, STRING, "to", varray());
+ ADDFUNC1R(STRING, INT, String, nocasecmp_to, STRING, "to", varray());
+ ADDFUNC0R(STRING, INT, String, length, varray());
+ ADDFUNC2R(STRING, STRING, String, substr, INT, "from", INT, "len", varray());
+
+ ADDFUNC2R(STRING, INT, String, find, STRING, "what", INT, "from", varray(0));
+
+ ADDFUNC1R(STRING, INT, String, find_last, STRING, "what", varray());
+ ADDFUNC2R(STRING, INT, String, findn, STRING, "what", INT, "from", varray(0));
+ ADDFUNC2R(STRING, INT, String, rfind, STRING, "what", INT, "from", varray(-1));
+ ADDFUNC2R(STRING, INT, String, rfindn, STRING, "what", INT, "from", varray(-1));
+ ADDFUNC1R(STRING, BOOL, String, match, STRING, "expr", varray());
+ ADDFUNC1R(STRING, BOOL, String, matchn, STRING, "expr", varray());
+ ADDFUNC1R(STRING, BOOL, String, begins_with, STRING, "text", varray());
+ ADDFUNC1R(STRING, BOOL, String, ends_with, STRING, "text", varray());
+ ADDFUNC1R(STRING, BOOL, String, is_subsequence_of, STRING, "text", varray());
+ ADDFUNC1R(STRING, BOOL, String, is_subsequence_ofi, STRING, "text", varray());
+ ADDFUNC0R(STRING, POOL_STRING_ARRAY, String, bigrams, varray());
+ ADDFUNC1R(STRING, REAL, String, similarity, STRING, "text", varray());
+
+ ADDFUNC2R(STRING, STRING, String, format, NIL, "values", STRING, "placeholder", varray("{_}"));
+ ADDFUNC2R(STRING, STRING, String, replace, STRING, "what", STRING, "forwhat", varray());
+ ADDFUNC2R(STRING, STRING, String, replacen, STRING, "what", STRING, "forwhat", varray());
+ ADDFUNC2R(STRING, STRING, String, insert, INT, "position", STRING, "what", varray());
+ ADDFUNC0R(STRING, STRING, String, capitalize, varray());
+ ADDFUNC2R(STRING, POOL_STRING_ARRAY, String, split, STRING, "divisor", BOOL, "allow_empty", varray(true));
+ ADDFUNC2R(STRING, POOL_REAL_ARRAY, String, split_floats, STRING, "divisor", BOOL, "allow_empty", varray(true));
+
+ ADDFUNC0R(STRING, STRING, String, to_upper, varray());
+ ADDFUNC0R(STRING, STRING, String, to_lower, varray());
+
+ ADDFUNC1R(STRING, STRING, String, left, INT, "position", varray());
+ ADDFUNC1R(STRING, STRING, String, right, INT, "position", varray());
+ ADDFUNC2R(STRING, STRING, String, strip_edges, BOOL, "left", BOOL, "right", varray(true, true));
+ ADDFUNC0R(STRING, STRING, String, get_extension, varray());
+ ADDFUNC0R(STRING, STRING, String, get_basename, varray());
+ ADDFUNC1R(STRING, STRING, String, plus_file, STRING, "file", varray());
+ ADDFUNC1R(STRING, INT, String, ord_at, INT, "at", varray());
ADDFUNC2(STRING, NIL, String, erase, INT, "position", INT, "chars", varray());
- ADDFUNC0(STRING, INT, String, hash, varray());
- ADDFUNC0(STRING, STRING, String, md5_text, varray());
- ADDFUNC0(STRING, STRING, String, sha256_text, varray());
- ADDFUNC0(STRING, POOL_BYTE_ARRAY, String, md5_buffer, varray());
- ADDFUNC0(STRING, POOL_BYTE_ARRAY, String, sha256_buffer, varray());
- ADDFUNC0(STRING, BOOL, String, empty, varray());
- ADDFUNC0(STRING, BOOL, String, is_abs_path, varray());
- ADDFUNC0(STRING, BOOL, String, is_rel_path, varray());
- ADDFUNC0(STRING, STRING, String, get_base_dir, varray());
- ADDFUNC0(STRING, STRING, String, get_file, varray());
- ADDFUNC0(STRING, STRING, String, xml_escape, varray());
- ADDFUNC0(STRING, STRING, String, xml_unescape, varray());
- ADDFUNC0(STRING, STRING, String, c_escape, varray());
- ADDFUNC0(STRING, STRING, String, c_unescape, varray());
- ADDFUNC0(STRING, STRING, String, json_escape, varray());
- ADDFUNC0(STRING, STRING, String, percent_encode, varray());
- ADDFUNC0(STRING, STRING, String, percent_decode, varray());
- ADDFUNC0(STRING, BOOL, String, is_valid_identifier, varray());
- ADDFUNC0(STRING, BOOL, String, is_valid_integer, varray());
- ADDFUNC0(STRING, BOOL, String, is_valid_float, varray());
- ADDFUNC0(STRING, BOOL, String, is_valid_html_color, varray());
- ADDFUNC0(STRING, BOOL, String, is_valid_ip_address, varray());
- ADDFUNC0(STRING, INT, String, to_int, varray());
- ADDFUNC0(STRING, REAL, String, to_float, varray());
- ADDFUNC0(STRING, INT, String, hex_to_int, varray());
- ADDFUNC1(STRING, STRING, String, pad_decimals, INT, "digits", varray());
- ADDFUNC1(STRING, STRING, String, pad_zeros, INT, "digits", varray());
-
- ADDFUNC0(STRING, POOL_BYTE_ARRAY, String, to_ascii, varray());
- ADDFUNC0(STRING, POOL_BYTE_ARRAY, String, to_utf8, varray());
-
- ADDFUNC0(VECTOR2, VECTOR2, Vector2, normalized, varray());
- ADDFUNC0(VECTOR2, REAL, Vector2, length, varray());
- ADDFUNC0(VECTOR2, REAL, Vector2, angle, varray());
- ADDFUNC0(VECTOR2, REAL, Vector2, length_squared, varray());
- ADDFUNC0(VECTOR2, BOOL, Vector2, is_normalized, varray());
- ADDFUNC1(VECTOR2, REAL, Vector2, distance_to, VECTOR2, "to", varray());
- ADDFUNC1(VECTOR2, REAL, Vector2, distance_squared_to, VECTOR2, "to", varray());
- ADDFUNC1(VECTOR2, REAL, Vector2, angle_to, VECTOR2, "to", varray());
- ADDFUNC1(VECTOR2, REAL, Vector2, angle_to_point, VECTOR2, "to", varray());
- ADDFUNC2(VECTOR2, VECTOR2, Vector2, linear_interpolate, VECTOR2, "b", REAL, "t", varray());
- ADDFUNC4(VECTOR2, VECTOR2, Vector2, cubic_interpolate, VECTOR2, "b", VECTOR2, "pre_a", VECTOR2, "post_b", REAL, "t", varray());
- ADDFUNC1(VECTOR2, VECTOR2, Vector2, rotated, REAL, "phi", varray());
- ADDFUNC0(VECTOR2, VECTOR2, Vector2, tangent, varray());
- ADDFUNC0(VECTOR2, VECTOR2, Vector2, floor, varray());
- ADDFUNC1(VECTOR2, VECTOR2, Vector2, snapped, VECTOR2, "by", varray());
- ADDFUNC0(VECTOR2, REAL, Vector2, aspect, varray());
- ADDFUNC1(VECTOR2, REAL, Vector2, dot, VECTOR2, "with", varray());
- ADDFUNC1(VECTOR2, VECTOR2, Vector2, slide, VECTOR2, "n", varray());
- ADDFUNC1(VECTOR2, VECTOR2, Vector2, bounce, VECTOR2, "n", varray());
- ADDFUNC1(VECTOR2, VECTOR2, Vector2, reflect, VECTOR2, "n", varray());
- //ADDFUNC1(VECTOR2,REAL,Vector2,cross,VECTOR2,"with",varray());
- ADDFUNC0(VECTOR2, VECTOR2, Vector2, abs, varray());
- ADDFUNC1(VECTOR2, VECTOR2, Vector2, clamped, REAL, "length", varray());
-
- ADDFUNC0(RECT2, REAL, Rect2, get_area, varray());
- ADDFUNC1(RECT2, BOOL, Rect2, intersects, RECT2, "b", varray());
- ADDFUNC1(RECT2, BOOL, Rect2, encloses, RECT2, "b", varray());
- ADDFUNC0(RECT2, BOOL, Rect2, has_no_area, varray());
- ADDFUNC1(RECT2, RECT2, Rect2, clip, RECT2, "b", varray());
- ADDFUNC1(RECT2, RECT2, Rect2, merge, RECT2, "b", varray());
- ADDFUNC1(RECT2, BOOL, Rect2, has_point, VECTOR2, "point", varray());
- ADDFUNC1(RECT2, RECT2, Rect2, grow, REAL, "by", varray());
- ADDFUNC2(RECT2, RECT2, Rect2, grow_margin, INT, "margin", REAL, "by", varray());
- ADDFUNC4(RECT2, RECT2, Rect2, grow_individual, REAL, "left", REAL, "top", REAL, "right", REAL, " bottom", varray());
- ADDFUNC1(RECT2, RECT2, Rect2, expand, VECTOR2, "to", varray());
-
- ADDFUNC0(VECTOR3, INT, Vector3, min_axis, varray());
- ADDFUNC0(VECTOR3, INT, Vector3, max_axis, varray());
- ADDFUNC0(VECTOR3, REAL, Vector3, length, varray());
- ADDFUNC0(VECTOR3, REAL, Vector3, length_squared, varray());
- ADDFUNC0(VECTOR3, BOOL, Vector3, is_normalized, varray());
- ADDFUNC0(VECTOR3, VECTOR3, Vector3, normalized, varray());
- ADDFUNC0(VECTOR3, VECTOR3, Vector3, inverse, varray());
- ADDFUNC1(VECTOR3, VECTOR3, Vector3, snapped, REAL, "by", varray());
- ADDFUNC2(VECTOR3, VECTOR3, Vector3, rotated, VECTOR3, "axis", REAL, "phi", varray());
- ADDFUNC2(VECTOR3, VECTOR3, Vector3, linear_interpolate, VECTOR3, "b", REAL, "t", varray());
- ADDFUNC4(VECTOR3, VECTOR3, Vector3, cubic_interpolate, VECTOR3, "b", VECTOR3, "pre_a", VECTOR3, "post_b", REAL, "t", varray());
- ADDFUNC1(VECTOR3, REAL, Vector3, dot, VECTOR3, "b", varray());
- ADDFUNC1(VECTOR3, VECTOR3, Vector3, cross, VECTOR3, "b", varray());
- ADDFUNC1(VECTOR3, BASIS, Vector3, outer, VECTOR3, "b", varray());
- ADDFUNC0(VECTOR3, BASIS, Vector3, to_diagonal_matrix, varray());
- ADDFUNC0(VECTOR3, VECTOR3, Vector3, abs, varray());
- ADDFUNC0(VECTOR3, VECTOR3, Vector3, floor, varray());
- ADDFUNC0(VECTOR3, VECTOR3, Vector3, ceil, varray());
- ADDFUNC1(VECTOR3, REAL, Vector3, distance_to, VECTOR3, "b", varray());
- ADDFUNC1(VECTOR3, REAL, Vector3, distance_squared_to, VECTOR3, "b", varray());
- ADDFUNC1(VECTOR3, REAL, Vector3, angle_to, VECTOR3, "to", varray());
- ADDFUNC1(VECTOR3, VECTOR3, Vector3, slide, VECTOR3, "n", varray());
- ADDFUNC1(VECTOR3, VECTOR3, Vector3, bounce, VECTOR3, "n", varray());
- ADDFUNC1(VECTOR3, VECTOR3, Vector3, reflect, VECTOR3, "n", varray());
-
- ADDFUNC0(PLANE, PLANE, Plane, normalized, varray());
- ADDFUNC0(PLANE, VECTOR3, Plane, center, varray());
- ADDFUNC0(PLANE, VECTOR3, Plane, get_any_point, varray());
- ADDFUNC1(PLANE, BOOL, Plane, is_point_over, VECTOR3, "point", varray());
- ADDFUNC1(PLANE, REAL, Plane, distance_to, VECTOR3, "point", varray());
- ADDFUNC2(PLANE, BOOL, Plane, has_point, VECTOR3, "point", REAL, "epsilon", varray(CMP_EPSILON));
- ADDFUNC1(PLANE, VECTOR3, Plane, project, VECTOR3, "point", varray());
- ADDFUNC2(PLANE, VECTOR3, Plane, intersect_3, PLANE, "b", PLANE, "c", varray());
- ADDFUNC2(PLANE, VECTOR3, Plane, intersects_ray, VECTOR3, "from", VECTOR3, "dir", varray());
- ADDFUNC2(PLANE, VECTOR3, Plane, intersects_segment, VECTOR3, "begin", VECTOR3, "end", varray());
-
- ADDFUNC0(QUAT, REAL, Quat, length, varray());
- ADDFUNC0(QUAT, REAL, Quat, length_squared, varray());
- ADDFUNC0(QUAT, QUAT, Quat, normalized, varray());
- ADDFUNC0(QUAT, BOOL, Quat, is_normalized, varray());
- ADDFUNC0(QUAT, QUAT, Quat, inverse, varray());
- ADDFUNC1(QUAT, REAL, Quat, dot, QUAT, "b", varray());
- ADDFUNC1(QUAT, VECTOR3, Quat, xform, VECTOR3, "v", varray());
- ADDFUNC2(QUAT, QUAT, Quat, slerp, QUAT, "b", REAL, "t", varray());
- ADDFUNC2(QUAT, QUAT, Quat, slerpni, QUAT, "b", REAL, "t", varray());
- ADDFUNC4(QUAT, QUAT, Quat, cubic_slerp, QUAT, "b", QUAT, "pre_a", QUAT, "post_b", REAL, "t", varray());
-
- ADDFUNC0(COLOR, INT, Color, to_rgba32, varray());
- ADDFUNC0(COLOR, INT, Color, to_argb32, varray());
- ADDFUNC0(COLOR, REAL, Color, gray, varray());
- ADDFUNC0(COLOR, COLOR, Color, inverted, varray());
- ADDFUNC0(COLOR, COLOR, Color, contrasted, varray());
- ADDFUNC2(COLOR, COLOR, Color, linear_interpolate, COLOR, "b", REAL, "t", varray());
- ADDFUNC1(COLOR, COLOR, Color, blend, COLOR, "over", varray());
- ADDFUNC1(COLOR, STRING, Color, to_html, BOOL, "with_alpha", varray(true));
-
- ADDFUNC0(_RID, INT, RID, get_id, varray());
-
- ADDFUNC0(NODE_PATH, BOOL, NodePath, is_absolute, varray());
- ADDFUNC0(NODE_PATH, INT, NodePath, get_name_count, varray());
- ADDFUNC1(NODE_PATH, STRING, NodePath, get_name, INT, "idx", varray());
- ADDFUNC0(NODE_PATH, INT, NodePath, get_subname_count, varray());
- ADDFUNC1(NODE_PATH, STRING, NodePath, get_subname, INT, "idx", varray());
- ADDFUNC0(NODE_PATH, STRING, NodePath, get_property, varray());
- ADDFUNC0(NODE_PATH, BOOL, NodePath, is_empty, varray());
-
- ADDFUNC0(DICTIONARY, INT, Dictionary, size, varray());
- ADDFUNC0(DICTIONARY, BOOL, Dictionary, empty, varray());
+ ADDFUNC0R(STRING, INT, String, hash, varray());
+ ADDFUNC0R(STRING, STRING, String, md5_text, varray());
+ ADDFUNC0R(STRING, STRING, String, sha256_text, varray());
+ ADDFUNC0R(STRING, POOL_BYTE_ARRAY, String, md5_buffer, varray());
+ ADDFUNC0R(STRING, POOL_BYTE_ARRAY, String, sha256_buffer, varray());
+ ADDFUNC0R(STRING, BOOL, String, empty, varray());
+ ADDFUNC0R(STRING, BOOL, String, is_abs_path, varray());
+ ADDFUNC0R(STRING, BOOL, String, is_rel_path, varray());
+ ADDFUNC0R(STRING, STRING, String, get_base_dir, varray());
+ ADDFUNC0R(STRING, STRING, String, get_file, varray());
+ ADDFUNC0R(STRING, STRING, String, xml_escape, varray());
+ ADDFUNC0R(STRING, STRING, String, xml_unescape, varray());
+ ADDFUNC0R(STRING, STRING, String, c_escape, varray());
+ ADDFUNC0R(STRING, STRING, String, c_unescape, varray());
+ ADDFUNC0R(STRING, STRING, String, json_escape, varray());
+ ADDFUNC0R(STRING, STRING, String, percent_encode, varray());
+ ADDFUNC0R(STRING, STRING, String, percent_decode, varray());
+ ADDFUNC0R(STRING, BOOL, String, is_valid_identifier, varray());
+ ADDFUNC0R(STRING, BOOL, String, is_valid_integer, varray());
+ ADDFUNC0R(STRING, BOOL, String, is_valid_float, varray());
+ ADDFUNC0R(STRING, BOOL, String, is_valid_html_color, varray());
+ ADDFUNC0R(STRING, BOOL, String, is_valid_ip_address, varray());
+ ADDFUNC0R(STRING, INT, String, to_int, varray());
+ ADDFUNC0R(STRING, REAL, String, to_float, varray());
+ ADDFUNC0R(STRING, INT, String, hex_to_int, varray());
+ ADDFUNC1R(STRING, STRING, String, pad_decimals, INT, "digits", varray());
+ ADDFUNC1R(STRING, STRING, String, pad_zeros, INT, "digits", varray());
+
+ ADDFUNC0R(STRING, POOL_BYTE_ARRAY, String, to_ascii, varray());
+ ADDFUNC0R(STRING, POOL_BYTE_ARRAY, String, to_utf8, varray());
+
+ ADDFUNC0R(VECTOR2, VECTOR2, Vector2, normalized, varray());
+ ADDFUNC0R(VECTOR2, REAL, Vector2, length, varray());
+ ADDFUNC0R(VECTOR2, REAL, Vector2, angle, varray());
+ ADDFUNC0R(VECTOR2, REAL, Vector2, length_squared, varray());
+ ADDFUNC0R(VECTOR2, BOOL, Vector2, is_normalized, varray());
+ ADDFUNC1R(VECTOR2, REAL, Vector2, distance_to, VECTOR2, "to", varray());
+ ADDFUNC1R(VECTOR2, REAL, Vector2, distance_squared_to, VECTOR2, "to", varray());
+ ADDFUNC1R(VECTOR2, REAL, Vector2, angle_to, VECTOR2, "to", varray());
+ ADDFUNC1R(VECTOR2, REAL, Vector2, angle_to_point, VECTOR2, "to", varray());
+ ADDFUNC2R(VECTOR2, VECTOR2, Vector2, linear_interpolate, VECTOR2, "b", REAL, "t", varray());
+ ADDFUNC4R(VECTOR2, VECTOR2, Vector2, cubic_interpolate, VECTOR2, "b", VECTOR2, "pre_a", VECTOR2, "post_b", REAL, "t", varray());
+ ADDFUNC1R(VECTOR2, VECTOR2, Vector2, rotated, REAL, "phi", varray());
+ ADDFUNC0R(VECTOR2, VECTOR2, Vector2, tangent, varray());
+ ADDFUNC0R(VECTOR2, VECTOR2, Vector2, floor, varray());
+ ADDFUNC1R(VECTOR2, VECTOR2, Vector2, snapped, VECTOR2, "by", varray());
+ ADDFUNC0R(VECTOR2, REAL, Vector2, aspect, varray());
+ ADDFUNC1R(VECTOR2, REAL, Vector2, dot, VECTOR2, "with", varray());
+ ADDFUNC1R(VECTOR2, VECTOR2, Vector2, slide, VECTOR2, "n", varray());
+ ADDFUNC1R(VECTOR2, VECTOR2, Vector2, bounce, VECTOR2, "n", varray());
+ ADDFUNC1R(VECTOR2, VECTOR2, Vector2, reflect, VECTOR2, "n", varray());
+ //ADDFUNC1R(VECTOR2,REAL,Vector2,cross,VECTOR2,"with",varray());
+ ADDFUNC0R(VECTOR2, VECTOR2, Vector2, abs, varray());
+ ADDFUNC1R(VECTOR2, VECTOR2, Vector2, clamped, REAL, "length", varray());
+
+ ADDFUNC0R(RECT2, REAL, Rect2, get_area, varray());
+ ADDFUNC1R(RECT2, BOOL, Rect2, intersects, RECT2, "b", varray());
+ ADDFUNC1R(RECT2, BOOL, Rect2, encloses, RECT2, "b", varray());
+ ADDFUNC0R(RECT2, BOOL, Rect2, has_no_area, varray());
+ ADDFUNC1R(RECT2, RECT2, Rect2, clip, RECT2, "b", varray());
+ ADDFUNC1R(RECT2, RECT2, Rect2, merge, RECT2, "b", varray());
+ ADDFUNC1R(RECT2, BOOL, Rect2, has_point, VECTOR2, "point", varray());
+ ADDFUNC1R(RECT2, RECT2, Rect2, grow, REAL, "by", varray());
+ ADDFUNC2R(RECT2, RECT2, Rect2, grow_margin, INT, "margin", REAL, "by", varray());
+ ADDFUNC4R(RECT2, RECT2, Rect2, grow_individual, REAL, "left", REAL, "top", REAL, "right", REAL, " bottom", varray());
+ ADDFUNC1R(RECT2, RECT2, Rect2, expand, VECTOR2, "to", varray());
+
+ ADDFUNC0R(VECTOR3, INT, Vector3, min_axis, varray());
+ ADDFUNC0R(VECTOR3, INT, Vector3, max_axis, varray());
+ ADDFUNC0R(VECTOR3, REAL, Vector3, length, varray());
+ ADDFUNC0R(VECTOR3, REAL, Vector3, length_squared, varray());
+ ADDFUNC0R(VECTOR3, BOOL, Vector3, is_normalized, varray());
+ ADDFUNC0R(VECTOR3, VECTOR3, Vector3, normalized, varray());
+ ADDFUNC0R(VECTOR3, VECTOR3, Vector3, inverse, varray());
+ ADDFUNC1R(VECTOR3, VECTOR3, Vector3, snapped, REAL, "by", varray());
+ ADDFUNC2R(VECTOR3, VECTOR3, Vector3, rotated, VECTOR3, "axis", REAL, "phi", varray());
+ ADDFUNC2R(VECTOR3, VECTOR3, Vector3, linear_interpolate, VECTOR3, "b", REAL, "t", varray());
+ ADDFUNC4R(VECTOR3, VECTOR3, Vector3, cubic_interpolate, VECTOR3, "b", VECTOR3, "pre_a", VECTOR3, "post_b", REAL, "t", varray());
+ ADDFUNC1R(VECTOR3, REAL, Vector3, dot, VECTOR3, "b", varray());
+ ADDFUNC1R(VECTOR3, VECTOR3, Vector3, cross, VECTOR3, "b", varray());
+ ADDFUNC1R(VECTOR3, BASIS, Vector3, outer, VECTOR3, "b", varray());
+ ADDFUNC0R(VECTOR3, BASIS, Vector3, to_diagonal_matrix, varray());
+ ADDFUNC0R(VECTOR3, VECTOR3, Vector3, abs, varray());
+ ADDFUNC0R(VECTOR3, VECTOR3, Vector3, floor, varray());
+ ADDFUNC0R(VECTOR3, VECTOR3, Vector3, ceil, varray());
+ ADDFUNC1R(VECTOR3, REAL, Vector3, distance_to, VECTOR3, "b", varray());
+ ADDFUNC1R(VECTOR3, REAL, Vector3, distance_squared_to, VECTOR3, "b", varray());
+ ADDFUNC1R(VECTOR3, REAL, Vector3, angle_to, VECTOR3, "to", varray());
+ ADDFUNC1R(VECTOR3, VECTOR3, Vector3, slide, VECTOR3, "n", varray());
+ ADDFUNC1R(VECTOR3, VECTOR3, Vector3, bounce, VECTOR3, "n", varray());
+ ADDFUNC1R(VECTOR3, VECTOR3, Vector3, reflect, VECTOR3, "n", varray());
+
+ ADDFUNC0R(PLANE, PLANE, Plane, normalized, varray());
+ ADDFUNC0R(PLANE, VECTOR3, Plane, center, varray());
+ ADDFUNC0R(PLANE, VECTOR3, Plane, get_any_point, varray());
+ ADDFUNC1R(PLANE, BOOL, Plane, is_point_over, VECTOR3, "point", varray());
+ ADDFUNC1R(PLANE, REAL, Plane, distance_to, VECTOR3, "point", varray());
+ ADDFUNC2R(PLANE, BOOL, Plane, has_point, VECTOR3, "point", REAL, "epsilon", varray(CMP_EPSILON));
+ ADDFUNC1R(PLANE, VECTOR3, Plane, project, VECTOR3, "point", varray());
+ ADDFUNC2R(PLANE, VECTOR3, Plane, intersect_3, PLANE, "b", PLANE, "c", varray());
+ ADDFUNC2R(PLANE, VECTOR3, Plane, intersects_ray, VECTOR3, "from", VECTOR3, "dir", varray());
+ ADDFUNC2R(PLANE, VECTOR3, Plane, intersects_segment, VECTOR3, "begin", VECTOR3, "end", varray());
+
+ ADDFUNC0R(QUAT, REAL, Quat, length, varray());
+ ADDFUNC0R(QUAT, REAL, Quat, length_squared, varray());
+ ADDFUNC0R(QUAT, QUAT, Quat, normalized, varray());
+ ADDFUNC0R(QUAT, BOOL, Quat, is_normalized, varray());
+ ADDFUNC0R(QUAT, QUAT, Quat, inverse, varray());
+ ADDFUNC1R(QUAT, REAL, Quat, dot, QUAT, "b", varray());
+ ADDFUNC1R(QUAT, VECTOR3, Quat, xform, VECTOR3, "v", varray());
+ ADDFUNC2R(QUAT, QUAT, Quat, slerp, QUAT, "b", REAL, "t", varray());
+ ADDFUNC2R(QUAT, QUAT, Quat, slerpni, QUAT, "b", REAL, "t", varray());
+ ADDFUNC4R(QUAT, QUAT, Quat, cubic_slerp, QUAT, "b", QUAT, "pre_a", QUAT, "post_b", REAL, "t", varray());
+
+ ADDFUNC0R(COLOR, INT, Color, to_rgba32, varray());
+ ADDFUNC0R(COLOR, INT, Color, to_argb32, varray());
+ ADDFUNC0R(COLOR, REAL, Color, gray, varray());
+ ADDFUNC0R(COLOR, COLOR, Color, inverted, varray());
+ ADDFUNC0R(COLOR, COLOR, Color, contrasted, varray());
+ ADDFUNC2R(COLOR, COLOR, Color, linear_interpolate, COLOR, "b", REAL, "t", varray());
+ ADDFUNC1R(COLOR, COLOR, Color, blend, COLOR, "over", varray());
+ ADDFUNC1R(COLOR, STRING, Color, to_html, BOOL, "with_alpha", varray(true));
+
+ ADDFUNC0R(_RID, INT, RID, get_id, varray());
+
+ ADDFUNC0R(NODE_PATH, BOOL, NodePath, is_absolute, varray());
+ ADDFUNC0R(NODE_PATH, INT, NodePath, get_name_count, varray());
+ ADDFUNC1R(NODE_PATH, STRING, NodePath, get_name, INT, "idx", varray());
+ ADDFUNC0R(NODE_PATH, INT, NodePath, get_subname_count, varray());
+ ADDFUNC1R(NODE_PATH, STRING, NodePath, get_subname, INT, "idx", varray());
+ ADDFUNC0R(NODE_PATH, STRING, NodePath, get_property, varray());
+ ADDFUNC0R(NODE_PATH, BOOL, NodePath, is_empty, varray());
+
+ ADDFUNC0R(DICTIONARY, INT, Dictionary, size, varray());
+ ADDFUNC0R(DICTIONARY, BOOL, Dictionary, empty, varray());
ADDFUNC0NC(DICTIONARY, NIL, Dictionary, clear, varray());
- ADDFUNC1(DICTIONARY, BOOL, Dictionary, has, NIL, "key", varray());
- ADDFUNC1(DICTIONARY, BOOL, Dictionary, has_all, ARRAY, "keys", varray());
+ ADDFUNC1R(DICTIONARY, BOOL, Dictionary, has, NIL, "key", varray());
+ ADDFUNC1R(DICTIONARY, BOOL, Dictionary, has_all, ARRAY, "keys", varray());
ADDFUNC1(DICTIONARY, NIL, Dictionary, erase, NIL, "key", varray());
- ADDFUNC0(DICTIONARY, INT, Dictionary, hash, varray());
- ADDFUNC0(DICTIONARY, ARRAY, Dictionary, keys, varray());
- ADDFUNC0(DICTIONARY, ARRAY, Dictionary, values, varray());
+ ADDFUNC0R(DICTIONARY, INT, Dictionary, hash, varray());
+ ADDFUNC0R(DICTIONARY, ARRAY, Dictionary, keys, varray());
+ ADDFUNC0R(DICTIONARY, ARRAY, Dictionary, values, varray());
- ADDFUNC0(ARRAY, INT, Array, size, varray());
- ADDFUNC0(ARRAY, BOOL, Array, empty, varray());
+ ADDFUNC0R(ARRAY, INT, Array, size, varray());
+ ADDFUNC0R(ARRAY, BOOL, Array, empty, varray());
ADDFUNC0NC(ARRAY, NIL, Array, clear, varray());
- ADDFUNC0(ARRAY, INT, Array, hash, varray());
+ ADDFUNC0R(ARRAY, INT, Array, hash, varray());
ADDFUNC1NC(ARRAY, NIL, Array, push_back, NIL, "value", varray());
ADDFUNC1NC(ARRAY, NIL, Array, push_front, NIL, "value", varray());
ADDFUNC1NC(ARRAY, NIL, Array, append, NIL, "value", varray());
@@ -1592,165 +1612,160 @@ void register_variant_methods() {
ADDFUNC2NC(ARRAY, NIL, Array, insert, INT, "position", NIL, "value", varray());
ADDFUNC1NC(ARRAY, NIL, Array, remove, INT, "position", varray());
ADDFUNC1NC(ARRAY, NIL, Array, erase, NIL, "value", varray());
- ADDFUNC0(ARRAY, NIL, Array, front, varray());
- ADDFUNC0(ARRAY, NIL, Array, back, varray());
- ADDFUNC2(ARRAY, INT, Array, find, NIL, "what", INT, "from", varray(0));
- ADDFUNC2(ARRAY, INT, Array, rfind, NIL, "what", INT, "from", varray(-1));
- ADDFUNC1(ARRAY, INT, Array, find_last, NIL, "value", varray());
- ADDFUNC1(ARRAY, INT, Array, count, NIL, "value", varray());
- ADDFUNC1(ARRAY, BOOL, Array, has, NIL, "value", varray());
- ADDFUNC0NC(ARRAY, NIL, Array, pop_back, varray());
- ADDFUNC0NC(ARRAY, NIL, Array, pop_front, varray());
+ ADDFUNC0R(ARRAY, NIL, Array, front, varray());
+ ADDFUNC0R(ARRAY, NIL, Array, back, varray());
+ ADDFUNC2R(ARRAY, INT, Array, find, NIL, "what", INT, "from", varray(0));
+ ADDFUNC2R(ARRAY, INT, Array, rfind, NIL, "what", INT, "from", varray(-1));
+ ADDFUNC1R(ARRAY, INT, Array, find_last, NIL, "value", varray());
+ ADDFUNC1R(ARRAY, INT, Array, count, NIL, "value", varray());
+ ADDFUNC1R(ARRAY, BOOL, Array, has, NIL, "value", varray());
+ ADDFUNC0RNC(ARRAY, NIL, Array, pop_back, varray());
+ ADDFUNC0RNC(ARRAY, NIL, Array, pop_front, varray());
ADDFUNC0NC(ARRAY, NIL, Array, sort, varray());
ADDFUNC2NC(ARRAY, NIL, Array, sort_custom, OBJECT, "obj", STRING, "func", varray());
ADDFUNC0NC(ARRAY, NIL, Array, invert, varray());
- ADDFUNC0NC(ARRAY, ARRAY, Array, duplicate, varray());
+ ADDFUNC0RNC(ARRAY, ARRAY, Array, duplicate, varray());
- ADDFUNC0(POOL_BYTE_ARRAY, INT, PoolByteArray, size, varray());
+ ADDFUNC0R(POOL_BYTE_ARRAY, INT, PoolByteArray, size, varray());
ADDFUNC2(POOL_BYTE_ARRAY, NIL, PoolByteArray, set, INT, "idx", INT, "byte", varray());
ADDFUNC1(POOL_BYTE_ARRAY, NIL, PoolByteArray, push_back, INT, "byte", varray());
ADDFUNC1(POOL_BYTE_ARRAY, NIL, PoolByteArray, append, INT, "byte", varray());
ADDFUNC1(POOL_BYTE_ARRAY, NIL, PoolByteArray, append_array, POOL_BYTE_ARRAY, "array", varray());
ADDFUNC1(POOL_BYTE_ARRAY, NIL, PoolByteArray, remove, INT, "idx", varray());
- ADDFUNC2(POOL_BYTE_ARRAY, INT, PoolByteArray, insert, INT, "idx", INT, "byte", varray());
+ ADDFUNC2R(POOL_BYTE_ARRAY, INT, PoolByteArray, insert, INT, "idx", INT, "byte", varray());
ADDFUNC1(POOL_BYTE_ARRAY, NIL, PoolByteArray, resize, INT, "idx", varray());
ADDFUNC0(POOL_BYTE_ARRAY, NIL, PoolByteArray, invert, varray());
- ADDFUNC2(POOL_BYTE_ARRAY, POOL_BYTE_ARRAY, PoolByteArray, subarray, INT, "from", INT, "to", varray());
+ ADDFUNC2R(POOL_BYTE_ARRAY, POOL_BYTE_ARRAY, PoolByteArray, subarray, INT, "from", INT, "to", varray());
- ADDFUNC0(POOL_BYTE_ARRAY, STRING, PoolByteArray, get_string_from_ascii, varray());
- ADDFUNC0(POOL_BYTE_ARRAY, STRING, PoolByteArray, get_string_from_utf8, varray());
- ADDFUNC1(POOL_BYTE_ARRAY, POOL_BYTE_ARRAY, PoolByteArray, compress, INT, "compression_mode", varray(0));
- ADDFUNC2(POOL_BYTE_ARRAY, POOL_BYTE_ARRAY, PoolByteArray, decompress, INT, "buffer_size", INT, "compression_mode", varray(0));
+ ADDFUNC0R(POOL_BYTE_ARRAY, STRING, PoolByteArray, get_string_from_ascii, varray());
+ ADDFUNC0R(POOL_BYTE_ARRAY, STRING, PoolByteArray, get_string_from_utf8, varray());
+ ADDFUNC1R(POOL_BYTE_ARRAY, POOL_BYTE_ARRAY, PoolByteArray, compress, INT, "compression_mode", varray(0));
+ ADDFUNC2R(POOL_BYTE_ARRAY, POOL_BYTE_ARRAY, PoolByteArray, decompress, INT, "buffer_size", INT, "compression_mode", varray(0));
- ADDFUNC0(POOL_INT_ARRAY, INT, PoolIntArray, size, varray());
+ ADDFUNC0R(POOL_INT_ARRAY, INT, PoolIntArray, size, varray());
ADDFUNC2(POOL_INT_ARRAY, NIL, PoolIntArray, set, INT, "idx", INT, "integer", varray());
ADDFUNC1(POOL_INT_ARRAY, NIL, PoolIntArray, push_back, INT, "integer", varray());
ADDFUNC1(POOL_INT_ARRAY, NIL, PoolIntArray, append, INT, "integer", varray());
ADDFUNC1(POOL_INT_ARRAY, NIL, PoolIntArray, append_array, POOL_INT_ARRAY, "array", varray());
ADDFUNC1(POOL_INT_ARRAY, NIL, PoolIntArray, remove, INT, "idx", varray());
- ADDFUNC2(POOL_INT_ARRAY, INT, PoolIntArray, insert, INT, "idx", INT, "integer", varray());
+ ADDFUNC2R(POOL_INT_ARRAY, INT, PoolIntArray, insert, INT, "idx", INT, "integer", varray());
ADDFUNC1(POOL_INT_ARRAY, NIL, PoolIntArray, resize, INT, "idx", varray());
ADDFUNC0(POOL_INT_ARRAY, NIL, PoolIntArray, invert, varray());
- ADDFUNC0(POOL_REAL_ARRAY, INT, PoolRealArray, size, varray());
+ ADDFUNC0R(POOL_REAL_ARRAY, INT, PoolRealArray, size, varray());
ADDFUNC2(POOL_REAL_ARRAY, NIL, PoolRealArray, set, INT, "idx", REAL, "value", varray());
ADDFUNC1(POOL_REAL_ARRAY, NIL, PoolRealArray, push_back, REAL, "value", varray());
ADDFUNC1(POOL_REAL_ARRAY, NIL, PoolRealArray, append, REAL, "value", varray());
ADDFUNC1(POOL_REAL_ARRAY, NIL, PoolRealArray, append_array, POOL_REAL_ARRAY, "array", varray());
ADDFUNC1(POOL_REAL_ARRAY, NIL, PoolRealArray, remove, INT, "idx", varray());
- ADDFUNC2(POOL_REAL_ARRAY, INT, PoolRealArray, insert, INT, "idx", REAL, "value", varray());
+ ADDFUNC2R(POOL_REAL_ARRAY, INT, PoolRealArray, insert, INT, "idx", REAL, "value", varray());
ADDFUNC1(POOL_REAL_ARRAY, NIL, PoolRealArray, resize, INT, "idx", varray());
ADDFUNC0(POOL_REAL_ARRAY, NIL, PoolRealArray, invert, varray());
- ADDFUNC0(POOL_STRING_ARRAY, INT, PoolStringArray, size, varray());
+ ADDFUNC0R(POOL_STRING_ARRAY, INT, PoolStringArray, size, varray());
ADDFUNC2(POOL_STRING_ARRAY, NIL, PoolStringArray, set, INT, "idx", STRING, "string", varray());
ADDFUNC1(POOL_STRING_ARRAY, NIL, PoolStringArray, push_back, STRING, "string", varray());
ADDFUNC1(POOL_STRING_ARRAY, NIL, PoolStringArray, append, STRING, "string", varray());
ADDFUNC1(POOL_STRING_ARRAY, NIL, PoolStringArray, append_array, POOL_STRING_ARRAY, "array", varray());
ADDFUNC1(POOL_STRING_ARRAY, NIL, PoolStringArray, remove, INT, "idx", varray());
- ADDFUNC2(POOL_STRING_ARRAY, INT, PoolStringArray, insert, INT, "idx", STRING, "string", varray());
+ ADDFUNC2R(POOL_STRING_ARRAY, INT, PoolStringArray, insert, INT, "idx", STRING, "string", varray());
ADDFUNC1(POOL_STRING_ARRAY, NIL, PoolStringArray, resize, INT, "idx", varray());
ADDFUNC0(POOL_STRING_ARRAY, NIL, PoolStringArray, invert, varray());
ADDFUNC1(POOL_STRING_ARRAY, STRING, PoolStringArray, join, STRING, "delimiter", varray());
- ADDFUNC0(POOL_VECTOR2_ARRAY, INT, PoolVector2Array, size, varray());
+ ADDFUNC0R(POOL_VECTOR2_ARRAY, INT, PoolVector2Array, size, varray());
ADDFUNC2(POOL_VECTOR2_ARRAY, NIL, PoolVector2Array, set, INT, "idx", VECTOR2, "vector2", varray());
ADDFUNC1(POOL_VECTOR2_ARRAY, NIL, PoolVector2Array, push_back, VECTOR2, "vector2", varray());
ADDFUNC1(POOL_VECTOR2_ARRAY, NIL, PoolVector2Array, append, VECTOR2, "vector2", varray());
ADDFUNC1(POOL_VECTOR2_ARRAY, NIL, PoolVector2Array, append_array, POOL_VECTOR2_ARRAY, "array", varray());
ADDFUNC1(POOL_VECTOR2_ARRAY, NIL, PoolVector2Array, remove, INT, "idx", varray());
- ADDFUNC2(POOL_VECTOR2_ARRAY, INT, PoolVector2Array, insert, INT, "idx", VECTOR2, "vector2", varray());
+ ADDFUNC2R(POOL_VECTOR2_ARRAY, INT, PoolVector2Array, insert, INT, "idx", VECTOR2, "vector2", varray());
ADDFUNC1(POOL_VECTOR2_ARRAY, NIL, PoolVector2Array, resize, INT, "idx", varray());
ADDFUNC0(POOL_VECTOR2_ARRAY, NIL, PoolVector2Array, invert, varray());
- ADDFUNC0(POOL_VECTOR3_ARRAY, INT, PoolVector3Array, size, varray());
+ ADDFUNC0R(POOL_VECTOR3_ARRAY, INT, PoolVector3Array, size, varray());
ADDFUNC2(POOL_VECTOR3_ARRAY, NIL, PoolVector3Array, set, INT, "idx", VECTOR3, "vector3", varray());
ADDFUNC1(POOL_VECTOR3_ARRAY, NIL, PoolVector3Array, push_back, VECTOR3, "vector3", varray());
ADDFUNC1(POOL_VECTOR3_ARRAY, NIL, PoolVector3Array, append, VECTOR3, "vector3", varray());
ADDFUNC1(POOL_VECTOR3_ARRAY, NIL, PoolVector3Array, append_array, POOL_VECTOR3_ARRAY, "array", varray());
ADDFUNC1(POOL_VECTOR3_ARRAY, NIL, PoolVector3Array, remove, INT, "idx", varray());
- ADDFUNC2(POOL_VECTOR3_ARRAY, INT, PoolVector3Array, insert, INT, "idx", VECTOR3, "vector3", varray());
+ ADDFUNC2R(POOL_VECTOR3_ARRAY, INT, PoolVector3Array, insert, INT, "idx", VECTOR3, "vector3", varray());
ADDFUNC1(POOL_VECTOR3_ARRAY, NIL, PoolVector3Array, resize, INT, "idx", varray());
ADDFUNC0(POOL_VECTOR3_ARRAY, NIL, PoolVector3Array, invert, varray());
- ADDFUNC0(POOL_COLOR_ARRAY, INT, PoolColorArray, size, varray());
+ ADDFUNC0R(POOL_COLOR_ARRAY, INT, PoolColorArray, size, varray());
ADDFUNC2(POOL_COLOR_ARRAY, NIL, PoolColorArray, set, INT, "idx", COLOR, "color", varray());
ADDFUNC1(POOL_COLOR_ARRAY, NIL, PoolColorArray, push_back, COLOR, "color", varray());
ADDFUNC1(POOL_COLOR_ARRAY, NIL, PoolColorArray, append, COLOR, "color", varray());
ADDFUNC1(POOL_COLOR_ARRAY, NIL, PoolColorArray, append_array, POOL_COLOR_ARRAY, "array", varray());
ADDFUNC1(POOL_COLOR_ARRAY, NIL, PoolColorArray, remove, INT, "idx", varray());
- ADDFUNC2(POOL_COLOR_ARRAY, INT, PoolColorArray, insert, INT, "idx", COLOR, "color", varray());
+ ADDFUNC2R(POOL_COLOR_ARRAY, INT, PoolColorArray, insert, INT, "idx", COLOR, "color", varray());
ADDFUNC1(POOL_COLOR_ARRAY, NIL, PoolColorArray, resize, INT, "idx", varray());
ADDFUNC0(POOL_COLOR_ARRAY, NIL, PoolColorArray, invert, varray());
//pointerbased
- ADDFUNC0(RECT3, REAL, Rect3, get_area, varray());
- ADDFUNC0(RECT3, BOOL, Rect3, has_no_area, varray());
- ADDFUNC0(RECT3, BOOL, Rect3, has_no_surface, varray());
- ADDFUNC1(RECT3, BOOL, Rect3, intersects, RECT3, "with", varray());
- ADDFUNC1(RECT3, BOOL, Rect3, encloses, RECT3, "with", varray());
- ADDFUNC1(RECT3, RECT3, Rect3, merge, RECT3, "with", varray());
- ADDFUNC1(RECT3, RECT3, Rect3, intersection, RECT3, "with", varray());
- ADDFUNC1(RECT3, BOOL, Rect3, intersects_plane, PLANE, "plane", varray());
- ADDFUNC2(RECT3, BOOL, Rect3, intersects_segment, VECTOR3, "from", VECTOR3, "to", varray());
- ADDFUNC1(RECT3, BOOL, Rect3, has_point, VECTOR3, "point", varray());
- ADDFUNC1(RECT3, VECTOR3, Rect3, get_support, VECTOR3, "dir", varray());
- ADDFUNC0(RECT3, VECTOR3, Rect3, get_longest_axis, varray());
- ADDFUNC0(RECT3, INT, Rect3, get_longest_axis_index, varray());
- ADDFUNC0(RECT3, REAL, Rect3, get_longest_axis_size, varray());
- ADDFUNC0(RECT3, VECTOR3, Rect3, get_shortest_axis, varray());
- ADDFUNC0(RECT3, INT, Rect3, get_shortest_axis_index, varray());
- ADDFUNC0(RECT3, REAL, Rect3, get_shortest_axis_size, varray());
- ADDFUNC1(RECT3, RECT3, Rect3, expand, VECTOR3, "to_point", varray());
- ADDFUNC1(RECT3, RECT3, Rect3, grow, REAL, "by", varray());
- ADDFUNC1(RECT3, VECTOR3, Rect3, get_endpoint, INT, "idx", varray());
-
- ADDFUNC0(TRANSFORM2D, TRANSFORM2D, Transform2D, inverse, varray());
- ADDFUNC0(TRANSFORM2D, TRANSFORM2D, Transform2D, affine_inverse, varray());
- ADDFUNC0(TRANSFORM2D, REAL, Transform2D, get_rotation, varray());
- ADDFUNC0(TRANSFORM2D, VECTOR2, Transform2D, get_origin, varray());
- ADDFUNC0(TRANSFORM2D, VECTOR2, Transform2D, get_scale, varray());
- ADDFUNC0(TRANSFORM2D, TRANSFORM2D, Transform2D, orthonormalized, varray());
- ADDFUNC1(TRANSFORM2D, TRANSFORM2D, Transform2D, rotated, REAL, "phi", varray());
- ADDFUNC1(TRANSFORM2D, TRANSFORM2D, Transform2D, scaled, VECTOR2, "scale", varray());
- ADDFUNC1(TRANSFORM2D, TRANSFORM2D, Transform2D, translated, VECTOR2, "offset", varray());
- ADDFUNC1(TRANSFORM2D, TRANSFORM2D, Transform2D, xform, NIL, "v", varray());
- ADDFUNC1(TRANSFORM2D, TRANSFORM2D, Transform2D, xform_inv, NIL, "v", varray());
- ADDFUNC1(TRANSFORM2D, TRANSFORM2D, Transform2D, basis_xform, NIL, "v", varray());
- ADDFUNC1(TRANSFORM2D, TRANSFORM2D, Transform2D, basis_xform_inv, NIL, "v", varray());
- ADDFUNC2(TRANSFORM2D, TRANSFORM2D, Transform2D, interpolate_with, TRANSFORM2D, "transform", REAL, "weight", varray());
-
- ADDFUNC0(BASIS, BASIS, Basis, inverse, varray());
- ADDFUNC0(BASIS, BASIS, Basis, transposed, varray());
- ADDFUNC0(BASIS, BASIS, Basis, orthonormalized, varray());
- ADDFUNC0(BASIS, REAL, Basis, determinant, varray());
- ADDFUNC2(BASIS, BASIS, Basis, rotated, VECTOR3, "axis", REAL, "phi", varray());
- ADDFUNC1(BASIS, BASIS, Basis, scaled, VECTOR3, "scale", varray());
- ADDFUNC0(BASIS, VECTOR3, Basis, get_scale, varray());
- ADDFUNC0(BASIS, VECTOR3, Basis, get_euler, varray());
- ADDFUNC1(BASIS, REAL, Basis, tdotx, VECTOR3, "with", varray());
- ADDFUNC1(BASIS, REAL, Basis, tdoty, VECTOR3, "with", varray());
- ADDFUNC1(BASIS, REAL, Basis, tdotz, VECTOR3, "with", varray());
- ADDFUNC1(BASIS, VECTOR3, Basis, xform, VECTOR3, "v", varray());
- ADDFUNC1(BASIS, VECTOR3, Basis, xform_inv, VECTOR3, "v", varray());
- ADDFUNC0(BASIS, INT, Basis, get_orthogonal_index, varray());
-
- ADDFUNC0(TRANSFORM, TRANSFORM, Transform, inverse, varray());
- ADDFUNC0(TRANSFORM, TRANSFORM, Transform, affine_inverse, varray());
- ADDFUNC0(TRANSFORM, TRANSFORM, Transform, orthonormalized, varray());
- ADDFUNC2(TRANSFORM, TRANSFORM, Transform, rotated, VECTOR3, "axis", REAL, "phi", varray());
- ADDFUNC1(TRANSFORM, TRANSFORM, Transform, scaled, VECTOR3, "scale", varray());
- ADDFUNC1(TRANSFORM, TRANSFORM, Transform, translated, VECTOR3, "ofs", varray());
- ADDFUNC2(TRANSFORM, TRANSFORM, Transform, looking_at, VECTOR3, "target", VECTOR3, "up", varray());
- ADDFUNC2(TRANSFORM, TRANSFORM, Transform, interpolate_with, TRANSFORM, "transform", REAL, "weight", varray());
- ADDFUNC1(TRANSFORM, NIL, Transform, xform, NIL, "v", varray());
- ADDFUNC1(TRANSFORM, NIL, Transform, xform_inv, NIL, "v", varray());
-
-#ifdef DEBUG_ENABLED
- _VariantCall::type_funcs[Variant::TRANSFORM].functions["xform"].returns = true;
- _VariantCall::type_funcs[Variant::TRANSFORM].functions["xform_inv"].returns = true;
-#endif
+ ADDFUNC0R(RECT3, REAL, Rect3, get_area, varray());
+ ADDFUNC0R(RECT3, BOOL, Rect3, has_no_area, varray());
+ ADDFUNC0R(RECT3, BOOL, Rect3, has_no_surface, varray());
+ ADDFUNC1R(RECT3, BOOL, Rect3, intersects, RECT3, "with", varray());
+ ADDFUNC1R(RECT3, BOOL, Rect3, encloses, RECT3, "with", varray());
+ ADDFUNC1R(RECT3, RECT3, Rect3, merge, RECT3, "with", varray());
+ ADDFUNC1R(RECT3, RECT3, Rect3, intersection, RECT3, "with", varray());
+ ADDFUNC1R(RECT3, BOOL, Rect3, intersects_plane, PLANE, "plane", varray());
+ ADDFUNC2R(RECT3, BOOL, Rect3, intersects_segment, VECTOR3, "from", VECTOR3, "to", varray());
+ ADDFUNC1R(RECT3, BOOL, Rect3, has_point, VECTOR3, "point", varray());
+ ADDFUNC1R(RECT3, VECTOR3, Rect3, get_support, VECTOR3, "dir", varray());
+ ADDFUNC0R(RECT3, VECTOR3, Rect3, get_longest_axis, varray());
+ ADDFUNC0R(RECT3, INT, Rect3, get_longest_axis_index, varray());
+ ADDFUNC0R(RECT3, REAL, Rect3, get_longest_axis_size, varray());
+ ADDFUNC0R(RECT3, VECTOR3, Rect3, get_shortest_axis, varray());
+ ADDFUNC0R(RECT3, INT, Rect3, get_shortest_axis_index, varray());
+ ADDFUNC0R(RECT3, REAL, Rect3, get_shortest_axis_size, varray());
+ ADDFUNC1R(RECT3, RECT3, Rect3, expand, VECTOR3, "to_point", varray());
+ ADDFUNC1R(RECT3, RECT3, Rect3, grow, REAL, "by", varray());
+ ADDFUNC1R(RECT3, VECTOR3, Rect3, get_endpoint, INT, "idx", varray());
+
+ ADDFUNC0R(TRANSFORM2D, TRANSFORM2D, Transform2D, inverse, varray());
+ ADDFUNC0R(TRANSFORM2D, TRANSFORM2D, Transform2D, affine_inverse, varray());
+ ADDFUNC0R(TRANSFORM2D, REAL, Transform2D, get_rotation, varray());
+ ADDFUNC0R(TRANSFORM2D, VECTOR2, Transform2D, get_origin, varray());
+ ADDFUNC0R(TRANSFORM2D, VECTOR2, Transform2D, get_scale, varray());
+ ADDFUNC0R(TRANSFORM2D, TRANSFORM2D, Transform2D, orthonormalized, varray());
+ ADDFUNC1R(TRANSFORM2D, TRANSFORM2D, Transform2D, rotated, REAL, "phi", varray());
+ ADDFUNC1R(TRANSFORM2D, TRANSFORM2D, Transform2D, scaled, VECTOR2, "scale", varray());
+ ADDFUNC1R(TRANSFORM2D, TRANSFORM2D, Transform2D, translated, VECTOR2, "offset", varray());
+ ADDFUNC1R(TRANSFORM2D, TRANSFORM2D, Transform2D, xform, NIL, "v", varray());
+ ADDFUNC1R(TRANSFORM2D, TRANSFORM2D, Transform2D, xform_inv, NIL, "v", varray());
+ ADDFUNC1R(TRANSFORM2D, TRANSFORM2D, Transform2D, basis_xform, NIL, "v", varray());
+ ADDFUNC1R(TRANSFORM2D, TRANSFORM2D, Transform2D, basis_xform_inv, NIL, "v", varray());
+ ADDFUNC2R(TRANSFORM2D, TRANSFORM2D, Transform2D, interpolate_with, TRANSFORM2D, "transform", REAL, "weight", varray());
+
+ ADDFUNC0R(BASIS, BASIS, Basis, inverse, varray());
+ ADDFUNC0R(BASIS, BASIS, Basis, transposed, varray());
+ ADDFUNC0R(BASIS, BASIS, Basis, orthonormalized, varray());
+ ADDFUNC0R(BASIS, REAL, Basis, determinant, varray());
+ ADDFUNC2R(BASIS, BASIS, Basis, rotated, VECTOR3, "axis", REAL, "phi", varray());
+ ADDFUNC1R(BASIS, BASIS, Basis, scaled, VECTOR3, "scale", varray());
+ ADDFUNC0R(BASIS, VECTOR3, Basis, get_scale, varray());
+ ADDFUNC0R(BASIS, VECTOR3, Basis, get_euler, varray());
+ ADDFUNC1R(BASIS, REAL, Basis, tdotx, VECTOR3, "with", varray());
+ ADDFUNC1R(BASIS, REAL, Basis, tdoty, VECTOR3, "with", varray());
+ ADDFUNC1R(BASIS, REAL, Basis, tdotz, VECTOR3, "with", varray());
+ ADDFUNC1R(BASIS, VECTOR3, Basis, xform, VECTOR3, "v", varray());
+ ADDFUNC1R(BASIS, VECTOR3, Basis, xform_inv, VECTOR3, "v", varray());
+ ADDFUNC0R(BASIS, INT, Basis, get_orthogonal_index, varray());
+
+ ADDFUNC0R(TRANSFORM, TRANSFORM, Transform, inverse, varray());
+ ADDFUNC0R(TRANSFORM, TRANSFORM, Transform, affine_inverse, varray());
+ ADDFUNC0R(TRANSFORM, TRANSFORM, Transform, orthonormalized, varray());
+ ADDFUNC2R(TRANSFORM, TRANSFORM, Transform, rotated, VECTOR3, "axis", REAL, "phi", varray());
+ ADDFUNC1R(TRANSFORM, TRANSFORM, Transform, scaled, VECTOR3, "scale", varray());
+ ADDFUNC1R(TRANSFORM, TRANSFORM, Transform, translated, VECTOR3, "ofs", varray());
+ ADDFUNC2R(TRANSFORM, TRANSFORM, Transform, looking_at, VECTOR3, "target", VECTOR3, "up", varray());
+ ADDFUNC2R(TRANSFORM, TRANSFORM, Transform, interpolate_with, TRANSFORM, "transform", REAL, "weight", varray());
+ ADDFUNC1R(TRANSFORM, NIL, Transform, xform, NIL, "v", varray());
+ ADDFUNC1R(TRANSFORM, NIL, Transform, xform_inv, NIL, "v", varray());
/* REGISTER CONSTRUCTORS */
diff --git a/core/variant_op.cpp b/core/variant_op.cpp
index 03ec336291..6362090902 100644
--- a/core/variant_op.cpp
+++ b/core/variant_op.cpp
@@ -1655,13 +1655,13 @@ Variant Variant::get_named(const StringName &p_index, bool *r_valid) const {
} else if (p_index == CoreStringNames::singleton->a) {
return v->a;
} else if (p_index == CoreStringNames::singleton->r8) {
- return v->r * 255.0;
+ return int(v->r * 255.0);
} else if (p_index == CoreStringNames::singleton->g8) {
- return v->g * 255.0;
+ return int(v->g * 255.0);
} else if (p_index == CoreStringNames::singleton->b8) {
- return v->b * 255.0;
+ return int(v->b * 255.0);
} else if (p_index == CoreStringNames::singleton->a8) {
- return v->a * 255.0;
+ return int(v->a * 255.0);
} else if (p_index == CoreStringNames::singleton->h) {
return v->get_h();
} else if (p_index == CoreStringNames::singleton->s) {
diff --git a/doc/Makefile b/doc/Makefile
index d68c66f8eb..2f9fefe794 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -24,5 +24,5 @@ rst:
rm -rf $(OUTPUTDIR)/rst
mkdir -p $(OUTPUTDIR)/rst
pushd $(OUTPUTDIR)/rst
- python2 $(TOOLSDIR)/makerst.py $(CLASSES)
+ python $(TOOLSDIR)/makerst.py $(CLASSES)
popd
diff --git a/doc/classes/@Global Scope.xml b/doc/classes/@Global Scope.xml
index d8c9a57a88..20f323bb4f 100644
--- a/doc/classes/@Global Scope.xml
+++ b/doc/classes/@Global Scope.xml
@@ -29,6 +29,9 @@
<member name="Geometry" type="Geometry" setter="" getter="">
[Geometry] singleton
</member>
+ <member name="GodotSharp" type="GodotSharp" setter="" getter="">
+ [GodotSharp] singleton
+ </member>
<member name="IP" type="IP" setter="" getter="">
[IP] singleton
</member>
@@ -39,6 +42,7 @@
[InputMap] singleton
</member>
<member name="JSON" type="JSON" setter="" getter="">
+ [JSON] singleton
</member>
<member name="Marshalls" type="Reference" setter="" getter="">
[Marshalls] singleton
@@ -142,8 +146,10 @@
Printscreen Key
</constant>
<constant name="KEY_SYSREQ" value="16777227">
+ System Request Key
</constant>
<constant name="KEY_CLEAR" value="16777228">
+ Clear Key
</constant>
<constant name="KEY_HOME" value="16777229">
Home Key
@@ -176,6 +182,7 @@
Control Key
</constant>
<constant name="KEY_META" value="16777239">
+ Meta Key
</constant>
<constant name="KEY_ALT" value="16777240">
Alt Key
@@ -283,24 +290,28 @@
Number 9 on Numpad
</constant>
<constant name="KEY_SUPER_L" value="16777260">
- Super Left key (windows key)
+ Left Super Key (Windows Key)
</constant>
<constant name="KEY_SUPER_R" value="16777261">
- Super Left key (windows key)
+ Right Super Key (Windows Key)
</constant>
<constant name="KEY_MENU" value="16777262">
Context menu key
</constant>
<constant name="KEY_HYPER_L" value="16777263">
+ Left Hyper Key
</constant>
<constant name="KEY_HYPER_R" value="16777264">
+ Right Hyper Key
</constant>
<constant name="KEY_HELP" value="16777265">
Help key
</constant>
<constant name="KEY_DIRECTION_L" value="16777266">
+ Left Direction Key
</constant>
<constant name="KEY_DIRECTION_R" value="16777267">
+ Right Direction Key
</constant>
<constant name="KEY_BACK" value="16777280">
Back key
@@ -324,14 +335,19 @@
Volume up key
</constant>
<constant name="KEY_BASSBOOST" value="16777287">
+ Bass Boost Key
</constant>
<constant name="KEY_BASSUP" value="16777288">
+ Bass Up Key
</constant>
<constant name="KEY_BASSDOWN" value="16777289">
+ Bass Down Key
</constant>
<constant name="KEY_TREBLEUP" value="16777290">
+ Treble Up Key
</constant>
<constant name="KEY_TREBLEDOWN" value="16777291">
+ Treble Down Key
</constant>
<constant name="KEY_MEDIAPLAY" value="16777292">
Media play key
@@ -358,46 +374,67 @@
Search key
</constant>
<constant name="KEY_STANDBY" value="16777300">
+ Standby Key
</constant>
<constant name="KEY_OPENURL" value="16777301">
+ Open URL / Launch Browser Key
</constant>
<constant name="KEY_LAUNCHMAIL" value="16777302">
+ Launch Mail Key
</constant>
<constant name="KEY_LAUNCHMEDIA" value="16777303">
+ Launch Media Key
</constant>
<constant name="KEY_LAUNCH0" value="16777304">
+ Launch Shortcut 0 Key
</constant>
<constant name="KEY_LAUNCH1" value="16777305">
+ Launch Shortcut 1 Key
</constant>
<constant name="KEY_LAUNCH2" value="16777306">
+ Launch Shortcut 2 Key
</constant>
<constant name="KEY_LAUNCH3" value="16777307">
+ Launch Shortcut 3 Key
</constant>
<constant name="KEY_LAUNCH4" value="16777308">
+ Launch Shortcut 4 Key
</constant>
<constant name="KEY_LAUNCH5" value="16777309">
+ Launch Shortcut 5 Key
</constant>
<constant name="KEY_LAUNCH6" value="16777310">
+ Launch Shortcut 6 Key
</constant>
<constant name="KEY_LAUNCH7" value="16777311">
+ Launch Shortcut 7 Key
</constant>
<constant name="KEY_LAUNCH8" value="16777312">
+ Launch Shortcut 8 Key
</constant>
<constant name="KEY_LAUNCH9" value="16777313">
+ Launch Shortcut 9 Key
</constant>
<constant name="KEY_LAUNCHA" value="16777314">
+ Launch Shortcut A Key
</constant>
<constant name="KEY_LAUNCHB" value="16777315">
+ Launch Shortcut B Key
</constant>
<constant name="KEY_LAUNCHC" value="16777316">
+ Launch Shortcut C Key
</constant>
<constant name="KEY_LAUNCHD" value="16777317">
+ Launch Shortcut D Key
</constant>
<constant name="KEY_LAUNCHE" value="16777318">
+ Launch Shortcut E Key
</constant>
<constant name="KEY_LAUNCHF" value="16777319">
+ Launch Shortcut F Key
</constant>
<constant name="KEY_UNKNOWN" value="33554431">
+ Unknown Key
</constant>
<constant name="KEY_SPACE" value="32">
Space Key
@@ -592,6 +629,7 @@
_ key
</constant>
<constant name="KEY_QUOTELEFT" value="96">
+ Left Quote Key
</constant>
<constant name="KEY_BRACELEFT" value="123">
{ key
@@ -617,6 +655,7 @@
<constant name="KEY_CURRENCY" value="164">
</constant>
<constant name="KEY_YEN" value="165">
+ Yen Key
</constant>
<constant name="KEY_BROKENBAR" value="166">
¦ key
@@ -645,6 +684,7 @@
® key
</constant>
<constant name="KEY_MACRON" value="175">
+ Macron Key
</constant>
<constant name="KEY_DEGREE" value="176">
° key
@@ -665,6 +705,7 @@
µ key
</constant>
<constant name="KEY_PARAGRAPH" value="182">
+ Paragraph Key
</constant>
<constant name="KEY_PERIODCENTERED" value="183">
· key
@@ -673,377 +714,475 @@
¬ key
</constant>
<constant name="KEY_ONESUPERIOR" value="185">
+ ¹ key
</constant>
<constant name="KEY_MASCULINE" value="186">
+ ♂ key
</constant>
<constant name="KEY_GUILLEMOTRIGHT" value="187">
+ » key
</constant>
<constant name="KEY_ONEQUARTER" value="188">
+ ¼ key
</constant>
<constant name="KEY_ONEHALF" value="189">
½ key
</constant>
<constant name="KEY_THREEQUARTERS" value="190">
+ ¾ key
</constant>
<constant name="KEY_QUESTIONDOWN" value="191">
+ ¿ key
</constant>
<constant name="KEY_AGRAVE" value="192">
+ à key
</constant>
<constant name="KEY_AACUTE" value="193">
+ á key
</constant>
<constant name="KEY_ACIRCUMFLEX" value="194">
+ â key
</constant>
<constant name="KEY_ATILDE" value="195">
+ ã key
</constant>
<constant name="KEY_ADIAERESIS" value="196">
+ ä key
</constant>
<constant name="KEY_ARING" value="197">
+ å key
</constant>
<constant name="KEY_AE" value="198">
+ æ key
</constant>
<constant name="KEY_CCEDILLA" value="199">
+ ç key
</constant>
<constant name="KEY_EGRAVE" value="200">
+ è key
</constant>
<constant name="KEY_EACUTE" value="201">
+ é key
</constant>
<constant name="KEY_ECIRCUMFLEX" value="202">
+ ê key
</constant>
<constant name="KEY_EDIAERESIS" value="203">
+ ë key
</constant>
<constant name="KEY_IGRAVE" value="204">
+ ì key
</constant>
<constant name="KEY_IACUTE" value="205">
+ í key
</constant>
<constant name="KEY_ICIRCUMFLEX" value="206">
+ î key
</constant>
<constant name="KEY_IDIAERESIS" value="207">
+ ë key
</constant>
<constant name="KEY_ETH" value="208">
+ ð key
</constant>
<constant name="KEY_NTILDE" value="209">
+ ñ key
</constant>
<constant name="KEY_OGRAVE" value="210">
+ ò key
</constant>
<constant name="KEY_OACUTE" value="211">
+ ó key
</constant>
<constant name="KEY_OCIRCUMFLEX" value="212">
+ ô key
</constant>
<constant name="KEY_OTILDE" value="213">
+ õ key
</constant>
<constant name="KEY_ODIAERESIS" value="214">
+ ö key
</constant>
<constant name="KEY_MULTIPLY" value="215">
+ × key
</constant>
<constant name="KEY_OOBLIQUE" value="216">
+ ø key
</constant>
<constant name="KEY_UGRAVE" value="217">
+ ù key
</constant>
<constant name="KEY_UACUTE" value="218">
+ ú key
</constant>
<constant name="KEY_UCIRCUMFLEX" value="219">
+ û key
</constant>
<constant name="KEY_UDIAERESIS" value="220">
+ ü key
</constant>
<constant name="KEY_YACUTE" value="221">
+ ý key
</constant>
<constant name="KEY_THORN" value="222">
+ þ key
</constant>
<constant name="KEY_SSHARP" value="223">
+ ß key
</constant>
<constant name="KEY_DIVISION" value="247">
+ ÷ key
</constant>
<constant name="KEY_YDIAERESIS" value="255">
+ ÿ key
</constant>
<constant name="KEY_CODE_MASK" value="33554431">
+ Key Code Mask
</constant>
<constant name="KEY_MODIFIER_MASK" value="-16777216">
+ Modifier Key Mask
</constant>
<constant name="KEY_MASK_SHIFT" value="33554432">
+ Shift Key Mask
</constant>
<constant name="KEY_MASK_ALT" value="67108864">
+ Alt Key Mask
</constant>
<constant name="KEY_MASK_META" value="134217728">
+ Meta Key Mask
</constant>
<constant name="KEY_MASK_CTRL" value="268435456">
+ CTRL Key Mask
</constant>
<constant name="KEY_MASK_CMD" value="268435456">
+ CMD Key Mask
</constant>
<constant name="KEY_MASK_KPAD" value="536870912">
+ Keypad Key Mask
</constant>
<constant name="KEY_MASK_GROUP_SWITCH" value="1073741824">
+ Group Switch Key Mask
</constant>
- <constant name="BUTTON_LEFT" value="1" enum="">
+ <constant name="BUTTON_LEFT" value="1">
Left Mouse Button
</constant>
- <constant name="BUTTON_RIGHT" value="2" enum="">
+ <constant name="BUTTON_RIGHT" value="2">
Right Mouse Button
</constant>
- <constant name="BUTTON_MIDDLE" value="3" enum="">
+ <constant name="BUTTON_MIDDLE" value="3">
Middle Mouse Button
</constant>
- <constant name="BUTTON_WHEEL_UP" value="4" enum="">
+ <constant name="BUTTON_WHEEL_UP" value="4">
Mouse wheel up
</constant>
- <constant name="BUTTON_WHEEL_DOWN" value="5" enum="">
+ <constant name="BUTTON_WHEEL_DOWN" value="5">
Mouse wheel down
</constant>
- <constant name="BUTTON_WHEEL_LEFT" value="6" enum="">
+ <constant name="BUTTON_WHEEL_LEFT" value="6">
Mouse wheel left button
</constant>
- <constant name="BUTTON_WHEEL_RIGHT" value="7" enum="">
+ <constant name="BUTTON_WHEEL_RIGHT" value="7">
Mouse wheel right button
</constant>
- <constant name="BUTTON_MASK_LEFT" value="1" enum="">
+ <constant name="BUTTON_MASK_LEFT" value="1">
+ Left Mouse Button Mask
</constant>
- <constant name="BUTTON_MASK_RIGHT" value="2" enum="">
+ <constant name="BUTTON_MASK_RIGHT" value="2">
+ Right Mouse Button Mask
</constant>
- <constant name="BUTTON_MASK_MIDDLE" value="4" enum="">
+ <constant name="BUTTON_MASK_MIDDLE" value="4">
+ Middle Mouse Button Mask
</constant>
- <constant name="JOY_BUTTON_0" value="0" enum="">
+ <constant name="JOY_BUTTON_0" value="0">
Joypad Button 0
</constant>
- <constant name="JOY_BUTTON_1" value="1" enum="">
+ <constant name="JOY_BUTTON_1" value="1">
Joypad Button 1
</constant>
- <constant name="JOY_BUTTON_2" value="2" enum="">
+ <constant name="JOY_BUTTON_2" value="2">
Joypad Button 2
</constant>
- <constant name="JOY_BUTTON_3" value="3" enum="">
+ <constant name="JOY_BUTTON_3" value="3">
Joypad Button 3
</constant>
- <constant name="JOY_BUTTON_4" value="4" enum="">
+ <constant name="JOY_BUTTON_4" value="4">
Joypad Button 4
</constant>
- <constant name="JOY_BUTTON_5" value="5" enum="">
+ <constant name="JOY_BUTTON_5" value="5">
Joypad Button 5
</constant>
- <constant name="JOY_BUTTON_6" value="6" enum="">
+ <constant name="JOY_BUTTON_6" value="6">
Joypad Button 6
</constant>
- <constant name="JOY_BUTTON_7" value="7" enum="">
+ <constant name="JOY_BUTTON_7" value="7">
Joypad Button 7
</constant>
- <constant name="JOY_BUTTON_8" value="8" enum="">
+ <constant name="JOY_BUTTON_8" value="8">
Joypad Button 8
</constant>
- <constant name="JOY_BUTTON_9" value="9" enum="">
+ <constant name="JOY_BUTTON_9" value="9">
Joypad Button 9
</constant>
- <constant name="JOY_BUTTON_10" value="10" enum="">
+ <constant name="JOY_BUTTON_10" value="10">
Joypad Button 10
</constant>
- <constant name="JOY_BUTTON_11" value="11" enum="">
+ <constant name="JOY_BUTTON_11" value="11">
Joypad Button 11
</constant>
- <constant name="JOY_BUTTON_12" value="12" enum="">
+ <constant name="JOY_BUTTON_12" value="12">
Joypad Button 12
</constant>
- <constant name="JOY_BUTTON_13" value="13" enum="">
+ <constant name="JOY_BUTTON_13" value="13">
Joypad Button 13
</constant>
- <constant name="JOY_BUTTON_14" value="14" enum="">
+ <constant name="JOY_BUTTON_14" value="14">
Joypad Button 14
</constant>
- <constant name="JOY_BUTTON_15" value="15" enum="">
+ <constant name="JOY_BUTTON_15" value="15">
Joypad Button 15
</constant>
- <constant name="JOY_BUTTON_MAX" value="16" enum="">
+ <constant name="JOY_BUTTON_MAX" value="16">
Joypad Button 16
</constant>
- <constant name="JOY_SONY_CIRCLE" value="1" enum="">
+ <constant name="JOY_SONY_CIRCLE" value="1">
DUALSHOCK circle button
</constant>
- <constant name="JOY_SONY_X" value="0" enum="">
+ <constant name="JOY_SONY_X" value="0">
DUALSHOCK X button
</constant>
- <constant name="JOY_SONY_SQUARE" value="2" enum="">
+ <constant name="JOY_SONY_SQUARE" value="2">
DUALSHOCK square button
</constant>
- <constant name="JOY_SONY_TRIANGLE" value="3" enum="">
+ <constant name="JOY_SONY_TRIANGLE" value="3">
DUALSHOCK triangle button
</constant>
- <constant name="JOY_XBOX_B" value="1" enum="">
+ <constant name="JOY_XBOX_B" value="1">
XBOX controller B button
</constant>
- <constant name="JOY_XBOX_A" value="0" enum="">
+ <constant name="JOY_XBOX_A" value="0">
XBOX controller A button
</constant>
- <constant name="JOY_XBOX_X" value="2" enum="">
+ <constant name="JOY_XBOX_X" value="2">
XBOX controller X button
</constant>
- <constant name="JOY_XBOX_Y" value="3" enum="">
+ <constant name="JOY_XBOX_Y" value="3">
XBOX controller Y button
</constant>
- <constant name="JOY_DS_A" value="1" enum="">
+ <constant name="JOY_DS_A" value="1">
+ DualShock controller A button
</constant>
- <constant name="JOY_DS_B" value="0" enum="">
+ <constant name="JOY_DS_B" value="0">
+ DualShock controller B button
</constant>
- <constant name="JOY_DS_X" value="3" enum="">
+ <constant name="JOY_DS_X" value="3">
+ DualShock controller X button
</constant>
- <constant name="JOY_DS_Y" value="2" enum="">
+ <constant name="JOY_DS_Y" value="2">
+ DualShock controller Y button
</constant>
- <constant name="JOY_SELECT" value="10" enum="">
+ <constant name="JOY_SELECT" value="10">
Joypad Button Select
</constant>
- <constant name="JOY_START" value="11" enum="">
+ <constant name="JOY_START" value="11">
Joypad Button Start
</constant>
- <constant name="JOY_DPAD_UP" value="12" enum="">
+ <constant name="JOY_DPAD_UP" value="12">
Joypad DPad Up
</constant>
- <constant name="JOY_DPAD_DOWN" value="13" enum="">
+ <constant name="JOY_DPAD_DOWN" value="13">
Joypad DPad Down
</constant>
- <constant name="JOY_DPAD_LEFT" value="14" enum="">
+ <constant name="JOY_DPAD_LEFT" value="14">
Joypad DPad Left
</constant>
- <constant name="JOY_DPAD_RIGHT" value="15" enum="">
+ <constant name="JOY_DPAD_RIGHT" value="15">
Joypad DPad Right
</constant>
- <constant name="JOY_L" value="4" enum="">
+ <constant name="JOY_L" value="4">
Joypad Left Shoulder Button
</constant>
- <constant name="JOY_L2" value="6" enum="">
+ <constant name="JOY_L2" value="6">
Joypad Left Trigger
</constant>
- <constant name="JOY_L3" value="8" enum="">
+ <constant name="JOY_L3" value="8">
Joypad Left Stick Click
</constant>
- <constant name="JOY_R" value="5" enum="">
+ <constant name="JOY_R" value="5">
Joypad Right Shoulder Button
</constant>
- <constant name="JOY_R2" value="7" enum="">
+ <constant name="JOY_R2" value="7">
Joypad Right Trigger
</constant>
- <constant name="JOY_R3" value="9" enum="">
+ <constant name="JOY_R3" value="9">
Joypad Right Stick Click
</constant>
- <constant name="JOY_AXIS_0" value="0" enum="">
+ <constant name="JOY_AXIS_0" value="0">
Joypad Left Stick Horizontal Axis
</constant>
- <constant name="JOY_AXIS_1" value="1" enum="">
+ <constant name="JOY_AXIS_1" value="1">
Joypad Left Stick Vertical Axis
</constant>
- <constant name="JOY_AXIS_2" value="2" enum="">
+ <constant name="JOY_AXIS_2" value="2">
Joypad Right Stick Horizontal Axis
</constant>
- <constant name="JOY_AXIS_3" value="3" enum="">
+ <constant name="JOY_AXIS_3" value="3">
Joypad Right Stick Vertical Axis
</constant>
- <constant name="JOY_AXIS_4" value="4" enum="">
+ <constant name="JOY_AXIS_4" value="4">
</constant>
- <constant name="JOY_AXIS_5" value="5" enum="">
+ <constant name="JOY_AXIS_5" value="5">
</constant>
- <constant name="JOY_AXIS_6" value="6" enum="">
+ <constant name="JOY_AXIS_6" value="6">
Joypad Left Trigger Analog Axis
</constant>
- <constant name="JOY_AXIS_7" value="7" enum="">
+ <constant name="JOY_AXIS_7" value="7">
Joypad Right Trigger Analog Axis
</constant>
- <constant name="JOY_AXIS_MAX" value="8" enum="">
+ <constant name="JOY_AXIS_MAX" value="8">
</constant>
- <constant name="JOY_ANALOG_LX" value="0" enum="">
+ <constant name="JOY_ANALOG_LX" value="0">
Joypad Left Stick Horizontal Axis
</constant>
- <constant name="JOY_ANALOG_LY" value="1" enum="">
+ <constant name="JOY_ANALOG_LY" value="1">
Joypad Left Stick Vertical Axis
</constant>
- <constant name="JOY_ANALOG_RX" value="2" enum="">
+ <constant name="JOY_ANALOG_RX" value="2">
Joypad Right Stick Horizontal Axis
</constant>
- <constant name="JOY_ANALOG_RY" value="3" enum="">
+ <constant name="JOY_ANALOG_RY" value="3">
Joypad Right Stick Vertical Axis
</constant>
- <constant name="JOY_ANALOG_L2" value="6" enum="">
+ <constant name="JOY_ANALOG_L2" value="6">
+ Joypad Left Analog Trigger
</constant>
- <constant name="JOY_ANALOG_R2" value="7" enum="">
+ <constant name="JOY_ANALOG_R2" value="7">
+ Joypad Right Analog Trigger
</constant>
<constant name="OK" value="0">
- Functions that return Error return OK when everything went ok. Most functions don't return error anyway and/or just print errors to stdout.
+ Functions that return Error return OK when no error occured. Most functions don't return errors and/or just print errors to STDOUT.
</constant>
<constant name="FAILED" value="1">
- Generic fail return error.
+ Generic error.
</constant>
<constant name="ERR_UNAVAILABLE" value="2">
+ Unavailable error
</constant>
<constant name="ERR_UNCONFIGURED" value="3">
+ Unconfigured error
</constant>
<constant name="ERR_UNAUTHORIZED" value="4">
+ Unauthorized error
</constant>
<constant name="ERR_PARAMETER_RANGE_ERROR" value="5">
+ Parameter range error
</constant>
<constant name="ERR_OUT_OF_MEMORY" value="6">
+ Out of memory (OOM) error
</constant>
<constant name="ERR_FILE_NOT_FOUND" value="7">
+ File: Not found error
</constant>
<constant name="ERR_FILE_BAD_DRIVE" value="8">
+ File: Bad drive error
</constant>
<constant name="ERR_FILE_BAD_PATH" value="9">
+ File: Bad path error
</constant>
<constant name="ERR_FILE_NO_PERMISSION" value="10">
+ File: No permission error
</constant>
<constant name="ERR_FILE_ALREADY_IN_USE" value="11">
+ File: Already in use error
</constant>
<constant name="ERR_FILE_CANT_OPEN" value="12">
+ File: Can't open error
</constant>
<constant name="ERR_FILE_CANT_WRITE" value="13">
+ File: Can't write error
</constant>
<constant name="ERR_FILE_CANT_READ" value="14">
+ File: Can't read error
</constant>
<constant name="ERR_FILE_UNRECOGNIZED" value="15">
+ File: Unrecognized error
</constant>
<constant name="ERR_FILE_CORRUPT" value="16">
+ File: Corrupt error
</constant>
<constant name="ERR_FILE_MISSING_DEPENDENCIES" value="17">
+ File: Missing dependencies error
</constant>
<constant name="ERR_FILE_EOF" value="18">
+ File: End of file (EOF) error
</constant>
<constant name="ERR_CANT_OPEN" value="19">
+ Can't open error
</constant>
<constant name="ERR_CANT_CREATE" value="20">
+ Can't create error
</constant>
<constant name="ERR_PARSE_ERROR" value="43">
+ Parse error
</constant>
<constant name="ERR_QUERY_FAILED" value="21">
+ Query failed error
</constant>
<constant name="ERR_ALREADY_IN_USE" value="22">
+ Already in use error
</constant>
<constant name="ERR_LOCKED" value="23">
+ Locked error
</constant>
<constant name="ERR_TIMEOUT" value="24">
+ Timeout error
</constant>
<constant name="ERR_CANT_ACQUIRE_RESOURCE" value="28">
+ Can't acquire resource error
</constant>
<constant name="ERR_INVALID_DATA" value="30">
+ Invalid data error
</constant>
<constant name="ERR_INVALID_PARAMETER" value="31">
+ Invalid parameter error
</constant>
<constant name="ERR_ALREADY_EXISTS" value="32">
+ Already exists error
</constant>
<constant name="ERR_DOES_NOT_EXIST" value="33">
+ Does not exist error
</constant>
<constant name="ERR_DATABASE_CANT_READ" value="34">
+ Database: Read error
</constant>
<constant name="ERR_DATABASE_CANT_WRITE" value="35">
+ Database: Write error
</constant>
<constant name="ERR_COMPILATION_FAILED" value="36">
+ Compilation failed error
</constant>
<constant name="ERR_METHOD_NOT_FOUND" value="37">
+ Method not found error
</constant>
<constant name="ERR_LINK_FAILED" value="38">
+ Linking failed error
</constant>
<constant name="ERR_SCRIPT_FAILED" value="39">
+ Script failed error
</constant>
<constant name="ERR_CYCLIC_LINK" value="40">
+ Cycling link (import cycle) error
</constant>
<constant name="ERR_BUSY" value="44">
+ Busy error
</constant>
<constant name="ERR_HELP" value="46">
+ Help error
</constant>
<constant name="ERR_BUG" value="47">
+ Bug error
</constant>
<constant name="ERR_WTF" value="49">
+ WTF error (something probably went really wrong)
</constant>
<constant name="PROPERTY_HINT_NONE" value="0">
No hint for edited property.
@@ -1092,8 +1231,10 @@
<constant name="PROPERTY_HINT_COLOR_NO_ALPHA" value="19">
</constant>
<constant name="PROPERTY_HINT_IMAGE_COMPRESS_LOSSY" value="20">
+ Hints that the image is compressed using lossy compression.
</constant>
<constant name="PROPERTY_HINT_IMAGE_COMPRESS_LOSSLESS" value="21">
+ Hints that the image is compressed using lossless compression.
</constant>
<constant name="PROPERTY_USAGE_STORAGE" value="1">
Property will be used as storage (default).
@@ -1133,20 +1274,26 @@
<constant name="PROPERTY_USAGE_NOEDITOR" value="5">
</constant>
<constant name="METHOD_FLAG_NORMAL" value="1">
+ Flag for normal method
</constant>
<constant name="METHOD_FLAG_EDITOR" value="2">
+ Flag for editor method
</constant>
<constant name="METHOD_FLAG_NOSCRIPT" value="4">
</constant>
<constant name="METHOD_FLAG_CONST" value="8">
+ Flag for constant method
</constant>
<constant name="METHOD_FLAG_REVERSE" value="16">
</constant>
<constant name="METHOD_FLAG_VIRTUAL" value="32">
+ Flag for virtual method
</constant>
<constant name="METHOD_FLAG_FROM_SCRIPT" value="64">
+ Flag for method from script
</constant>
<constant name="METHOD_FLAGS_DEFAULT" value="1">
+ Default method flags
</constant>
<constant name="TYPE_NIL" value="0">
Variable is of type nil (only applied for null).
@@ -1230,6 +1377,7 @@
Variable is of type [PoolColorArray].
</constant>
<constant name="TYPE_MAX" value="27">
+ Marker for end of type constants.
</constant>
</constants>
</class>
diff --git a/doc/classes/ARVRAnchor.xml b/doc/classes/ARVRAnchor.xml
index 6e11034073..ecd882cdb0 100644
--- a/doc/classes/ARVRAnchor.xml
+++ b/doc/classes/ARVRAnchor.xml
@@ -60,6 +60,7 @@
</methods>
<members>
<member name="anchor_id" type="int" setter="set_anchor_id" getter="get_anchor_id">
+ The anchor's id. You can set this before the anchor itself exists. The first anchor gets an id of [code]1[/code], the second an id of [code]2[/code], etc. When anchors get removed, the engine can then assign the corresponding id to new anchors. The most common situation where anchors 'disappear' is when the AR server identifies that two anchors represent different parts of the same plane and merges them.
</member>
</members>
<constants>
diff --git a/doc/classes/ARVRController.xml b/doc/classes/ARVRController.xml
index 557f915c1d..af1deda2f0 100644
--- a/doc/classes/ARVRController.xml
+++ b/doc/classes/ARVRController.xml
@@ -31,6 +31,7 @@
<return type="int" enum="ARVRPositionalTracker.TrackerHand">
</return>
<description>
+ Returns the hand holding this controller, if known. See TRACKER_* constants in [ARVRPositionalTracker].
</description>
</method>
<method name="get_is_active" qualifiers="const">
@@ -77,6 +78,7 @@
</methods>
<members>
<member name="controller_id" type="int" setter="set_controller_id" getter="get_controller_id">
+ The controller's id. The first controller that the [ARVRServer] detects will have id 1, the second id 2, the third id 3, etc. When a controller is turned off, it's slot is freed. This ensures controllers will keep the same id even when controllers with lower ids are turned off.
</member>
</members>
<signals>
diff --git a/doc/classes/ARVRInterface.xml b/doc/classes/ARVRInterface.xml
index 1c2e761b57..9aed6c96ef 100644
--- a/doc/classes/ARVRInterface.xml
+++ b/doc/classes/ARVRInterface.xml
@@ -94,7 +94,7 @@
<argument index="0" name="initialized" type="bool">
</argument>
<description>
- Initialise/uninitilise this interface (same effect as calling intialize/uninitialize).
+ Initialize/uninitialize this interface (same effect as calling initialize/uninitialize).
</description>
</method>
<method name="set_is_primary">
diff --git a/doc/classes/ARVROrigin.xml b/doc/classes/ARVROrigin.xml
index 28864bb3ae..226a69dea4 100644
--- a/doc/classes/ARVROrigin.xml
+++ b/doc/classes/ARVROrigin.xml
@@ -35,6 +35,8 @@
</methods>
<members>
<member name="world_scale" type="float" setter="set_world_scale" getter="get_world_scale">
+ Allows you to adjust the scale to your game's units. Most AR/VR platforms assume a scale of 1 game world unit = 1 meter in the real world.
+ Note that this method is a passthrough to the [ARVRServer] itself.
</member>
</members>
<constants>
diff --git a/doc/classes/ARVRPositionalTracker.xml b/doc/classes/ARVRPositionalTracker.xml
index 1379677344..686ac1db77 100644
--- a/doc/classes/ARVRPositionalTracker.xml
+++ b/doc/classes/ARVRPositionalTracker.xml
@@ -17,6 +17,7 @@
<return type="int" enum="ARVRPositionalTracker.TrackerHand">
</return>
<description>
+ Returns the hand holding this tracker, if known. See TRACKER_* constants.
</description>
</method>
<method name="get_joy_id" qualifiers="const">
@@ -80,10 +81,13 @@
</methods>
<constants>
<constant name="TRACKER_HAND_UNKNOWN" value="0">
+ The hand this tracker is held in is unknown or not applicable.
</constant>
<constant name="TRACKER_LEFT_HAND" value="1">
+ This tracker is the left hand controller.
</constant>
<constant name="TRACKER_RIGHT_HAND" value="2">
+ This tracker is the right hand controller.
</constant>
</constants>
</class>
diff --git a/doc/classes/ARVRScriptInterface.xml b/doc/classes/ARVRScriptInterface.xml
deleted file mode 100644
index 182147a015..0000000000
--- a/doc/classes/ARVRScriptInterface.xml
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<class name="ARVRScriptInterface" inherits="ARVRInterface" category="Core" version="3.0.alpha.custom_build">
- <brief_description>
- Base class for GDNative based ARVR interfaces.
- </brief_description>
- <description>
- This class is used as a base class/interface class for implementing GDNative based ARVR interfaces and as a result exposes more of the internals of the ARVR server.
- </description>
- <tutorials>
- </tutorials>
- <demos>
- </demos>
- <methods>
- <method name="_get_projection_for_eye" qualifiers="virtual">
- <return type="void">
- </return>
- <description>
- Should return the projection 4x4 matrix for the requested eye.
- </description>
- </method>
- <method name="commit_for_eye" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="eye" type="int">
- </argument>
- <argument index="1" name="render_target" type="RID">
- </argument>
- <description>
- Outputs a finished render buffer to the AR/VR device for the given eye.
- </description>
- </method>
- <method name="get_anchor_detection_is_enabled" qualifiers="virtual">
- <return type="bool">
- </return>
- <description>
- Returns true if achor detection is enabled (AR only).
- </description>
- </method>
- <method name="get_capabilities" qualifiers="virtual">
- <return type="int">
- </return>
- <description>
- Returns a combination of flags providing information about the capabilities of this interface.
- </description>
- </method>
- <method name="get_recommended_render_targetsize" qualifiers="virtual">
- <return type="Vector2">
- </return>
- <description>
- Returns the size at which we should render our scene to get optimal quality on the output device.
- </description>
- </method>
- <method name="get_tracking_status" qualifiers="virtual">
- <return type="int">
- </return>
- <description>
- If supported, returns the status of our tracking. This will allow you to provide feedback to the user whether there are issues with positional tracking.
- </description>
- </method>
- <method name="get_transform_for_eye" qualifiers="virtual">
- <return type="Transform">
- </return>
- <argument index="0" name="eye" type="int">
- </argument>
- <argument index="1" name="cam_transform" type="Transform">
- </argument>
- <description>
- Get the location and orientation transform used when rendering a specific eye.
- </description>
- </method>
- <method name="initialize" qualifiers="virtual">
- <return type="bool">
- </return>
- <description>
- Initialize this interface.
- </description>
- </method>
- <method name="is_initialized" qualifiers="virtual">
- <return type="bool">
- </return>
- <description>
- Returns true if this interface has been initialized and is active.
- </description>
- </method>
- <method name="is_stereo" qualifiers="virtual">
- <return type="bool">
- </return>
- <description>
- Returns true if we require stereoscopic rendering for this interface.
- </description>
- </method>
- <method name="process" qualifiers="virtual">
- <return type="void">
- </return>
- <description>
- Gets called before rendering each frame so tracking data gets updated in time.
- </description>
- </method>
- <method name="set_anchor_detection_is_enabled" qualifiers="virtual">
- <return type="void">
- </return>
- <argument index="0" name="enabled" type="bool">
- </argument>
- <description>
- Enables anchor detection, this is used on AR interfaces and enables the extra logic that will detect planes, features, objects, etc. and adds/modifies anchor points.
- </description>
- </method>
- <method name="uninitialize" qualifiers="virtual">
- <return type="void">
- </return>
- <description>
- Turn this interface off.
- </description>
- </method>
- </methods>
- <constants>
- </constants>
-</class>
diff --git a/doc/classes/ARVRServer.xml b/doc/classes/ARVRServer.xml
index 6a7262bd14..bb7ac2c052 100644
--- a/doc/classes/ARVRServer.xml
+++ b/doc/classes/ARVRServer.xml
@@ -14,7 +14,7 @@
<method name="add_interface">
<return type="void">
</return>
- <argument index="0" name="arg0" type="ARVRInterface">
+ <argument index="0" name="interface" type="ARVRInterface">
</argument>
<description>
Mostly exposed for GDNative based interfaces, this is called to register an available interface with the AR/VR server.
@@ -94,7 +94,7 @@
<method name="remove_interface">
<return type="void">
</return>
- <argument index="0" name="arg0" type="ARVRInterface">
+ <argument index="0" name="interface" type="ARVRInterface">
</argument>
<description>
Removes a registered interface, again exposed mostly for GDNative based interfaces.
@@ -103,7 +103,7 @@
<method name="set_primary_interface">
<return type="void">
</return>
- <argument index="0" name="arg0" type="ARVRInterface">
+ <argument index="0" name="interface" type="ARVRInterface">
</argument>
<description>
Changes the primary interface to the specified interface. Again mostly exposed for GDNative interfaces.
@@ -121,6 +121,7 @@
</methods>
<members>
<member name="world_scale" type="float" setter="set_world_scale" getter="get_world_scale">
+ Allows you to adjust the scale to your game's units. Most AR/VR platforms assume a scale of 1 game world unit = 1 meter in the real world.
</member>
</members>
<signals>
@@ -171,14 +172,14 @@
<constant name="TRACKER_ANCHOR" value="4">
Our tracker tracks the location and size of an AR anchor.
</constant>
- <constant name="TRACKER_UNKNOWN" value="128">
- Used internally if we haven't set the tracker type yet.
- </constant>
<constant name="TRACKER_ANY_KNOWN" value="127">
Used internally to filter trackers of any known type.
</constant>
+ <constant name="TRACKER_UNKNOWN" value="128">
+ Used internally if we haven't set the tracker type yet.
+ </constant>
<constant name="TRACKER_ANY" value="255">
- Used interally to select all trackers.
+ Used internally to select all trackers.
</constant>
</constants>
</class>
diff --git a/doc/classes/AStar.xml b/doc/classes/AStar.xml
index 9b15afbbd4..baeeddcd1a 100644
--- a/doc/classes/AStar.xml
+++ b/doc/classes/AStar.xml
@@ -50,6 +50,7 @@
as.add_point(1, Vector3(1,0,0), 4) # Adds the point (1,0,0) with weight_scale=4 and id=1
[/codeblock]
+ If there already exists a point for the given id, its position and weight scale are updated to the given values.
</description>
</method>
<method name="are_points_connected" qualifiers="const">
@@ -107,7 +108,7 @@
<return type="int">
</return>
<description>
- Returns an id with no point associated to it.
+ Returns the next available point id with no point associated to it.
</description>
</method>
<method name="get_closest_point" qualifiers="const">
@@ -220,6 +221,28 @@
Removes the point associated with the given id from the points pool.
</description>
</method>
+ <method name="set_point_position">
+ <return type="void">
+ </return>
+ <argument index="0" name="id" type="int">
+ </argument>
+ <argument index="1" name="position" type="Vector3">
+ </argument>
+ <description>
+ Sets the position for the point with the given id.
+ </description>
+ </method>
+ <method name="set_point_weight_scale">
+ <return type="void">
+ </return>
+ <argument index="0" name="id" type="int">
+ </argument>
+ <argument index="1" name="weight_scale" type="float">
+ </argument>
+ <description>
+ Sets the [code]weight_scale[/code] for the point with the given id.
+ </description>
+ </method>
</methods>
<constants>
</constants>
diff --git a/doc/classes/AnimationPlayer.xml b/doc/classes/AnimationPlayer.xml
index 74a7f6c8a4..70b880eb43 100644
--- a/doc/classes/AnimationPlayer.xml
+++ b/doc/classes/AnimationPlayer.xml
@@ -380,11 +380,11 @@
</signal>
</signals>
<constants>
- <constant name="ANIMATION_PROCESS_FIXED" value="0">
- Process animation on fixed process. This is specially useful when animating kinematic bodies.
+ <constant name="ANIMATION_PROCESS_PHYSICS" value="0">
+ Process animation during the physics process. This is specially useful when animating physics bodies.
</constant>
<constant name="ANIMATION_PROCESS_IDLE" value="1">
- Process animation on idle process.
+ Process animation during the idle process.
</constant>
</constants>
</class>
diff --git a/doc/classes/AnimationTreePlayer.xml b/doc/classes/AnimationTreePlayer.xml
index f088d21e41..b92e59b902 100644
--- a/doc/classes/AnimationTreePlayer.xml
+++ b/doc/classes/AnimationTreePlayer.xml
@@ -659,7 +659,7 @@
<constant name="NODE_TRANSITION" value="9">
Transition node.
</constant>
- <constant name="ANIMATION_PROCESS_FIXED" value="0">
+ <constant name="ANIMATION_PROCESS_PHYSICS" value="0">
</constant>
<constant name="ANIMATION_PROCESS_IDLE" value="1">
</constant>
diff --git a/doc/classes/Area.xml b/doc/classes/Area.xml
index 8797575038..febced0a8e 100644
--- a/doc/classes/Area.xml
+++ b/doc/classes/Area.xml
@@ -88,14 +88,14 @@
<return type="Array">
</return>
<description>
- Returns a list of intersecting [Area]\ s.
+ Returns a list of intersecting [code]Area[/code]s.
</description>
</method>
<method name="get_overlapping_bodies" qualifiers="const">
<return type="Array">
</return>
<description>
- Returns a list of intersecting [PhysicsBody]\ s.
+ Returns a list of intersecting [PhysicsBody]s.
</description>
</method>
<method name="get_priority" qualifiers="const">
diff --git a/doc/classes/Area2D.xml b/doc/classes/Area2D.xml
index 0cbc079962..6bc6e36dfc 100644
--- a/doc/classes/Area2D.xml
+++ b/doc/classes/Area2D.xml
@@ -88,14 +88,14 @@
<return type="Array">
</return>
<description>
- Returns a list of intersecting [Area2D]\ s.
+ Returns a list of intersecting [code]Area2D[/code]s.
</description>
</method>
<method name="get_overlapping_bodies" qualifiers="const">
<return type="Array">
</return>
<description>
- Returns a list of intersecting [PhysicsBody2D]\ s.
+ Returns a list of intersecting [PhysicsBody2D]s.
</description>
</method>
<method name="get_priority" qualifiers="const">
diff --git a/doc/classes/Array.xml b/doc/classes/Array.xml
index 2cfbaffe04..7c1d72333b 100644
--- a/doc/classes/Array.xml
+++ b/doc/classes/Array.xml
@@ -178,8 +178,6 @@
</description>
</method>
<method name="invert">
- <return type="Array">
- </return>
<description>
Reverse the order of the elements in the array (so first element will now be the last) and return reference to the array.
</description>
@@ -241,15 +239,11 @@
</description>
</method>
<method name="sort">
- <return type="Array">
- </return>
<description>
Sort the array using natural order and return reference to the array.
</description>
</method>
<method name="sort_custom">
- <return type="Array">
- </return>
<argument index="0" name="obj" type="Object">
</argument>
<argument index="1" name="func" type="String">
diff --git a/doc/classes/ArrayMesh.xml b/doc/classes/ArrayMesh.xml
index 36f8494c44..c9996c1a0f 100644
--- a/doc/classes/ArrayMesh.xml
+++ b/doc/classes/ArrayMesh.xml
@@ -75,7 +75,7 @@
<return type="int">
</return>
<description>
- Return the amount of surfaces that the [ArrayMesh] holds.
+ Return the amount of surfaces that the [code]ArrayMesh[/code] holds.
</description>
</method>
<method name="regen_normalmaps">
diff --git a/doc/classes/AudioEffectBandLimitFilter.xml b/doc/classes/AudioEffectBandLimitFilter.xml
index 96f95fbffd..d4b251fc8e 100644
--- a/doc/classes/AudioEffectBandLimitFilter.xml
+++ b/doc/classes/AudioEffectBandLimitFilter.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="AudioEffectBandLimitFilter" inherits="AudioEffectFilter" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Adds a band limit filter to the Audio Bus.
</brief_description>
<description>
+ Limits the frequencies in a range around the [member cutoff_hz] and allows frequencies outside of this range to pass.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/AudioEffectBandPassFilter.xml b/doc/classes/AudioEffectBandPassFilter.xml
index 4437961cc6..b5c6ae3c20 100644
--- a/doc/classes/AudioEffectBandPassFilter.xml
+++ b/doc/classes/AudioEffectBandPassFilter.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="AudioEffectBandPassFilter" inherits="AudioEffectFilter" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Adds a band pass filter to the Audio Bus.
</brief_description>
<description>
+ Attenuates the frequencies inside of a range around the [member cutoff_hz] and cuts frequencies outside of this band.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/AudioEffectDistortion.xml b/doc/classes/AudioEffectDistortion.xml
index 1a6aa1d2b6..8b970e675e 100644
--- a/doc/classes/AudioEffectDistortion.xml
+++ b/doc/classes/AudioEffectDistortion.xml
@@ -5,7 +5,7 @@
Modify the sound to make it dirty.
</brief_description>
<description>
- Modify the sound and make it dirty. Differents types available : clip, tan, lofi (bit crushing), overdrive, or waveshape.
+ Modify the sound and make it dirty. Different types are available : clip, tan, lofi (bit crushing), overdrive, or waveshape.
By distorting the waveform the frequency content change, which will often make the sound "crunchy" or "abrasive". For games, it can simulate sound coming from some saturated device or speaker very efficiently.
</description>
<tutorials>
diff --git a/doc/classes/AudioEffectFilter.xml b/doc/classes/AudioEffectFilter.xml
index 17aa01d60a..82d572b81b 100644
--- a/doc/classes/AudioEffectFilter.xml
+++ b/doc/classes/AudioEffectFilter.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="AudioEffectFilter" inherits="AudioEffect" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Adds a filter to the Audio Bus.
</brief_description>
<description>
+ Allows frequencies other than the [member cutoff_hz] to pass.
</description>
<tutorials>
</tutorials>
@@ -68,12 +70,15 @@
</methods>
<members>
<member name="cutoff_hz" type="float" setter="set_cutoff" getter="get_cutoff">
+ Threshold frequency for the filter.
</member>
- <member name="dB" type="int" setter="set_db" getter="get_db" enum="AudioEffectFilter.FilterDB">
+ <member name="db" type="int" setter="set_db" getter="get_db" enum="AudioEffectFilter.FilterDB">
</member>
<member name="gain" type="float" setter="set_gain" getter="get_gain">
+ Gain amount of the frequencies after the filter.
</member>
<member name="resonance" type="float" setter="set_resonance" getter="get_resonance">
+ Amount of boost in the overtones near the cutoff frequency.
</member>
</members>
<constants>
diff --git a/doc/classes/AudioEffectHighPassFilter.xml b/doc/classes/AudioEffectHighPassFilter.xml
index 641f7cfee2..c5e24af510 100644
--- a/doc/classes/AudioEffectHighPassFilter.xml
+++ b/doc/classes/AudioEffectHighPassFilter.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="AudioEffectHighPassFilter" inherits="AudioEffectFilter" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Adds a high pass filter to the Audio Bus.
</brief_description>
<description>
+ Cuts frequencies lower than the [member cutoff_hz] and allows higher frequencies to pass.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/AudioEffectLowPassFilter.xml b/doc/classes/AudioEffectLowPassFilter.xml
index fcaf32d761..f102dda03e 100644
--- a/doc/classes/AudioEffectLowPassFilter.xml
+++ b/doc/classes/AudioEffectLowPassFilter.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="AudioEffectLowPassFilter" inherits="AudioEffectFilter" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Adds a low pass filter to the Audio Bus.
</brief_description>
<description>
+ Cuts frequencies higher than the [member cutoff_hz] and allows lower frequencies to pass.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/AudioEffectNotchFilter.xml b/doc/classes/AudioEffectNotchFilter.xml
index f90577fa5a..8ec9a4bc7c 100644
--- a/doc/classes/AudioEffectNotchFilter.xml
+++ b/doc/classes/AudioEffectNotchFilter.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="AudioEffectNotchFilter" inherits="AudioEffectFilter" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Adds a notch filter to the Audio Bus.
</brief_description>
<description>
+ Attenuates frequencies in a narrow band around the [member cutoff_hz] and cuts frequencies outside of this range.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/AudioEffectReverb.xml b/doc/classes/AudioEffectReverb.xml
index 4cda24530b..f399f9f07a 100644
--- a/doc/classes/AudioEffectReverb.xml
+++ b/doc/classes/AudioEffectReverb.xml
@@ -136,7 +136,7 @@
High-pass filter passes signals with a frequency higher than a certain cutoff frequency and attenuates signals with frequencies lower than the cutoff frequency. Value can range from 0 to 1. Default value: [code]0[/code].
</member>
<member name="predelay_feedback" type="float" setter="set_predelay_msec" getter="get_predelay_msec">
- Output percent of predelay. Value can range from 0 to 1. Default value: [code]1[/code].
+ Output percent of predelay. Value can range from 0 to 1. Default value: [code]1[/code].
</member>
<member name="predelay_msec" type="float" setter="set_predelay_msec" getter="get_predelay_msec">
Time between the original signal and the early reflections of the reverb signal. Default value: [code]150ms[/code].
diff --git a/doc/classes/AudioServer.xml b/doc/classes/AudioServer.xml
index 0a59da5355..f8320c23af 100644
--- a/doc/classes/AudioServer.xml
+++ b/doc/classes/AudioServer.xml
@@ -298,7 +298,7 @@
<argument index="1" name="enable" type="bool">
</argument>
<description>
- If [code]true[/code] the bus at index [code]bus_idx[/code] is in solo mode.
+ If [code]true[/code] the bus at index [code]bus_idx[/code] is in solo mode.
</description>
</method>
<method name="set_bus_volume_db">
diff --git a/doc/classes/AudioStreamPlayer3D.xml b/doc/classes/AudioStreamPlayer3D.xml
index 2085b35e2e..84f6792ef0 100644
--- a/doc/classes/AudioStreamPlayer3D.xml
+++ b/doc/classes/AudioStreamPlayer3D.xml
@@ -310,7 +310,7 @@
Sets the absolute maximum of the soundlevel, in dB.
</member>
<member name="max_distance" type="float" setter="set_max_distance" getter="get_max_distance">
- Sets the distance from wich the 'out_of_range_mode' takes effect. Has no effect if set to 0.
+ Sets the distance from which the 'out_of_range_mode' takes effect. Has no effect if set to 0.
</member>
<member name="out_of_range_mode" type="int" setter="set_out_of_range_mode" getter="get_out_of_range_mode" enum="AudioStreamPlayer3D.OutOfRangeMode">
Decides if audio should pause when source is outside of 'max_distance' range.
@@ -355,10 +355,10 @@
Disables doppler tracking.
</constant>
<constant name="DOPPLER_TRACKING_IDLE_STEP" value="1">
- Executes doppler trackin in idle step.
+ Executes doppler tracking in idle step.
</constant>
- <constant name="DOPPLER_TRACKING_FIXED_STEP" value="2">
- Executes doppler tracking in fixed step.
+ <constant name="DOPPLER_TRACKING_PHYSICS_STEP" value="2">
+ Executes doppler tracking in physics step.
</constant>
</constants>
</class>
diff --git a/doc/classes/BaseButton.xml b/doc/classes/BaseButton.xml
index 2ad46579b2..1b6583a834 100644
--- a/doc/classes/BaseButton.xml
+++ b/doc/classes/BaseButton.xml
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="BaseButton" inherits="Control" category="Core" version="3.0.alpha.custom_build">
<brief_description>
- Provides a base class for different kinds of buttons.
+ Base class for different kinds of buttons.
</brief_description>
<description>
- BaseButton is the abstract base class for buttons, so it shouldn't be used directly (It doesn't display anything). Other types of buttons inherit from it.
+ BaseButton is the abstract base class for buttons, so it shouldn't be used directly (it doesn't display anything). Other types of buttons inherit from it.
</description>
<tutorials>
</tutorials>
@@ -152,18 +152,25 @@
</methods>
<members>
<member name="action_mode" type="int" setter="set_action_mode" getter="get_action_mode" enum="BaseButton.ActionMode">
+ Determines when the button is considered clicked, one of the ACTION_MODE_* constants.
</member>
<member name="disabled" type="bool" setter="set_disabled" getter="is_disabled">
+ If [code]true[/code] the button is in disabled state and can't be clicked or toggled.
</member>
<member name="enabled_focus_mode" type="int" setter="set_enabled_focus_mode" getter="get_enabled_focus_mode" enum="Control.FocusMode">
+ Focus access mode to use when switching between enabled/disabled (see [method Control.set_focus_mode] and [member disabled]).
</member>
<member name="group" type="ButtonGroup" setter="set_button_group" getter="get_button_group">
+ [ButtonGroup] associated to the button.
</member>
<member name="pressed" type="bool" setter="set_pressed" getter="is_pressed">
+ If [code]true[/code] the button's state is pressed. Means the button is pressed down or toggled (if toggle_mode is active).
</member>
<member name="shortcut" type="ShortCut" setter="set_shortcut" getter="get_shortcut">
+ [Shortcut] associated to the button.
</member>
<member name="toggle_mode" type="bool" setter="set_toggle_mode" getter="is_toggle_mode">
+ If [code]true[/code] the button is in toggle mode. Makes the button flip state between pressed and unpressed each time its area is clicked.
</member>
</members>
<signals>
diff --git a/doc/classes/BitmapFont.xml b/doc/classes/BitmapFont.xml
index e983c59782..43ce40562f 100644
--- a/doc/classes/BitmapFont.xml
+++ b/doc/classes/BitmapFont.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="BitmapFont" inherits="Font" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Renders text using [code]*.fnt[/code] fonts.
</brief_description>
<description>
+ Renders text using [code]*.fnt[/code] fonts containing texture atlases. Supports distance fields. For using vector font files like TTF directly, see [DynamicFont].
</description>
<tutorials>
</tutorials>
@@ -23,7 +25,7 @@
<argument index="4" name="advance" type="float" default="-1">
</argument>
<description>
- Add a character to the font, where [i]character[/i] is the unicode value, [i]texture[/i] is the texture index, [i]rect[/i] is the region in the texture (in pixels!), [i]align[/i] is the (optional) alignment for the character and [i]advance[/i] is the (optional) advance.
+ Adds a character to the font, where [code]character[/code] is the unicode value, [code]texture[/code] is the texture index, [code]rect[/code] is the region in the texture (in pixels!), [code]align[/code] is the (optional) alignment for the character and [code]advance[/code] is the (optional) advance.
</description>
</method>
<method name="add_kerning_pair">
@@ -36,7 +38,7 @@
<argument index="2" name="kerning" type="int">
</argument>
<description>
- Add a kerning pair to the [BitmapFont] as a difference. Kerning pairs are special cases where a typeface advance is determined by the next character.
+ Adds a kerning pair to the [code]BitmapFont[/code] as a difference. Kerning pairs are special cases where a typeface advance is determined by the next character.
</description>
</method>
<method name="add_texture">
@@ -45,14 +47,14 @@
<argument index="0" name="texture" type="Texture">
</argument>
<description>
- Add a texture to the [BitmapFont].
+ Adds a texture to the [code]BitmapFont[/code].
</description>
</method>
<method name="clear">
<return type="void">
</return>
<description>
- Clear all the font data.
+ Clears all the font data and settings.
</description>
</method>
<method name="create_from_fnt">
@@ -61,6 +63,7 @@
<argument index="0" name="path" type="String">
</argument>
<description>
+ Creates a BitmapFont from the [code]*.fnt[/code] file at [code]path[/code].
</description>
</method>
<method name="get_char_size" qualifiers="const">
@@ -71,13 +74,14 @@
<argument index="1" name="next" type="int" default="0">
</argument>
<description>
- Return the size of a character, optionally taking kerning into account if the next character is provided.
+ Returns the size of a character, optionally taking kerning into account if the next character is provided.
</description>
</method>
<method name="get_fallback" qualifiers="const">
<return type="BitmapFont">
</return>
<description>
+ Returns the fallback BitmapFont.
</description>
</method>
<method name="get_kerning_pair" qualifiers="const">
@@ -88,7 +92,7 @@
<argument index="1" name="char_b" type="int">
</argument>
<description>
- Return a kerning pair as a difference.
+ Returns a kerning pair as a difference.
</description>
</method>
<method name="get_texture" qualifiers="const">
@@ -97,12 +101,14 @@
<argument index="0" name="idx" type="int">
</argument>
<description>
+ Returns the font atlas texture at index [code]idx[/code].
</description>
</method>
<method name="get_texture_count" qualifiers="const">
<return type="int">
</return>
<description>
+ Returns the number of textures in the BitmapFont atlas.
</description>
</method>
<method name="set_ascent">
@@ -111,7 +117,7 @@
<argument index="0" name="px" type="float">
</argument>
<description>
- Set the font ascent (number of pixels above the baseline).
+ Sets the font ascent (number of pixels above the baseline).
</description>
</method>
<method name="set_distance_field_hint">
@@ -120,6 +126,7 @@
<argument index="0" name="enable" type="bool">
</argument>
<description>
+ If [code]true[/code] distance field hint is enabled.
</description>
</method>
<method name="set_fallback">
@@ -128,6 +135,7 @@
<argument index="0" name="fallback" type="BitmapFont">
</argument>
<description>
+ Sets the fallback BitmapFont.
</description>
</method>
<method name="set_height">
@@ -136,24 +144,31 @@
<argument index="0" name="px" type="float">
</argument>
<description>
- Set the total font height (ascent plus descent) in pixels.
+ Sets the total font height (ascent plus descent) in pixels.
</description>
</method>
</methods>
<members>
<member name="ascent" type="float" setter="set_ascent" getter="get_ascent">
+ Ascent (number of pixels above the baseline).
</member>
<member name="chars" type="PoolIntArray" setter="_set_chars" getter="_get_chars">
+ The characters in the BitmapFont.
</member>
<member name="distance_field" type="bool" setter="set_distance_field_hint" getter="is_distance_field_hint">
+ If [code]true[/code] distance field hint is enabled.
</member>
<member name="fallback" type="BitmapFont" setter="set_fallback" getter="get_fallback">
+ The fallback font.
</member>
<member name="height" type="float" setter="set_height" getter="get_height">
+ Total font height (ascent plus descent) in pixels.
</member>
<member name="kernings" type="PoolIntArray" setter="_set_kernings" getter="_get_kernings">
+ The font's kernings as [PoolIntArray].
</member>
<member name="textures" type="Array" setter="_set_textures" getter="_get_textures">
+ The font's [Texture]s.
</member>
</members>
<constants>
diff --git a/doc/classes/Camera.xml b/doc/classes/Camera.xml
index 068b91204c..aeebcf9c87 100644
--- a/doc/classes/Camera.xml
+++ b/doc/classes/Camera.xml
@@ -267,7 +267,7 @@
<constant name="DOPPLER_TRACKING_IDLE_STEP" value="1">
Simulate Doppler effect by tracking positions of objects that are changed in [code]_process[/code]. Changes in the relative velocity of this Camera compared to those objects affect how Audio is perceived (changing the Audio's [code]pitch shift[/code]).
</constant>
- <constant name="DOPPLER_TRACKING_FIXED_STEP" value="2">
+ <constant name="DOPPLER_TRACKING_PHYSICS_STEP" value="2">
Simulate Doppler effect by tracking positions of objects that are changed in [code]_physics_process[/code]. Changes in the relative velocity of this Camera compared to those objects affect how Audio is perceived (changing the Audio's [code]pitch shift[/code]).
</constant>
</constants>
diff --git a/doc/classes/Camera2D.xml b/doc/classes/Camera2D.xml
index c627112af5..352e270e77 100644
--- a/doc/classes/Camera2D.xml
+++ b/doc/classes/Camera2D.xml
@@ -327,12 +327,13 @@
The Camera2D's anchor point. See [code]ANCHOR_MODE_*[/code] constants.
</member>
<member name="current" type="bool" setter="_set_current" getter="is_current">
- If [code]true[/code] this camera is the active camera for the current scene. Only one camera can be current, so setting a different camera [code]current[/code] will disable this one.
+ If [code]true[/code] the camera is the active camera for the current scene. Only one camera can be current, so setting a different camera [code]current[/code] will disable this one.
</member>
<member name="drag_margin_bottom" type="float" setter="set_drag_margin" getter="get_drag_margin">
Bottom margin needed to drag the camera. A value of [code]1[/code] makes the camera move only when reaching the edge of the screen.
</member>
<member name="drag_margin_h_enabled" type="bool" setter="set_h_drag_enabled" getter="is_h_drag_enabled">
+ If [code]true[/code] the camera only moves when reaching the horizontal drag margins. If [code]false[/code] the camera moves horizontally regardless of margins. Default value: [code]true[/code].
</member>
<member name="drag_margin_left" type="float" setter="set_drag_margin" getter="get_drag_margin">
Left margin needed to drag the camera. A value of [code]1[/code] makes the camera move only when reaching the edge of the screen.
@@ -344,12 +345,16 @@
Top margin needed to drag the camera. A value of [code]1[/code] makes the camera move only when reaching the edge of the screen.
</member>
<member name="drag_margin_v_enabled" type="bool" setter="set_v_drag_enabled" getter="is_v_drag_enabled">
+ If [code]true[/code] the camera only moves when reaching the vertical drag margins. If [code]false[/code] the camera moves vertically regardless of margins. Default value: [code]true[/code].
</member>
<member name="editor_draw_drag_margin" type="bool" setter="set_margin_drawing_enabled" getter="is_margin_drawing_enabled">
+ If [code]true[/code] draws the camera's drag margin rectangle in the editor. Default value: [code]false[/code]
</member>
<member name="editor_draw_limits" type="bool" setter="set_limit_drawing_enabled" getter="is_limit_drawing_enabled">
+ If [code]true[/code] draws the camera's limits rectangle in the editor. Default value: [code]true[/code]
</member>
<member name="editor_draw_screen" type="bool" setter="set_screen_drawing_enabled" getter="is_screen_drawing_enabled">
+ If [code]true[/code] draws the camera's screen rectangle in the editor. Default value: [code]false[/code]
</member>
<member name="limit_bottom" type="int" setter="set_limit" getter="get_limit">
Bottom scroll limit in pixels. The camera stops moving when reaching this value.
@@ -361,6 +366,7 @@
Right scroll limit in pixels. The camera stops moving when reaching this value.
</member>
<member name="limit_smoothed" type="bool" setter="set_limit_smoothing_enabled" getter="is_limit_smoothing_enabled">
+ If [code]true[/code] the camera smoothly stops when reaches its limits. Default value: [code]false[/code]
</member>
<member name="limit_top" type="int" setter="set_limit" getter="get_limit">
Top scroll limit in pixels. The camera stops moving when reaching this value.
@@ -369,19 +375,22 @@
The camera's offset, useful for looking around or camera shake animations.
</member>
<member name="rotating" type="bool" setter="set_rotating" getter="is_rotating">
+ If [code]true[/code] the camera rotates with the target. Default value: [code]false[/code]
</member>
<member name="smoothing_enabled" type="bool" setter="set_enable_follow_smoothing" getter="is_follow_smoothing_enabled">
+ If [code]true[/code] the camera smoothly moves towards the target at [member smoothing_speed]. Default value: [code]false[/code]
</member>
<member name="smoothing_speed" type="float" setter="set_follow_smoothing" getter="get_follow_smoothing">
+ Speed in pixels per second of the camera's smoothing effect when [member smoothing_enabled] is [code]true[/code]
</member>
<member name="zoom" type="Vector2" setter="set_zoom" getter="get_zoom">
The camera's zoom relative to the viewport. Values larger than [code]Vector2(1, 1)[/code] zoom out and smaller values zoom in. For an example, use [code]Vector2(0.5, 0.5)[/code] for a 2x zoom in, and [code]Vector2(4, 4)[/code] for a 4x zoom out.
</member>
</members>
<constants>
- <constant name="ANCHOR_MODE_DRAG_CENTER" value="1">
- </constant>
<constant name="ANCHOR_MODE_FIXED_TOP_LEFT" value="0">
</constant>
+ <constant name="ANCHOR_MODE_DRAG_CENTER" value="1">
+ </constant>
</constants>
</class>
diff --git a/doc/classes/CanvasItem.xml b/doc/classes/CanvasItem.xml
index 4a9890ea18..3682cc6d8f 100644
--- a/doc/classes/CanvasItem.xml
+++ b/doc/classes/CanvasItem.xml
@@ -652,6 +652,9 @@
<constant name="BLEND_MODE_PREMULT_ALPHA" value="4">
Mix blending mode. Colors are assumed to be premultiplied by the alpha (opacity) value.
</constant>
+ <constant name="NOTIFICATION_TRANSFORM_CHANGED" value="29" enum="">
+ Canvas item transform has changed. Only received if requested.
+ </constant>
<constant name="NOTIFICATION_DRAW" value="30" enum="">
CanvasItem is requested to draw.
</constant>
@@ -664,8 +667,5 @@
<constant name="NOTIFICATION_EXIT_CANVAS" value="33" enum="">
Canvas item has exited the canvas.
</constant>
- <constant name="NOTIFICATION_TRANSFORM_CHANGED" value="29" enum="">
- Canvas item transform has changed. Only received if requested.
- </constant>
</constants>
</class>
diff --git a/doc/classes/CanvasLayer.xml b/doc/classes/CanvasLayer.xml
index 3ee1f10536..c3f2e43892 100644
--- a/doc/classes/CanvasLayer.xml
+++ b/doc/classes/CanvasLayer.xml
@@ -4,7 +4,7 @@
Canvas drawing layer.
</brief_description>
<description>
- Canvas drawing layer. [CanvasItem] nodes that are direct or indirect children of a [CanvasLayer] will be drawn in that layer. The layer is a numeric index that defines the draw order. The default 2D scene renders with index 0, so a [CanvasLayer] with index -1 will be drawn below, and one with index 1 will be drawn above. This is very useful for HUDs (in layer 1+ or above), or backgrounds (in layer -1 or below).
+ Canvas drawing layer. [CanvasItem] nodes that are direct or indirect children of a [code]CanvasLayer[/code] will be drawn in that layer. The layer is a numeric index that defines the draw order. The default 2D scene renders with index 0, so a [code]CanvasLayer[/code] with index -1 will be drawn below, and one with index 1 will be drawn above. This is very useful for HUDs (in layer 1+ or above), or backgrounds (in layer -1 or below).
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/CapsuleShape2D.xml b/doc/classes/CapsuleShape2D.xml
index df833e0582..4fb5579436 100644
--- a/doc/classes/CapsuleShape2D.xml
+++ b/doc/classes/CapsuleShape2D.xml
@@ -15,14 +15,14 @@
<return type="float">
</return>
<description>
- Return the height of the [CapsuleShape2D].
+ Return the height of the [code]CapsuleShape2D[/code].
</description>
</method>
<method name="get_radius" qualifiers="const">
<return type="float">
</return>
<description>
- Return the radius of the [CapsuleShape2D].
+ Return the radius of the [code]CapsuleShape2D[/code].
</description>
</method>
<method name="set_height">
@@ -31,7 +31,7 @@
<argument index="0" name="height" type="float">
</argument>
<description>
- Set the height of the [CapsuleShape2D].
+ Set the height of the [code]CapsuleShape2D[/code].
</description>
</method>
<method name="set_radius">
@@ -40,7 +40,7 @@
<argument index="0" name="radius" type="float">
</argument>
<description>
- Set the radius of the [CapsuleShape2D].
+ Set the radius of the [code]CapsuleShape2D[/code].
</description>
</method>
</methods>
diff --git a/doc/classes/CheckBox.xml b/doc/classes/CheckBox.xml
index 6258eb503f..50b431e00c 100644
--- a/doc/classes/CheckBox.xml
+++ b/doc/classes/CheckBox.xml
@@ -4,7 +4,7 @@
Binary choice user interface widget
</brief_description>
<description>
- A checkbox allows the user to make a binary choice (choosing only one of two posible options), for example Answer 'yes' or 'no'.
+ A checkbox allows the user to make a binary choice (choosing only one of two possible options), for example Answer 'yes' or 'no'.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/CollisionObject.xml b/doc/classes/CollisionObject.xml
index 64e9e07925..71b0c5fa7c 100644
--- a/doc/classes/CollisionObject.xml
+++ b/doc/classes/CollisionObject.xml
@@ -4,7 +4,7 @@
Base node for collision objects.
</brief_description>
<description>
- CollisionObject is the base class for physics objects. It can hold any number of collision [Shape]\ s. Each shape must be assigned to a [i]shape owner[/i]. The CollisionObject can have any number of shape owners. Shape owners are not nodes and do not appear in the editor, but are accessible through code using the [code]shape_owner_*[/code] methods.
+ CollisionObject is the base class for physics objects. It can hold any number of collision [Shape]s. Each shape must be assigned to a [i]shape owner[/i]. The CollisionObject can have any number of shape owners. Shape owners are not nodes and do not appear in the editor, but are accessible through code using the [code]shape_owner_*[/code] methods.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/CollisionObject2D.xml b/doc/classes/CollisionObject2D.xml
index 52743bd37d..ec0554d51f 100644
--- a/doc/classes/CollisionObject2D.xml
+++ b/doc/classes/CollisionObject2D.xml
@@ -4,7 +4,7 @@
Base node for 2D collision objects.
</brief_description>
<description>
- CollisionObject2D is the base class for 2D physics objects. It can hold any number of 2D collision [Shape2D]\ s. Each shape must be assigned to a [i]shape owner[/i]. The CollisionObject2D can have any number of shape owners. Shape owners are not nodes and do not appear in the editor, but are accessible through code using the [code]shape_owner_*[/code] methods.
+ CollisionObject2D is the base class for 2D physics objects. It can hold any number of 2D collision [Shape2D]s. Each shape must be assigned to a [i]shape owner[/i]. The CollisionObject2D can have any number of shape owners. Shape owners are not nodes and do not appear in the editor, but are accessible through code using the [code]shape_owner_*[/code] methods.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/ColorPicker.xml b/doc/classes/ColorPicker.xml
index 87414eb03a..74c12cb9b2 100644
--- a/doc/classes/ColorPicker.xml
+++ b/doc/classes/ColorPicker.xml
@@ -93,6 +93,8 @@
</theme_item>
<theme_item name="margin" type="int">
</theme_item>
+ <theme_item name="preset_bg" type="Texture">
+ </theme_item>
<theme_item name="screen_picker" type="Texture">
</theme_item>
<theme_item name="sv_height" type="int">
diff --git a/doc/classes/ColorPickerButton.xml b/doc/classes/ColorPickerButton.xml
index 59b74edd77..7b54be36c9 100644
--- a/doc/classes/ColorPickerButton.xml
+++ b/doc/classes/ColorPickerButton.xml
@@ -72,6 +72,8 @@
<constants>
</constants>
<theme_items>
+ <theme_item name="bg" type="Texture">
+ </theme_item>
<theme_item name="disabled" type="StyleBox">
</theme_item>
<theme_item name="focus" type="StyleBox">
diff --git a/doc/classes/ConcavePolygonShape2D.xml b/doc/classes/ConcavePolygonShape2D.xml
index 018d64b643..be884fd08d 100644
--- a/doc/classes/ConcavePolygonShape2D.xml
+++ b/doc/classes/ConcavePolygonShape2D.xml
@@ -5,7 +5,7 @@
</brief_description>
<description>
Concave polygon 2D shape resource for physics. It is made out of segments and is very optimal for complex polygonal concave collisions. It is really not advised to use for [RigidBody2D] nodes. A CollisionPolygon2D in convex decomposition mode (solids) or several convex objects are advised for that instead. Otherwise, a concave polygon 2D shape is better for static collisions.
- The main difference between a [ConvexPolygonShape2D] and a [ConcavePolygonShape2D] is that a concave polygon assumes it is concave and uses a more complex method of collision detection, and a convex one forces itself to be convex in order to speed up collision detection.
+ The main difference between a [ConvexPolygonShape2D] and a [code]ConcavePolygonShape2D[/code] is that a concave polygon assumes it is concave and uses a more complex method of collision detection, and a convex one forces itself to be convex in order to speed up collision detection.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/ConeTwistJoint.xml b/doc/classes/ConeTwistJoint.xml
index 67c7cc4cfe..baf28c5a74 100644
--- a/doc/classes/ConeTwistJoint.xml
+++ b/doc/classes/ConeTwistJoint.xml
@@ -1,8 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="ConeTwistJoint" inherits="Joint" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ A twist joint between two 3D bodies
</brief_description>
<description>
+ The joint can rotate the bodies across an axis defined by the local x-axes of the [Joint].
+ The twist axis is initiated as the x-axis of the [Joint].
+ Once the Bodies swing, the twist axis is calculated as the middle of the x-axes of the Joint in the local space of the two Bodies.
</description>
<tutorials>
</tutorials>
@@ -30,28 +34,49 @@
</methods>
<members>
<member name="bias" type="float" setter="set_param" getter="get_param">
+ The speed with which the swing or twist will take place.
+ The higher, the faster.
</member>
<member name="relaxation" type="float" setter="set_param" getter="get_param">
+ Defines, how fast the swing- and twist-speed-difference on both sides gets synced.
</member>
<member name="softness" type="float" setter="set_param" getter="get_param">
+ The ease with which the joint starts to twist. If it's too low, it takes more force to start twisting the joint.
</member>
<member name="swing_span" type="float" setter="_set_swing_span" getter="_get_swing_span">
+ Swing is rotation from side to side, around the axis perpendicular to the twist axis.
+ The swing span defines, how much rotation will not get corrected allong the swing axis.
+ Could be defined as looseness in the [code]ConeTwistJoint[/code].
+ If below 0.05, this behaviour is locked. Default value: [code]PI/4[/code].
</member>
<member name="twist_span" type="float" setter="_set_twist_span" getter="_get_twist_span">
+ Twist is the rotation around the twist axis, this value defined how far the joint can twist.
+ Twist is locked if below 0.05.
</member>
</members>
<constants>
<constant name="PARAM_SWING_SPAN" value="0">
+ Swing is rotation from side to side, around the axis perpendicular to the twist axis.
+ The swing span defines, how much rotation will not get corrected allong the swing axis.
+ Could be defined as looseness in the [code]ConeTwistJoint[/code].
+ If below 0.05, this behaviour is locked. Default value: [code]PI/4[/code].
</constant>
<constant name="PARAM_TWIST_SPAN" value="1">
+ Twist is the rotation around the twist axis, this value defined how far the joint can twist.
+ Twist is locked if below 0.05.
</constant>
<constant name="PARAM_BIAS" value="2">
+ The speed with which the swing or twist will take place.
+ The higher, the faster.
</constant>
<constant name="PARAM_SOFTNESS" value="3">
+ The ease with which the joint starts to twist. If it's too low, it takes more force to start twisting the joint.
</constant>
<constant name="PARAM_RELAXATION" value="4">
+ Defines, how fast the swing- and twist-speed-difference on both sides gets synced.
</constant>
<constant name="PARAM_MAX" value="5">
+ End flag of PARAM_* constants, used internally.
</constant>
</constants>
</class>
diff --git a/doc/classes/ConfigFile.xml b/doc/classes/ConfigFile.xml
index c2d1ec1355..846a100f3c 100644
--- a/doc/classes/ConfigFile.xml
+++ b/doc/classes/ConfigFile.xml
@@ -4,15 +4,22 @@
Helper class to handle INI-style files.
</brief_description>
<description>
- This helper class can be used to store [Variant] values on the filesystem using an INI-style formatting. The stored values as referenced by a section and a key. The stored data can be saved to or parsed from a file, though ConfigFile objects can also be used directly with accessing the filesystem.
- The following example shows how to parse a INI-style file from the system, read its contents and store new values in it:
+ This helper class can be used to store [Variant] values on the filesystem using INI-style formatting. The stored values are indentified by a section and a key:
+ [codeblock]
+ [section]
+ some_key=42
+ string_example="Hello World!"
+ a_vector=Vector3( 1, 0, 2 )
+ [/codeblock]
+ The stored data can be saved to or parsed from a file, though ConfigFile objects can also be used directly without accessing the filesystem.
+ The following example shows how to parse an INI-style file from the system, read its contents and store new values in it:
[codeblock]
var config = ConfigFile.new()
var err = config.load("user://settings.cfg")
if err == OK: # if not, something went wrong with the file loading
# Look for the display/width pair, and default to 1024 if missing
var screen_width = get_value("display", "width", 1024)
- # Store a variable if and only it hasn't been defined yet
+ # Store a variable if and only if it hasn't been defined yet
if not config.has_section_key("audio", "mute"):
config.set_value("audio", "mute", false)
# Save the changes by overwriting the previous file
@@ -30,6 +37,7 @@
<argument index="0" name="section" type="String">
</argument>
<description>
+ Deletes the specified section along with all the key-value pairs inside.
</description>
</method>
<method name="get_section_keys" qualifiers="const">
@@ -38,14 +46,14 @@
<argument index="0" name="section" type="String">
</argument>
<description>
- Return an array of all defined key identifiers in the specified section.
+ Returns an array of all defined key identifiers in the specified section.
</description>
</method>
<method name="get_sections" qualifiers="const">
<return type="PoolStringArray">
</return>
<description>
- Return an array of all defined section identifiers.
+ Returns an array of all defined section identifiers.
</description>
</method>
<method name="get_value" qualifiers="const">
@@ -58,7 +66,7 @@
<argument index="2" name="default" type="Variant" default="null">
</argument>
<description>
- Return the current value for the specified section and key. If the section and/or the key do not exist, the method returns the value of the optional [i]default[/i] argument (and thus [code]NULL[/code] if not specified).
+ Returns the current value for the specified section and key. If the section and/or the key do not exist, the method returns the value of the optional [code]default[/code] argument, or [code]null[/code] if it is omitted.
</description>
</method>
<method name="has_section" qualifiers="const">
@@ -67,7 +75,7 @@
<argument index="0" name="section" type="String">
</argument>
<description>
- Check if the specified section exists.
+ Returns [code]true[/code] if the specified section exists.
</description>
</method>
<method name="has_section_key" qualifiers="const">
@@ -78,7 +86,7 @@
<argument index="1" name="key" type="String">
</argument>
<description>
- Check if the specified section-key pair exists.
+ Returns [code]true[/code] if the specified section-key pair exists.
</description>
</method>
<method name="load">
@@ -87,7 +95,7 @@
<argument index="0" name="path" type="String">
</argument>
<description>
- Load the config file specified as a parameter. The file's contents are parsed and loaded in the ConfigFile object from which the method was called. The return value is one of the OK, FAILED or ERR_* constants listed in [@Global Scope] (if the load was successful, it returns OK).
+ Loads the config file specified as a parameter. The file's contents are parsed and loaded in the ConfigFile object which the method was called on. Returns one of the [code]OK[/code], [code]FAILED[/code] or [code]ERR_*[/code] constants listed in [@Global Scope]. If the load was successful, the return value is [code]OK[/code].
</description>
</method>
<method name="save">
@@ -96,8 +104,7 @@
<argument index="0" name="path" type="String">
</argument>
<description>
- Save the contents of the ConfigFile object to the file specified as a parameter. The output file uses an INI-style structure.
- The return value is one of the OK, FAILED or ERR_* constants listed in [@Global Scope] (if the save was successful, it returns OK).
+ Saves the contents of the ConfigFile object to the file specified as a parameter. The output file uses an INI-style structure. Returns one of the [code]OK[/code], [code]FAILED[/code] or [code]ERR_*[/code] constants listed in [@Global Scope]. If the load was successful, the return value is [code]OK[/code].
</description>
</method>
<method name="set_value">
@@ -110,7 +117,7 @@
<argument index="2" name="value" type="Variant">
</argument>
<description>
- Assign a value to the specified key of the the specified section. If the section and/or the key do not exist, they are created. Passing a [code]NULL[/code] value deletes the specified key if it exists (and deletes the section if it ends up empty once the key has been removed).
+ Assigns a value to the specified key of the the specified section. If the section and/or the key do not exist, they are created. Passing a [code]null[/code] value deletes the specified key if it exists, and deletes the section if it ends up empty once the key has been removed.
</description>
</method>
</methods>
diff --git a/doc/classes/Container.xml b/doc/classes/Container.xml
index 844c17a1d9..f8555def37 100644
--- a/doc/classes/Container.xml
+++ b/doc/classes/Container.xml
@@ -4,7 +4,7 @@
Base node for containers.
</brief_description>
<description>
- Base node for containers. A [Container] contains other controls and automatically arranges them in a certain way.
+ Base node for containers. A [code]Container[/code] contains other controls and automatically arranges them in a certain way.
A Control can inherit this to create custom container classes.
</description>
<tutorials>
diff --git a/doc/classes/Control.xml b/doc/classes/Control.xml
index b3bdd1d6c2..e3d29c2e93 100644
--- a/doc/classes/Control.xml
+++ b/doc/classes/Control.xml
@@ -578,23 +578,26 @@
<description>
</description>
</method>
- <method name="set_anchors_preset">
+ <method name="set_anchors_and_margins_preset">
<return type="void">
</return>
<argument index="0" name="preset" type="int" enum="Control.LayoutPreset">
</argument>
- <argument index="1" name="keep_margin" type="bool" default="false">
+ <argument index="1" name="resize_mode" type="int" enum="Control.LayoutPresetMode" default="0">
+ </argument>
+ <argument index="2" name="margin" type="int" default="0">
</argument>
<description>
</description>
</method>
- <method name="set_area_as_parent_rect">
+ <method name="set_anchors_preset">
<return type="void">
</return>
- <argument index="0" name="margin" type="int" default="0">
+ <argument index="0" name="preset" type="int" enum="Control.LayoutPreset">
+ </argument>
+ <argument index="1" name="keep_margin" type="bool" default="false">
</argument>
<description>
- Change all margins and anchors, so this Control always takes up the same area as the parent Control. This is a helper (see [method set_anchor], [method set_margin]).
</description>
</method>
<method name="set_begin">
@@ -713,6 +716,18 @@
Set a margin offset. Margin can be one of (MARGIN_LEFT, MARGIN_TOP, MARGIN_RIGHT, MARGIN_BOTTOM). Offset value being set depends on the anchor mode.
</description>
</method>
+ <method name="set_margins_preset">
+ <return type="void">
+ </return>
+ <argument index="0" name="preset" type="int" enum="Control.LayoutPreset">
+ </argument>
+ <argument index="1" name="resize_mode" type="int" enum="Control.LayoutPresetMode" default="0">
+ </argument>
+ <argument index="2" name="margin" type="int" default="0">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="set_mouse_filter">
<return type="void">
</return>
@@ -1096,12 +1111,20 @@
<constant name="PRESET_WIDE" value="15">
Snap all 4 anchors to the respective corners of the parent container. Set all 4 margins to 0 after you applied this preset and the [code]Control[/code] will fit its parent container. Use with [method set_anchors_preset].
</constant>
- <constant name="SIZE_EXPAND" value="2">
- Tells the parent [Container] to let this node take all the available space on the axis you flag. If multiple neighboring nodes are set to expand, they'll share the space based on their stretch ratio. See [member size_flags_stretch_ratio]. Use with [member size_flags_horizontal] and [member size_flags_vertical].
+ <constant name="PRESET_MODE_MINSIZE" value="0">
+ </constant>
+ <constant name="PRESET_MODE_KEEP_WIDTH" value="1">
+ </constant>
+ <constant name="PRESET_MODE_KEEP_HEIGHT" value="2">
+ </constant>
+ <constant name="PRESET_MODE_KEEP_SIZE" value="3">
</constant>
<constant name="SIZE_FILL" value="1">
Tells the parent [Container] to expand the bounds of this node to fill all the available space without pushing any other node. Use with [member size_flags_horizontal] and [member size_flags_vertical].
</constant>
+ <constant name="SIZE_EXPAND" value="2">
+ Tells the parent [Container] to let this node take all the available space on the axis you flag. If multiple neighboring nodes are set to expand, they'll share the space based on their stretch ratio. See [member size_flags_stretch_ratio]. Use with [member size_flags_horizontal] and [member size_flags_vertical].
+ </constant>
<constant name="SIZE_EXPAND_FILL" value="3">
Sets the node's size flags to both fill and expand. See the 2 constants above for more information.
</constant>
diff --git a/doc/classes/ConvexPolygonShape2D.xml b/doc/classes/ConvexPolygonShape2D.xml
index 0cb4f4045b..cf1fdccc26 100644
--- a/doc/classes/ConvexPolygonShape2D.xml
+++ b/doc/classes/ConvexPolygonShape2D.xml
@@ -5,7 +5,7 @@
</brief_description>
<description>
Convex Polygon Shape for 2D physics. A convex polygon, whatever its shape, is internally decomposed into as many convex polygons as needed to ensure all collision checks against it are always done on convex polygons (which are faster to check).
- The main difference between a [ConvexPolygonShape2D] and a [ConcavePolygonShape2D] is that a concave polygon assumes it is concave and uses a more complex method of collision detection, and a convex one forces itself to be convex in order to speed up collision detection.
+ The main difference between a [code]ConvexPolygonShape2D[/code] and a [ConcavePolygonShape2D] is that a concave polygon assumes it is concave and uses a more complex method of collision detection, and a convex one forces itself to be convex in order to speed up collision detection.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/CubeMap.xml b/doc/classes/CubeMap.xml
index ac2ff3fc57..b173bba3c6 100644
--- a/doc/classes/CubeMap.xml
+++ b/doc/classes/CubeMap.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="CubeMap" inherits="Resource" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ A CubeMap is a 6 sided 3D texture.
</brief_description>
<description>
+ A CubeMap is a 6 sided 3D texture typically used for faking reflections. It can be used to make an object look as if it's reflecting its surroundings. This usually delivers much better performance than other reflection methods.
</description>
<tutorials>
</tutorials>
@@ -19,6 +21,7 @@
<return type="int">
</return>
<description>
+ Returns the CubeMap's height.
</description>
</method>
<method name="get_lossy_storage_quality" qualifiers="const">
@@ -33,6 +36,7 @@
<argument index="0" name="side" type="int" enum="CubeMap.Side">
</argument>
<description>
+ Returns an [Image] for a side of the CubeMap using one of the [code]SIDE_*[/code] constants or an integer 0-5.
</description>
</method>
<method name="get_storage" qualifiers="const">
@@ -45,6 +49,7 @@
<return type="int">
</return>
<description>
+ Returns the CubeMap's width.
</description>
</method>
<method name="set_flags">
@@ -71,6 +76,7 @@
<argument index="1" name="image" type="Image">
</argument>
<description>
+ Sets an [Image] for a side of the CubeMap using one of the [code]SIDE_*[/code] constants or an integer 0-5.
</description>
</method>
<method name="set_storage">
@@ -82,6 +88,14 @@
</description>
</method>
</methods>
+ <members>
+ <member name="lossy_storage_quality" type="float" setter="set_lossy_storage_quality" getter="get_lossy_storage_quality">
+ The lossy storage quality of the CubeMap if the storage mode is set to STORAGE_COMPRESS_LOSSY.
+ </member>
+ <member name="storage_mode" type="int" setter="set_storage" getter="get_storage" enum="CubeMap.Storage">
+ The CubeMap's storage mode. See [code]STORAGE_*[/code] constants.
+ </member>
+ </members>
<constants>
<constant name="STORAGE_RAW" value="0">
</constant>
diff --git a/doc/classes/Curve.xml b/doc/classes/Curve.xml
index ef43d9024c..c89ab6fb9b 100644
--- a/doc/classes/Curve.xml
+++ b/doc/classes/Curve.xml
@@ -170,7 +170,7 @@
</description>
</method>
<method name="set_point_offset">
- <return type="void">
+ <return type="int">
</return>
<argument index="0" name="index" type="int">
</argument>
diff --git a/doc/classes/Curve2D.xml b/doc/classes/Curve2D.xml
index 4362887be3..99ec2b7d94 100644
--- a/doc/classes/Curve2D.xml
+++ b/doc/classes/Curve2D.xml
@@ -32,6 +32,7 @@
<return type="void">
</return>
<description>
+ Removes all points from the curve.
</description>
</method>
<method name="get_bake_interval" qualifiers="const">
@@ -191,8 +192,10 @@
</methods>
<members>
<member name="_data" type="Dictionary" setter="_set_data" getter="_get_data">
+ The points describing the curve. Value is a [Dictionary] with the keys [code]in[/code], [code]out[/code], and [code]pos[/code]. The key pos is the position of a vertex of the curve, the key in is the vector from that position to the control point before this vertex, the key out is the vector from that position to the controlpoint after this vertex.
</member>
<member name="bake_interval" type="float" setter="set_bake_interval" getter="get_bake_interval">
+ The distance in pixels between two adjacent cached points. Changing it forces the cache to be recomputed the next time the [method get_baked_points] or [method get_baked_length] function is called. The smaller the distance, the more points in the cache and the more memory it will consume, so use with care.
</member>
</members>
<constants>
diff --git a/doc/classes/DampedSpringJoint2D.xml b/doc/classes/DampedSpringJoint2D.xml
index 18554820fa..36c5564513 100644
--- a/doc/classes/DampedSpringJoint2D.xml
+++ b/doc/classes/DampedSpringJoint2D.xml
@@ -78,12 +78,16 @@
</methods>
<members>
<member name="damping" type="float" setter="set_damping" getter="get_damping">
+ The spring joint's damping ratio. A value between [code]0[/code] and [code]1[/code]. When the two bodies move into different directions the system tries to align them to the spring axis again. A high [code]damping[/code] value forces the attached bodies to align faster. Default value: [code]1[/code]
</member>
<member name="length" type="float" setter="set_length" getter="get_length">
+ The spring joint's maximum length. The two attached bodies cannot stretch it past this value. Default value: [code]50[/code]
</member>
<member name="rest_length" type="float" setter="set_rest_length" getter="get_rest_length">
+ When the bodies attached to the spring joint move they stretch or squash it. The joint always tries to resize towards this length. Default value: [code]0[/code]
</member>
<member name="stiffness" type="float" setter="set_stiffness" getter="get_stiffness">
+ The higher the value, the less the bodies attached to the joint will deform it. The joint applies an opposing force to the bodies, the product of the stiffness multiplied by the size difference from its resting length. Default value: [code]20[/code]
</member>
</members>
<constants>
diff --git a/doc/classes/Dictionary.xml b/doc/classes/Dictionary.xml
index 447c0d7ed3..4b37061af2 100644
--- a/doc/classes/Dictionary.xml
+++ b/doc/classes/Dictionary.xml
@@ -59,7 +59,7 @@
<return type="Array">
</return>
<description>
- Return the list of keys in the [Dictionary].
+ Return the list of keys in the [code]Dictionary[/code].
</description>
</method>
<method name="size">
@@ -73,7 +73,7 @@
<return type="Array">
</return>
<description>
- Return the list of values in the [Dictionary].
+ Return the list of values in the [code]Dictionary[/code].
</description>
</method>
</methods>
diff --git a/doc/classes/DynamicFont.xml b/doc/classes/DynamicFont.xml
index e4ce2ff3f0..d7f08c85a1 100644
--- a/doc/classes/DynamicFont.xml
+++ b/doc/classes/DynamicFont.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="DynamicFont" inherits="Font" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ DynamicFont renders vector font files at runtime.
</brief_description>
<description>
+ DynamicFont renders vector font files (such as TTF or OTF) dynamically at runtime instead of using a prerendered texture atlas like [BitmapFont]. This trades the faster loading time of [BitmapFont]s for the ability to change font parameters like size and spacing during runtime. [DynamicFontData] is used for referencing the font file paths.
</description>
<tutorials>
</tutorials>
@@ -15,6 +17,7 @@
<argument index="0" name="data" type="DynamicFontData">
</argument>
<description>
+ Adds a fallback font.
</description>
</method>
<method name="get_fallback" qualifiers="const">
@@ -23,12 +26,14 @@
<argument index="0" name="idx" type="int">
</argument>
<description>
+ Returns the fallback font at index [code]idx[/code].
</description>
</method>
<method name="get_fallback_count" qualifiers="const">
<return type="int">
</return>
<description>
+ Returns the number of fallback fonts.
</description>
</method>
<method name="get_font_data" qualifiers="const">
@@ -41,6 +46,7 @@
<return type="int">
</return>
<description>
+ Returns the font size in pixels.
</description>
</method>
<method name="get_spacing" qualifiers="const">
@@ -49,18 +55,21 @@
<argument index="0" name="type" type="int">
</argument>
<description>
+ Returns the given type of spacing in pixels. See [code]SPACING_*[/code] constants.
</description>
</method>
<method name="get_use_filter" qualifiers="const">
<return type="bool">
</return>
<description>
+ Returns [code]true[/code] if filtering is used.
</description>
</method>
<method name="get_use_mipmaps" qualifiers="const">
<return type="bool">
</return>
<description>
+ Returns [code]true[/code] if mipmapping is used.
</description>
</method>
<method name="remove_fallback">
@@ -69,6 +78,7 @@
<argument index="0" name="idx" type="int">
</argument>
<description>
+ Removes the fallback font at index [code]idx[/code].
</description>
</method>
<method name="set_fallback">
@@ -79,6 +89,7 @@
<argument index="1" name="data" type="DynamicFontData">
</argument>
<description>
+ Sets the fallback font at index [code]idx[/code].
</description>
</method>
<method name="set_font_data">
@@ -87,6 +98,7 @@
<argument index="0" name="data" type="DynamicFontData">
</argument>
<description>
+ Sets the [DynamicFontData].
</description>
</method>
<method name="set_size">
@@ -95,6 +107,7 @@
<argument index="0" name="data" type="int">
</argument>
<description>
+ Sets the font size.
</description>
</method>
<method name="set_spacing">
@@ -105,6 +118,7 @@
<argument index="1" name="value" type="int">
</argument>
<description>
+ Sets the spacing of the given type. See [code]SPACING_*[/code] constants.
</description>
</method>
<method name="set_use_filter">
@@ -113,6 +127,7 @@
<argument index="0" name="enable" type="bool">
</argument>
<description>
+ Set to [code]true[/code] to use filtering.
</description>
</method>
<method name="set_use_mipmaps">
@@ -121,35 +136,48 @@
<argument index="0" name="enable" type="bool">
</argument>
<description>
+ Set to [code]true[/code] to use mipmapping.
</description>
</method>
</methods>
<members>
<member name="extra_spacing_bottom" type="int" setter="set_spacing" getter="get_spacing">
+ Extra spacing at the bottom in pixels.
</member>
<member name="extra_spacing_char" type="int" setter="set_spacing" getter="get_spacing">
+ Extra character spacing in pixels.
</member>
<member name="extra_spacing_space" type="int" setter="set_spacing" getter="get_spacing">
+ Extra space spacing in pixels.
</member>
<member name="extra_spacing_top" type="int" setter="set_spacing" getter="get_spacing">
+ Extra spacing at the top in pixels.
</member>
<member name="font_data" type="DynamicFontData" setter="set_font_data" getter="get_font_data">
+ The font data.
</member>
<member name="size" type="int" setter="set_size" getter="get_size">
+ The font size.
</member>
<member name="use_filter" type="bool" setter="set_use_filter" getter="get_use_filter">
+ If [code]true[/code] filtering is used.
</member>
<member name="use_mipmaps" type="bool" setter="set_use_mipmaps" getter="get_use_mipmaps">
+ If [code]true[/code] mipmapping is used.
</member>
</members>
<constants>
<constant name="SPACING_TOP" value="0">
+ Spacing at the top.
</constant>
<constant name="SPACING_BOTTOM" value="1">
+ Spacing at the bottom.
</constant>
<constant name="SPACING_CHAR" value="2">
+ Character spacing.
</constant>
<constant name="SPACING_SPACE" value="3">
+ Space spacing.
</constant>
</constants>
</class>
diff --git a/doc/classes/DynamicFontData.xml b/doc/classes/DynamicFontData.xml
index 51e4e0d231..9012b46e08 100644
--- a/doc/classes/DynamicFontData.xml
+++ b/doc/classes/DynamicFontData.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="DynamicFontData" inherits="Resource" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Used with [DynamicFont] to describe the location of a font file.
</brief_description>
<description>
+ Used with [DynamicFont] to describe the location of a vector font file for dynamic rendering at runtime.
</description>
<tutorials>
</tutorials>
@@ -13,6 +15,7 @@
<return type="String">
</return>
<description>
+ Returns the font path.
</description>
</method>
<method name="set_font_path">
@@ -21,11 +24,13 @@
<argument index="0" name="path" type="String">
</argument>
<description>
+ Sets the font path.
</description>
</method>
</methods>
<members>
<member name="font_path" type="String" setter="set_font_path" getter="get_font_path">
+ The path to the vector font file.
</member>
</members>
<constants>
diff --git a/doc/classes/EditorImportPlugin.xml b/doc/classes/EditorImportPlugin.xml
index 05319e926c..c276a8f661 100644
--- a/doc/classes/EditorImportPlugin.xml
+++ b/doc/classes/EditorImportPlugin.xml
@@ -35,12 +35,12 @@
func get_preset_name(i):
return "Default"
- func get_import_optons(i):
+ func get_import_options(i):
return [{"name": "my_option", "default_value": false}]
func load(src, dst, opts, r_platform_variants, r_gen_files):
- var f = File.new()
- if f.open(src, File.READ) != OK:
+ var file = File.new()
+ if file.open(src, File.READ) != OK:
return FAILED
var mesh = Mesh.new()
diff --git a/doc/classes/EditorInterface.xml b/doc/classes/EditorInterface.xml
index 0422e9a64e..3a3fd43b15 100644
--- a/doc/classes/EditorInterface.xml
+++ b/doc/classes/EditorInterface.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="EditorInterface" inherits="Node" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Editor interface and main components.
</brief_description>
<description>
+ Editor interface. Allows saving and (re-)loading scenes, rendering mesh previews, inspecting and editing resources and objects and provides access to [EditorSettings], [EditorFileSystem], [EditorResourcePreview]\ er, [ScriptEditor], the editor viewport, as well as information about scenes. Also see [EditorPlugin] and [EditorScript].
</description>
<tutorials>
</tutorials>
@@ -15,60 +17,70 @@
<argument index="0" name="resource" type="Resource">
</argument>
<description>
+ Edits the given [Resource].
</description>
</method>
<method name="get_base_control">
<return type="Control">
</return>
<description>
+ Returns the base [Control].
</description>
</method>
<method name="get_edited_scene_root">
<return type="Node">
</return>
<description>
+ Returns the edited scene's root [Node].
</description>
</method>
<method name="get_editor_settings">
<return type="EditorSettings">
</return>
<description>
+ Returns the [EditorSettings].
</description>
</method>
<method name="get_editor_viewport">
<return type="Control">
</return>
<description>
+ Returns the editor [Viewport].
</description>
</method>
<method name="get_open_scenes" qualifiers="const">
<return type="Array">
</return>
<description>
+ Returns an [Array] of the currently opened scenes.
</description>
</method>
<method name="get_resource_filesystem">
<return type="EditorFileSystem">
</return>
<description>
+ Returns the [EditorFileSystem].
</description>
</method>
<method name="get_resource_previewer">
<return type="EditorResourcePreview">
</return>
<description>
+ Returns the [EditorResourcePreview]\ er.
</description>
</method>
<method name="get_script_editor">
<return type="ScriptEditor">
</return>
<description>
+ Returns the [ScriptEditor].
</description>
</method>
<method name="get_selection">
<return type="EditorSelection">
</return>
<description>
+ Returns the [EditorSelection].
</description>
</method>
<method name="inspect_object">
@@ -79,16 +91,18 @@
<argument index="1" name="for_property" type="String" default="&quot;&quot;">
</argument>
<description>
+ Shows the given property on the given [code]object[/code] in the Editor's Inspector dock.
</description>
</method>
<method name="make_mesh_previews">
<return type="Array">
</return>
- <argument index="0" name="arg0" type="Array">
+ <argument index="0" name="meshes" type="Array">
</argument>
- <argument index="1" name="arg1" type="int">
+ <argument index="1" name="preview_size" type="int">
</argument>
<description>
+ Returns mesh previews rendered at the given size as an [Array] of [Texture]s.
</description>
</method>
<method name="open_scene_from_path">
@@ -97,6 +111,7 @@
<argument index="0" name="scene_filepath" type="String">
</argument>
<description>
+ Opens the scene at the given path.
</description>
</method>
<method name="reload_scene_from_path">
@@ -105,12 +120,14 @@
<argument index="0" name="scene_filepath" type="String">
</argument>
<description>
+ Reloads the scene at the given path.
</description>
</method>
<method name="save_scene">
<return type="int" enum="Error">
</return>
<description>
+ Saves the scene. Returns either OK or ERR_CANT_CREATE. See [@Global Scope] constants.
</description>
</method>
<method name="save_scene_as">
@@ -121,6 +138,7 @@
<argument index="1" name="with_preview" type="bool" default="true">
</argument>
<description>
+ Saves the scene as a file at [code]path[/code].
</description>
</method>
</methods>
diff --git a/doc/classes/EditorPlugin.xml b/doc/classes/EditorPlugin.xml
index 2831555d41..de79c3c85c 100644
--- a/doc/classes/EditorPlugin.xml
+++ b/doc/classes/EditorPlugin.xml
@@ -366,6 +366,8 @@
</constant>
<constant name="CONTAINER_CANVAS_EDITOR_SIDE" value="5">
</constant>
+ <constant name="CONTAINER_CANVAS_EDITOR_BOTTOM" value="6">
+ </constant>
<constant name="CONTAINER_PROPERTY_EDITOR_BOTTOM" value="7">
</constant>
<constant name="DOCK_SLOT_LEFT_UL" value="0">
diff --git a/doc/classes/EditorResourcePreview.xml b/doc/classes/EditorResourcePreview.xml
index acf36b6a08..5174d9243b 100644
--- a/doc/classes/EditorResourcePreview.xml
+++ b/doc/classes/EditorResourcePreview.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="EditorResourcePreview" inherits="Node" category="Core" version="3.0.alpha.custom_build">
<brief_description>
- Helper to generate previews of reources or files.
+ Helper to generate previews of resources or files.
</brief_description>
<description>
This object is used to generate previews for resources of files.
diff --git a/doc/classes/EditorScript.xml b/doc/classes/EditorScript.xml
index 48cf3e9843..245dbc078d 100644
--- a/doc/classes/EditorScript.xml
+++ b/doc/classes/EditorScript.xml
@@ -1,10 +1,19 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="EditorScript" inherits="Reference" category="Core" version="3.0.alpha.custom_build">
<brief_description>
- Simple script to perform changes in the currently edited scene.
+ Base script that can be used to add extension functions to the editor.
</brief_description>
<description>
- This script can be run from the Scene -&gt; Run Script menu option.
+ Scripts extending this class and implementing its [code]_run()[/code] method can be executed from the Script Editor's [code]File -&gt; Run[/code] menu option (or by pressing [code]CTRL+Shift+X[/code]) while the editor is running. This is useful for adding custom in-editor functionality to Godot. For more complex additions, consider using [EditorPlugin]s instead. Note that extending scripts need to have [code]tool mode[/code] enabled.
+ Example script:
+ [codeblock]
+ tool
+ extends EditorScript
+
+ func _run():
+ print("Hello from the Godot Editor!")
+ [/codeblock]
+ Note that the script is run in the Editor context, which means the output is visible in the console window started with the Editor (STDOUT) instead of the usual Godot [i]Output[/i] dock.
</description>
<tutorials>
</tutorials>
@@ -15,6 +24,7 @@
<return type="void">
</return>
<description>
+ This method is executed by the Editor when [code]File -&gt; Run[/code] is used.
</description>
</method>
<method name="add_root_node">
@@ -29,12 +39,14 @@
<return type="EditorInterface">
</return>
<description>
+ Returns the [EditorInterface] singleton instance.
</description>
</method>
<method name="get_scene">
<return type="Node">
</return>
<description>
+ Returns the Editor's currently active scene.
</description>
</method>
</methods>
diff --git a/doc/classes/EditorSelection.xml b/doc/classes/EditorSelection.xml
index 8d9bdd2c05..a6dc60ee7b 100644
--- a/doc/classes/EditorSelection.xml
+++ b/doc/classes/EditorSelection.xml
@@ -31,7 +31,7 @@
<return type="Array">
</return>
<description>
- Get the list of selectes nodes.
+ Get the list of selected nodes.
</description>
</method>
<method name="get_transformable_selected_nodes">
diff --git a/doc/classes/EditorSettings.xml b/doc/classes/EditorSettings.xml
index 37c7a47a51..17a4d2fe4b 100644
--- a/doc/classes/EditorSettings.xml
+++ b/doc/classes/EditorSettings.xml
@@ -69,6 +69,14 @@
Get the list of recently visited folders in the file dialog for this project.
</description>
</method>
+ <method name="get_setting" qualifiers="const">
+ <return type="Variant">
+ </return>
+ <argument index="0" name="name" type="String">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="get_settings_path" qualifiers="const">
<return type="String">
</return>
@@ -78,6 +86,30 @@
settings/templates - where export templates are located
</description>
</method>
+ <method name="has_setting" qualifiers="const">
+ <return type="bool">
+ </return>
+ <argument index="0" name="name" type="String">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="property_can_revert">
+ <return type="bool">
+ </return>
+ <argument index="0" name="name" type="String">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="property_get_revert">
+ <return type="Variant">
+ </return>
+ <argument index="0" name="name" type="String">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="set_favorite_dirs">
<return type="void">
</return>
@@ -87,6 +119,16 @@
Set the list of favorite directories for this project.
</description>
</method>
+ <method name="set_initial_value">
+ <return type="void">
+ </return>
+ <argument index="0" name="name" type="String">
+ </argument>
+ <argument index="1" name="value" type="Variant">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="set_recent_dirs">
<return type="void">
</return>
@@ -96,6 +138,16 @@
Set the list of recently visited folders in the file dialog for this project.
</description>
</method>
+ <method name="set_setting">
+ <return type="void">
+ </return>
+ <argument index="0" name="name" type="String">
+ </argument>
+ <argument index="1" name="value" type="Variant">
+ </argument>
+ <description>
+ </description>
+ </method>
</methods>
<signals>
<signal name="settings_changed">
diff --git a/doc/classes/EditorSpatialGizmo.xml b/doc/classes/EditorSpatialGizmo.xml
index baab995fab..545eadeed2 100644
--- a/doc/classes/EditorSpatialGizmo.xml
+++ b/doc/classes/EditorSpatialGizmo.xml
@@ -96,7 +96,7 @@
<argument index="2" name="cancel" type="bool" default="false">
</argument>
<description>
- Commit a handle being edited (handles must have been prevously added by [method add_handles]).
+ Commit a handle being edited (handles must have been previously added by [method add_handles]).
If the cancel parameter is true, an option to restore the edited value to the original is provided.
</description>
</method>
diff --git a/doc/classes/Engine.xml b/doc/classes/Engine.xml
index 5bb0810296..083688b416 100644
--- a/doc/classes/Engine.xml
+++ b/doc/classes/Engine.xml
@@ -4,7 +4,7 @@
Access to basic engine properties.
</brief_description>
<description>
- The [Engine] class allows you to query and modify the game's run-time parameters, such as frames per second, time scale, and others.
+ The [code]Engine[/code] class allows you to query and modify the game's run-time parameters, such as frames per second, time scale, and others.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/Environment.xml b/doc/classes/Environment.xml
index 3880c45a86..4d40d5af9a 100644
--- a/doc/classes/Environment.xml
+++ b/doc/classes/Environment.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<class name="Environment" inherits="Resource" category="Core" version="3.0">
+<class name="Environment" inherits="Resource" category="Core" version="3.0.alpha.custom_build">
<brief_description>
Resource for environment nodes (like [WorldEnvironment]) that define multiple rendering options.
</brief_description>
@@ -226,7 +226,7 @@
<description>
</description>
</method>
- <method name="get_sky_scale" qualifiers="const">
+ <method name="get_sky_custom_fov" qualifiers="const">
<return type="float">
</return>
<description>
@@ -238,6 +238,12 @@
<description>
</description>
</method>
+ <method name="get_ssao_blur" qualifiers="const">
+ <return type="int" enum="Environment.SSAOBlur">
+ </return>
+ <description>
+ </description>
+ </method>
<method name="get_ssao_color" qualifiers="const">
<return type="Color">
</return>
@@ -250,6 +256,12 @@
<description>
</description>
</method>
+ <method name="get_ssao_edge_sharpness" qualifiers="const">
+ <return type="float">
+ </return>
+ <description>
+ </description>
+ </method>
<method name="get_ssao_intensity" qualifiers="const">
<return type="float">
</return>
@@ -262,6 +274,12 @@
<description>
</description>
</method>
+ <method name="get_ssao_quality" qualifiers="const">
+ <return type="int" enum="Environment.SSAOQuality">
+ </return>
+ <description>
+ </description>
+ </method>
<method name="get_ssao_radius" qualifiers="const">
<return type="float">
</return>
@@ -408,12 +426,6 @@
<description>
</description>
</method>
- <method name="is_ssao_blur_enabled" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- </description>
- </method>
<method name="is_ssao_enabled" qualifiers="const">
<return type="bool">
</return>
@@ -794,7 +806,7 @@
<description>
</description>
</method>
- <method name="set_sky_scale">
+ <method name="set_sky_custom_fov">
<return type="void">
</return>
<argument index="0" name="scale" type="float">
@@ -813,7 +825,7 @@
<method name="set_ssao_blur">
<return type="void">
</return>
- <argument index="0" name="enabled" type="bool">
+ <argument index="0" name="mode" type="int" enum="Environment.SSAOBlur">
</argument>
<description>
</description>
@@ -834,6 +846,14 @@
<description>
</description>
</method>
+ <method name="set_ssao_edge_sharpness">
+ <return type="void">
+ </return>
+ <argument index="0" name="edge_sharpness" type="float">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="set_ssao_enabled">
<return type="void">
</return>
@@ -858,6 +878,14 @@
<description>
</description>
</method>
+ <method name="set_ssao_quality">
+ <return type="void">
+ </return>
+ <argument index="0" name="quality" type="int" enum="Environment.SSAOQuality">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="set_ssao_radius">
<return type="void">
</return>
@@ -1042,8 +1070,8 @@
<member name="background_sky" type="Sky" setter="set_sky" getter="get_sky">
[Sky] resource defined as background.
</member>
- <member name="background_sky_scale" type="float" setter="set_sky_scale" getter="get_sky_scale">
- [Sky] resource's scale.
+ <member name="background_sky_custom_fov" type="float" setter="set_sky_custom_fov" getter="get_sky_custom_fov">
+ [Sky] resource's custom field of view.
</member>
<member name="dof_blur_far_amount" type="float" setter="set_dof_blur_far_amount" getter="get_dof_blur_far_amount">
Amount of far blur.
@@ -1172,10 +1200,12 @@
</member>
<member name="ssao_bias" type="float" setter="set_ssao_bias" getter="get_ssao_bias">
</member>
- <member name="ssao_blur" type="bool" setter="set_ssao_blur" getter="is_ssao_blur_enabled">
+ <member name="ssao_blur" type="int" setter="set_ssao_blur" getter="is_ssao_blur_enabled" enum="Environment.SSAOBlur">
</member>
<member name="ssao_color" type="Color" setter="set_ssao_color" getter="get_ssao_color">
</member>
+ <member name="ssao_edge_sharpness" type="float" setter="set_ssao_edge_sharpness" getter="get_ssao_edge_sharpness">
+ </member>
<member name="ssao_enabled" type="bool" setter="set_ssao_enabled" getter="is_ssao_enabled">
</member>
<member name="ssao_intensity" type="float" setter="set_ssao_intensity" getter="get_ssao_intensity">
@@ -1184,6 +1214,8 @@
</member>
<member name="ssao_light_affect" type="float" setter="set_ssao_direct_light_affect" getter="get_ssao_direct_light_affect">
</member>
+ <member name="ssao_quality" type="int" setter="set_ssao_quality" getter="get_ssao_quality" enum="Environment.SSAOQuality">
+ </member>
<member name="ssao_radius" type="float" setter="set_ssao_radius" getter="get_ssao_radius">
</member>
<member name="ssao_radius2" type="float" setter="set_ssao_radius2" getter="get_ssao_radius2">
@@ -1253,5 +1285,19 @@
<constant name="DOF_BLUR_QUALITY_HIGH" value="2">
High depth-of-field blur quality.
</constant>
+ <constant name="SSAO_BLUR_DISABLED" value="0">
+ </constant>
+ <constant name="SSAO_BLUR_1x1" value="1">
+ </constant>
+ <constant name="SSAO_BLUR_2x2" value="2">
+ </constant>
+ <constant name="SSAO_BLUR_3x3" value="3">
+ </constant>
+ <constant name="SSAO_QUALITY_LOW" value="0">
+ </constant>
+ <constant name="SSAO_QUALITY_MEDIUM" value="1">
+ </constant>
+ <constant name="SSAO_QUALITY_HIGH" value="2">
+ </constant>
</constants>
</class>
diff --git a/doc/classes/FileDialog.xml b/doc/classes/FileDialog.xml
index d7a08368a5..b3d131ca40 100644
--- a/doc/classes/FileDialog.xml
+++ b/doc/classes/FileDialog.xml
@@ -86,7 +86,7 @@
<return type="bool">
</return>
<description>
- Return true if the diaog allows show hidden files.
+ Return true if the dialog allows show hidden files.
</description>
</method>
<method name="set_access">
@@ -205,10 +205,10 @@
The dialog allows the selection of file and directory.
</constant>
<constant name="ACCESS_USERDATA" value="1">
- The dialog allows ascess files under [Resource] path(res://) .
+ The dialog allows access files under [Resource] path(res://) .
</constant>
<constant name="ACCESS_FILESYSTEM" value="2">
- The dialog allows ascess files in whole file system.
+ The dialog allows access files in whole file system.
</constant>
</constants>
<theme_items>
diff --git a/doc/classes/FuncRef.xml b/doc/classes/FuncRef.xml
index 1277cef77d..987d750ced 100644
--- a/doc/classes/FuncRef.xml
+++ b/doc/classes/FuncRef.xml
@@ -5,7 +5,7 @@
</brief_description>
<description>
In GDScript, functions are not [i]first-class objects[/i]. This means it is impossible to store them directly as variables, return them from another function, or pass them as arguments.
- However, by creating a [FuncRef] using the [method @GDScript.funcref] function, a reference to a function in a given object can be created, passed around and called.
+ However, by creating a [code]FuncRef[/code] using the [method @GDScript.funcref] function, a reference to a function in a given object can be created, passed around and called.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/GIProbe.xml b/doc/classes/GIProbe.xml
index 9df0b80b35..3f3d24aaaa 100644
--- a/doc/classes/GIProbe.xml
+++ b/doc/classes/GIProbe.xml
@@ -195,6 +195,8 @@
</constant>
<constant name="SUBDIV_256" value="2">
</constant>
+ <constant name="SUBDIV_512" value="3">
+ </constant>
<constant name="SUBDIV_MAX" value="4">
</constant>
</constants>
diff --git a/doc/classes/Generic6DOFJoint.xml b/doc/classes/Generic6DOFJoint.xml
index 4b782e994a..89ec1fd836 100644
--- a/doc/classes/Generic6DOFJoint.xml
+++ b/doc/classes/Generic6DOFJoint.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="Generic6DOFJoint" inherits="Joint" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ The generic 6 degrees of freedom joint can implement a variety of joint-types by locking certain axes' rotation or translation.
</brief_description>
<description>
+ The first 3 dof axes are linear axes, which represent translation of Bodies, and the latter 3 dof axes represent the angular motion. Each axis can be either locked, or limited.
</description>
<tutorials>
</tutorials>
@@ -120,146 +122,217 @@
</methods>
<members>
<member name="angular_limit_x/damping" type="float" setter="set_param_x" getter="get_param_x">
+ The amount of rotational damping across the x-axis.
+ The lower, the longer an impulse from one side takes to travel to the other side.
</member>
<member name="angular_limit_x/enabled" type="bool" setter="set_flag_x" getter="get_flag_x">
+ If [code]true[/code] rotation across the x-axis is enabled.
</member>
<member name="angular_limit_x/erp" type="float" setter="set_param_x" getter="get_param_x">
+ When rotating across x-axis, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower.
</member>
<member name="angular_limit_x/force_limit" type="float" setter="set_param_x" getter="get_param_x">
+ The maximum amount of force that can occur, when rotating arround x-axis.
</member>
<member name="angular_limit_x/lower_angle" type="float" setter="_set_angular_lo_limit_x" getter="_get_angular_lo_limit_x">
+ The minimum rotation in negative direction to break loose and rotate arround the x-axis.
</member>
<member name="angular_limit_x/restitution" type="float" setter="set_param_x" getter="get_param_x">
+ The amount of rotational restitution across the x-axis. The lower, the more restitution occurs.
</member>
<member name="angular_limit_x/softness" type="float" setter="set_param_x" getter="get_param_x">
+ The speed of all rotations across the x-axis.
</member>
<member name="angular_limit_x/upper_angle" type="float" setter="_set_angular_hi_limit_x" getter="_get_angular_hi_limit_x">
+ The minimum rotation in positive direction to break loose and rotate arround the x-axis.
</member>
<member name="angular_limit_y/damping" type="float" setter="set_param_y" getter="get_param_y">
+ The amount of rotational damping across the y-axis. The lower, the more dampening occurs.
</member>
<member name="angular_limit_y/enabled" type="bool" setter="set_flag_y" getter="get_flag_y">
+ If [code]true[/code] rotation across the y-axis is enabled.
</member>
<member name="angular_limit_y/erp" type="float" setter="set_param_y" getter="get_param_y">
+ When rotating across y-axis, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower.
</member>
<member name="angular_limit_y/force_limit" type="float" setter="set_param_y" getter="get_param_y">
+ The maximum amount of force that can occur, when rotating arround y-axis.
</member>
<member name="angular_limit_y/lower_angle" type="float" setter="_set_angular_lo_limit_y" getter="_get_angular_lo_limit_y">
+ The minimum rotation in negative direction to break loose and rotate arround the y-axis.
</member>
<member name="angular_limit_y/restitution" type="float" setter="set_param_y" getter="get_param_y">
+ The amount of rotational restitution across the y-axis. The lower, the more restitution occurs.
</member>
<member name="angular_limit_y/softness" type="float" setter="set_param_y" getter="get_param_y">
+ The speed of all rotations across the y-axis.
</member>
<member name="angular_limit_y/upper_angle" type="float" setter="_set_angular_hi_limit_y" getter="_get_angular_hi_limit_y">
+ The minimum rotation in positive direction to break loose and rotate arround the y-axis.
</member>
<member name="angular_limit_z/damping" type="float" setter="set_param_z" getter="get_param_z">
+ The amount of rotational damping across the z-axis. The lower, the more dampening occurs.
</member>
<member name="angular_limit_z/enabled" type="bool" setter="set_flag_z" getter="get_flag_z">
+ If [code]true[/code] rotation across the z-axis is enabled.
</member>
<member name="angular_limit_z/erp" type="float" setter="set_param_z" getter="get_param_z">
+ When rotating across z-axis, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower.
</member>
<member name="angular_limit_z/force_limit" type="float" setter="set_param_z" getter="get_param_z">
+ The maximum amount of force that can occur, when rotating arround z-axis.
</member>
<member name="angular_limit_z/lower_angle" type="float" setter="_set_angular_lo_limit_z" getter="_get_angular_lo_limit_z">
+ The minimum rotation in negative direction to break loose and rotate arround the z-axis.
</member>
<member name="angular_limit_z/restitution" type="float" setter="set_param_z" getter="get_param_z">
+ The amount of rotational restitution across the z-axis. The lower, the more restitution occurs.
</member>
<member name="angular_limit_z/softness" type="float" setter="set_param_z" getter="get_param_z">
+ The speed of all rotations across the z-axis.
</member>
<member name="angular_limit_z/upper_angle" type="float" setter="_set_angular_hi_limit_z" getter="_get_angular_hi_limit_z">
+ The minimum rotation in positive direction to break loose and rotate arround the z-axis.
</member>
<member name="angular_motor_x/enabled" type="bool" setter="set_flag_x" getter="get_flag_x">
+ If [code]true[/code] a rotating motor at the x-axis is enabled.
</member>
<member name="angular_motor_x/force_limit" type="float" setter="set_param_x" getter="get_param_x">
+ Maximum acceleration for the motor at the x-axis.
</member>
<member name="angular_motor_x/target_velocity" type="float" setter="set_param_x" getter="get_param_x">
+ Target speed for the motor at the x-axis.
</member>
<member name="angular_motor_y/enabled" type="bool" setter="set_flag_y" getter="get_flag_y">
+ If [code]true[/code] a rotating motor at the y-axis is enabled.
</member>
<member name="angular_motor_y/force_limit" type="float" setter="set_param_y" getter="get_param_y">
+ Maximum acceleration for the motor at the y-axis.
</member>
<member name="angular_motor_y/target_velocity" type="float" setter="set_param_y" getter="get_param_y">
+ Target speed for the motor at the y-axis.
</member>
<member name="angular_motor_z/enabled" type="bool" setter="set_flag_z" getter="get_flag_z">
+ If [code]true[/code] a rotating motor at the z-axis is enabled.
</member>
<member name="angular_motor_z/force_limit" type="float" setter="set_param_z" getter="get_param_z">
+ Maximum acceleration for the motor at the z-axis.
</member>
<member name="angular_motor_z/target_velocity" type="float" setter="set_param_z" getter="get_param_z">
+ Target speed for the motor at the z-axis.
</member>
<member name="linear_limit_x/damping" type="float" setter="set_param_x" getter="get_param_x">
+ The amount of damping that happens at the x-motion.
</member>
<member name="linear_limit_x/enabled" type="bool" setter="set_flag_x" getter="get_flag_x">
+ If [code]true[/code] the linear motion across the x-axis is enabled.
</member>
<member name="linear_limit_x/lower_distance" type="float" setter="set_param_x" getter="get_param_x">
+ The minimum difference between the pivot points' x-axis.
</member>
<member name="linear_limit_x/restitution" type="float" setter="set_param_x" getter="get_param_x">
+ The amount of restitution on the x-axis movement The lower, the more momentum gets lost.
</member>
<member name="linear_limit_x/softness" type="float" setter="set_param_x" getter="get_param_x">
+ A factor applied to the movement across the x-axis The lower, the slower the movement.
</member>
<member name="linear_limit_x/upper_distance" type="float" setter="set_param_x" getter="get_param_x">
+ The maximum difference between the pivot points' x-axis.
</member>
<member name="linear_limit_y/damping" type="float" setter="set_param_y" getter="get_param_y">
+ The amount of damping that happens at the y-motion.
</member>
<member name="linear_limit_y/enabled" type="bool" setter="set_flag_y" getter="get_flag_y">
+ If [code]true[/code] the linear motion across the y-axis is enabled.
</member>
<member name="linear_limit_y/lower_distance" type="float" setter="set_param_y" getter="get_param_y">
+ The minimum difference between the pivot points' y-axis.
</member>
<member name="linear_limit_y/restitution" type="float" setter="set_param_y" getter="get_param_y">
+ The amount of restitution on the y-axis movement The lower, the more momentum gets lost.
</member>
<member name="linear_limit_y/softness" type="float" setter="set_param_y" getter="get_param_y">
+ A factor applied to the movement across the y-axis The lower, the slower the movement.
</member>
<member name="linear_limit_y/upper_distance" type="float" setter="set_param_y" getter="get_param_y">
+ The maximum difference between the pivot points' y-axis.
</member>
<member name="linear_limit_z/damping" type="float" setter="set_param_z" getter="get_param_z">
+ The amount of damping that happens at the z-motion.
</member>
<member name="linear_limit_z/enabled" type="bool" setter="set_flag_z" getter="get_flag_z">
+ If [code]true[/code] the linear motion across the z-axis is enabled.
</member>
<member name="linear_limit_z/lower_distance" type="float" setter="set_param_z" getter="get_param_z">
+ The minimum difference between the pivot points' z-axis.
</member>
<member name="linear_limit_z/restitution" type="float" setter="set_param_z" getter="get_param_z">
+ The amount of restitution on the z-axis movement The lower, the more momentum gets lost.
</member>
<member name="linear_limit_z/softness" type="float" setter="set_param_z" getter="get_param_z">
+ A factor applied to the movement across the z-axis The lower, the slower the movement.
</member>
<member name="linear_limit_z/upper_distance" type="float" setter="set_param_z" getter="get_param_z">
+ The maximum difference between the pivot points' z-axis.
</member>
</members>
<constants>
<constant name="PARAM_LINEAR_LOWER_LIMIT" value="0">
+ The minimum difference between the pivot points' axes.
</constant>
<constant name="PARAM_LINEAR_UPPER_LIMIT" value="1">
+ The maximum difference between the pivot points' axes.
</constant>
<constant name="PARAM_LINEAR_LIMIT_SOFTNESS" value="2">
+ A factor applied to the movement across the axes The lower, the slower the movement.
</constant>
<constant name="PARAM_LINEAR_RESTITUTION" value="3">
+ The amount of restitution on the axes movement The lower, the more momentum gets lost.
</constant>
<constant name="PARAM_LINEAR_DAMPING" value="4">
+ The amount of damping that happens at the linear motion across the axes.
</constant>
<constant name="PARAM_ANGULAR_LOWER_LIMIT" value="5">
+ The minimum rotation in negative direction to break loose and rotate arround the axes.
</constant>
<constant name="PARAM_ANGULAR_UPPER_LIMIT" value="6">
+ The minimum rotation in positive direction to break loose and rotate arround the axes.
</constant>
<constant name="PARAM_ANGULAR_LIMIT_SOFTNESS" value="7">
+ The speed of all rotations across the axes.
</constant>
<constant name="PARAM_ANGULAR_DAMPING" value="8">
+ The amount of rotational damping across the axes. The lower, the more dampening occurs.
</constant>
<constant name="PARAM_ANGULAR_RESTITUTION" value="9">
+ The amount of rotational restitution across the axes. The lower, the more restitution occurs.
</constant>
<constant name="PARAM_ANGULAR_FORCE_LIMIT" value="10">
+ The maximum amount of force that can occur, when rotating arround the axes.
</constant>
<constant name="PARAM_ANGULAR_ERP" value="11">
+ When rotating across the axes, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower.
</constant>
<constant name="PARAM_ANGULAR_MOTOR_TARGET_VELOCITY" value="12">
+ Target speed for the motor at the axes.
</constant>
<constant name="PARAM_ANGULAR_MOTOR_FORCE_LIMIT" value="13">
+ Maximum acceleration for the motor at the axes.
</constant>
<constant name="PARAM_MAX" value="14">
+ End flag of PARAM_* constants, used internally.
</constant>
<constant name="FLAG_ENABLE_LINEAR_LIMIT" value="0">
+ If [code]set[/code] there is linear motion possible within the given limits.
</constant>
<constant name="FLAG_ENABLE_ANGULAR_LIMIT" value="1">
+ If [code]set[/code] there is rotational motion possible.
</constant>
<constant name="FLAG_ENABLE_MOTOR" value="2">
+ If [code]set[/code] there is a rotational motor across these axes.
</constant>
<constant name="FLAG_MAX" value="3">
+ End flag of FLAG_* constants, used internally.
</constant>
</constants>
</class>
diff --git a/doc/classes/GraphEdit.xml b/doc/classes/GraphEdit.xml
index f064029a01..01d578be5e 100644
--- a/doc/classes/GraphEdit.xml
+++ b/doc/classes/GraphEdit.xml
@@ -228,8 +228,6 @@
<constants>
</constants>
<theme_items>
- <theme_item name="SnapGrid" type="Texture">
- </theme_item>
<theme_item name="bezier_len_neg" type="int">
</theme_item>
<theme_item name="bezier_len_pos" type="int">
@@ -246,5 +244,7 @@
</theme_item>
<theme_item name="reset" type="Texture">
</theme_item>
+ <theme_item name="snap" type="Texture">
+ </theme_item>
</theme_items>
</class>
diff --git a/doc/classes/GrooveJoint2D.xml b/doc/classes/GrooveJoint2D.xml
index 3db2d9aee9..412a4504c3 100644
--- a/doc/classes/GrooveJoint2D.xml
+++ b/doc/classes/GrooveJoint2D.xml
@@ -46,8 +46,10 @@
</methods>
<members>
<member name="initial_offset" type="float" setter="set_initial_offset" getter="get_initial_offset">
+ The body B's initial anchor position defined by the joint's origin and a local offset [member initial_offset] along the joint's y axis (along the groove). Default value: [code]25[/code]
</member>
<member name="length" type="float" setter="set_length" getter="get_length">
+ The groove's length. The groove is from the joint's origin towards [member length] along the joint's local y axis. Default value: [code]50[/code]
</member>
</members>
<constants>
diff --git a/doc/classes/HSlider.xml b/doc/classes/HSlider.xml
index 91f95d1548..25e62b90e3 100644
--- a/doc/classes/HSlider.xml
+++ b/doc/classes/HSlider.xml
@@ -19,6 +19,8 @@
</theme_item>
<theme_item name="grabber" type="Texture">
</theme_item>
+ <theme_item name="grabber_area" type="StyleBox">
+ </theme_item>
<theme_item name="grabber_disabled" type="Texture">
</theme_item>
<theme_item name="grabber_disabled" type="StyleBox">
diff --git a/doc/classes/HTTPClient.xml b/doc/classes/HTTPClient.xml
index cf48ec84f6..f148545848 100644
--- a/doc/classes/HTTPClient.xml
+++ b/doc/classes/HTTPClient.xml
@@ -16,7 +16,7 @@
<return type="void">
</return>
<description>
- Cloces the current connection, allows for reusal of [HTTPClient].
+ Cloces the current connection, allows for reusal of [code]HTTPClient[/code].
</description>
</method>
<method name="connect_to_host">
@@ -84,7 +84,7 @@
<return type="bool">
</return>
<description>
- Return whether this [HTTPClient] has a response available.
+ Return whether this [code]HTTPClient[/code] has a response available.
</description>
</method>
<method name="is_blocking_mode_enabled" qualifiers="const">
@@ -98,7 +98,7 @@
<return type="bool">
</return>
<description>
- Return whether this [HTTPClient] has a response that is chunked.
+ Return whether this [code]HTTPClient[/code] has a response that is chunked.
</description>
</method>
<method name="poll">
@@ -169,24 +169,6 @@
Sends body raw, as a byte array, does not encode it in any way.
</description>
</method>
- <method name="send_body_data">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="body" type="PoolByteArray">
- </argument>
- <description>
- Stub function
- </description>
- </method>
- <method name="send_body_text">
- <return type="int" enum="Error">
- </return>
- <argument index="0" name="body" type="String">
- </argument>
- <description>
- Stub function
- </description>
- </method>
<method name="set_blocking_mode">
<return type="void">
</return>
diff --git a/doc/classes/HTTPRequest.xml b/doc/classes/HTTPRequest.xml
index c2839890cf..b780d29d0e 100644
--- a/doc/classes/HTTPRequest.xml
+++ b/doc/classes/HTTPRequest.xml
@@ -166,7 +166,7 @@
Request does not have a response(yet).
</constant>
<constant name="RESULT_BODY_SIZE_LIMIT_EXCEEDED" value="7">
- Request exceded its maximum size limit, see [method set_body_size_limit].
+ Request exceeded its maximum size limit, see [method set_body_size_limit].
</constant>
<constant name="RESULT_REQUEST_FAILED" value="8">
Request failed. (unused)
diff --git a/doc/classes/HingeJoint.xml b/doc/classes/HingeJoint.xml
index ae3693c3a4..d18e63f8a3 100644
--- a/doc/classes/HingeJoint.xml
+++ b/doc/classes/HingeJoint.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="HingeJoint" inherits="Joint" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ A hinge between two 3D bodies.
</brief_description>
<description>
+ Normaly uses the z-axis of body A as the hinge axis, another axis can be specified when adding it manually though.
</description>
<tutorials>
</tutorials>
@@ -48,50 +50,70 @@
</methods>
<members>
<member name="angular_limit/bias" type="float" setter="set_param" getter="get_param">
+ The speed with which the rotation across the axis perpendicular to the hinge gets corrected.
</member>
<member name="angular_limit/enable" type="bool" setter="set_flag" getter="get_flag">
+ If [code]true[/code] the hinges maximum and minimum rotation, defined by [member angular_limit/lower] and [member angular_limit/upper] has effects.
</member>
<member name="angular_limit/lower" type="float" setter="_set_lower_limit" getter="_get_lower_limit">
+ The minimum rotation. only active if [member angular_limit/enable] is [code]true[/code].
</member>
<member name="angular_limit/relaxation" type="float" setter="set_param" getter="get_param">
+ The lower this value, the more the rotation gets slowed down.
</member>
<member name="angular_limit/softness" type="float" setter="set_param" getter="get_param">
</member>
<member name="angular_limit/upper" type="float" setter="_set_upper_limit" getter="_get_upper_limit">
+ The maximum rotation. only active if [member angular_limit/enable] is [code]true[/code].
</member>
<member name="motor/enable" type="bool" setter="set_flag" getter="get_flag">
+ When activated, a motor turns the hinge.
</member>
<member name="motor/max_impulse" type="float" setter="set_param" getter="get_param">
+ Maximum acceleration for the motor.
</member>
<member name="motor/target_velocity" type="float" setter="set_param" getter="get_param">
+ Target speed for the motor.
</member>
<member name="params/bias" type="float" setter="set_param" getter="get_param">
+ The speed with wich the two bodies get pulled together when they move in different directions.
</member>
</members>
<constants>
<constant name="PARAM_BIAS" value="0">
+ The speed with wich the two bodies get pulled together when they move in different directions.
</constant>
<constant name="PARAM_LIMIT_UPPER" value="1">
+ The maximum rotation. only active if [member angular_limit/enable] is [code]true[/code].
</constant>
<constant name="PARAM_LIMIT_LOWER" value="2">
+ The minimum rotation. only active if [member angular_limit/enable] is [code]true[/code].
</constant>
<constant name="PARAM_LIMIT_BIAS" value="3">
+ The speed with which the rotation across the axis perpendicular to the hinge gets corrected.
</constant>
<constant name="PARAM_LIMIT_SOFTNESS" value="4">
</constant>
<constant name="PARAM_LIMIT_RELAXATION" value="5">
+ The lower this value, the more the rotation gets slowed down.
</constant>
<constant name="PARAM_MOTOR_TARGET_VELOCITY" value="6">
+ Target speed for the motor.
</constant>
<constant name="PARAM_MOTOR_MAX_IMPULSE" value="7">
+ Maximum acceleration for the motor.
</constant>
<constant name="PARAM_MAX" value="8">
+ End flag of PARAM_* constants, used internally.
</constant>
<constant name="FLAG_USE_LIMIT" value="0">
+ If [code]true[/code] the hinges maximum and minimum rotation, defined by [member angular_limit/lower] and [member angular_limit/upper] has effects.
</constant>
<constant name="FLAG_ENABLE_MOTOR" value="1">
+ When activated, a motor turns the hinge.
</constant>
<constant name="FLAG_MAX" value="2">
+ End flag of FLAG_* constants, used internally.
</constant>
</constants>
</class>
diff --git a/doc/classes/Image.xml b/doc/classes/Image.xml
index f4ea9d00ce..905a844094 100644
--- a/doc/classes/Image.xml
+++ b/doc/classes/Image.xml
@@ -4,7 +4,7 @@
Image datatype.
</brief_description>
<description>
- Native image datatype. Contains image data, which can be converted to a texture, and several functions to interact with it.
+ Native image datatype. Contains image data, which can be converted to a [Texture], and several functions to interact with it. The maximum width and height for an [code]Image[/code] is 16384 pixels.
</description>
<tutorials>
</tutorials>
@@ -21,7 +21,7 @@
<argument index="2" name="dst" type="Vector2">
</argument>
<description>
- Alpha-blends a "src_rect" [Rect2] from "src" [Image] to this [Image] on coordinates "dest".
+ Alpha-blends [code]src_rect[/code] from [code]src[/code] image to this image at coordinates [code]dest[/code].
</description>
</method>
<method name="blend_rect_mask">
@@ -36,7 +36,7 @@
<argument index="3" name="dst" type="Vector2">
</argument>
<description>
- Alpha-blends a "src_rect" [Rect2] from "src" [Image] to this [Image] using a "mask" [Image] on coordinates "dest". Alpha channels are required for both "src" and "mask", dest pixels and src pixels will blend if the corresponding mask pixel's alpha value is not 0. "src" [Image] and "mask" [Image] *must* have the same size (width and height) but they can have different formats
+ Alpha-blends [code]src_rect[/code] from [code]src[/code] image to this image using [code]mask[/code] image at coordinates [code]dst[/code]. Alpha channels are required for both [code]src[/code] and [code]mask[/code]. [code]dst[/code] pixels and [code]src[/code] pixels will blend if the corresponding mask pixel's alpha value is not 0. [code]src[/code] image and [code]mask[/code] image [b]must[/b] have the same size (width and height) but they can have different formats.
</description>
</method>
<method name="blit_rect">
@@ -49,7 +49,7 @@
<argument index="2" name="dst" type="Vector2">
</argument>
<description>
- Copy a "src_rect" [Rect2] from "src" [Image] to this [Image] on coordinates "dest".
+ Copies [code]src_rect[/code] from [code]src[/code] image to this image at coordinates [code]dst[/code].
</description>
</method>
<method name="blit_rect_mask">
@@ -64,13 +64,14 @@
<argument index="3" name="dst" type="Vector2">
</argument>
<description>
- Blits a "src_rect" [Rect2] from "src" [Image] to this [Image] using a "mask" [Image] on coordinates "dest". Alpha channel is required for "mask", will copy src pixel onto dest if the corresponding mask pixel's alpha value is not 0. "src" [Image] and "mask" [Image] *must* have the same size (width and height) but they can have different formats
+ Blits [code]src_rect[/code] area from [code]src[/code] image to this image at the coordinates given by [code]dst[/code]. [code]src[/code] pixel is copied onto [code]dst[/code] if the corresponding [code]mask[/code] pixel's alpha value is not 0. [code]src[/code] image and [code]mask[/code] image [b]must[/b] have the same size (width and height) but they can have different formats.
</description>
</method>
<method name="clear_mipmaps">
<return type="void">
</return>
<description>
+ Removes the image's mipmaps.
</description>
</method>
<method name="compress">
@@ -83,6 +84,7 @@
<argument index="2" name="lossy_quality" type="float">
</argument>
<description>
+ Compresses the image to use less memory. Can not directly access pixel data while the image is compressed. Returns error if the chosen compression mode is not available. See [code]COMPRESS_*[/code] constants.
</description>
</method>
<method name="convert">
@@ -91,6 +93,7 @@
<argument index="0" name="format" type="int" enum="Image.Format">
</argument>
<description>
+ Converts the image's format. See [code]FORMAT_*[/code] constants.
</description>
</method>
<method name="copy_from">
@@ -99,6 +102,7 @@
<argument index="0" name="src" type="Image">
</argument>
<description>
+ Copies [code]src[/code] image to this image.
</description>
</method>
<method name="create">
@@ -113,7 +117,7 @@
<argument index="3" name="format" type="int" enum="Image.Format">
</argument>
<description>
- Create an empty image of a specific size and format.
+ Creates an empty image of given size and format. See [code]FORMAT_*[/code] constants. If [code]use_mipmaps[/code] is true then generate mipmaps for this image. See the [code]generate_mipmaps[/code] method.
</description>
</method>
<method name="create_from_data">
@@ -130,6 +134,7 @@
<argument index="4" name="data" type="PoolByteArray">
</argument>
<description>
+ Creates a new image of given size and format. See [code]FORMAT_*[/code] constants. Fills the image with the given raw data. If [code]use_mipmaps[/code] is true then generate mipmaps for this image. See the [code]generate_mipmaps[/code] method.
</description>
</method>
<method name="crop">
@@ -140,24 +145,28 @@
<argument index="1" name="height" type="int">
</argument>
<description>
+ Crops the image to the given [code]width[/code] and [code]height[/code]. If the specified size is larger than the current size, the extra area is filled with black pixels.
</description>
</method>
<method name="decompress">
<return type="int" enum="Error">
</return>
<description>
+ Decompresses the image if it is compressed. Returns an error if decompress function is not available.
</description>
</method>
<method name="detect_alpha" qualifiers="const">
<return type="int" enum="Image.AlphaMode">
</return>
<description>
+ Returns ALPHA_BLEND if the image has data for alpha values. Returns ALPHA_BIT if all the alpha values are below a certain threshold or the maximum value. Returns ALPHA_NONE if no data for alpha values is found.
</description>
</method>
<method name="expand_x2_hq2x">
<return type="void">
</return>
<description>
+ Stretches the image and enlarges it by a factor of 2. No interpolation is done.
</description>
</method>
<method name="fill">
@@ -166,52 +175,56 @@
<argument index="0" name="color" type="Color">
</argument>
<description>
- Fills an [Image] with a specified [Color]
+ Fills the image with a given [Color].
</description>
</method>
<method name="fix_alpha_edges">
<return type="void">
</return>
<description>
+ Blends low-alpha pixels with nearby pixels.
</description>
</method>
<method name="flip_x">
<return type="void">
</return>
<description>
+ Flips the image horizontally.
</description>
</method>
<method name="flip_y">
<return type="void">
</return>
<description>
+ Flips the image vertically.
</description>
</method>
<method name="generate_mipmaps">
<return type="int" enum="Error">
</return>
<description>
+ Generates mipmaps for the image. Mipmaps are pre-calculated and lower resolution copies of the image. Mipmaps are automatically used if the image needs to be scaled down when rendered. This improves image quality and the performance of the rendering. Returns an error if the image is compressed, in a custom format or if the image's width/height is 0.
</description>
</method>
<method name="get_data" qualifiers="const">
<return type="PoolByteArray">
</return>
<description>
- Return the raw data of the [Image].
+ Returns the image's raw data.
</description>
</method>
<method name="get_format" qualifiers="const">
<return type="int" enum="Image.Format">
</return>
<description>
- Return the format of the [Image], one of [Image].FORMAT_*.
+ Returns the image's raw data.
</description>
</method>
<method name="get_height" qualifiers="const">
<return type="int">
</return>
<description>
- Return the height of the [Image].
+ Returns the image's height.
</description>
</method>
<method name="get_mipmap_offset" qualifiers="const">
@@ -220,6 +233,7 @@
<argument index="0" name="mipmap" type="int">
</argument>
<description>
+ Returns the offset where the image's mipmap with index [code]mipmap[/code] is stored in the [code]data[/code] dictionary.
</description>
</method>
<method name="get_pixel" qualifiers="const">
@@ -230,6 +244,7 @@
<argument index="1" name="y" type="int">
</argument>
<description>
+ Returns the color of the pixel at [code](x, y)[/code] if the image is locked. If the image is unlocked it always returns a [Color] with the value [code](0, 0, 0, 1.0)[/code].
</description>
</method>
<method name="get_rect" qualifiers="const">
@@ -238,51 +253,56 @@
<argument index="0" name="rect" type="Rect2">
</argument>
<description>
- Return a new [Image] that is a copy of "area" in this [Image].
+ Returns a new image that is a copy of the image's area specified with [code]rect[/code].
</description>
</method>
<method name="get_size" qualifiers="const">
<return type="Vector2">
</return>
<description>
+ Returns the image's size (width and height).
</description>
</method>
<method name="get_used_rect" qualifiers="const">
<return type="Rect2">
</return>
<description>
- Return the area of this [Image] that is used/visibly colored/opaque.
+ Returns a [Rect2] enclosing the visible portion of the image.
</description>
</method>
<method name="get_width" qualifiers="const">
<return type="int">
</return>
<description>
- Return the width of the [Image].
+ Returns the image's width.
</description>
</method>
<method name="has_mipmaps" qualifiers="const">
<return type="bool">
</return>
<description>
+ Returns [code]true[/code] if the image has generated mipmaps.
</description>
</method>
<method name="is_compressed" qualifiers="const">
<return type="bool">
</return>
<description>
+ Returns [code]true[/code] if the image is compressed.
</description>
</method>
<method name="is_empty" qualifiers="const">
<return type="bool">
</return>
<description>
+ Returns [code]true[/code] if the image has no data.
</description>
</method>
<method name="is_invisible" qualifiers="const">
<return type="bool">
</return>
<description>
+ Returns [code]true[/code] if all the image's pixels have an alpha value of 0. Returns [code]false[/code] if any pixel has an alpha value higher than 0.
</description>
</method>
<method name="load">
@@ -291,25 +311,28 @@
<argument index="0" name="path" type="String">
</argument>
<description>
- Load an [Image].
+ Loads an image from file [code]path[/code].
</description>
</method>
<method name="lock">
<return type="void">
</return>
<description>
+ Locks the data and prevents changes.
</description>
</method>
<method name="normalmap_to_xy">
<return type="void">
</return>
<description>
+ Converts the image's data to represent coordinates on a 3D plane. This is used when the image represents a normalmap. A normalmap can add lots of detail to a 3D surface without increasing the polygon count.
</description>
</method>
<method name="premultiply_alpha">
<return type="void">
</return>
<description>
+ Multiplies color values with alpha values. Resulting color values for a pixel are [code](color * alpha)/256[/code].
</description>
</method>
<method name="resize">
@@ -322,6 +345,7 @@
<argument index="2" name="interpolation" type="int" enum="Image.Interpolation" default="1">
</argument>
<description>
+ Resizes the image to the given [code]width[/code] and [code]height[/code]. New pixels are calculated using [code]interpolation[/code]. See [code]interpolation[/code] constants.
</description>
</method>
<method name="resize_to_po2">
@@ -330,6 +354,7 @@
<argument index="0" name="square" type="bool" default="false">
</argument>
<description>
+ Resizes the image to the nearest power of 2 for the width and height. If [code]square[/code] is [code]true[/code] then set width and height to be the same.
</description>
</method>
<method name="save_png" qualifiers="const">
@@ -338,7 +363,7 @@
<argument index="0" name="path" type="String">
</argument>
<description>
- Save this [Image] as a png.
+ Saves the image as a PNG file to [code]path[/code].
</description>
</method>
<method name="set_pixel">
@@ -351,29 +376,41 @@
<argument index="2" name="color" type="Color">
</argument>
<description>
+ Sets the [Color] of the pixel at [code](x, y)[/code] if the image is unlocked. Example:
+ [code]
+ var img = Image.new()
+ img.lock()
+ img.set_pixel(x, y, color) # Does not have an effect
+ img.unlock()
+ img.set_pixel(x, y, color) # Works
+ [/code].
</description>
</method>
<method name="shrink_x2">
<return type="void">
</return>
<description>
+ Shrinks the image by a factor of 2.
</description>
</method>
<method name="srgb_to_linear">
<return type="void">
</return>
<description>
+ Converts the raw data from the sRGB colorspace to a linear scale.
</description>
</method>
<method name="unlock">
<return type="void">
</return>
<description>
+ Unlocks the data for writing access.
</description>
</method>
</methods>
<members>
<member name="data" type="Dictionary" setter="_set_data" getter="_get_data">
+ Holds all of the image's color data in a given format. See [code]FORMAT_*[/code] constants.
</member>
</members>
<constants>
diff --git a/doc/classes/ImageTexture.xml b/doc/classes/ImageTexture.xml
index fdaee798db..b392252399 100644
--- a/doc/classes/ImageTexture.xml
+++ b/doc/classes/ImageTexture.xml
@@ -23,7 +23,7 @@
<argument index="3" name="flags" type="int" default="7">
</argument>
<description>
- Create a new [ImageTexture] with "width" and "height".
+ Create a new [code]ImageTexture[/code] with "width" and "height".
"format" one of [Image].FORMAT_*.
"flags" one or more of [Texture].FLAG_*.
</description>
@@ -36,28 +36,28 @@
<argument index="1" name="flags" type="int" default="7">
</argument>
<description>
- Create a new [ImageTexture] from an [Image] with "flags" from [Texture].FLAG_*.
+ Create a new [code]ImageTexture[/code] from an [Image] with "flags" from [Texture].FLAG_*.
</description>
</method>
<method name="get_format" qualifiers="const">
<return type="int" enum="Image.Format">
</return>
<description>
- Return the format of the [ImageTexture], one of [Image].FORMAT_*.
+ Return the format of the [code]ImageTexture[/code], one of [Image].FORMAT_*.
</description>
</method>
<method name="get_lossy_storage_quality" qualifiers="const">
<return type="float">
</return>
<description>
- Return the storage quality for [ImageTexture].STORAGE_COMPRESS_LOSSY.
+ Return the storage quality for [code]ImageTexture[/code].STORAGE_COMPRESS_LOSSY.
</description>
</method>
<method name="get_storage" qualifiers="const">
<return type="int" enum="ImageTexture.Storage">
</return>
<description>
- Return the storage type. One of [ImageTexture].STORAGE_*.
+ Return the storage type. One of [code]ImageTexture[/code].STORAGE_*.
</description>
</method>
<method name="load">
@@ -66,7 +66,7 @@
<argument index="0" name="path" type="String">
</argument>
<description>
- Load an [ImageTexture].
+ Load an [code]ImageTexture[/code].
</description>
</method>
<method name="set_data">
@@ -75,7 +75,7 @@
<argument index="0" name="image" type="Image">
</argument>
<description>
- Set the [Image] of this [ImageTexture].
+ Set the [Image] of this [code]ImageTexture[/code].
</description>
</method>
<method name="set_lossy_storage_quality">
@@ -84,7 +84,7 @@
<argument index="0" name="quality" type="float">
</argument>
<description>
- Set the storage quality in case of [ImageTexture].STORAGE_COMPRESS_LOSSY.
+ Set the storage quality in case of [code]ImageTexture[/code].STORAGE_COMPRESS_LOSSY.
</description>
</method>
<method name="set_size_override">
@@ -102,7 +102,7 @@
<argument index="0" name="mode" type="int" enum="ImageTexture.Storage">
</argument>
<description>
- Set the storage type. One of [ImageTexture].STORAGE_*.
+ Set the storage type. One of [code]ImageTexture[/code].STORAGE_*.
</description>
</method>
</methods>
diff --git a/doc/classes/Input.xml b/doc/classes/Input.xml
index 3d8b4154f8..d2d01dacb4 100644
--- a/doc/classes/Input.xml
+++ b/doc/classes/Input.xml
@@ -4,7 +4,7 @@
A Singleton that deals with inputs.
</brief_description>
<description>
- A Singleton that deals with inputs. This includes key presses, mouse buttons and movement, joypads, and input actions.
+ A Singleton that deals with inputs. This includes key presses, mouse buttons and movement, joypads, and input actions. Actions and their events can be set in the Project Settings / Input Map tab. Or be set with [InputMap].
</description>
<tutorials>
</tutorials>
@@ -75,7 +75,7 @@
<argument index="1" name="axis" type="int">
</argument>
<description>
- Returns the current value of the joypad axis at given index (see JOY_* constants in [@Global Scope])
+ Returns the current value of the joypad axis at given index (see [code]JOY_*[/code] constants in [@Global Scope])
</description>
</method>
<method name="get_joy_axis_index_from_string">
@@ -180,6 +180,7 @@
<argument index="0" name="action" type="String">
</argument>
<description>
+ Returns [code]true[/code] when you start pressing the action event.
</description>
</method>
<method name="is_action_just_released" qualifiers="const">
@@ -188,6 +189,7 @@
<argument index="0" name="action" type="String">
</argument>
<description>
+ Returns [code]true[/code] when you stop pressing the action event.
</description>
</method>
<method name="is_action_pressed" qualifiers="const">
@@ -196,7 +198,7 @@
<argument index="0" name="action" type="String">
</argument>
<description>
- Returns true or false depending on whether the action event is pressed. Actions and their events can be set in the Project Settings / Input Map tab. Or be set with [InputMap].
+ Returns [code]true[/code] if you are pressing the action event.
</description>
</method>
<method name="is_joy_button_pressed" qualifiers="const">
@@ -207,7 +209,7 @@
<argument index="1" name="button" type="int">
</argument>
<description>
- Returns if the joypad button at the given index is currently pressed. (see JOY_* constants in [@Global Scope])
+ Returns [code]true[/code] if you are pressing the joypad button. (see [code]JOY_*[/code] constants in [@Global Scope])
</description>
</method>
<method name="is_joy_known">
@@ -216,7 +218,7 @@
<argument index="0" name="device" type="int">
</argument>
<description>
- Returns if the specified device is known by the system. This means that it sets all button and axis indices exactly as defined in the JOY_* constants (see [@Global Scope]). Unknown joypads are not expected to match these constants, but you can still retrieve events from them.
+ Returns [code]true[/code] if the system knows the specified device. This means that it sets all button and axis indices exactly as defined in the [code]JOY_*[/code] constants (see [@Global Scope]). Unknown joypads are not expected to match these constants, but you can still retrieve events from them.
</description>
</method>
<method name="is_key_pressed" qualifiers="const">
@@ -225,7 +227,7 @@
<argument index="0" name="scancode" type="int">
</argument>
<description>
- Returns true or false depending on whether the key is pressed or not. You can pass KEY_*, which are pre-defined constants listed in [@Global Scope].
+ Returns [code]true[/code] if you are pressing the key. You can pass [code]KEY_*[/code], which are pre-defined constants listed in [@Global Scope].
</description>
</method>
<method name="is_mouse_button_pressed" qualifiers="const">
@@ -234,7 +236,21 @@
<argument index="0" name="button" type="int">
</argument>
<description>
- Returns true or false depending on whether mouse button is pressed or not. You can pass BUTTON_*, which are pre-defined constants listed in [@Global Scope].
+ Returns [code]true[/code] if you are pressing the mouse button. You can pass [code]BUTTON_*[/code], which are pre-defined constants listed in [@Global Scope].
+ </description>
+ </method>
+ <method name="joy_connection_changed">
+ <return type="void">
+ </return>
+ <argument index="0" name="device" type="int">
+ </argument>
+ <argument index="1" name="connected" type="bool">
+ </argument>
+ <argument index="2" name="name" type="String">
+ </argument>
+ <argument index="3" name="guid" type="String">
+ </argument>
+ <description>
</description>
</method>
<method name="parse_input_event">
diff --git a/doc/classes/InputEvent.xml b/doc/classes/InputEvent.xml
index 392ee25ad6..c6abf2fee5 100644
--- a/doc/classes/InputEvent.xml
+++ b/doc/classes/InputEvent.xml
@@ -4,8 +4,10 @@
Generic input event
</brief_description>
<description>
+ Base class of all sort of input event. See [method Node._input].
</description>
<tutorials>
+ http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html
</tutorials>
<demos>
</demos>
@@ -16,7 +18,7 @@
<argument index="0" name="event" type="InputEvent">
</argument>
<description>
- Returns true if this input event matches the event passed.
+ Returns [code]true[/code] if this event matches [code]event[event].
</description>
</method>
<method name="as_text" qualifiers="const">
@@ -30,14 +32,14 @@
<return type="int">
</return>
<description>
- Returns the id of the device that generated the event.
+ Returns the device's id that generated the event.
</description>
</method>
<method name="get_id" qualifiers="const">
<return type="int">
</return>
<description>
- Returns the id of the event.
+ Returns the event's ID.
</description>
</method>
<method name="is_action" qualifiers="const">
@@ -46,7 +48,7 @@
<argument index="0" name="action" type="String">
</argument>
<description>
- Returns true if this input event matches a pre-defined action, no matter the type.
+ Returns [code]true[/code] if this input event matches a pre-defined action of any type.
</description>
</method>
<method name="is_action_pressed" qualifiers="const">
@@ -55,7 +57,7 @@
<argument index="0" name="action" type="String">
</argument>
<description>
- Returns true if the given action is being pressed (and is not an echo event for KEY events). Not relevant for the event types MOUSE_MOTION, SCREEN_DRAG and NONE.
+ Returns [code]true[/code] if the given action is being pressed (and is not an echo event for KEY events). Not relevant for the event types [code]MOUSE_MOTION[/code], [code]SCREEN_DRAG[/code] or [code]NONE[/code].
</description>
</method>
<method name="is_action_released" qualifiers="const">
@@ -64,27 +66,28 @@
<argument index="0" name="action" type="String">
</argument>
<description>
- Returns true if the given action is released (i.e. not pressed). Not relevant for the event types MOUSE_MOTION, SCREEN_DRAG and NONE.
+ Returns [code]true[/code] if the given action is released (i.e. not pressed). Not relevant for the event types [code]MOUSE_MOTION[/code], [code]SCREEN_DRAG[/code] or [code]NONE[/code].
</description>
</method>
<method name="is_action_type" qualifiers="const">
<return type="bool">
</return>
<description>
+ Returns [code]true[/code] if this input event's type is one of the [code]InputEvent[/code] constants.
</description>
</method>
<method name="is_echo" qualifiers="const">
<return type="bool">
</return>
<description>
- Returns true if this input event is an echo event (only for events of type KEY, it will return false for other types).
+ Returns [code]true[/code] if this input event is an echo event (only for events of type KEY).
</description>
</method>
<method name="is_pressed" qualifiers="const">
<return type="bool">
</return>
<description>
- Returns true if this input event is pressed. Not relevant for the event types MOUSE_MOTION, SCREEN_DRAG and NONE.
+ Returns [code]true[/code] if this input event is pressed. Not relevant for the event types [code]MOUSE_MOTION[/code], [code]SCREEN_DRAG[/code] or [code]NONE[/code].
</description>
</method>
<method name="set_device">
@@ -124,6 +127,7 @@
</methods>
<members>
<member name="device" type="int" setter="set_device" getter="get_device">
+ The event's device ID.
</member>
</members>
<constants>
diff --git a/doc/classes/InputEventAction.xml b/doc/classes/InputEventAction.xml
index 2617ea4dfa..d97f1d4a2e 100644
--- a/doc/classes/InputEventAction.xml
+++ b/doc/classes/InputEventAction.xml
@@ -4,8 +4,10 @@
Input event type for actions.
</brief_description>
<description>
+ Contains a generic action which can be targeted from several type of inputs. Actions can be created from the project settings menu [code]Project &gt; Project Settings &gt; Input Map[/Code]. See [method Node._input].
</description>
<tutorials>
+ http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html#actions
</tutorials>
<demos>
</demos>
@@ -35,8 +37,10 @@
</methods>
<members>
<member name="action" type="String" setter="set_action" getter="get_action">
+ The action's name. Actions are accessed via this [String].
</member>
<member name="pressed" type="bool" setter="set_pressed" getter="is_pressed">
+ If [code]true[/code] the action's state is pressed. If [code]false[/code] the action's state is released.
</member>
</members>
<constants>
diff --git a/doc/classes/InputEventJoypadButton.xml b/doc/classes/InputEventJoypadButton.xml
index 2784b06442..f13a1102b7 100644
--- a/doc/classes/InputEventJoypadButton.xml
+++ b/doc/classes/InputEventJoypadButton.xml
@@ -1,11 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="InputEventJoypadButton" inherits="InputEvent" category="Core" version="3.0.alpha.custom_build">
<brief_description>
- Input event type for joypad button events.
+ Input event for gamepad buttons.
</brief_description>
<description>
+ Input event type for gamepad buttons. For joysticks see [InputEventJoypadMotion].
</description>
<tutorials>
+ http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html
</tutorials>
<demos>
</demos>
@@ -49,13 +51,13 @@
</methods>
<members>
<member name="button_index" type="int" setter="set_button_index" getter="get_button_index">
- Joypad button identifier, one of the JOY_BUTTON_* constants in [@Global Scope].
+ Button identifier. One of the [code]JOY_BUTTON_*[/code] constants from [@global Scope].
</member>
<member name="pressed" type="bool" setter="set_pressed" getter="is_pressed">
- Pressed state of the joypad button.
+ If [code]true[/code] the button's state is pressed. If [code]false[/code] the button's state is released.
</member>
<member name="pressure" type="float" setter="set_pressure" getter="get_pressure">
- Intensity of the button pressure, ranges from 0 to 1.0.
+ Represents the pressure the user puts on the button with his finger, if the controller supports it. Ranges from [code]0[/code] to [code]1[/code].
</member>
</members>
<constants>
diff --git a/doc/classes/InputEventJoypadMotion.xml b/doc/classes/InputEventJoypadMotion.xml
index 8a26007fc1..a7c585a55d 100644
--- a/doc/classes/InputEventJoypadMotion.xml
+++ b/doc/classes/InputEventJoypadMotion.xml
@@ -1,11 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="InputEventJoypadMotion" inherits="InputEvent" category="Core" version="3.0.alpha.custom_build">
<brief_description>
- Input event type for joypad motion/axis events.
+ Input event type for gamepad joysticks and other motions. For buttons see [code]InputEventJoypadMotion[/code].
</brief_description>
<description>
+ Stores information about joystick motions. One [code]InputEventJoypadMotion[/code] represents one axis at a time.
</description>
<tutorials>
+ http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html
</tutorials>
<demos>
</demos>
@@ -41,10 +43,10 @@
</methods>
<members>
<member name="axis" type="int" setter="set_axis" getter="get_axis">
- Joypad axis identifier, one of the JOY_AXIS_* constants in [@Global Scope].
+ Axis identifier. Use one of the [code]JOY_AXIS_*[/code] constants in [@global Scope].
</member>
<member name="axis_value" type="float" setter="set_axis_value" getter="get_axis_value">
- Position of the axis, ranging from -1.0 to 1.0. A value of 0 means that the axis is in its neutral position.
+ Current position of the joystick on the given axis. The value ranges from [code]-1.0[/code] to [code]1.0[/code]. A value of [code]0[/code] means the axis is in its resting position.
</member>
</members>
<constants>
diff --git a/doc/classes/InputEventKey.xml b/doc/classes/InputEventKey.xml
index 151e19d25d..9565584a4f 100644
--- a/doc/classes/InputEventKey.xml
+++ b/doc/classes/InputEventKey.xml
@@ -4,8 +4,10 @@
Input event type for keyboard events.
</brief_description>
<description>
+ Stores key presses on the keyboard. Supports key presses, key releases and [member echo] events.
</description>
<tutorials>
+ http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html
</tutorials>
<demos>
</demos>
@@ -63,16 +65,16 @@
</methods>
<members>
<member name="echo" type="bool" setter="set_echo" getter="is_echo">
- Echo state of the key, i.e. whether it's a repeat event or not.
+ If [code]true[/code] the key was already pressed before this event. It means the user is holding the key down.
</member>
<member name="pressed" type="bool" setter="set_pressed" getter="is_pressed">
- Pressed state of the key.
+ If [code]true[/code] the key's state is pressed. If [code]false[/code] the key's state is released.
</member>
<member name="scancode" type="int" setter="set_scancode" getter="get_scancode">
- Scancode of the key, one of the KEY_* constants in [@Global Scope].
+ Key scancode, one of the [code]KEY_*[/code] constants in [@global Scope].
</member>
<member name="unicode" type="int" setter="set_unicode" getter="get_unicode">
- Unicode identifier of the key (when relevant).
+ Key unicode identifier when relevant.
</member>
</members>
<constants>
diff --git a/doc/classes/InputEventMouse.xml b/doc/classes/InputEventMouse.xml
index 57f0acbf30..38eec74ffa 100644
--- a/doc/classes/InputEventMouse.xml
+++ b/doc/classes/InputEventMouse.xml
@@ -4,8 +4,10 @@
Base input event type for mouse events.
</brief_description>
<description>
+ Stores general mouse events informations.
</description>
<tutorials>
+ http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html
</tutorials>
<demos>
</demos>
@@ -58,10 +60,10 @@
Mouse button mask identifier, one of or a bitwise combination of the BUTTON_MASK_* constants in [@Global Scope].
</member>
<member name="global_position" type="Vector2" setter="set_global_position" getter="get_global_position">
- Global position of the mouse click.
+ Mouse position relative to the current [Viewport] when used in [method Control._gui_input], otherwise is at 0,0.
</member>
<member name="position" type="Vector2" setter="set_position" getter="get_position">
- Local position of the mouse click.
+ Mouse local position relative to the [Viewport]. If used in [method Control._gui_input] the position is relative to the current [Control] wich is under the mouse.
</member>
</members>
<constants>
diff --git a/doc/classes/InputEventMouseButton.xml b/doc/classes/InputEventMouseButton.xml
index 63e31eb61c..afc0c331c8 100644
--- a/doc/classes/InputEventMouseButton.xml
+++ b/doc/classes/InputEventMouseButton.xml
@@ -4,8 +4,10 @@
Input event type for mouse button events.
</brief_description>
<description>
+ Contains mouse click informations. See [method Node._input].
</description>
<tutorials>
+ http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html
</tutorials>
<demos>
</demos>
@@ -66,12 +68,13 @@
Mouse button identifier, one of the BUTTON_* or BUTTON_WHEEL_* constants in [@Global Scope].
</member>
<member name="doubleclick" type="bool" setter="set_doubleclick" getter="is_doubleclick">
- Whether the event is a double-click.
+ If [code]true[/code] the mouse button's state is a double-click. If [code]false[/code] the mouse button's state is released.
</member>
<member name="factor" type="float" setter="set_factor" getter="get_factor">
+ TO TALK in PR, reduz said : i think it's used for apple touch but i don't remember what it does
</member>
<member name="pressed" type="bool" setter="set_pressed" getter="is_pressed">
- Pressed state of the mouse button.
+ If [code]true[/code] the mouse button's state is pressed. If [code]false[/code] the mouse button's state is released.
</member>
</members>
<constants>
diff --git a/doc/classes/InputEventMouseMotion.xml b/doc/classes/InputEventMouseMotion.xml
index 59fe8d2e58..5be82e1ffa 100644
--- a/doc/classes/InputEventMouseMotion.xml
+++ b/doc/classes/InputEventMouseMotion.xml
@@ -4,8 +4,10 @@
Input event type for mouse motion events.
</brief_description>
<description>
+ Contains mouse motion informations. Supports relative, absolute positions and speed. See [method Node._input].
</description>
<tutorials>
+ http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html
</tutorials>
<demos>
</demos>
@@ -41,10 +43,10 @@
</methods>
<members>
<member name="relative" type="Vector2" setter="set_relative" getter="get_relative">
- Position of the mouse pointer relative to the previous mouse position.
+ Mouse position relative to the previous position (position at the last frame).
</member>
<member name="speed" type="Vector2" setter="set_speed" getter="get_speed">
- Speed of the mouse pointer.
+ Mouse speed.
</member>
</members>
<constants>
diff --git a/doc/classes/InputEventScreenDrag.xml b/doc/classes/InputEventScreenDrag.xml
index 0b0ecc17bc..0c92ad5f70 100644
--- a/doc/classes/InputEventScreenDrag.xml
+++ b/doc/classes/InputEventScreenDrag.xml
@@ -2,10 +2,13 @@
<class name="InputEventScreenDrag" inherits="InputEvent" category="Core" version="3.0.alpha.custom_build">
<brief_description>
Input event type for screen drag events.
+ (only available on mobile devices)
</brief_description>
<description>
+ Contains screen drag informations. See [method Node._input].
</description>
<tutorials>
+ http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html
</tutorials>
<demos>
</demos>
@@ -72,13 +75,13 @@
Drag event index in the case of a multi-drag event.
</member>
<member name="position" type="Vector2" setter="set_position" getter="get_position">
- Position of the drag event.
+ Drag position.
</member>
<member name="relative" type="Vector2" setter="set_relative" getter="get_relative">
- Position of the drag event relative to its start position.
+ Drag position relative to its start position.
</member>
<member name="speed" type="Vector2" setter="set_speed" getter="get_speed">
- Speed of the drag event.
+ Drag speed.
</member>
</members>
<constants>
diff --git a/doc/classes/InputEventScreenTouch.xml b/doc/classes/InputEventScreenTouch.xml
index 48c5626f14..01ba9f1285 100644
--- a/doc/classes/InputEventScreenTouch.xml
+++ b/doc/classes/InputEventScreenTouch.xml
@@ -2,10 +2,13 @@
<class name="InputEventScreenTouch" inherits="InputEvent" category="Core" version="3.0.alpha.custom_build">
<brief_description>
Input event type for screen touch events.
+ (only available on mobile devices)
</brief_description>
<description>
+ Stores multi-touch press/release information. Supports touch press, touch release and [member index] for multi-touch count and order.
</description>
<tutorials>
+ http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html
</tutorials>
<demos>
</demos>
@@ -49,13 +52,13 @@
</methods>
<members>
<member name="index" type="int" setter="set_index" getter="get_index">
- Touch event index in the case of a multi-touch event.
+ Touch index in the case of a multi-touch event. One index = one finger.
</member>
<member name="position" type="Vector2" setter="set_position" getter="get_position">
- Position of the touch event.
+ Touch position.
</member>
<member name="pressed" type="bool" setter="set_pressed" getter="is_pressed">
- Pressed state of the touch event.
+ If [code]true[/code] the touch's state is pressed. If [code]false[/code] the touch's state is released.
</member>
</members>
<constants>
diff --git a/doc/classes/InputEventWithModifiers.xml b/doc/classes/InputEventWithModifiers.xml
index 7bbdf0a441..46107a4ab8 100644
--- a/doc/classes/InputEventWithModifiers.xml
+++ b/doc/classes/InputEventWithModifiers.xml
@@ -1,11 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="InputEventWithModifiers" inherits="InputEvent" category="Core" version="3.0.alpha.custom_build">
<brief_description>
- Base class for input events with modifiers.
+ Base class for keys events with modifiers.
</brief_description>
<description>
+ Contains keys events informations with modifiers support like [code]SHIFT[/code] or [code]ALT[/code]. See [method Node._input].
</description>
<tutorials>
+ http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html
</tutorials>
<demos>
</demos>
diff --git a/doc/classes/InputMap.xml b/doc/classes/InputMap.xml
index bf72ba05e7..99b77dab36 100644
--- a/doc/classes/InputMap.xml
+++ b/doc/classes/InputMap.xml
@@ -1,11 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="InputMap" inherits="Object" category="Core" version="3.0.alpha.custom_build">
<brief_description>
- Singleton that manages actions.
+ Singleton that manages [InputEventAction].
</brief_description>
<description>
+ Manages all [InputEventAction] which can be created/modified from the project settings menu [code]Project &gt; Project Settings &gt; Input Map[/Code] or in code with [method add_action] and [method action_add_event]. See [method Node._input].
</description>
<tutorials>
+ http://docs.godotengine.org/en/stable/learning/features/inputs/inputevent.html#inputmap
</tutorials>
<demos>
</demos>
@@ -18,7 +20,7 @@
<argument index="1" name="event" type="InputEvent">
</argument>
<description>
- Add an [InputEvent] to an action. This [InputEvent] will trigger the action.
+ Adds an [InputEvent] to an action. This [InputEvent] will trigger the action.
</description>
</method>
<method name="action_erase_event">
@@ -29,7 +31,7 @@
<argument index="1" name="event" type="InputEvent">
</argument>
<description>
- Remove an [InputEvent] from an action.
+ Removes an [InputEvent] from an action.
</description>
</method>
<method name="action_has_event">
@@ -40,7 +42,7 @@
<argument index="1" name="event" type="InputEvent">
</argument>
<description>
- Whether an action has an [InputEvent] associated with it.
+ Returns [true] if an action has an [InputEvent] associated with it.
</description>
</method>
<method name="add_action">
@@ -49,7 +51,7 @@
<argument index="0" name="action" type="String">
</argument>
<description>
- Add an (empty) action to the [InputMap]. An [InputEvent] can then be added to this action with [method action_add_event].
+ Adds an (empty) action to the [code]InputMap[/code]. An [InputEvent] can then be added to this action with [method action_add_event].
</description>
</method>
<method name="erase_action">
@@ -58,7 +60,7 @@
<argument index="0" name="action" type="String">
</argument>
<description>
- Remove an action from the [InputMap].
+ Removes an action from the [code]InputMap[/code].
</description>
</method>
<method name="event_is_action" qualifiers="const">
@@ -69,7 +71,7 @@
<argument index="1" name="action" type="String">
</argument>
<description>
- Return whether the given event is part of an existing action. This method ignores keyboard modifiers if the given [InputEvent] is not pressed (for proper release detection). See [method action_has_event] if you don't want this behavior.
+ Returns [true] if the given event is part of an existing action. This method ignores keyboard modifiers if the given [InputEvent] is not pressed (for proper release detection). See [method action_has_event] if you don't want this behavior.
</description>
</method>
<method name="get_action_list">
@@ -78,14 +80,14 @@
<argument index="0" name="action" type="String">
</argument>
<description>
- Return an array of InputEvents associated with a given action.
+ Returns an array of [InputEvent]s associated with a given action.
</description>
</method>
<method name="get_actions">
<return type="Array">
</return>
<description>
- Return an array of all actions in the [InputMap].
+ Returns an array of all actions in the [code]InputMap[/code].
</description>
</method>
<method name="has_action" qualifiers="const">
@@ -94,14 +96,14 @@
<argument index="0" name="action" type="String">
</argument>
<description>
- Whether this InputMap has a registered action with the given name.
+ Returns [code]true[/code] if the [code]InputMap[/code] has a registered action with the given name.
</description>
</method>
<method name="load_from_globals">
<return type="void">
</return>
<description>
- Clear the [InputMap] and load it anew from [ProjectSettings].
+ Clears all [InputEventAction] in the [code]InputMap[/code] and load it anew from [ProjectSettings].
</description>
</method>
</methods>
diff --git a/doc/classes/ItemList.xml b/doc/classes/ItemList.xml
index a8d879888f..37c1db51f5 100644
--- a/doc/classes/ItemList.xml
+++ b/doc/classes/ItemList.xml
@@ -217,7 +217,7 @@
<argument index="0" name="idx" type="int">
</argument>
<description>
- Returns whether the tooptip is enabled for specified item index.
+ Returns whether the tooltip is enabled for specified item index.
</description>
</method>
<method name="is_same_column_width" qualifiers="const">
@@ -511,7 +511,7 @@
<argument index="1" name="selected" type="bool">
</argument>
<description>
- Fired when a multiple selection is altered on a list allowing mutliple selection.
+ Fired when a multiple selection is altered on a list allowing multiple selection.
</description>
</signal>
</signals>
diff --git a/doc/classes/JSONParseResult.xml b/doc/classes/JSONParseResult.xml
index 86edaaf1e6..2d163c4a80 100644
--- a/doc/classes/JSONParseResult.xml
+++ b/doc/classes/JSONParseResult.xml
@@ -4,7 +4,7 @@
Data class wrapper for decoded JSON.
</brief_description>
<description>
- Returned by [method JSON.parse], [JSONParseResult] contains decoded JSON or error information if JSON source not successfully parsed. You can check if JSON source was successfully parsed with [code]if json_result.error == 0[/code].
+ Returned by [method JSON.parse], [code]JSONParseResult[/code] contains decoded JSON or error information if JSON source not successfully parsed. You can check if JSON source was successfully parsed with [code]if json_result.error == 0[/code].
</description>
<tutorials>
</tutorials>
@@ -79,7 +79,7 @@
The error message if JSON source was not successfully parsed. See [@Global Scope]ERR_* constants.
</member>
<member name="result" type="Variant" setter="set_result" getter="get_result">
- A [Variant] containing the parsed JSON. Use typeof() to check if it is what you expect. For exemple, if JSON source starts with braces [code]{}[/code] a [Dictionary] will be returned, if JSON source starts with array braces [code][][/code] an [Array] will be returned.
+ A [Variant] containing the parsed JSON. Use typeof() to check if it is what you expect. For example, if JSON source starts with braces [code]{}[/code] a [Dictionary] will be returned, if JSON source starts with array braces [code][][/code] an [Array] will be returned.
[i]Be aware that the JSON specification does not define integer or float types, but only a number type. Therefore, parsing a JSON text will convert all numerical values to float types.[/i]
[codeblock]
p = JSON.parse('["hello", "world", "!"]')
diff --git a/doc/classes/Joint.xml b/doc/classes/Joint.xml
index 2e7d24aac1..901f84fe5e 100644
--- a/doc/classes/Joint.xml
+++ b/doc/classes/Joint.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="Joint" inherits="Spatial" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Base class for all 3D joints
</brief_description>
<description>
+ All 3D joints link two nodes, has a priority, and can decide if the two bodies of the nodes should be able to collide with each other
</description>
<tutorials>
</tutorials>
@@ -68,12 +70,16 @@
</methods>
<members>
<member name="collision/exclude_nodes" type="bool" setter="set_exclude_nodes_from_collision" getter="get_exclude_nodes_from_collision">
+ If [code]true[/code] the two bodies of the nodes are not able to collide with each other.
</member>
<member name="nodes/node_a" type="NodePath" setter="set_node_a" getter="get_node_a">
+ The [Node], the first side of the Joint attaches to.
</member>
<member name="nodes/node_b" type="NodePath" setter="set_node_b" getter="get_node_b">
+ The [Node], the second side of the Joint attaches to.
</member>
<member name="solver/priority" type="int" setter="set_solver_priority" getter="get_solver_priority">
+ The order in wich the solver is executed compared to the other [Joints], the lower, the earlier.
</member>
</members>
<constants>
diff --git a/doc/classes/Joint2D.xml b/doc/classes/Joint2D.xml
index e6c2f6d157..b9caa7ef4b 100644
--- a/doc/classes/Joint2D.xml
+++ b/doc/classes/Joint2D.xml
@@ -74,12 +74,16 @@
</methods>
<members>
<member name="bias" type="float" setter="set_bias" getter="get_bias">
+ When [member node_a] and [member node_b] move in different directions the [code]bias[/code] controls how fast the joint pulls them back to their original position. The lower the [code]bias[/code] the more the two bodies can pull on the joint. Default value: [code]0[/code]
</member>
<member name="disable_collision" type="bool" setter="set_exclude_nodes_from_collision" getter="get_exclude_nodes_from_collision">
+ If [code]true[/code] [member node_a] and [member node_b] can collide. Default value: [code]false[/code].
</member>
<member name="node_a" type="NodePath" setter="set_node_a" getter="get_node_a">
+ The first body attached to the joint. Must derive from [PhysicsBody2D].
</member>
<member name="node_b" type="NodePath" setter="set_node_b" getter="get_node_b">
+ The second body attached to the joint. Must derive from [PhysicsBody2D].
</member>
</members>
<constants>
diff --git a/doc/classes/KinematicBody.xml b/doc/classes/KinematicBody.xml
index 86354548cd..f80c00ed6d 100644
--- a/doc/classes/KinematicBody.xml
+++ b/doc/classes/KinematicBody.xml
@@ -86,7 +86,7 @@
<argument index="4" name="floor_max_angle" type="float" default="0.785398">
</argument>
<description>
- Moves the body along a vector. If the body collides with another, it will slide along the other body rather than stop immediately. If the other body is a [KinematicBody] or [RigidBody], it will also be affected by the motion of the other body. You can use this to make moving or rotating platforms, or to make nodes push other nodes.
+ Moves the body along a vector. If the body collides with another, it will slide along the other body rather than stop immediately. If the other body is a [code]KinematicBody[/code] or [RigidBody], it will also be affected by the motion of the other body. You can use this to make moving or rotating platforms, or to make nodes push other nodes.
[code]linear_velocity[/code] is a value in pixels per second. Unlike in for example [method move_and_collide], you should [i]not[/i] multiply it with [code]delta[/code] — this is done by the method.
[code]floor_normal[/code] is the up direction, used to determine what is a wall and what is a floor or a ceiling. If set to the default value of [code]Vector2(0, 0)[/code], everything is considered a wall. This is useful for topdown games.
If the body is standing on a slope and the horizontal speed (relative to the floor's speed) goes below [code]slope_stop_min_velocity[/code], the body will stop completely. This prevents the body from sliding down slopes when you include gravity in [code]linear_velocity[/code]. When set to lower values, the body will not be able to stand still on steep slopes.
diff --git a/doc/classes/KinematicBody2D.xml b/doc/classes/KinematicBody2D.xml
index e7c58fdb3a..798fc4153c 100644
--- a/doc/classes/KinematicBody2D.xml
+++ b/doc/classes/KinematicBody2D.xml
@@ -86,7 +86,7 @@
<argument index="4" name="floor_max_angle" type="float" default="0.785398">
</argument>
<description>
- Moves the body along a vector. If the body collides with another, it will slide along the other body rather than stop immediately. If the other body is a [KinematicBody2D] or [RigidBody2D], it will also be affected by the motion of the other body. You can use this to make moving or rotating platforms, or to make nodes push other nodes.
+ Moves the body along a vector. If the body collides with another, it will slide along the other body rather than stop immediately. If the other body is a [code]KinematicBody2D[/code] or [RigidBody2D], it will also be affected by the motion of the other body. You can use this to make moving or rotating platforms, or to make nodes push other nodes.
[code]linear_velocity[/code] is a value in pixels per second. Unlike in for example [method move_and_collide], you should [i]not[/i] multiply it with [code]delta[/code] — this is done by the method.
[code]floor_normal[/code] is the up direction, used to determine what is a wall and what is a floor or a ceiling. If set to the default value of [code]Vector2(0, 0)[/code], everything is considered a wall. This is useful for topdown games.
If the body is standing on a slope and the horizontal speed (relative to the floor's speed) goes below [code]slope_stop_min_velocity[/code], the body will stop completely. This prevents the body from sliding down slopes when you include gravity in [code]linear_velocity[/code]. When set to lower values, the body will not be able to stand still on steep slopes.
@@ -122,4 +122,4 @@
</members>
<constants>
</constants>
-</class> \ No newline at end of file
+</class>
diff --git a/doc/classes/Light.xml b/doc/classes/Light.xml
index 11eee135cb..fd3ecc7365 100644
--- a/doc/classes/Light.xml
+++ b/doc/classes/Light.xml
@@ -179,6 +179,8 @@
</constant>
<constant name="PARAM_SHADOW_BIAS" value="12">
</constant>
+ <constant name="PARAM_SHADOW_BIAS_SPLIT_SCALE" value="13">
+ </constant>
<constant name="PARAM_MAX" value="14">
</constant>
</constants>
diff --git a/doc/classes/LineEdit.xml b/doc/classes/LineEdit.xml
index e6c26e3248..850f724714 100644
--- a/doc/classes/LineEdit.xml
+++ b/doc/classes/LineEdit.xml
@@ -17,14 +17,14 @@
<argument index="0" name="text" type="String">
</argument>
<description>
- Append text at cursor, scrolling the [LineEdit] when needed.
+ Adds [code]text[/code] after the cursor. If the resulting value is longer than [member max_length], nothing happens.
</description>
</method>
<method name="clear">
<return type="void">
</return>
<description>
- Clear the [LineEdit] text.
+ Erases the [LineEdit] text.
</description>
</method>
<method name="cursor_get_blink_enabled" qualifiers="const">
@@ -63,14 +63,14 @@
<return type="int" enum="LineEdit.Align">
</return>
<description>
- Return the align mode of the [LineEdit].
+ Return the align mode of the [code]LineEdit[/code].
</description>
</method>
<method name="get_cursor_position" qualifiers="const">
<return type="int">
</return>
<description>
- Return the cursor position inside the [LineEdit].
+ Returns the cursor position inside the [code]LineEdit[/code].
</description>
</method>
<method name="get_expand_to_text_length" qualifiers="const">
@@ -83,14 +83,14 @@
<return type="int">
</return>
<description>
- Return the maximum amount of characters the [LineEdit] can edit. If 0 is returned, no limit exists.
+ Return the maximum amount of characters the [code]LineEdit[/code] can edit. If 0 is returned, no limit exists.
</description>
</method>
<method name="get_menu" qualifiers="const">
<return type="PopupMenu">
</return>
<description>
- Return the [PopupMenu] of this [LineEdit].
+ Returns the [PopupMenu] of this [code]LineEdit[/code]. By default, this menu is displayed when right-clicking on the [LineEdit].
</description>
</method>
<method name="get_placeholder" qualifiers="const">
@@ -111,21 +111,21 @@
<return type="String">
</return>
<description>
- Return the text in the [LineEdit].
+ Return the text in the [code]LineEdit[/code].
</description>
</method>
<method name="is_editable" qualifiers="const">
<return type="bool">
</return>
<description>
- Return the [i]editable[/i] status of the [LineEdit] (see [method set_editable]).
+ Return the [i]editable[/i] status of the [code]LineEdit[/code] (see [method set_editable]).
</description>
</method>
<method name="is_secret" qualifiers="const">
<return type="bool">
</return>
<description>
- Return the [i]secret[/i] status of the [LineEdit] (see [method set_secret]).
+ Return the [i]secret[/i] status of the [code]LineEdit[/code] (see [method set_secret]).
</description>
</method>
<method name="menu_option">
@@ -134,7 +134,7 @@
<argument index="0" name="option" type="int">
</argument>
<description>
- Execute a given action as defined in the MENU_* enum.
+ Executes a given action as defined in the MENU_* enum.
</description>
</method>
<method name="select">
@@ -145,11 +145,12 @@
<argument index="1" name="to" type="int" default="-1">
</argument>
<description>
- Select the text inside [LineEdit] by the given character positions. [code]from[/code] is default to the beginning. [code]to[/code] is default to the end.
+ Selects characters inside [LineEdit] between [code]from[/code] and [code]to[/code]. By default [code]from[/code] is at the beginning and [code]to[/code] at the end.
[codeblock]
- select() # select all
- select(5) # select from the fifth character to the end.
- select(2, 5) # select from the second to the fifth character.
+ text = "Welcome"
+ select() # Welcome
+ select(4) # ome
+ select(2, 5) # lco
[/codeblock]
</description>
</method>
@@ -157,7 +158,7 @@
<return type="void">
</return>
<description>
- Select the whole string.
+ Selects the whole [String].
</description>
</method>
<method name="set_align">
@@ -166,7 +167,7 @@
<argument index="0" name="align" type="int" enum="LineEdit.Align">
</argument>
<description>
- Set text alignment of the [LineEdit].
+ Set text alignment of the [code]LineEdit[/code].
</description>
</method>
<method name="set_cursor_position">
@@ -175,7 +176,7 @@
<argument index="0" name="position" type="int">
</argument>
<description>
- Set the cursor position inside the [LineEdit], causing it to scroll if needed.
+ Sets the cursor position inside the [code]LineEdit[/code]. The text may scroll if needed.
</description>
</method>
<method name="set_editable">
@@ -184,7 +185,7 @@
<argument index="0" name="enabled" type="bool">
</argument>
<description>
- Set the [i]editable[/i] status of the [LineEdit]. When disabled, existing text can't be modified and new text can't be added.
+ Set the [i]editable[/i] status of the [code]LineEdit[/code]. When disabled, existing text can't be modified and new text can't be added.
</description>
</method>
<method name="set_expand_to_text_length">
@@ -201,7 +202,7 @@
<argument index="0" name="chars" type="int">
</argument>
<description>
- Set the maximum amount of characters the [LineEdit] can edit, and cropping existing text in case it exceeds that limit. Setting 0 removes the limit.
+ Set the maximum amount of characters the [code]LineEdit[/code] can edit, and cropping existing text in case it exceeds that limit. Setting 0 removes the limit.
</description>
</method>
<method name="set_placeholder">
@@ -228,7 +229,7 @@
<argument index="0" name="enabled" type="bool">
</argument>
<description>
- Set the [i]secret[/i] status of the [LineEdit]. When enabled, every character is displayed as "*".
+ Set the [i]secret[/i] status of the [code]LineEdit[/code]. When enabled, every character is displayed as "*".
</description>
</method>
<method name="set_text">
@@ -237,32 +238,43 @@
<argument index="0" name="text" type="String">
</argument>
<description>
- Set the text in the [LineEdit], clearing the existing one and the selection.
+ Set the text in the [code]LineEdit[/code], clearing the existing one and the selection.
</description>
</method>
</methods>
<members>
<member name="align" type="int" setter="set_align" getter="get_align" enum="LineEdit.Align">
+ Text alignment as defined in the ALIGN_* enum.
</member>
<member name="caret_blink" type="bool" setter="cursor_set_blink_enabled" getter="cursor_get_blink_enabled">
+ If [code]true[/code] the caret (visual cursor) blinks.
</member>
<member name="caret_blink_speed" type="float" setter="cursor_set_blink_speed" getter="cursor_get_blink_speed">
+ Duration (in seconds) of a caret's blinking cycle.
</member>
<member name="editable" type="bool" setter="set_editable" getter="is_editable">
+ If [code]false[/code] existing text cannot be modified and new text cannot be added.
</member>
<member name="expand_to_len" type="bool" setter="set_expand_to_text_length" getter="get_expand_to_text_length">
+ If [code]true[/code] the [LineEdit] width will increase to stay longer than the [member text]. It will [b]not[/b] compress if the [member text] is shortened.
</member>
<member name="focus_mode" type="int" setter="set_focus_mode" getter="get_focus_mode" enum="Control.FocusMode">
+ Defines how the [LineEdit] can grab focus (Keyboard and mouse, only keyboard, or none). See [code]enum FocusMode[/code] in [Control] for details.
</member>
<member name="max_length" type="int" setter="set_max_length" getter="get_max_length">
+ Maximum amount of characters that can be entered inside the [LineEdit]. If [code]0[/code], there is no limit.
</member>
<member name="placeholder_alpha" type="float" setter="set_placeholder_alpha" getter="get_placeholder_alpha">
+ Opacity of the [member placeholder_text]. From [code]0[/code] to [code]1[/code].
</member>
<member name="placeholder_text" type="String" setter="set_placeholder" getter="get_placeholder">
+ Text shown when the [LineEdit] is empty. It is [b]not[/b] the [LineEdit]'s default value (see [member text]).
</member>
<member name="secret" type="bool" setter="set_secret" getter="is_secret">
+ If [code]true[/code] every character is shown as "*".
</member>
<member name="text" type="String" setter="set_text" getter="get_text">
+ String value of the [LineEdit].
</member>
</members>
<signals>
@@ -270,47 +282,47 @@
<argument index="0" name="text" type="String">
</argument>
<description>
- When the text changes, this signal is emitted.
+ Emitted when the text changes.
</description>
</signal>
<signal name="text_entered">
<argument index="0" name="text" type="String">
</argument>
<description>
- This signal is emitted when the user presses KEY_ENTER on the [LineEdit]. This signal is often used as an alternate confirmation mechanism in dialogs.
+ Emitted when the user presses KEY_ENTER on the [code]LineEdit[/code].
</description>
</signal>
</signals>
<constants>
<constant name="ALIGN_LEFT" value="0">
- Align left.
+ Aligns the text on the left hand side of the [LineEdit].
</constant>
<constant name="ALIGN_CENTER" value="1">
- Align center.
+ Centers the text in the middle of the [LineEdit].
</constant>
<constant name="ALIGN_RIGHT" value="2">
- Align right.
+ Aligns the text on the right hand side of the [LineEdit].
</constant>
<constant name="ALIGN_FILL" value="3">
- Align fill.
+ Stretches whitespaces to fit the [LineEdit]'s width.
</constant>
<constant name="MENU_CUT" value="0">
- Cut (Copy and clear).
+ Cuts (Copies and clears) the selected text.
</constant>
<constant name="MENU_COPY" value="1">
- Copy the selected text.
+ Copies the selected text.
</constant>
<constant name="MENU_PASTE" value="2">
- Paste the clipboard text over the selected text.
+ Pastes the clipboard text over the selected text (or at the cursor's position).
</constant>
<constant name="MENU_CLEAR" value="3">
- Clear the text.
+ Erases the whole [Linedit] text.
</constant>
<constant name="MENU_SELECT_ALL" value="4">
- Select all text.
+ Selects the whole [Linedit] text.
</constant>
<constant name="MENU_UNDO" value="5">
- Undo an action.
+ Undoes the previous action.
</constant>
<constant name="MENU_MAX" value="6">
</constant>
diff --git a/doc/classes/LinkButton.xml b/doc/classes/LinkButton.xml
index d9598daf16..5e7f467684 100644
--- a/doc/classes/LinkButton.xml
+++ b/doc/classes/LinkButton.xml
@@ -40,7 +40,7 @@
<argument index="0" name="underline_mode" type="int" enum="LinkButton.UnderlineMode">
</argument>
<description>
- Sets the underline mode for this button, the argument must be one of the [LinkButton] constants (see constants section).
+ Sets the underline mode for this button, the argument must be one of the [code]LinkButton[/code] constants (see constants section).
</description>
</method>
</methods>
diff --git a/doc/classes/MainLoop.xml b/doc/classes/MainLoop.xml
index e6f9e40dfe..f8343467af 100644
--- a/doc/classes/MainLoop.xml
+++ b/doc/classes/MainLoop.xml
@@ -4,7 +4,7 @@
Main loop is the abstract main loop base class.
</brief_description>
<description>
- Main loop is the abstract main loop base class. All other main loop classes are derived from it. Upon application start, a [MainLoop] has to be provided to OS, else the application will exit. This happens automatically (and a [SceneTree] is created), unless a main [Script] is supplied, which may or not create and return a [MainLoop].
+ Main loop is the abstract main loop base class. All other main loop classes are derived from it. Upon application start, a [code]MainLoop[/code] has to be provided to OS, else the application will exit. This happens automatically (and a [SceneTree] is created), unless a main [Script] is supplied, which may or not create and return a [code]MainLoop[/code].
</description>
<tutorials>
</tutorials>
@@ -124,6 +124,8 @@
</constant>
<constant name="NOTIFICATION_WM_QUIT_REQUEST" value="6" enum="">
</constant>
+ <constant name="NOTIFICATION_WM_GO_BACK_REQUEST" value="7" enum="">
+ </constant>
<constant name="NOTIFICATION_WM_UNFOCUS_REQUEST" value="8" enum="">
</constant>
<constant name="NOTIFICATION_OS_MEMORY_WARNING" value="9" enum="">
diff --git a/doc/classes/Mutex.xml b/doc/classes/Mutex.xml
index ef3aeb9e07..3d0c8eb1df 100644
--- a/doc/classes/Mutex.xml
+++ b/doc/classes/Mutex.xml
@@ -15,21 +15,21 @@
<return type="void">
</return>
<description>
- Lock this [Mutex], blocks until it is unlocked by the current owner.
+ Lock this [code]Mutex[/code], blocks until it is unlocked by the current owner.
</description>
</method>
<method name="try_lock">
<return type="int" enum="Error">
</return>
<description>
- Try locking this [Mutex], does not block. Returns [OK] on success else [ERR_BUSY].
+ Try locking this [code]Mutex[/code], does not block. Returns [OK] on success else [ERR_BUSY].
</description>
</method>
<method name="unlock">
<return type="void">
</return>
<description>
- Unlock this [Mutex], leaving it to others threads.
+ Unlock this [code]Mutex[/code], leaving it to others threads.
</description>
</method>
</methods>
diff --git a/doc/classes/NetworkedMultiplayerPeer.xml b/doc/classes/NetworkedMultiplayerPeer.xml
index c1d8c5ad91..3ac3895df2 100644
--- a/doc/classes/NetworkedMultiplayerPeer.xml
+++ b/doc/classes/NetworkedMultiplayerPeer.xml
@@ -31,7 +31,7 @@
<return type="bool">
</return>
<description>
- Return whether this [NetworkedMultiplayerPeer] is refusing new connections.
+ Return whether this [code]NetworkedMultiplayerPeer[/code] is refusing new connections.
</description>
</method>
<method name="poll">
@@ -46,7 +46,7 @@
<argument index="0" name="enable" type="bool">
</argument>
<description>
- If [code]endable[/code] is true, this [NetworkedMultiplayerPeer] will refuse new connections.
+ If [code]endable[/code] is true, this [code]NetworkedMultiplayerPeer[/code] will refuse new connections.
</description>
</method>
<method name="set_target_peer">
diff --git a/doc/classes/NinePatchRect.xml b/doc/classes/NinePatchRect.xml
index 6829b36e14..c74f3c5a68 100644
--- a/doc/classes/NinePatchRect.xml
+++ b/doc/classes/NinePatchRect.xml
@@ -111,7 +111,7 @@
If [code]true[/code], draw the panel's center. Else, only draw the 9-slice's borders. Default value: [code]true[/code]
</member>
<member name="patch_margin_bottom" type="int" setter="set_patch_margin" getter="get_patch_margin">
- The height of the 9-slice's bottom row. A margin of 16 means the 9-slice's bottom corners and side will have a height of 16 pixels. You can set all 4 margin values indivually to create panels with non-uniform borders.
+ The height of the 9-slice's bottom row. A margin of 16 means the 9-slice's bottom corners and side will have a height of 16 pixels. You can set all 4 margin values individually to create panels with non-uniform borders.
</member>
<member name="patch_margin_left" type="int" setter="set_patch_margin" getter="get_patch_margin">
The height of the 9-slice's left column.
diff --git a/doc/classes/Node.xml b/doc/classes/Node.xml
index e35f64a9c0..7ec4bbb8b5 100644
--- a/doc/classes/Node.xml
+++ b/doc/classes/Node.xml
@@ -9,11 +9,11 @@
[b]Scene tree:[/b] The [SceneTree] contains the active tree of nodes. When a node is added to the scene tree, it receives the NOTIFICATION_ENTER_TREE notification and its [method _enter_tree] callback is triggered. Children nodes are always added [i]after[/i] their parent node, i.e. the [method _enter_tree] callback of a parent node will be triggered before its child's.
Once all nodes have been added in the scene tree, they receive the NOTIFICATION_READY notification and their respective [method _ready] callbacks are triggered. For groups of nodes, the [method _ready] callback is called in reverse order, from the children up to the parent nodes.
It means that when adding a scene to the scene tree, the following order will be used for the callbacks: [method _enter_tree] of the parent, [method _enter_tree] of the children, [method _ready] of the children and finally [method _ready] of the parent (and that recursively for the whole scene).
- [b]Processing:[/b] Nodes can be set to the "process" state, so that they receive a callback on each frame requesting them to process (do something). Normal processing (callback [method _process], toggled with [method set_process]) happens as fast as possible and is dependent on the frame rate, so the processing time [i]delta[/i] is variable. Fixed processing (callback [method _fixed_process], toggled with [method set_fixed_process]) happens a fixed amount of times per second (by default 60) and is useful to link itself to the physics.
+ [b]Processing:[/b] Nodes can be set to the "process" state, so that they receive a callback on each frame requesting them to process (do something). Normal processing (callback [method _process], toggled with [method set_process]) happens as fast as possible and is dependent on the frame rate, so the processing time [i]delta[/i] is variable. Physics processing (callback [method _physics_process], toggled with [method set_physics_process]) happens a fixed amount of times per second (by default 60) and is useful to link itself to the physics.
Nodes can also process input events. When set, the [method _input] function will be called for each input that the program receives. In many cases, this can be overkill (unless used for simple projects), and the [method _unhandled_input] function might be preferred; it is called when the input event was not handled by anyone else (typically, GUI [Control] nodes), ensuring that the node only receives the events that were meant for it.
To keep track of the scene hierarchy (especially when instancing scenes into other scenes), an "owner" can be set for the node with [method set_owner]. This keeps track of who instanced what. This is mostly useful when writing editors and tools, though.
Finally, when a node is freed with [method free] or [method queue_free], it will also free all its children.
- [b]Networking with nodes:[/b] After connecting to a server (or making one, see [NetworkedMultiplayerENet]) it is possible to use the built-in RPC (remote procedure call) system to easily communicate over the network. By calling [method rpc] with a method name, it will be called locally, and in all connected peers (peers = clients and the server that accepts connections), with behaviour varying depending on the network mode ([method set_network_mode]) on the receiving peer. To identify which [Node] receives the RPC call Godot will use its [NodePath] (make sure node names are the same on all peers).
+ [b]Networking with nodes:[/b] After connecting to a server (or making one, see [NetworkedMultiplayerENet]) it is possible to use the built-in RPC (remote procedure call) system to easily communicate over the network. By calling [method rpc] with a method name, it will be called locally, and in all connected peers (peers = clients and the server that accepts connections), with behaviour varying depending on the network mode ([method set_network_mode]) on the receiving peer. To identify which [code]Node[/code] receives the RPC call Godot will use its [NodePath] (make sure node names are the same on all peers).
</description>
<tutorials>
</tutorials>
@@ -36,24 +36,24 @@
Corresponds to the NOTIFICATION_EXIT_TREE notification in [method Object._notification].
</description>
</method>
- <method name="_fixed_process" qualifiers="virtual">
+ <method name="_input" qualifiers="virtual">
<return type="void">
</return>
- <argument index="0" name="delta" type="float">
+ <argument index="0" name="event" type="InputEvent">
</argument>
<description>
- Called during the fixed processing step of the main loop. Fixed processing means that the frame rate is synced to the physics, i.e. the [code]delta[/code] variable should be constant.
- It is only called if fixed processing has been enabled with [method set_fixed_process].
- Corresponds to the NOTIFICATION_FIXED_PROCESS notification in [method Object._notification].
+ Called when there is a change to input devices. Propagated through the node tree until a Node consumes it.
</description>
</method>
- <method name="_input" qualifiers="virtual">
+ <method name="_physics_process" qualifiers="virtual">
<return type="void">
</return>
- <argument index="0" name="event" type="InputEvent">
+ <argument index="0" name="delta" type="float">
</argument>
<description>
- Called when there is a change to input devices. Propagated through the node tree until a Node consumes it.
+ Called during the physics processing step of the main loop. Physics processing means that the frame rate is synced to the physics, i.e. the [code]delta[/code] variable should be constant.
+ It is only called if physics processing has been enabled with [method set_physics_process].
+ Corresponds to the NOTIFICATION_PHYSICS_PROCESS notification in [method Object._notification].
</description>
</method>
<method name="_process" qualifiers="virtual">
@@ -100,7 +100,7 @@
<argument index="1" name="legible_unique_name" type="bool" default="false">
</argument>
<description>
- Add a child [Node]. Nodes can have as many children as they want, but every child must have a unique name. Children nodes are automatically deleted when the parent node is deleted, so deleting a whole scene is performed by deleting its topmost node.
+ Add a child [code]Node[/code]. Nodes can have as many children as they want, but every child must have a unique name. Children nodes are automatically deleted when the parent node is deleted, so deleting a whole scene is performed by deleting its topmost node.
The optional boolean argument enforces creating child nodes with human-readable names, based on the name of the node being instanced instead of its type only.
</description>
</method>
@@ -124,7 +124,7 @@
<argument index="1" name="persistent" type="bool" default="false">
</argument>
<description>
- Add a node to a group. Groups are helpers to name and organize a subset of nodes, like for example "enemies" or "collectables". A [Node] can be in any number of groups. Nodes can be assigned a group at any time, but will not be added to it until they are inside the scene tree (see [method is_inside_tree]).
+ Add a node to a group. Groups are helpers to name and organize a subset of nodes, like for example "enemies" or "collectables". A [code]Node[/code] can be in any number of groups. Nodes can be assigned a group at any time, but will not be added to it until they are inside the scene tree (see [method is_inside_tree]).
</description>
</method>
<method name="can_process" qualifiers="const">
@@ -140,7 +140,7 @@
<argument index="0" name="flags" type="int" default="15">
</argument>
<description>
- Duplicate the node, returning a new [Node].
+ Duplicate the node, returning a new [code]Node[/code].
You can fine-tune the behavior using the [code]flags[/code], which are based on the DUPLICATE_* constants.
</description>
</method>
@@ -177,7 +177,7 @@
<return type="Array">
</return>
<description>
- Return an array of references ([Node]) to the child nodes.
+ Return an array of references ([code]Node[/code]) to the child nodes.
</description>
</method>
<method name="get_filename" qualifiers="const">
@@ -187,13 +187,6 @@
Return a filename that may be contained by the node. When a scene is instanced from a file, it topmost node contains the filename from where it was loaded (see [method set_filename]).
</description>
</method>
- <method name="get_fixed_process_delta_time" qualifiers="const">
- <return type="float">
- </return>
- <description>
- Return the time elapsed since the last fixed frame (see [method _fixed_process]). This is always the same in fixed processing unless the frames per second is changed in [OS].
- </description>
- </method>
<method name="get_groups" qualifiers="const">
<return type="Array">
</return>
@@ -268,7 +261,7 @@
<return type="Node">
</return>
<description>
- Return the parent node of the current node, or an empty [Node] if the node lacks a parent.
+ Return the parent node of the current node, or an empty [code]Node[/code] if the node lacks a parent.
</description>
</method>
<method name="get_path" qualifiers="const">
@@ -294,6 +287,13 @@
Return the pause mode (PAUSE_MODE_*) of this Node.
</description>
</method>
+ <method name="get_physics_process_delta_time" qualifiers="const">
+ <return type="float">
+ </return>
+ <description>
+ Return the time elapsed since the last physics-bound frame (see [method _physics_process]). This is always a constant value in physics processing unless the frames per second is changed in [OS].
+ </description>
+ </method>
<method name="get_position_in_parent" qualifiers="const">
<return type="int">
</return>
@@ -359,19 +359,6 @@
<description>
</description>
</method>
- <method name="is_fixed_processing" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- Return true if fixed processing is enabled (see [method set_fixed_process]).
- </description>
- </method>
- <method name="is_fixed_processing_internal" qualifiers="const">
- <return type="bool">
- </return>
- <description>
- </description>
- </method>
<method name="is_greater_than" qualifiers="const">
<return type="bool">
</return>
@@ -403,6 +390,19 @@
<description>
</description>
</method>
+ <method name="is_physics_processing" qualifiers="const">
+ <return type="bool">
+ </return>
+ <description>
+ Return true if physics processing is enabled (see [method set_physics_process]).
+ </description>
+ </method>
+ <method name="is_physics_processing_internal" qualifiers="const">
+ <return type="bool">
+ </return>
+ <description>
+ </description>
+ </method>
<method name="is_processing" qualifiers="const">
<return type="bool">
</return>
@@ -470,7 +470,7 @@
<argument index="2" name="parent_first" type="bool" default="false">
</argument>
<description>
- Calls the method (if present) with the arguments given in "args" on this Node and recursively on all children. If the parent_first argument is true then the method will be called on the current [Node] first, then on all children. If it is false then the children will get called first.
+ Calls the method (if present) with the arguments given in "args" on this Node and recursively on all children. If the parent_first argument is true then the method will be called on the current [code]Node[/code] first, then on all children. If it is false then the children will get called first.
</description>
</method>
<method name="propagate_notification">
@@ -509,7 +509,7 @@
<argument index="0" name="node" type="Node">
</argument>
<description>
- Remove a child [Node]. Node is NOT deleted and will have to be deleted manually.
+ Remove a child [code]Node[/code]. Node is NOT deleted and will have to be deleted manually.
</description>
</method>
<method name="remove_from_group">
@@ -666,30 +666,13 @@
A node can contain a filename. This filename should not be changed by the user, unless writing editors and tools. When a scene is instanced from a file, it topmost node contains the filename from where it was loaded.
</description>
</method>
- <method name="set_fixed_process">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- Enables or disables node fixed framerate processing. When a node is being processed, it will receive a NOTIFICATION_PROCESS at a fixed (usually 60 fps, check [OS] to change that) interval (and the [method _fixed_process] callback will be called if exists). It is common to check how much time was elapsed since the previous frame by calling [method get_fixed_process_delta_time].
- </description>
- </method>
- <method name="set_fixed_process_internal">
- <return type="void">
- </return>
- <argument index="0" name="enable" type="bool">
- </argument>
- <description>
- </description>
- </method>
<method name="set_name">
<return type="void">
</return>
<argument index="0" name="name" type="String">
</argument>
<description>
- Set the name of the [Node]. Name must be unique within parent, and setting an already existing name will cause for the node to be automatically renamed.
+ Set the name of the [code]Node[/code]. Name must be unique within parent, and setting an already existing name will cause for the node to be automatically renamed.
</description>
</method>
<method name="set_network_master">
@@ -720,6 +703,23 @@
Set pause mode (PAUSE_MODE_*) of this Node.
</description>
</method>
+ <method name="set_physics_process">
+ <return type="void">
+ </return>
+ <argument index="0" name="enable" type="bool">
+ </argument>
+ <description>
+ Enables or disables the node's physics (alias fixed framerate) processing. When a node is being processed, it will receive a NOTIFICATION_PHYSICS_PROCESS at a fixed (usually 60 fps, check [OS] to change that) interval (and the [method _physics_process] callback will be called if exists). It is common to check how much time was elapsed since the previous frame by calling [method get_physics_process_delta_time].
+ </description>
+ </method>
+ <method name="set_physics_process_internal">
+ <return type="void">
+ </return>
+ <argument index="0" name="enable" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="set_process">
<return type="void">
</return>
@@ -806,7 +806,12 @@
</constant>
<constant name="NOTIFICATION_READY" value="13" enum="">
</constant>
- <constant name="NOTIFICATION_FIXED_PROCESS" value="16" enum="">
+ <constant name="NOTIFICATION_PAUSED" value="14" enum="">
+ </constant>
+ <constant name="NOTIFICATION_UNPAUSED" value="15" enum="">
+ </constant>
+ <constant name="NOTIFICATION_PHYSICS_PROCESS" value="16" enum="">
+ Notification received every frame when the physics process flag is set (see [method set_physics_process]).
</constant>
<constant name="NOTIFICATION_PROCESS" value="17" enum="">
Notification received every frame when the process flag is set (see [method set_process]).
@@ -817,10 +822,6 @@
<constant name="NOTIFICATION_UNPARENTED" value="19" enum="">
Notification received when a node is unparented (parent removed it from the list of children).
</constant>
- <constant name="NOTIFICATION_PAUSED" value="14" enum="">
- </constant>
- <constant name="NOTIFICATION_UNPAUSED" value="15" enum="">
- </constant>
<constant name="NOTIFICATION_INSTANCED" value="20" enum="">
</constant>
<constant name="NOTIFICATION_DRAG_BEGIN" value="21" enum="">
@@ -833,7 +834,7 @@
</constant>
<constant name="NOTIFICATION_INTERNAL_PROCESS" value="25" enum="">
</constant>
- <constant name="NOTIFICATION_INTERNAL_FIXED_PROCESS" value="26" enum="">
+ <constant name="NOTIFICATION_INTERNAL_PHYSICS_PROCESS" value="26" enum="">
</constant>
<constant name="RPC_MODE_DISABLED" value="0">
</constant>
diff --git a/doc/classes/Node2D.xml b/doc/classes/Node2D.xml
index 084bee92df..669a0fb9ff 100644
--- a/doc/classes/Node2D.xml
+++ b/doc/classes/Node2D.xml
@@ -26,7 +26,7 @@
<argument index="0" name="pivot" type="Vector2">
</argument>
<description>
- Set the pivot position of the 2D node to 'pivot' value. Only some Node2Ds implement this method.
+ Sets the node's pivot position.
</description>
</method>
<method name="get_angle_to" qualifiers="const">
@@ -143,7 +143,7 @@
<argument index="1" name="scaled" type="bool" default="false">
</argument>
<description>
- Apply a local translation on the node's X axis based on the process's 'delta'. If 'scaled' is false, normalizes the movement.
+ Applies a local translation on the node's X axis based on the [method Node._process]'s [code]delta[/code]. If [code]scaled[/code] is false, normalizes the movement.
</description>
</method>
<method name="move_local_y">
@@ -154,7 +154,7 @@
<argument index="1" name="scaled" type="bool" default="false">
</argument>
<description>
- Apply a local translation on the node's Y axis based on the process's 'delta'. If 'scaled' is false, normalizes the movement.
+ Applies a local translation on the node's Y axis based on the [method Node._process]'s [code]delta[/code]. If [code]scaled[/code] is false, normalizes the movement.
</description>
</method>
<method name="rotate">
@@ -163,7 +163,7 @@
<argument index="0" name="radians" type="float">
</argument>
<description>
- Apply a rotation to the node, in radians, starting from its current rotation.
+ Applies a rotation to the node, in radians, starting from its current rotation.
</description>
</method>
<method name="set_global_position">
@@ -172,7 +172,7 @@
<argument index="0" name="position" type="Vector2">
</argument>
<description>
- Set the node's global position.
+ Sets the node's global position.
</description>
</method>
<method name="set_global_rotation">
@@ -181,7 +181,7 @@
<argument index="0" name="radians" type="float">
</argument>
<description>
- Set the node's global rotation in radians.
+ Sets the node's global rotation in radians.
</description>
</method>
<method name="set_global_rotation_in_degrees">
@@ -190,7 +190,7 @@
<argument index="0" name="degrees" type="float">
</argument>
<description>
- Set the node's global rotation in degrees.
+ Sets the node's global rotation in degrees.
</description>
</method>
<method name="set_global_scale">
@@ -199,7 +199,7 @@
<argument index="0" name="scale" type="Vector2">
</argument>
<description>
- Set the node's global scale.
+ Sets the node's global scale.
</description>
</method>
<method name="set_global_transform">
@@ -208,7 +208,7 @@
<argument index="0" name="xform" type="Transform2D">
</argument>
<description>
- Set the node's global [Transform2D].
+ Sets the node's global [Transform2D].
</description>
</method>
<method name="set_position">
@@ -217,7 +217,7 @@
<argument index="0" name="position" type="Vector2">
</argument>
<description>
- Set the node's position.
+ Sets the node's position.
</description>
</method>
<method name="set_rotation">
@@ -226,7 +226,7 @@
<argument index="0" name="radians" type="float">
</argument>
<description>
- Set the node's rotation in radians.
+ Sets the node's rotation in radians.
</description>
</method>
<method name="set_rotation_in_degrees">
@@ -235,7 +235,7 @@
<argument index="0" name="degrees" type="float">
</argument>
<description>
- Set the node's rotation in degrees.
+ Sets the node's rotation in degrees.
</description>
</method>
<method name="set_scale">
@@ -244,7 +244,7 @@
<argument index="0" name="scale" type="Vector2">
</argument>
<description>
- Set the node's scale.
+ Sets the node's scale.
</description>
</method>
<method name="set_transform">
@@ -253,7 +253,7 @@
<argument index="0" name="xform" type="Transform2D">
</argument>
<description>
- Set the node's local [Transform2D].
+ Sets the node's local [Transform2D].
</description>
</method>
<method name="set_z">
@@ -262,7 +262,7 @@
<argument index="0" name="z" type="int">
</argument>
<description>
- Set the node's Z-index.
+ Sets the node's Z-index.
</description>
</method>
<method name="set_z_as_relative">
@@ -271,7 +271,7 @@
<argument index="0" name="enable" type="bool">
</argument>
<description>
- Make the node's Z-index relative to its parent's Z-index. If this node's Z-index is 2 and its parent's effective Z-index is 3, then this node's effective Z-index will be 2 + 3 = 5.
+ Makes the node's Z-index relative to its parent's Z-index. If this node's Z-index is 2 and its parent's effective Z-index is 3, then this node's effective Z-index will be 2 + 3 = 5.
</description>
</method>
<method name="to_global" qualifiers="const">
@@ -280,6 +280,7 @@
<argument index="0" name="local_point" type="Vector2">
</argument>
<description>
+ Converts a local point's coordinates to global coordinates.
</description>
</method>
<method name="to_local" qualifiers="const">
@@ -288,6 +289,7 @@
<argument index="0" name="global_point" type="Vector2">
</argument>
<description>
+ Converts a global point's coordinates to local coordinates.
</description>
</method>
<method name="translate">
@@ -296,7 +298,7 @@
<argument index="0" name="offset" type="Vector2">
</argument>
<description>
- Translate the node locally by the 'offset' vector, starting from its current local position.
+ Translates the node by the given [code]offset[/code] in local coordinates.
</description>
</method>
</methods>
@@ -320,13 +322,13 @@
Position, relative to the node's parent.
</member>
<member name="rotation" type="float" setter="set_rotation" getter="get_rotation">
- Rotation in radians.
+ Rotation in radians, relative to the node's parent.
</member>
<member name="rotation_deg" type="float" setter="set_rotation_in_degrees" getter="get_rotation_in_degrees">
- Rotation in degrees.
+ Rotation in degrees, relative to the node's parent.
</member>
<member name="scale" type="Vector2" setter="set_scale" getter="get_scale">
- Rotation in degrees.
+ The node's scale. Unscaled value: [code](1, 1)[/code]
</member>
<member name="transform" type="Transform2D" setter="set_transform" getter="get_transform">
Local [Transform2D].
@@ -335,7 +337,7 @@
Z-index. Controls the order in which the nodes render. A node with a higher Z-index will display in front of others.
</member>
<member name="z_as_relative" type="bool" setter="set_z_as_relative" getter="is_z_relative">
- Make the node's Z-index relative to its parent's Z-index. If this node's Z-index is 2 and its parent's effective Z-index is 3, then this node's effective Z-index will be 2 + 3 = 5.
+ If [code]true[/code] the node's Z-index is relative to its parent's Z-index. If this node's Z-index is 2 and its parent's effective Z-index is 3, then this node's effective Z-index will be 2 + 3 = 5.
</member>
</members>
<constants>
diff --git a/doc/classes/NodePath.xml b/doc/classes/NodePath.xml
index 9aa9572b80..ba2145482f 100644
--- a/doc/classes/NodePath.xml
+++ b/doc/classes/NodePath.xml
@@ -5,8 +5,8 @@
</brief_description>
<description>
A pre-parsed relative or absolute path in a scene tree, for use with [method Node.get_node] and similar functions. It can reference a node, a resource within a node, or a property of a node or resource. For instance, [code]"Path2D/PathFollow2D/Sprite:texture:size"[/code] would refer to the size property of the texture resource on the node named "Sprite" which is a child of the other named nodes in the path. Note that if you want to get a resource, you must end the path with a colon, otherwise the last element will be used as a property name.
- You will usually just pass a string to [method Node.get_node] and it will be automatically converted, but you may occasionally want to parse a path ahead of time with [NodePath] or the literal syntax [code]@"path"[/code]. Exporting a [NodePath] variable will give you a node selection widget in the properties panel of the editor, which can often be useful.
- A [NodePath] is made up of a list of node names, a list of "subnode" (resource) names, and the name of a property in the final node or resource.
+ You will usually just pass a string to [method Node.get_node] and it will be automatically converted, but you may occasionally want to parse a path ahead of time with [code]NodePath[/code] or the literal syntax [code]@"path"[/code]. Exporting a [code]NodePath[/code] variable will give you a node selection widget in the properties panel of the editor, which can often be useful.
+ A [code]NodePath[/code] is made up of a list of node names, a list of "subnode" (resource) names, and the name of a property in the final node or resource.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/OS.xml b/doc/classes/OS.xml
index f78821e158..2629e6740d 100644
--- a/doc/classes/OS.xml
+++ b/doc/classes/OS.xml
@@ -196,7 +196,7 @@
</return>
<description>
Returns the current latin keyboard variant as a String.
- Possible return values are: "QWERTY", "AZERTY", "QZERTY", "DVORAK", "NEO" or "ERROR"
+ Possible return values are: "QWERTY", "AZERTY", "QZERTY", "DVORAK", "NEO", "COLEMAK" or "ERROR".
</description>
</method>
<method name="get_locale" qualifiers="const">
@@ -397,6 +397,12 @@
You can pass the output from [method get_datetime_from_unix_time] directly into this function. Daylight savings time (dst), if present, is ignored.
</description>
</method>
+ <method name="get_virtual_keyboard_height">
+ <return type="int">
+ </return>
+ <description>
+ </description>
+ </method>
<method name="get_window_position" qualifiers="const">
<return type="Vector2">
</return>
@@ -420,6 +426,14 @@
Returns [code]true[/code] if an environment variable exists.
</description>
</method>
+ <method name="has_feature" qualifiers="const">
+ <return type="bool">
+ </return>
+ <argument index="0" name="tag_name" type="String">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="has_touchscreen_ui_hint" qualifiers="const">
<return type="bool">
</return>
@@ -468,7 +482,7 @@
<return type="bool">
</return>
<description>
- Returns [code]true[/code] if the "Okay" button should appear on the left and "Cancel" on the right.
+ Returns [code]true[/code] if the "Okay" button should appear on the left and "Cancel" on the right.
</description>
</method>
<method name="is_scancode_unicode" qualifiers="const">
diff --git a/doc/classes/Object.xml b/doc/classes/Object.xml
index 67421487f1..d30ebfaef8 100644
--- a/doc/classes/Object.xml
+++ b/doc/classes/Object.xml
@@ -6,7 +6,7 @@
<description>
Base class for all non built-in types. Everything not a built-in type starts the inheritance chain from this class.
Objects do not manage memory, if inheriting from one the object will most likely have to be deleted manually (call the [method free] function from the script or delete from C++).
- Some derivates add memory management, such as [Reference] (which keeps a reference count and deletes itself automatically when no longer referenced) and [Node], which deletes the children tree when deleted.
+ Some derivatives add memory management, such as [Reference] (which keeps a reference count and deletes itself automatically when no longer referenced) and [Node], which deletes the children tree when deleted.
Objects export properties, which are mainly useful for storage and editing, but not really so much in programming. Properties are exported in [method _get_property_list] and handled in [method _get] and [method _set]. However, scripting languages and C++ have simpler means to export them.
Objects also receive notifications ([method _notification]). Notifications are a simple way to notify the object about simple events, so they can all be handled together.
</description>
@@ -165,7 +165,7 @@
<return type="Array">
</return>
<description>
- Returns an [Array] of dictionaries with informations about signals that are connected to this object.
+ Returns an [Array] of dictionaries with information about signals that are connected to this object.
Inside each [Dictionary] there are 3 fields:
- "source" is a reference to signal emitter.
- "signal_name" is name of connected signal.
diff --git a/doc/classes/OccluderPolygon2D.xml b/doc/classes/OccluderPolygon2D.xml
index 99c1536ddf..7bc1f74762 100644
--- a/doc/classes/OccluderPolygon2D.xml
+++ b/doc/classes/OccluderPolygon2D.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="OccluderPolygon2D" inherits="Resource" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Defines a 2D polygon for LightOccluder2D.
</brief_description>
<description>
+ Editor facility that helps you draw a 2D polygon used as resource for [LightOccluder2D].
</description>
<tutorials>
</tutorials>
@@ -54,18 +56,24 @@
</methods>
<members>
<member name="closed" type="bool" setter="set_closed" getter="is_closed">
+ If [code]true[/code] closes the polygon. A closed OccluderPolygon2D occludes the light coming from any direction. An opened OccluderPolygon2D occludes the light only at its outline's direction. Default value [code]true[/code].
</member>
<member name="cull_mode" type="int" setter="set_cull_mode" getter="get_cull_mode" enum="OccluderPolygon2D.CullMode">
+ Set the direction of the occlusion culling when not [code]CULL_DISABLED[/code]. Default value [code]DISABLED[/code].
</member>
<member name="polygon" type="PoolVector2Array" setter="set_polygon" getter="get_polygon">
+ A [Vector2] array with the index for polygon's vertices positions.
</member>
</members>
<constants>
<constant name="CULL_DISABLED" value="0">
+ Culling mode for the occlusion. Disabled means no culling. See [member cull_mode].
</constant>
<constant name="CULL_CLOCKWISE" value="1">
+ Culling mode for the occlusion. Sets the culling to be in clockwise direction. See [member cull_mode].
</constant>
<constant name="CULL_COUNTER_CLOCKWISE" value="2">
+ Culling mode for the occlusion. Sets the culling to be in counter clockwise direction. See [member cull_mode].
</constant>
</constants>
</class>
diff --git a/doc/classes/OptionButton.xml b/doc/classes/OptionButton.xml
index abb0dc4f2d..08ea23f05a 100644
--- a/doc/classes/OptionButton.xml
+++ b/doc/classes/OptionButton.xml
@@ -46,7 +46,7 @@
<return type="void">
</return>
<description>
- Clear all the items in the [OptionButton].
+ Clear all the items in the [code]OptionButton[/code].
</description>
</method>
<method name="get_item_count" qualifiers="const">
diff --git a/doc/classes/PacketPeerUDP.xml b/doc/classes/PacketPeerUDP.xml
index 9bff0c9b5e..1d2241b580 100644
--- a/doc/classes/PacketPeerUDP.xml
+++ b/doc/classes/PacketPeerUDP.xml
@@ -4,7 +4,7 @@
UDP packet peer.
</brief_description>
<description>
- UDP packet peer. Can be used to send raw UDP packets as well as [Variant]\ s.
+ UDP packet peer. Can be used to send raw UDP packets as well as [Variant]s.
</description>
<tutorials>
</tutorials>
@@ -15,7 +15,7 @@
<return type="void">
</return>
<description>
- Close the UDP socket the [PacketPeerUDP] is currently listening on.
+ Close the UDP socket the [code]PacketPeerUDP[/code] is currently listening on.
</description>
</method>
<method name="get_packet_ip" qualifiers="const">
@@ -36,7 +36,7 @@
<return type="bool">
</return>
<description>
- Return whether this [PacketPeerUDP] is listening.
+ Return whether this [code]PacketPeerUDP[/code] is listening.
</description>
</method>
<method name="listen">
@@ -49,7 +49,7 @@
<argument index="2" name="recv_buf_size" type="int" default="65536">
</argument>
<description>
- Make this [PacketPeerUDP] listen on the "port" binding to "bind_address" with a buffer size "recv_buf_size".
+ Make this [code]PacketPeerUDP[/code] listen on the "port" binding to "bind_address" with a buffer size "recv_buf_size".
If "bind_address" is set as "*" (default), the peer will listen on all available addresses (both IPv4 and IPv6).
If "bind_address" is set as "0.0.0.0" (for IPv4) or "::" (for IPv6), the peer will listen on all available addresses matching that IP type.
If "bind_address" is set to any valid address (e.g. "192.168.1.101", "::1", etc), the peer will only listen on the interface with that addresses (or fail if no interface with the given address exists).
diff --git a/doc/classes/ParallaxBackground.xml b/doc/classes/ParallaxBackground.xml
index a7d616129a..21b6150900 100644
--- a/doc/classes/ParallaxBackground.xml
+++ b/doc/classes/ParallaxBackground.xml
@@ -4,7 +4,7 @@
A node used to create a parallax scrolling background.
</brief_description>
<description>
- A ParallaxBackground will use one or more [ParallaxLayer] nodes to create a parallax scrolling background. Each [ParallaxLayer] can be set to move at different speeds relative to the camera movement, this can be used to create an illusion of depth in a 2D game.
+ A ParallaxBackground uses one or more [ParallaxLayer] child nodes to create a parallax effect. Each [ParallaxLayer] can move at a different speed using [member ParallaxLayer.motion_offset]. This creates an illusion of depth in a 2D game. If not used with a [Camera2D], you must manually calculate the [member scroll_offset].
</description>
<tutorials>
</tutorials>
@@ -108,16 +108,22 @@
</methods>
<members>
<member name="scroll_base_offset" type="Vector2" setter="set_scroll_base_offset" getter="get_scroll_base_offset">
+ Base position offset of all [ParallaxLayer] children.
</member>
<member name="scroll_base_scale" type="Vector2" setter="set_scroll_base_scale" getter="get_scroll_base_scale">
+ Base motion scale of all [ParallaxLayer] children.
</member>
<member name="scroll_ignore_camera_zoom" type="bool" setter="set_ignore_camera_zoom" getter="is_ignore_camera_zoom">
+ If [code]true[/code] elements in [ParallaxLayer] child aren't affected by the zoom level of the camera.
</member>
<member name="scroll_limit_begin" type="Vector2" setter="set_limit_begin" getter="get_limit_begin">
+ Top left limits for scrolling to begin. If the camera is outside of this limit the background will stop scrolling. Must be lower than [member scroll_limit_end] to work.
</member>
<member name="scroll_limit_end" type="Vector2" setter="set_limit_end" getter="get_limit_end">
+ Right bottom limits for scrolling to end. If the camera is outside of this limit the background will stop scrolling. Must be higher than [member scroll_limit_begin] to work.
</member>
<member name="scroll_offset" type="Vector2" setter="set_scroll_offset" getter="get_scroll_offset">
+ The ParallaxBackground's scroll value. Calculated automatically when using a [Camera2D], but can be used to manually manage scrolling when no camera is present.
</member>
</members>
<constants>
diff --git a/doc/classes/ParallaxLayer.xml b/doc/classes/ParallaxLayer.xml
index 6cf5549c8f..f1e6f9e046 100644
--- a/doc/classes/ParallaxLayer.xml
+++ b/doc/classes/ParallaxLayer.xml
@@ -4,7 +4,8 @@
A parallax scrolling layer to be used with [ParallaxBackground].
</brief_description>
<description>
- A ParallaxLayer must be the child of a [ParallaxBackground] node. All child nodes will be affected by the parallax scrolling of this layer.
+ A ParallaxLayer must be the child of a [ParallaxBackground] node. Each ParallaxLayer can be set to move at different speeds relative to the camera movement or the [member ParallaxBackground.scroll_offset] value.
+ This node's children will be affected by its scroll offset.
</description>
<tutorials>
</tutorials>
@@ -60,10 +61,13 @@
</methods>
<members>
<member name="motion_mirroring" type="Vector2" setter="set_mirroring" getter="get_mirroring">
+ The ParallaxLayer's [Texture] mirroring. Useful for creating an infinite scrolling background. If an axis is set to [code]0[/code] the [Texture] will not be mirrored. Default value: [code](0, 0)[/code].
</member>
<member name="motion_offset" type="Vector2" setter="set_motion_offset" getter="get_motion_offset">
+ The ParallaxLayer's offset relative to the parent ParallaxBackground's [member ParallaxBackground.scroll_offset].
</member>
<member name="motion_scale" type="Vector2" setter="set_motion_scale" getter="get_motion_scale">
+ Multiplies the ParallaxLayer's motion. If an axis is set to [code]0[/code] it will not scroll.
</member>
</members>
<constants>
diff --git a/doc/classes/Particles2D.xml b/doc/classes/Particles2D.xml
index b2c63ea0c3..cfc907b727 100644
--- a/doc/classes/Particles2D.xml
+++ b/doc/classes/Particles2D.xml
@@ -286,7 +286,7 @@
</methods>
<members>
<member name="amount" type="int" setter="set_amount" getter="get_amount">
- Number of particles to emit.
+ Number of particles emitted in one emission cycle.
</member>
<member name="draw_order" type="int" setter="set_draw_order" getter="get_draw_order" enum="Particles2D.DrawOrder">
Particle draw order. Uses [code]DRAW_ORDER_*[/code] values. Default value: [code]DRAW_ORDER_INDEX[/code].
@@ -295,7 +295,7 @@
If [code]true[/code] particles are being emitted. Default value: [code]true[/code].
</member>
<member name="explosiveness" type="float" setter="set_explosiveness_ratio" getter="get_explosiveness_ratio">
- Time ratio between each emission. If [code]0[/code] particles are emitted continuously. If [code]1[/code] all particles are emitted simultaneously. Default value: [code]0[/code].
+ How rapidly particles in an emission cycle are emitted. If greater than [code]0[/code], there will be a gap in emissions before the next cycle begins. Default value: [code]0[/code].
</member>
<member name="fixed_fps" type="int" setter="set_fixed_fps" getter="get_fixed_fps">
</member>
@@ -313,18 +313,19 @@
<member name="normal_map" type="Texture" setter="set_normal_map" getter="get_normal_map">
</member>
<member name="one_shot" type="bool" setter="set_one_shot" getter="get_one_shot">
- If [code]true[/code] only [code]amount[/code] particles will be emitted. Default value: [code]false[/code].
+ If [code]true[/code] only one emission cycle occurs. If set [code]true[/code] during a cycle, emission will stop at the cycle's end. Default value: [code]false[/code].
</member>
<member name="preprocess" type="float" setter="set_pre_process_time" getter="get_pre_process_time">
+ Particle system starts as if it had already run for this many seconds.
</member>
<member name="process_material" type="Material" setter="set_process_material" getter="get_process_material">
[Material] for processing particles. Can be a [ParticlesMaterial] or a [ShaderMaterial].
</member>
<member name="randomness" type="float" setter="set_randomness_ratio" getter="get_randomness_ratio">
- Emission randomness ratio. Default value: [code]0[/code].
+ Emission lifetime randomness ratio. Default value: [code]0[/code].
</member>
<member name="speed_scale" type="float" setter="set_speed_scale" getter="get_speed_scale">
- Speed scaling ratio. Default value: [code]1[/code].
+ Particle system's running speed scaling ratio. Default value: [code]1[/code].
</member>
<member name="texture" type="Texture" setter="set_texture" getter="get_texture">
Particle texture. If [code]null[/code] particles will be squares.
@@ -333,6 +334,7 @@
Number of vertical frames in [code]texture[/code].
</member>
<member name="visibility_rect" type="Rect2" setter="set_visibility_rect" getter="get_visibility_rect">
+ Editor visibility helper.
</member>
</members>
<constants>
diff --git a/doc/classes/Path2D.xml b/doc/classes/Path2D.xml
index 839e617375..722e0c1240 100644
--- a/doc/classes/Path2D.xml
+++ b/doc/classes/Path2D.xml
@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="Path2D" inherits="Node2D" category="Core" version="3.0.alpha.custom_build">
<brief_description>
- Container for a [Curve2D].
+ Contains a [Curve2D] path for [PathFollow2D] nodes to follow.
</brief_description>
<description>
- This class is a container/Node-ification of a [Curve2D], so it can have [Node2D] properties and [Node] info.
+ Can have [PathFollow2D] child-nodes moving along the [Curve2D]. See [PathFollow2D] for more information on this usage.
</description>
<tutorials>
</tutorials>
@@ -30,6 +30,7 @@
</methods>
<members>
<member name="curve" type="Curve2D" setter="set_curve" getter="get_curve">
+ A [Curve2D] describing the path.
</member>
</members>
<constants>
diff --git a/doc/classes/Physics2DDirectSpaceState.xml b/doc/classes/Physics2DDirectSpaceState.xml
index 9399227d27..b15d4dfd54 100644
--- a/doc/classes/Physics2DDirectSpaceState.xml
+++ b/doc/classes/Physics2DDirectSpaceState.xml
@@ -70,7 +70,7 @@
collider_id: Id of the object the point is in.
collider: Object the point is inside of.
rid: [RID] of the object the point is in.
- Additionally, the method can take an array of objects or [RID]\ s that are to be excluded from collisions, a bitmask representing the physics layers to check in, and another bitmask for the types of objects to check (see TYPE_MASK_* constants).
+ Additionally, the method can take an array of objects or [RID]s that are to be excluded from collisions, a bitmask representing the physics layers to check in, and another bitmask for the types of objects to check (see TYPE_MASK_* constants).
</description>
</method>
<method name="intersect_ray">
@@ -96,7 +96,7 @@
collider: Object against which the ray was stopped.
rid: [RID] of the object against which the ray was stopped.
If the ray did not intersect anything, then an empty dictionary (dir.empty()==true) is returned instead.
- Additionally, the method can take an array of objects or [RID]\ s that are to be excluded from collisions, a bitmask representing the physics layers to check in, and another bitmask for the types of objects to check (see TYPE_MASK_* constants).
+ Additionally, the method can take an array of objects or [RID]s that are to be excluded from collisions, a bitmask representing the physics layers to check in, and another bitmask for the types of objects to check (see TYPE_MASK_* constants).
</description>
</method>
<method name="intersect_shape">
@@ -130,11 +130,11 @@
<constant name="TYPE_MASK_CHARACTER_BODY" value="8">
Check for collisions with rigid bodies in character mode.
</constant>
- <constant name="TYPE_MASK_AREA" value="16">
- Check for collisions with areas.
- </constant>
<constant name="TYPE_MASK_COLLISION" value="15">
Check for collisions with any kind of bodies (but not areas).
</constant>
+ <constant name="TYPE_MASK_AREA" value="16">
+ Check for collisions with areas.
+ </constant>
</constants>
</class>
diff --git a/doc/classes/Physics2DServer.xml b/doc/classes/Physics2DServer.xml
index fd093edc84..6e3381c200 100644
--- a/doc/classes/Physics2DServer.xml
+++ b/doc/classes/Physics2DServer.xml
@@ -21,7 +21,7 @@
<argument index="2" name="transform" type="Transform2D" default="Transform2D( 1, 0, 0, 1, 0, 0 )">
</argument>
<description>
- Add a shape to the area, along with a transform matrix. Shapes are usually referenced by their index, so you should track which shape has a given index.
+ Adds a shape to the area, along with a transform matrix. Shapes are usually referenced by their index, so you should track which shape has a given index.
</description>
</method>
<method name="area_attach_object_instance_id">
@@ -32,7 +32,7 @@
<argument index="1" name="id" type="int">
</argument>
<description>
- Assign the area to a descendant of [Object], so it can exist in the node tree.
+ Assigns the area to a descendant of [Object], so it can exist in the node tree.
</description>
</method>
<method name="area_clear_shapes">
@@ -41,14 +41,14 @@
<argument index="0" name="area" type="RID">
</argument>
<description>
- Remove all shapes from an area. It does not delete the shapes, so they can be reassigned later.
+ Removes all shapes from an area. It does not delete the shapes, so they can be reassigned later.
</description>
</method>
<method name="area_create">
<return type="RID">
</return>
<description>
- Create an [Area2D].
+ Creates an [Area2D].
</description>
</method>
<method name="area_get_object_instance_id" qualifiers="const">
@@ -57,7 +57,7 @@
<argument index="0" name="area" type="RID">
</argument>
<description>
- Get the instance ID of the object the area is assigned to.
+ Gets the instance ID of the object the area is assigned to.
</description>
</method>
<method name="area_get_param" qualifiers="const">
@@ -68,7 +68,7 @@
<argument index="1" name="param" type="int" enum="Physics2DServer.AreaParameter">
</argument>
<description>
- Return an area parameter value.
+ Returns an area parameter value. A list of available parameters is on the AREA_PARAM_* constants.
</description>
</method>
<method name="area_get_shape" qualifiers="const">
@@ -79,7 +79,7 @@
<argument index="1" name="shape_idx" type="int">
</argument>
<description>
- Return the [RID] of the nth shape of an area.
+ Returns the [RID] of the nth shape of an area.
</description>
</method>
<method name="area_get_shape_count" qualifiers="const">
@@ -88,7 +88,7 @@
<argument index="0" name="area" type="RID">
</argument>
<description>
- Return the number of shapes assigned to an area.
+ Returns the number of shapes assigned to an area.
</description>
</method>
<method name="area_get_shape_transform" qualifiers="const">
@@ -99,7 +99,7 @@
<argument index="1" name="shape_idx" type="int">
</argument>
<description>
- Return the transform matrix of a shape within an area.
+ Returns the transform matrix of a shape within an area.
</description>
</method>
<method name="area_get_space" qualifiers="const">
@@ -108,7 +108,7 @@
<argument index="0" name="area" type="RID">
</argument>
<description>
- Return the space assigned to the area.
+ Returns the space assigned to the area.
</description>
</method>
<method name="area_get_space_override_mode" qualifiers="const">
@@ -117,7 +117,7 @@
<argument index="0" name="area" type="RID">
</argument>
<description>
- Return the space override mode for the area.
+ Returns the space override mode for the area.
</description>
</method>
<method name="area_get_transform" qualifiers="const">
@@ -126,7 +126,7 @@
<argument index="0" name="area" type="RID">
</argument>
<description>
- Return the transform matrix for an area.
+ Returns the transform matrix for an area.
</description>
</method>
<method name="area_remove_shape">
@@ -137,7 +137,7 @@
<argument index="1" name="shape_idx" type="int">
</argument>
<description>
- Remove a shape from an area. It does not delete the shape, so it can be reassigned later.
+ Removes a shape from an area. It does not delete the shape, so it can be reassigned later.
</description>
</method>
<method name="area_set_collision_layer">
@@ -148,7 +148,7 @@
<argument index="1" name="layer" type="int">
</argument>
<description>
- Assign the area to one or many physics layers.
+ Assigns the area to one or many physics layers.
</description>
</method>
<method name="area_set_collision_mask">
@@ -159,7 +159,7 @@
<argument index="1" name="mask" type="int">
</argument>
<description>
- Set which physics layers the area will monitor.
+ Sets which physics layers the area will monitor.
</description>
</method>
<method name="area_set_monitor_callback">
@@ -172,7 +172,7 @@
<argument index="2" name="method" type="String">
</argument>
<description>
- Set the function to call when any body/area enters or exits the area. This callback will be called for any object interacting with the area, and takes five parameters:
+ Sets the function to call when any body/area enters or exits the area. This callback will be called for any object interacting with the area, and takes five parameters:
1: AREA_BODY_ADDED or AREA_BODY_REMOVED, depending on whether the object entered or exited the area.
2: [RID] of the object that entered/exited the area.
3: Instance ID of the object that entered/exited the area.
@@ -190,7 +190,7 @@
<argument index="2" name="value" type="Variant">
</argument>
<description>
- Set the value for an area parameter. A list of available parameters is on the AREA_PARAM_* constants.
+ Sets the value for an area parameter. A list of available parameters is on the AREA_PARAM_* constants.
</description>
</method>
<method name="area_set_shape">
@@ -203,7 +203,7 @@
<argument index="2" name="shape" type="RID">
</argument>
<description>
- Substitute a given area shape by another. The old shape is selected by its index, the new one by its [RID].
+ Substitutes a given area shape by another. The old shape is selected by its index, the new one by its [RID].
</description>
</method>
<method name="area_set_shape_disabled">
@@ -216,6 +216,7 @@
<argument index="2" name="disable" type="bool">
</argument>
<description>
+ Disables a given shape in this area if [code]disable is true[/code]
</description>
</method>
<method name="area_set_shape_transform">
@@ -228,7 +229,7 @@
<argument index="2" name="transform" type="Transform2D">
</argument>
<description>
- Set the transform matrix for an area shape.
+ Sets the transform matrix for an area shape.
</description>
</method>
<method name="area_set_space">
@@ -239,7 +240,7 @@
<argument index="1" name="space" type="RID">
</argument>
<description>
- Assign a space to the area.
+ Assigns a space to the area.
</description>
</method>
<method name="area_set_space_override_mode">
@@ -250,7 +251,7 @@
<argument index="1" name="mode" type="int" enum="Physics2DServer.AreaSpaceOverrideMode">
</argument>
<description>
- Set the space override mode for the area. The modes are described in the constants AREA_SPACE_OVERRIDE_*.
+ Sets the space override mode for the area. The modes are described in the constants AREA_SPACE_OVERRIDE_*.
</description>
</method>
<method name="area_set_transform">
@@ -261,7 +262,7 @@
<argument index="1" name="transform" type="Transform2D">
</argument>
<description>
- Set the transform matrix for an area.
+ Sets the transform matrix for an area.
</description>
</method>
<method name="body_add_collision_exception">
@@ -272,7 +273,7 @@
<argument index="1" name="excepted_body" type="RID">
</argument>
<description>
- Add a body to the list of bodies exempt from collisions.
+ Adds a body to the list of bodies exempt from collisions.
</description>
</method>
<method name="body_add_force">
@@ -285,7 +286,7 @@
<argument index="2" name="force" type="Vector2">
</argument>
<description>
- Add a positioned force to the applied force and torque. As with [method body_apply_impulse], both the force and the offset from the body origin are in global coordinates. A force differs from an impulse in that, while the two are forces, the impulse clears itself after being applied.
+ Adds a positioned force to the applied force and torque. As with [method body_apply_impulse], both the force and the offset from the body origin are in global coordinates. A force differs from an impulse in that, while the two are forces, the impulse clears itself after being applied.
</description>
</method>
<method name="body_add_shape">
@@ -298,7 +299,7 @@
<argument index="2" name="transform" type="Transform2D" default="Transform2D( 1, 0, 0, 1, 0, 0 )">
</argument>
<description>
- Add a shape to the body, along with a transform matrix. Shapes are usually referenced by their index, so you should track which shape has a given index.
+ Adds a shape to the body, along with a transform matrix. Shapes are usually referenced by their index, so you should track which shape has a given index.
</description>
</method>
<method name="body_apply_impulse">
@@ -311,7 +312,7 @@
<argument index="2" name="impulse" type="Vector2">
</argument>
<description>
- Add a positioned impulse to the applied force and torque. Both the force and the offset from the body origin are in global coordinates.
+ Adds a positioned impulse to the applied force and torque. Both the force and the offset from the body origin are in global coordinates.
</description>
</method>
<method name="body_attach_object_instance_id">
@@ -322,7 +323,7 @@
<argument index="1" name="id" type="int">
</argument>
<description>
- Assign the area to a descendant of [Object], so it can exist in the node tree.
+ Assigns the area to a descendant of [Object], so it can exist in the node tree.
</description>
</method>
<method name="body_clear_shapes">
@@ -331,7 +332,7 @@
<argument index="0" name="body" type="RID">
</argument>
<description>
- Remove all shapes from a body.
+ Removes all shapes from a body.
</description>
</method>
<method name="body_create">
@@ -342,7 +343,7 @@
<argument index="1" name="init_sleeping" type="bool" default="false">
</argument>
<description>
- Create a physics body. The first parameter can be any value from constants BODY_MODE*, for the type of body created. Additionally, the body can be created in sleeping state to save processing time.
+ Creates a physics body. The first parameter can be any value from constants BODY_MODE*, for the type of body created. Additionally, the body can be created in sleeping state to save processing time.
</description>
</method>
<method name="body_get_collision_layer" qualifiers="const">
@@ -351,7 +352,7 @@
<argument index="0" name="body" type="RID">
</argument>
<description>
- Return the physics layer or layers a body belongs to.
+ Returns the physics layer or layers a body belongs to.
</description>
</method>
<method name="body_get_collision_mask" qualifiers="const">
@@ -360,7 +361,7 @@
<argument index="0" name="body" type="RID">
</argument>
<description>
- Return the physics layer or layers a body can collide with.
+ Returns the physics layer or layers a body can collide with.
</description>
</method>
<method name="body_get_continuous_collision_detection_mode" qualifiers="const">
@@ -369,7 +370,16 @@
<argument index="0" name="body" type="RID">
</argument>
<description>
- Return the continuous collision detection mode.
+ Returns the continuous collision detection mode.
+ </description>
+ </method>
+ <method name="body_get_direct_state">
+ <return type="Physics2DDirectBodyState">
+ </return>
+ <argument index="0" name="body" type="RID">
+ </argument>
+ <description>
+ Returns the [Physics2DDirectBodyState] of the body.
</description>
</method>
<method name="body_get_max_contacts_reported" qualifiers="const">
@@ -378,7 +388,7 @@
<argument index="0" name="body" type="RID">
</argument>
<description>
- Return the maximum contacts that can be reported. See [method body_set_max_contacts_reported].
+ Returns the maximum contacts that can be reported. See [method body_set_max_contacts_reported].
</description>
</method>
<method name="body_get_mode" qualifiers="const">
@@ -387,7 +397,7 @@
<argument index="0" name="body" type="RID">
</argument>
<description>
- Return the body mode.
+ Returns the body mode.
</description>
</method>
<method name="body_get_object_instance_id" qualifiers="const">
@@ -396,7 +406,7 @@
<argument index="0" name="body" type="RID">
</argument>
<description>
- Get the instance ID of the object the area is assigned to.
+ Gets the instance ID of the object the area is assigned to.
</description>
</method>
<method name="body_get_param" qualifiers="const">
@@ -407,7 +417,7 @@
<argument index="1" name="param" type="int" enum="Physics2DServer.BodyParameter">
</argument>
<description>
- Return the value of a body parameter.
+ Returns the value of a body parameter. A list of available parameters is on the BODY_PARAM_* constants.
</description>
</method>
<method name="body_get_shape" qualifiers="const">
@@ -418,7 +428,7 @@
<argument index="1" name="shape_idx" type="int">
</argument>
<description>
- Return the [RID] of the nth shape of a body.
+ Returns the [RID] of the nth shape of a body.
</description>
</method>
<method name="body_get_shape_count" qualifiers="const">
@@ -427,7 +437,7 @@
<argument index="0" name="body" type="RID">
</argument>
<description>
- Return the number of shapes assigned to a body.
+ Returns the number of shapes assigned to a body.
</description>
</method>
<method name="body_get_shape_metadata" qualifiers="const">
@@ -438,7 +448,7 @@
<argument index="1" name="shape_idx" type="int">
</argument>
<description>
- Return the metadata of a shape of a body.
+ Returns the metadata of a shape of a body.
</description>
</method>
<method name="body_get_shape_transform" qualifiers="const">
@@ -449,7 +459,7 @@
<argument index="1" name="shape_idx" type="int">
</argument>
<description>
- Return the transform matrix of a body shape.
+ Returns the transform matrix of a body shape.
</description>
</method>
<method name="body_get_space" qualifiers="const">
@@ -458,7 +468,7 @@
<argument index="0" name="body" type="RID">
</argument>
<description>
- Return the [RID] of the space assigned to a body.
+ Returns the [RID] of the space assigned to a body.
</description>
</method>
<method name="body_get_state" qualifiers="const">
@@ -469,7 +479,7 @@
<argument index="1" name="state" type="int" enum="Physics2DServer.BodyState">
</argument>
<description>
- Return a body state.
+ Returns a body state.
</description>
</method>
<method name="body_is_omitting_force_integration" qualifiers="const">
@@ -478,7 +488,7 @@
<argument index="0" name="body" type="RID">
</argument>
<description>
- Return whether a body uses a callback function to calculate its own physics (see [method body_set_force_integration_callback]).
+ Returns whether a body uses a callback function to calculate its own physics (see [method body_set_force_integration_callback]).
</description>
</method>
<method name="body_remove_collision_exception">
@@ -489,7 +499,7 @@
<argument index="1" name="excepted_body" type="RID">
</argument>
<description>
- Remove a body from the list of bodies exempt from collisions.
+ Removes a body from the list of bodies exempt from collisions.
</description>
</method>
<method name="body_remove_shape">
@@ -500,7 +510,7 @@
<argument index="1" name="shape_idx" type="int">
</argument>
<description>
- Remove a shape from a body. The shape is not deleted, so it can be reused afterwards.
+ Removes a shape from a body. The shape is not deleted, so it can be reused afterwards.
</description>
</method>
<method name="body_set_axis_velocity">
@@ -511,7 +521,7 @@
<argument index="1" name="axis_velocity" type="Vector2">
</argument>
<description>
- Set an axis velocity. The velocity in the given vector axis will be set as the given vector length. This is useful for jumping behavior.
+ Sets an axis velocity. The velocity in the given vector axis will be set as the given vector length. This is useful for jumping behavior.
</description>
</method>
<method name="body_set_collision_layer">
@@ -522,7 +532,7 @@
<argument index="1" name="layer" type="int">
</argument>
<description>
- Set the physics layer or layers a body belongs to.
+ Sets the physics layer or layers a body belongs to.
</description>
</method>
<method name="body_set_collision_mask">
@@ -533,7 +543,7 @@
<argument index="1" name="mask" type="int">
</argument>
<description>
- Set the physics layer or layers a body can collide with.
+ Sets the physics layer or layers a body can collide with.
</description>
</method>
<method name="body_set_continuous_collision_detection_mode">
@@ -544,7 +554,7 @@
<argument index="1" name="mode" type="int" enum="Physics2DServer.CCDMode">
</argument>
<description>
- Set the continuous collision detection mode from any of the CCD_MODE_* constants.
+ Sets the continuous collision detection mode from any of the CCD_MODE_* constants.
Continuous collision detection tries to predict where a moving body will collide, instead of moving it and correcting its movement if it collided.
</description>
</method>
@@ -560,7 +570,7 @@
<argument index="3" name="userdata" type="Variant" default="null">
</argument>
<description>
- Set the function used to calculate physics for an object, if that object allows it (see [method body_set_omit_force integration]).
+ Sets the function used to calculate physics for an object, if that object allows it (see [method body_set_omit_force integration]).
</description>
</method>
<method name="body_set_max_contacts_reported">
@@ -571,7 +581,7 @@
<argument index="1" name="amount" type="int">
</argument>
<description>
- Set the maximum contacts to report. Bodies can keep a log of the contacts with other bodies, this is enabled by setting the maximum amount of contacts reported to a number greater than 0.
+ Sets the maximum contacts to report. Bodies can keep a log of the contacts with other bodies, this is enabled by setting the maximum amount of contacts reported to a number greater than 0.
</description>
</method>
<method name="body_set_mode">
@@ -582,7 +592,7 @@
<argument index="1" name="mode" type="int" enum="Physics2DServer.BodyMode">
</argument>
<description>
- Set the body mode, from one of the constants BODY_MODE*.
+ Sets the body mode, from one of the constants BODY_MODE*.
</description>
</method>
<method name="body_set_omit_force_integration">
@@ -593,7 +603,7 @@
<argument index="1" name="enable" type="bool">
</argument>
<description>
- Set whether a body uses a callback function to calculate its own physics (see [method body_set_force_integration_callback]).
+ Sets whether a body uses a callback function to calculate its own physics (see [method body_set_force_integration_callback]).
</description>
</method>
<method name="body_set_param">
@@ -606,7 +616,7 @@
<argument index="2" name="value" type="float">
</argument>
<description>
- Set a body parameter (see BODY_PARAM* constants).
+ Sets a body parameter. A list of available parameters is on the BODY_PARAM_* constants.
</description>
</method>
<method name="body_set_shape">
@@ -619,7 +629,7 @@
<argument index="2" name="shape" type="RID">
</argument>
<description>
- Substitute a given body shape by another. The old shape is selected by its index, the new one by its [RID].
+ Substitutes a given body shape by another. The old shape is selected by its index, the new one by its [RID].
</description>
</method>
<method name="body_set_shape_as_one_way_collision">
@@ -632,6 +642,7 @@
<argument index="2" name="enable" type="bool">
</argument>
<description>
+ Enables one way collision on body if [code]enable is true[/code].
</description>
</method>
<method name="body_set_shape_disabled">
@@ -644,6 +655,7 @@
<argument index="2" name="disable" type="bool">
</argument>
<description>
+ Disables shape in body if [code]disable is true[/code].
</description>
</method>
<method name="body_set_shape_metadata">
@@ -656,7 +668,7 @@
<argument index="2" name="metadata" type="Variant">
</argument>
<description>
- Set metadata of a shape within a body. This metadata is different from [method Object.set_meta], and can be retrieved on shape queries.
+ Sets metadata of a shape within a body. This metadata is different from [method Object.set_meta], and can be retrieved on shape queries.
</description>
</method>
<method name="body_set_shape_transform">
@@ -669,7 +681,7 @@
<argument index="2" name="transform" type="Transform2D">
</argument>
<description>
- Set the transform matrix for a body shape.
+ Sets the transform matrix for a body shape.
</description>
</method>
<method name="body_set_space">
@@ -680,7 +692,7 @@
<argument index="1" name="space" type="RID">
</argument>
<description>
- Assign a space to the body (see [method create_space]).
+ Assigns a space to the body (see [method create_space]).
</description>
</method>
<method name="body_set_state">
@@ -693,7 +705,7 @@
<argument index="2" name="value" type="Variant">
</argument>
<description>
- Set a body state (see BODY_STATE* constants).
+ Sets a body state (see BODY_STATE* constants).
</description>
</method>
<method name="body_test_motion">
@@ -710,7 +722,7 @@
<argument index="4" name="result" type="Physics2DTestMotionResult" default="null">
</argument>
<description>
- Return whether a body can move from a given point in a given direction. Apart from the boolean return value, a [Physics2DTestMotionResult] can be passed to return additional information in.
+ Returns whether a body can move from a given point in a given direction. Apart from the boolean return value, a [Physics2DTestMotionResult] can be passed to return additional information in.
</description>
</method>
<method name="damped_spring_joint_create">
@@ -725,7 +737,7 @@
<argument index="3" name="body_b" type="RID">
</argument>
<description>
- Create a damped spring joint between two bodies. If not specified, the second body is assumed to be the joint itself.
+ Creates a damped spring joint between two bodies. If not specified, the second body is assumed to be the joint itself.
</description>
</method>
<method name="damped_string_joint_get_param" qualifiers="const">
@@ -736,7 +748,7 @@
<argument index="1" name="param" type="int" enum="Physics2DServer.DampedStringParam">
</argument>
<description>
- Return the value of a damped spring joint parameter.
+ Returns the value of a damped spring joint parameter.
</description>
</method>
<method name="damped_string_joint_set_param">
@@ -749,7 +761,7 @@
<argument index="2" name="value" type="float">
</argument>
<description>
- Set a damped spring joint parameter. Parameters are explained in the DAMPED_STRING* constants.
+ Sets a damped spring joint parameter. Parameters are explained in the DAMPED_STRING* constants.
</description>
</method>
<method name="free_rid">
@@ -758,7 +770,7 @@
<argument index="0" name="rid" type="RID">
</argument>
<description>
- Destroy any of the objects created by Physics2DServer. If the [RID] passed is not one of the objects that can be created by Physics2DServer, an error will be sent to the console.
+ Destroys any of the objects created by Physics2DServer. If the [RID] passed is not one of the objects that can be created by Physics2DServer, an error will be sent to the console.
</description>
</method>
<method name="get_process_info">
@@ -767,7 +779,7 @@
<argument index="0" name="process_info" type="int" enum="Physics2DServer.ProcessInfo">
</argument>
<description>
- Return information about the current state of the 2D physics engine. The states are listed under the INFO_* constants.
+ Returns information about the current state of the 2D physics engine. The states are listed under the INFO_* constants.
</description>
</method>
<method name="groove_joint_create">
@@ -784,7 +796,7 @@
<argument index="4" name="body_b" type="RID">
</argument>
<description>
- Create a groove joint between two bodies. If not specified, the bodyies are assumed to be the joint itself.
+ Creates a groove joint between two bodies. If not specified, the bodyies are assumed to be the joint itself.
</description>
</method>
<method name="joint_get_param" qualifiers="const">
@@ -795,7 +807,7 @@
<argument index="1" name="param" type="int" enum="Physics2DServer.JointParam">
</argument>
<description>
- Return the value of a joint parameter.
+ Returns the value of a joint parameter.
</description>
</method>
<method name="joint_get_type" qualifiers="const">
@@ -804,7 +816,7 @@
<argument index="0" name="joint" type="RID">
</argument>
<description>
- Return the type of a joint (see JOINT_* constants).
+ Returns the type of a joint (see JOINT_* constants).
</description>
</method>
<method name="joint_set_param">
@@ -817,7 +829,7 @@
<argument index="2" name="value" type="float">
</argument>
<description>
- Set a joint parameter. Parameters are explained in the JOINT_PARAM* constants.
+ Sets a joint parameter. Parameters are explained in the JOINT_PARAM* constants.
</description>
</method>
<method name="pin_joint_create">
@@ -830,7 +842,7 @@
<argument index="2" name="body_b" type="RID">
</argument>
<description>
- Create a pin joint between two bodies. If not specified, the second body is assumed to be the joint itself.
+ Creates a pin joint between two bodies. If not specified, the second body is assumed to be the joint itself.
</description>
</method>
<method name="set_active">
@@ -839,7 +851,7 @@
<argument index="0" name="active" type="bool">
</argument>
<description>
- Activate or deactivate the 2D physics engine.
+ Activates or deactivates the 2D physics engine.
</description>
</method>
<method name="shape_create">
@@ -848,7 +860,7 @@
<argument index="0" name="type" type="int" enum="Physics2DServer.ShapeType">
</argument>
<description>
- Create a shape of type SHAPE_*. Does not assign it to a body or an area. To do so, you must use [method area_set_shape] or [method body_set_shape].
+ Creates a shape of type SHAPE_*. Does not assign it to a body or an area. To do so, you must use [method area_set_shape] or [method body_set_shape].
</description>
</method>
<method name="shape_get_data" qualifiers="const">
@@ -857,7 +869,7 @@
<argument index="0" name="shape" type="RID">
</argument>
<description>
- Return the shape data.
+ Returns the shape data.
</description>
</method>
<method name="shape_get_type" qualifiers="const">
@@ -866,7 +878,7 @@
<argument index="0" name="shape" type="RID">
</argument>
<description>
- Return the type of shape (see SHAPE_* constants).
+ Returns the type of shape (see SHAPE_* constants).
</description>
</method>
<method name="shape_set_data">
@@ -877,14 +889,14 @@
<argument index="1" name="data" type="Variant">
</argument>
<description>
- Set the shape data that defines its shape and size. The data to be passed depends on the kind of shape created [method shape_get_type].
+ Sets the shape data that defines its shape and size. The data to be passed depends on the kind of shape created [method shape_get_type].
</description>
</method>
<method name="space_create">
<return type="RID">
</return>
<description>
- Create a space. A space is a collection of parameters for the physics engine that can be assigned to an area or a body. It can be assigned to an area with [method area_set_space], or to a body with [method body_set_space].
+ Creates a space. A space is a collection of parameters for the physics engine that can be assigned to an area or a body. It can be assigned to an area with [method area_set_space], or to a body with [method body_set_space].
</description>
</method>
<method name="space_get_direct_state">
@@ -893,7 +905,7 @@
<argument index="0" name="space" type="RID">
</argument>
<description>
- Return the state of a space, a [Physics2DDirectSpaceState]. This object can be used to make collision/intersection queries.
+ Returns the state of a space, a [Physics2DDirectSpaceState]. This object can be used to make collision/intersection queries.
</description>
</method>
<method name="space_get_param" qualifiers="const">
@@ -904,7 +916,7 @@
<argument index="1" name="param" type="int" enum="Physics2DServer.SpaceParameter">
</argument>
<description>
- Return the value of a space parameter.
+ Returns the value of a space parameter.
</description>
</method>
<method name="space_is_active" qualifiers="const">
@@ -913,7 +925,7 @@
<argument index="0" name="space" type="RID">
</argument>
<description>
- Return whether the space is active.
+ Returns whether the space is active.
</description>
</method>
<method name="space_set_active">
@@ -924,7 +936,7 @@
<argument index="1" name="active" type="bool">
</argument>
<description>
- Mark a space as active. It will not have an effect, unless it is assigned to an area or body.
+ Marks a space as active. It will not have an effect, unless it is assigned to an area or body.
</description>
</method>
<method name="space_set_param">
@@ -937,7 +949,7 @@
<argument index="2" name="value" type="float">
</argument>
<description>
- Set the value for a space parameter. A list of available parameters is on the SPACE_PARAM_* constants.
+ Sets the value for a space parameter. A list of available parameters is on the SPACE_PARAM_* constants.
</description>
</method>
</methods>
@@ -952,8 +964,10 @@
Constant to set/get the maximum distance a shape can penetrate another shape before it is considered a collision.
</constant>
<constant name="SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD" value="3">
+ Constant to set/get the threshold linear velocity of activity. A body marked as potentially inactive for both linear and angular velocity will be put to sleep after the time given.
</constant>
<constant name="SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD" value="4">
+ Constant to set/get the threshold angular velocity of activity. A body marked as potentially inactive for both linear and angular velocity will be put to sleep after the time given.
</constant>
<constant name="SPACE_PARAM_BODY_TIME_TO_SLEEP" value="5">
Constant to set/get the maximum time of activity. A body marked as potentially inactive for both linear and angular velocity will be put to sleep after this time.
@@ -964,6 +978,8 @@
<constant name="SHAPE_LINE" value="0">
This is the constant for creating line shapes. A line shape is an infinite line with an origin point, and a normal. Thus, it can be used for front/behind checks.
</constant>
+ <constant name="SHAPE_RAY" value="1">
+ </constant>
<constant name="SHAPE_SEGMENT" value="2">
This is the constant for creating segment shapes. A segment shape is a line from a point A to a point B. It can be checked for intersections.
</constant>
@@ -977,7 +993,7 @@
This is the constant for creating capsule shapes. A capsule shape is defined by a radius and a length. It can be used for intersections and inside/outside checks.
</constant>
<constant name="SHAPE_CONVEX_POLYGON" value="6">
- This is the constant for creating convex polygon shapes. A polygon is defined by a list of points. It can be used for intersections and inside/outside checks. Unlike the method [method CollisionPolygon2D.set_polygon], polygons modified with [method shape_set_data] do not verify that the points supplied form, in fact, a convex polygon.
+ This is the constant for creating convex polygon shapes. A polygon is defined by a list of points. It can be used for intersections and inside/outside checks. Unlike the method [method CollisionPolygon2D.set_polygon], polygons modified with [method shape_set_data] do not verify that the points supplied form is a convex polygon.
</constant>
<constant name="SHAPE_CONCAVE_POLYGON" value="7">
This is the constant for creating concave polygon shapes. A polygon is defined by a list of points. It can be used for intersections checks, but not for inside/outside checks.
diff --git a/doc/classes/Physics2DServerSW.xml b/doc/classes/Physics2DServerSW.xml
index a8645c0b96..67fd7a21d8 100644
--- a/doc/classes/Physics2DServerSW.xml
+++ b/doc/classes/Physics2DServerSW.xml
@@ -4,7 +4,7 @@
Software implementation of [Physics2DServer].
</brief_description>
<description>
- Software implementation of [Physics2DServer]. This class exposes no new methods or properties and should not be used, as [Physics2DServer] automatically selects the best implementation available.
+ This class exposes no new methods or properties and should not be used, as [Physics2DServer] automatically selects the best implementation available.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/Physics2DShapeQueryParameters.xml b/doc/classes/Physics2DShapeQueryParameters.xml
index 78d12e0b73..04fe12cc07 100644
--- a/doc/classes/Physics2DShapeQueryParameters.xml
+++ b/doc/classes/Physics2DShapeQueryParameters.xml
@@ -22,7 +22,7 @@
<return type="Array">
</return>
<description>
- Return the list of objects, or object [RID]\ s, that will be excluded from collisions.
+ Return the list of objects, or object [RID]s, that will be excluded from collisions.
</description>
</method>
<method name="get_margin" qualifiers="const">
@@ -75,7 +75,7 @@
<argument index="0" name="exclude" type="Array">
</argument>
<description>
- Set the list of objects, or object [RID]\ s, that will be excluded from collisions.
+ Set the list of objects, or object [RID]s, that will be excluded from collisions.
</description>
</method>
<method name="set_margin">
@@ -129,7 +129,7 @@
<argument index="0" name="transform" type="Transform2D">
</argument>
<description>
- Set the transormation matrix of the shape. This is necessary to set its position/rotation/scale.
+ Set the transformation matrix of the shape. This is necessary to set its position/rotation/scale.
</description>
</method>
</methods>
diff --git a/doc/classes/PhysicsDirectSpaceState.xml b/doc/classes/PhysicsDirectSpaceState.xml
index 1e4354fa7e..01307b92c7 100644
--- a/doc/classes/PhysicsDirectSpaceState.xml
+++ b/doc/classes/PhysicsDirectSpaceState.xml
@@ -73,9 +73,9 @@
</constant>
<constant name="TYPE_MASK_CHARACTER_BODY" value="8">
</constant>
- <constant name="TYPE_MASK_AREA" value="16">
- </constant>
<constant name="TYPE_MASK_COLLISION" value="15">
</constant>
+ <constant name="TYPE_MASK_AREA" value="16">
+ </constant>
</constants>
</class>
diff --git a/doc/classes/PhysicsServer.xml b/doc/classes/PhysicsServer.xml
index 145f5a0163..b0f42b83a3 100644
--- a/doc/classes/PhysicsServer.xml
+++ b/doc/classes/PhysicsServer.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="PhysicsServer" inherits="Object" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Server interface for low level physics access.
</brief_description>
<description>
+ Everything related to physics in 3D.
</description>
<tutorials>
</tutorials>
@@ -19,6 +21,7 @@
<argument index="2" name="transform" type="Transform" default="Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )">
</argument>
<description>
+ Adds a shape to the area, along with a transform matrix. Shapes are usually referenced by their index, so you should track which shape has a given index.
</description>
</method>
<method name="area_attach_object_instance_id">
@@ -29,6 +32,7 @@
<argument index="1" name="id" type="int">
</argument>
<description>
+ Assigns the area to a descendant of [Object], so it can exist in the node tree.
</description>
</method>
<method name="area_clear_shapes">
@@ -37,12 +41,14 @@
<argument index="0" name="area" type="RID">
</argument>
<description>
+ Removes all shapes from an area. It does not delete the shapes, so they can be reassigned later.
</description>
</method>
<method name="area_create">
<return type="RID">
</return>
<description>
+ Creates an [Area].
</description>
</method>
<method name="area_get_object_instance_id" qualifiers="const">
@@ -51,6 +57,7 @@
<argument index="0" name="area" type="RID">
</argument>
<description>
+ Gets the instance ID of the object the area is assigned to.
</description>
</method>
<method name="area_get_param" qualifiers="const">
@@ -61,6 +68,7 @@
<argument index="1" name="param" type="int" enum="PhysicsServer.AreaParameter">
</argument>
<description>
+ Returns an area parameter value. A list of available parameters is on the AREA_PARAM_* constants.
</description>
</method>
<method name="area_get_shape" qualifiers="const">
@@ -71,6 +79,7 @@
<argument index="1" name="shape_idx" type="int">
</argument>
<description>
+ Returns the [RID] of the nth shape of an area.
</description>
</method>
<method name="area_get_shape_count" qualifiers="const">
@@ -79,6 +88,7 @@
<argument index="0" name="area" type="RID">
</argument>
<description>
+ Returns the number of shapes assigned to an area.
</description>
</method>
<method name="area_get_shape_transform" qualifiers="const">
@@ -89,6 +99,7 @@
<argument index="1" name="shape_idx" type="int">
</argument>
<description>
+ Returns the transform matrix of a shape within an area.
</description>
</method>
<method name="area_get_space" qualifiers="const">
@@ -97,6 +108,7 @@
<argument index="0" name="area" type="RID">
</argument>
<description>
+ Returns the space assigned to the area.
</description>
</method>
<method name="area_get_space_override_mode" qualifiers="const">
@@ -105,6 +117,7 @@
<argument index="0" name="area" type="RID">
</argument>
<description>
+ Returns the space override mode for the area.
</description>
</method>
<method name="area_get_transform" qualifiers="const">
@@ -113,6 +126,7 @@
<argument index="0" name="area" type="RID">
</argument>
<description>
+ Returns the transform matrix for an area.
</description>
</method>
<method name="area_is_ray_pickable" qualifiers="const">
@@ -121,6 +135,7 @@
<argument index="0" name="area" type="RID">
</argument>
<description>
+ If [code]true[/code] area collides with rays.
</description>
</method>
<method name="area_remove_shape">
@@ -131,6 +146,7 @@
<argument index="1" name="shape_idx" type="int">
</argument>
<description>
+ Removes a shape from an area. It does not delete the shape, so it can be reassigned later.
</description>
</method>
<method name="area_set_collision_layer">
@@ -141,6 +157,7 @@
<argument index="1" name="layer" type="int">
</argument>
<description>
+ Assigns the area to one or many physics layers.
</description>
</method>
<method name="area_set_collision_mask">
@@ -151,6 +168,7 @@
<argument index="1" name="mask" type="int">
</argument>
<description>
+ Sets which physics layers the area will monitor.
</description>
</method>
<method name="area_set_monitor_callback">
@@ -163,6 +181,12 @@
<argument index="2" name="method" type="String">
</argument>
<description>
+ Sets the function to call when any body/area enters or exits the area. This callback will be called for any object interacting with the area, and takes five parameters:
+ 1: AREA_BODY_ADDED or AREA_BODY_REMOVED, depending on whether the object entered or exited the area.
+ 2: [RID] of the object that entered/exited the area.
+ 3: Instance ID of the object that entered/exited the area.
+ 4: The shape index of the object that entered/exited the area.
+ 5: The shape index of the area where the object entered/exited.
</description>
</method>
<method name="area_set_param">
@@ -175,6 +199,7 @@
<argument index="2" name="value" type="Variant">
</argument>
<description>
+ Sets the value for an area parameter. A list of available parameters is on the AREA_PARAM_* constants.
</description>
</method>
<method name="area_set_ray_pickable">
@@ -185,6 +210,7 @@
<argument index="1" name="enable" type="bool">
</argument>
<description>
+ Sets object pickable with rays.
</description>
</method>
<method name="area_set_shape">
@@ -197,6 +223,7 @@
<argument index="2" name="shape" type="RID">
</argument>
<description>
+ Substitutes a given area shape by another. The old shape is selected by its index, the new one by its [RID].
</description>
</method>
<method name="area_set_shape_transform">
@@ -209,6 +236,7 @@
<argument index="2" name="transform" type="Transform">
</argument>
<description>
+ Sets the transform matrix for an area shape.
</description>
</method>
<method name="area_set_space">
@@ -219,6 +247,7 @@
<argument index="1" name="space" type="RID">
</argument>
<description>
+ Assigns a space to the area.
</description>
</method>
<method name="area_set_space_override_mode">
@@ -229,6 +258,7 @@
<argument index="1" name="mode" type="int" enum="PhysicsServer.AreaSpaceOverrideMode">
</argument>
<description>
+ Sets the space override mode for the area. The modes are described in the constants AREA_SPACE_OVERRIDE_*.
</description>
</method>
<method name="area_set_transform">
@@ -239,6 +269,7 @@
<argument index="1" name="transform" type="Transform">
</argument>
<description>
+ Sets the transform matrix for an area.
</description>
</method>
<method name="body_add_collision_exception">
@@ -249,6 +280,7 @@
<argument index="1" name="excepted_body" type="RID">
</argument>
<description>
+ Adds a body to the list of bodies exempt from collisions.
</description>
</method>
<method name="body_add_shape">
@@ -261,6 +293,7 @@
<argument index="2" name="transform" type="Transform" default="Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )">
</argument>
<description>
+ Adds a shape to the body, along with a transform matrix. Shapes are usually referenced by their index, so you should track which shape has a given index.
</description>
</method>
<method name="body_apply_impulse">
@@ -273,6 +306,7 @@
<argument index="2" name="impulse" type="Vector3">
</argument>
<description>
+ Gives the body a push at a [code]position[/code] in the direction of the [code]impulse[/code].
</description>
</method>
<method name="body_apply_torque_impulse">
@@ -283,6 +317,7 @@
<argument index="1" name="impulse" type="Vector3">
</argument>
<description>
+ Gives the body a push to rotate it.
</description>
</method>
<method name="body_attach_object_instance_id">
@@ -293,6 +328,7 @@
<argument index="1" name="id" type="int">
</argument>
<description>
+ Assigns the area to a descendant of [Object], so it can exist in the node tree.
</description>
</method>
<method name="body_clear_shapes">
@@ -301,6 +337,7 @@
<argument index="0" name="body" type="RID">
</argument>
<description>
+ Removes all shapes from a body.
</description>
</method>
<method name="body_create">
@@ -311,6 +348,7 @@
<argument index="1" name="init_sleeping" type="bool" default="false">
</argument>
<description>
+ Creates a physics body. The first parameter can be any value from constants BODY_MODE*, for the type of body created. Additionally, the body can be created in sleeping state to save processing time.
</description>
</method>
<method name="body_get_axis_lock" qualifiers="const">
@@ -319,6 +357,7 @@
<argument index="0" name="body" type="RID">
</argument>
<description>
+ Gets the information, which Axis is locked if any. The can be any calue from the constants BODY_AXIS_LOCK*
</description>
</method>
<method name="body_get_collision_layer" qualifiers="const">
@@ -327,6 +366,7 @@
<argument index="0" name="body" type="RID">
</argument>
<description>
+ Returns the physics layer or layers a body belongs to.
</description>
</method>
<method name="body_get_collision_mask" qualifiers="const">
@@ -335,6 +375,17 @@
<argument index="0" name="body" type="RID">
</argument>
<description>
+ Returns the physics layer or layers a body can collide with.
+-
+ </description>
+ </method>
+ <method name="body_get_direct_state">
+ <return type="PhysicsDirectBodyState">
+ </return>
+ <argument index="0" name="body" type="RID">
+ </argument>
+ <description>
+ Returns the [PhysicsDirectBodyState] of the body.
</description>
</method>
<method name="body_get_max_contacts_reported" qualifiers="const">
@@ -343,6 +394,7 @@
<argument index="0" name="body" type="RID">
</argument>
<description>
+ Returns the maximum contacts that can be reported. See [method body_set_max_contacts_reported].
</description>
</method>
<method name="body_get_mode" qualifiers="const">
@@ -351,6 +403,7 @@
<argument index="0" name="body" type="RID">
</argument>
<description>
+ Returns the body mode.
</description>
</method>
<method name="body_get_object_instance_id" qualifiers="const">
@@ -359,6 +412,7 @@
<argument index="0" name="body" type="RID">
</argument>
<description>
+ Gets the instance ID of the object the area is assigned to.
</description>
</method>
<method name="body_get_param" qualifiers="const">
@@ -369,6 +423,7 @@
<argument index="1" name="param" type="int" enum="PhysicsServer.BodyParameter">
</argument>
<description>
+ Returns the value of a body parameter. A list of available parameters is on the BODY_PARAM_* constants.
</description>
</method>
<method name="body_get_shape" qualifiers="const">
@@ -379,6 +434,7 @@
<argument index="1" name="shape_idx" type="int">
</argument>
<description>
+ Returns the [RID] of the nth shape of a body.
</description>
</method>
<method name="body_get_shape_count" qualifiers="const">
@@ -387,6 +443,7 @@
<argument index="0" name="body" type="RID">
</argument>
<description>
+ Returns the number of shapes assigned to a body.
</description>
</method>
<method name="body_get_shape_transform" qualifiers="const">
@@ -397,6 +454,7 @@
<argument index="1" name="shape_idx" type="int">
</argument>
<description>
+ Returns the transform matrix of a body shape.
</description>
</method>
<method name="body_get_space" qualifiers="const">
@@ -405,6 +463,7 @@
<argument index="0" name="body" type="RID">
</argument>
<description>
+ Returns the [RID] of the space assigned to a body.
</description>
</method>
<method name="body_get_state" qualifiers="const">
@@ -415,6 +474,7 @@
<argument index="1" name="state" type="int" enum="PhysicsServer.BodyState">
</argument>
<description>
+ Returns a body state.
</description>
</method>
<method name="body_is_continuous_collision_detection_enabled" qualifiers="const">
@@ -423,6 +483,7 @@
<argument index="0" name="body" type="RID">
</argument>
<description>
+ If [code]true[/code] the continuous collision detection mode is enabled.
</description>
</method>
<method name="body_is_omitting_force_integration" qualifiers="const">
@@ -431,6 +492,7 @@
<argument index="0" name="body" type="RID">
</argument>
<description>
+ Returns whether a body uses a callback function to calculate its own physics (see [method body_set_force_integration_callback]).
</description>
</method>
<method name="body_is_ray_pickable" qualifiers="const">
@@ -439,6 +501,7 @@
<argument index="0" name="body" type="RID">
</argument>
<description>
+ If [code]true[/code] the body can be detected by rays
</description>
</method>
<method name="body_remove_collision_exception">
@@ -449,6 +512,8 @@
<argument index="1" name="excepted_body" type="RID">
</argument>
<description>
+ Removes a body from the list of bodies exempt from collisions.
+ Continuous collision detection tries to predict where a moving body will collide, instead of moving it and correcting its movement if it collided.
</description>
</method>
<method name="body_remove_shape">
@@ -459,6 +524,7 @@
<argument index="1" name="shape_idx" type="int">
</argument>
<description>
+ Removes a shape from a body. The shape is not deleted, so it can be reused afterwards.
</description>
</method>
<method name="body_set_axis_lock">
@@ -469,6 +535,7 @@
<argument index="1" name="axis" type="int" enum="PhysicsServer.BodyAxisLock">
</argument>
<description>
+ Locks velocity along one axis to 0 and only allows rotation along this axis, can also be set to disabled which disables this functionality.
</description>
</method>
<method name="body_set_axis_velocity">
@@ -479,6 +546,7 @@
<argument index="1" name="axis_velocity" type="Vector3">
</argument>
<description>
+ Sets an axis velocity. The velocity in the given vector axis will be set as the given vector length. This is useful for jumping behavior.
</description>
</method>
<method name="body_set_collision_layer">
@@ -489,6 +557,7 @@
<argument index="1" name="layer" type="int">
</argument>
<description>
+ Sets the physics layer or layers a body belongs to.
</description>
</method>
<method name="body_set_collision_mask">
@@ -499,6 +568,7 @@
<argument index="1" name="mask" type="int">
</argument>
<description>
+ Sets the physics layer or layers a body can collide with.
</description>
</method>
<method name="body_set_enable_continuous_collision_detection">
@@ -509,6 +579,8 @@
<argument index="1" name="enable" type="bool">
</argument>
<description>
+ If [code]true[/code] the continuous collision detection mode is enabled.
+ Continuous collision detection tries to predict where a moving body will collide, instead of moving it and correcting its movement if it collided.
</description>
</method>
<method name="body_set_force_integration_callback">
@@ -523,6 +595,7 @@
<argument index="3" name="userdata" type="Variant" default="null">
</argument>
<description>
+ Sets the function used to calculate physics for an object, if that object allows it (see [method body_set_omit_force integration]).
</description>
</method>
<method name="body_set_max_contacts_reported">
@@ -533,6 +606,7 @@
<argument index="1" name="amount" type="int">
</argument>
<description>
+ Sets the maximum contacts to report. Bodies can keep a log of the contacts with other bodies, this is enabled by setting the maximum amount of contacts reported to a number greater than 0.
</description>
</method>
<method name="body_set_mode">
@@ -543,6 +617,7 @@
<argument index="1" name="mode" type="int" enum="PhysicsServer.BodyMode">
</argument>
<description>
+ Sets the body mode, from one of the constants BODY_MODE*.
</description>
</method>
<method name="body_set_omit_force_integration">
@@ -553,6 +628,7 @@
<argument index="1" name="enable" type="bool">
</argument>
<description>
+ Sets whether a body uses a callback function to calculate its own physics (see [method body_set_force_integration_callback]).
</description>
</method>
<method name="body_set_param">
@@ -565,6 +641,7 @@
<argument index="2" name="value" type="float">
</argument>
<description>
+ Sets a body parameter. A list of available parameters is on the BODY_PARAM_* constants.
</description>
</method>
<method name="body_set_ray_pickable">
@@ -575,6 +652,7 @@
<argument index="1" name="enable" type="bool">
</argument>
<description>
+ Sets the body pickable with rays if [code]enabled[/code] is set.
</description>
</method>
<method name="body_set_shape">
@@ -587,6 +665,7 @@
<argument index="2" name="shape" type="RID">
</argument>
<description>
+ Substitutes a given body shape by another. The old shape is selected by its index, the new one by its [RID].
</description>
</method>
<method name="body_set_shape_transform">
@@ -599,6 +678,7 @@
<argument index="2" name="transform" type="Transform">
</argument>
<description>
+ Sets the transform matrix for a body shape.
</description>
</method>
<method name="body_set_space">
@@ -609,6 +689,7 @@
<argument index="1" name="space" type="RID">
</argument>
<description>
+ Assigns a space to the body (see [method create_space]).
</description>
</method>
<method name="body_set_state">
@@ -621,6 +702,7 @@
<argument index="2" name="value" type="Variant">
</argument>
<description>
+ Sets a body state (see BODY_STATE* constants).
</description>
</method>
<method name="cone_twist_joint_get_param" qualifiers="const">
@@ -631,6 +713,7 @@
<argument index="1" name="param" type="int" enum="PhysicsServer.ConeTwistJointParam">
</argument>
<description>
+ Gets a cone_twist_joint parameter (see CONE_TWIST_JOINT* constants).
</description>
</method>
<method name="cone_twist_joint_set_param">
@@ -643,6 +726,7 @@
<argument index="2" name="value" type="float">
</argument>
<description>
+ Sets a cone_twist_joint parameter (see CONE_TWIST_JOINT* constants).
</description>
</method>
<method name="free_rid">
@@ -651,6 +735,7 @@
<argument index="0" name="rid" type="RID">
</argument>
<description>
+ Destroys any of the objects created by PhysicsServer. If the [RID] passed is not one of the objects that can be created by PhysicsServer, an error will be sent to the console.
</description>
</method>
<method name="generic_6dof_joint_get_flag">
@@ -663,6 +748,7 @@
<argument index="2" name="flag" type="int" enum="PhysicsServer.G6DOFJointAxisFlag">
</argument>
<description>
+ Gets a generic_6_DOF_joint flag (see G6DOF_JOINT_FLAG* constants).
</description>
</method>
<method name="generic_6dof_joint_get_param">
@@ -675,6 +761,7 @@
<argument index="2" name="param" type="int" enum="PhysicsServer.G6DOFJointAxisParam">
</argument>
<description>
+ Gets a generic_6_DOF_joint parameter (see G6DOF_JOINT* constants without the G6DOF_JOINT_FLAG*).
</description>
</method>
<method name="generic_6dof_joint_set_flag">
@@ -689,6 +776,7 @@
<argument index="3" name="enable" type="bool">
</argument>
<description>
+ Sets a generic_6_DOF_joint flag (see G6DOF_JOINT_FLAG* constants).
</description>
</method>
<method name="generic_6dof_joint_set_param">
@@ -703,6 +791,7 @@
<argument index="3" name="value" type="float">
</argument>
<description>
+ Sets a generic_6_DOF_joint parameter (see G6DOF_JOINT* constants without the G6DOF_JOINT_FLAG*).
</description>
</method>
<method name="get_process_info">
@@ -711,6 +800,7 @@
<argument index="0" name="process_info" type="int" enum="PhysicsServer.ProcessInfo">
</argument>
<description>
+ Returns an Info defined by the [ProcessInfo] input given.
</description>
</method>
<method name="hinge_joint_get_flag" qualifiers="const">
@@ -721,6 +811,7 @@
<argument index="1" name="flag" type="int" enum="PhysicsServer.HingeJointFlag">
</argument>
<description>
+ Gets a hinge_joint flag (see HINGE_JOINT_FLAG* constants).
</description>
</method>
<method name="hinge_joint_get_param" qualifiers="const">
@@ -731,6 +822,7 @@
<argument index="1" name="param" type="int" enum="PhysicsServer.HingeJointParam">
</argument>
<description>
+ Gets a hinge_joint parameter (see HINGE_JOINT* constants without the HINGE_JOINT_FLAG*).
</description>
</method>
<method name="hinge_joint_set_flag">
@@ -743,6 +835,7 @@
<argument index="2" name="enabled" type="bool">
</argument>
<description>
+ Sets a hinge_joint flag (see HINGE_JOINT_FLAG* constants).
</description>
</method>
<method name="hinge_joint_set_param">
@@ -755,6 +848,7 @@
<argument index="2" name="value" type="float">
</argument>
<description>
+ Sets a hinge_joint parameter (see HINGE_JOINT* constants without the HINGE_JOINT_FLAG*).
</description>
</method>
<method name="joint_create_cone_twist">
@@ -769,6 +863,7 @@
<argument index="3" name="local_ref_B" type="Transform">
</argument>
<description>
+ Creates a [ConeTwistJoint].
</description>
</method>
<method name="joint_create_generic_6dof">
@@ -783,6 +878,7 @@
<argument index="3" name="local_ref_B" type="Transform">
</argument>
<description>
+ Creates a [Generic6DOFJoint].
</description>
</method>
<method name="joint_create_hinge">
@@ -797,6 +893,7 @@
<argument index="3" name="hinge_B" type="Transform">
</argument>
<description>
+ Creates a [HingeJoint].
</description>
</method>
<method name="joint_create_pin">
@@ -811,6 +908,7 @@
<argument index="3" name="local_B" type="Vector3">
</argument>
<description>
+ Creates a [PinJoint].
</description>
</method>
<method name="joint_create_slider">
@@ -825,6 +923,7 @@
<argument index="3" name="local_ref_B" type="Transform">
</argument>
<description>
+ Creates a [SliderJoint].
</description>
</method>
<method name="joint_get_solver_priority" qualifiers="const">
@@ -833,6 +932,7 @@
<argument index="0" name="joint" type="RID">
</argument>
<description>
+ Gets the priority value of the Joint.
</description>
</method>
<method name="joint_get_type" qualifiers="const">
@@ -841,6 +941,7 @@
<argument index="0" name="joint" type="RID">
</argument>
<description>
+ Returns the type of the Joint.
</description>
</method>
<method name="joint_set_solver_priority">
@@ -851,6 +952,7 @@
<argument index="1" name="priority" type="int">
</argument>
<description>
+ Sets the priority value of the Joint.
</description>
</method>
<method name="pin_joint_get_local_a" qualifiers="const">
@@ -859,6 +961,7 @@
<argument index="0" name="joint" type="RID">
</argument>
<description>
+ Returns position of the joint in the local space of body a of the joint.
</description>
</method>
<method name="pin_joint_get_local_b" qualifiers="const">
@@ -867,6 +970,7 @@
<argument index="0" name="joint" type="RID">
</argument>
<description>
+ Returns position of the joint in the local space of body b of the joint.
</description>
</method>
<method name="pin_joint_get_param" qualifiers="const">
@@ -877,6 +981,7 @@
<argument index="1" name="param" type="int" enum="PhysicsServer.PinJointParam">
</argument>
<description>
+ Gets a pin_joint parameter (see PIN_JOINT* constants).
</description>
</method>
<method name="pin_joint_set_local_a">
@@ -887,6 +992,7 @@
<argument index="1" name="local_A" type="Vector3">
</argument>
<description>
+ Sets position of the joint in the local space of body a of the joint.
</description>
</method>
<method name="pin_joint_set_local_b">
@@ -897,6 +1003,7 @@
<argument index="1" name="local_B" type="Vector3">
</argument>
<description>
+ Sets position of the joint in the local space of body b of the joint.
</description>
</method>
<method name="pin_joint_set_param">
@@ -909,6 +1016,7 @@
<argument index="2" name="value" type="float">
</argument>
<description>
+ Sets a pin_joint parameter (see PIN_JOINT* constants).
</description>
</method>
<method name="set_active">
@@ -917,6 +1025,7 @@
<argument index="0" name="active" type="bool">
</argument>
<description>
+ Activates or deactivates the 3D physics engine.
</description>
</method>
<method name="shape_create">
@@ -925,6 +1034,7 @@
<argument index="0" name="type" type="int" enum="PhysicsServer.ShapeType">
</argument>
<description>
+ Creates a shape of type SHAPE_*. Does not assign it to a body or an area. To do so, you must use [method area_set_shape] or [method body_set_shape].
</description>
</method>
<method name="shape_get_data" qualifiers="const">
@@ -933,6 +1043,7 @@
<argument index="0" name="shape" type="RID">
</argument>
<description>
+ Returns the shape data.
</description>
</method>
<method name="shape_get_type" qualifiers="const">
@@ -941,6 +1052,7 @@
<argument index="0" name="shape" type="RID">
</argument>
<description>
+ Returns the type of shape (see SHAPE_* constants).
</description>
</method>
<method name="shape_set_data">
@@ -951,6 +1063,7 @@
<argument index="1" name="data" type="Variant">
</argument>
<description>
+ Sets the shape data that defines its shape and size. The data to be passed depends on the kind of shape created [method shape_get_type].
</description>
</method>
<method name="slider_joint_get_param" qualifiers="const">
@@ -961,6 +1074,7 @@
<argument index="1" name="param" type="int" enum="PhysicsServer.SliderJointParam">
</argument>
<description>
+ Gets a slider_joint parameter (see SLIDER_JOINT* constants).
</description>
</method>
<method name="slider_joint_set_param">
@@ -973,12 +1087,14 @@
<argument index="2" name="value" type="float">
</argument>
<description>
+ Gets a slider_joint parameter (see SLIDER_JOINT* constants).
</description>
</method>
<method name="space_create">
<return type="RID">
</return>
<description>
+ Creates a space. A space is a collection of parameters for the physics engine that can be assigned to an area or a body. It can be assigned to an area with [method area_set_space], or to a body with [method body_set_space].
</description>
</method>
<method name="space_get_direct_state">
@@ -987,6 +1103,7 @@
<argument index="0" name="space" type="RID">
</argument>
<description>
+ Returns the state of a space, a [PhysicsDirectSpaceState]. This object can be used to make collision/intersection queries.
</description>
</method>
<method name="space_get_param" qualifiers="const">
@@ -997,6 +1114,7 @@
<argument index="1" name="param" type="int" enum="PhysicsServer.SpaceParameter">
</argument>
<description>
+ Returns the value of a space parameter.
</description>
</method>
<method name="space_is_active" qualifiers="const">
@@ -1005,6 +1123,7 @@
<argument index="0" name="space" type="RID">
</argument>
<description>
+ Returns whether the space is active.
</description>
</method>
<method name="space_set_active">
@@ -1015,6 +1134,7 @@
<argument index="1" name="active" type="bool">
</argument>
<description>
+ Marks a space as active. It will not have an effect, unless it is assigned to an area or body.
</description>
</method>
<method name="space_set_param">
@@ -1027,169 +1147,256 @@
<argument index="2" name="value" type="float">
</argument>
<description>
+ Sets the value for a space parameter. A list of available parameters is on the SPACE_PARAM_* constants.
</description>
</method>
</methods>
<constants>
<constant name="JOINT_PIN" value="0">
+ The [Joint] is a [PinJoint].
</constant>
<constant name="JOINT_HINGE" value="1">
+ The [Joint] is a [HingeJoint].
</constant>
<constant name="JOINT_SLIDER" value="2">
+ The [Joint] is a [SliderJoint].
</constant>
<constant name="JOINT_CONE_TWIST" value="3">
+ The [Joint] is a [ConeTwistJoint].
</constant>
<constant name="JOINT_6DOF" value="4">
+ The [Joint] is a [Generic6DOFJoint].
</constant>
<constant name="PIN_JOINT_BIAS" value="0">
+ The strength with which the pinned objects try to stay in positional relation to each other.
+ The higher, the stronger.
</constant>
<constant name="PIN_JOINT_DAMPING" value="1">
+ The strength with which the pinned objects try to stay in velocity relation to each other.
+ The higher, the stronger.
</constant>
<constant name="PIN_JOINT_IMPULSE_CLAMP" value="2">
+ If above 0, this value is the maximum value for an impulse that this Joint puts on it's ends.
</constant>
<constant name="HINGE_JOINT_BIAS" value="0">
+ The speed with wich the two bodies get pulled together when they move in different directions.
</constant>
<constant name="HINGE_JOINT_LIMIT_UPPER" value="1">
+ The maximum rotation across the Hinge.
</constant>
<constant name="HINGE_JOINT_LIMIT_LOWER" value="2">
+ The minimum rotation across the Hinge.
</constant>
<constant name="HINGE_JOINT_LIMIT_BIAS" value="3">
+ The speed with which the rotation across the axis perpendicular to the hinge gets corrected.
</constant>
<constant name="HINGE_JOINT_LIMIT_SOFTNESS" value="4">
</constant>
<constant name="HINGE_JOINT_LIMIT_RELAXATION" value="5">
+ The lower this value, the more the rotation gets slowed down.
</constant>
<constant name="HINGE_JOINT_MOTOR_TARGET_VELOCITY" value="6">
+ Target speed for the motor.
</constant>
<constant name="HINGE_JOINT_MOTOR_MAX_IMPULSE" value="7">
+ Maximum acceleration for the motor.
</constant>
<constant name="HINGE_JOINT_FLAG_USE_LIMIT" value="0">
+ If [code]true[/code] the Hinge has a maximum and a minimum rotation.
</constant>
<constant name="HINGE_JOINT_FLAG_ENABLE_MOTOR" value="1">
+ If [code]true[/code] a motor turns the Hinge
</constant>
<constant name="SLIDER_JOINT_LINEAR_LIMIT_UPPER" value="0">
+ The maximum difference between the pivot points on their x-axis before damping happens.
</constant>
<constant name="SLIDER_JOINT_LINEAR_LIMIT_LOWER" value="1">
+ The minimum difference between the pivot points on their x-axis before damping happens.
</constant>
<constant name="SLIDER_JOINT_LINEAR_LIMIT_SOFTNESS" value="2">
+ A factor applied to the movement accross the slider axis once the limits get surpassed. The lower, the slower the movement.
</constant>
<constant name="SLIDER_JOINT_LINEAR_LIMIT_RESTITUTION" value="3">
+ The amount of restitution once the limits are surpassed. The lower, the more velocityenergy gets lost.
</constant>
<constant name="SLIDER_JOINT_LINEAR_LIMIT_DAMPING" value="4">
+ The amount of damping once the slider limits are surpassed.
</constant>
<constant name="SLIDER_JOINT_LINEAR_MOTION_SOFTNESS" value="5">
+ A factor applied to the movement accross the slider axis as long as the slider is in the limits. The lower, the slower the movement.
</constant>
<constant name="SLIDER_JOINT_LINEAR_MOTION_RESTITUTION" value="6">
+ The amount of restitution inside the slider limits.
</constant>
<constant name="SLIDER_JOINT_LINEAR_MOTION_DAMPING" value="7">
+ The amount of damping inside the slider limits.
</constant>
<constant name="SLIDER_JOINT_LINEAR_ORTHOGONAL_SOFTNESS" value="8">
+ A factor applied to the movement accross axes orthogonal to the slider.
</constant>
<constant name="SLIDER_JOINT_LINEAR_ORTHOGONAL_RESTITUTION" value="9">
+ The amount of restitution when movement is accross axes orthogonal to the slider.
</constant>
<constant name="SLIDER_JOINT_LINEAR_ORTHOGONAL_DAMPING" value="10">
+ The amount of damping when movement is accross axes orthogonal to the slider.
</constant>
<constant name="SLIDER_JOINT_ANGULAR_LIMIT_UPPER" value="11">
+ The upper limit of rotation in the slider.
</constant>
<constant name="SLIDER_JOINT_ANGULAR_LIMIT_LOWER" value="12">
+ The lower limit of rotation in the slider.
</constant>
<constant name="SLIDER_JOINT_ANGULAR_LIMIT_SOFTNESS" value="13">
+ A factor applied to the all rotation once the limit is surpassed.
</constant>
<constant name="SLIDER_JOINT_ANGULAR_LIMIT_RESTITUTION" value="14">
+ The amount of restitution of the rotation when the limit is surpassed.
</constant>
<constant name="SLIDER_JOINT_ANGULAR_LIMIT_DAMPING" value="15">
+ The amount of damping of the rotation when the limit is surpassed.
</constant>
<constant name="SLIDER_JOINT_ANGULAR_MOTION_SOFTNESS" value="16">
+ A factor that gets applied to the all rotation in the limits.
</constant>
<constant name="SLIDER_JOINT_ANGULAR_MOTION_RESTITUTION" value="17">
+ The amount of restitution of the rotation in the limits.
</constant>
<constant name="SLIDER_JOINT_ANGULAR_MOTION_DAMPING" value="18">
+ The amount of damping of the rotation in the limits.
</constant>
<constant name="SLIDER_JOINT_ANGULAR_ORTHOGONAL_SOFTNESS" value="19">
+ A factor that gets applied to the all rotation across axes orthogonal to the slider.
</constant>
<constant name="SLIDER_JOINT_ANGULAR_ORTHOGONAL_RESTITUTION" value="20">
+ The amount of restitution of the rotation across axes orthogonal to the slider.
</constant>
<constant name="SLIDER_JOINT_ANGULAR_ORTHOGONAL_DAMPING" value="21">
+ The amount of damping of the rotation across axes orthogonal to the slider.
</constant>
<constant name="SLIDER_JOINT_MAX" value="22">
+ End flag of SLIDER_JOINT_* constants, used internally.
</constant>
<constant name="CONE_TWIST_JOINT_SWING_SPAN" value="0">
+ Swing is rotation from side to side, around the axis perpendicular to the twist axis.
+ The swing span defines, how much rotation will not get corrected allong the swing axis.
+ Could be defined as looseness in the [ConeTwistJoint].
+ If below 0.05, this behaviour is locked. Default value: [code]PI/4[/code].
</constant>
<constant name="CONE_TWIST_JOINT_TWIST_SPAN" value="1">
+ Twist is the rotation around the twist axis, this value defined how far the joint can twist.
+ Twist is locked if below 0.05.
</constant>
<constant name="CONE_TWIST_JOINT_BIAS" value="2">
+ The speed with which the swing or twist will take place.
+ The higher, the faster.
</constant>
<constant name="CONE_TWIST_JOINT_SOFTNESS" value="3">
+ The ease with which the Joint twists, if it's too low, it takes more force to twist the joint.
</constant>
<constant name="CONE_TWIST_JOINT_RELAXATION" value="4">
+ Defines, how fast the swing- and twist-speed-difference on both sides gets synced.
</constant>
<constant name="G6DOF_JOINT_LINEAR_LOWER_LIMIT" value="0">
+ The minimum difference between the pivot points' axes.
</constant>
<constant name="G6DOF_JOINT_LINEAR_UPPER_LIMIT" value="1">
+ The maximum difference between the pivot points' axes.
</constant>
<constant name="G6DOF_JOINT_LINEAR_LIMIT_SOFTNESS" value="2">
+ A factor that gets applied to the movement accross the axes. The lower, the slower the movement.
</constant>
<constant name="G6DOF_JOINT_LINEAR_RESTITUTION" value="3">
+ The amount of restitution on the axes movement. The lower, the more velocity-energy gets lost.
</constant>
<constant name="G6DOF_JOINT_LINEAR_DAMPING" value="4">
+ The amount of damping that happens at the linear motion across the axes.
</constant>
<constant name="G6DOF_JOINT_ANGULAR_LOWER_LIMIT" value="5">
+ The minimum rotation in negative direction to break loose and rotate arround the axes.
</constant>
<constant name="G6DOF_JOINT_ANGULAR_UPPER_LIMIT" value="6">
+ The minimum rotation in positive direction to break loose and rotate arround the axes.
</constant>
<constant name="G6DOF_JOINT_ANGULAR_LIMIT_SOFTNESS" value="7">
+ A factor that gets multiplied onto all rotations accross the axes.
</constant>
<constant name="G6DOF_JOINT_ANGULAR_DAMPING" value="8">
+ The amount of rotational damping accross the axes. The lower, the more dampening occurs.
</constant>
<constant name="G6DOF_JOINT_ANGULAR_RESTITUTION" value="9">
+ The amount of rotational restitution accross the axes. The lower, the more restitution occurs.
</constant>
<constant name="G6DOF_JOINT_ANGULAR_FORCE_LIMIT" value="10">
+ The maximum amount of force that can occur, when rotating arround the axes.
</constant>
<constant name="G6DOF_JOINT_ANGULAR_ERP" value="11">
+ When correcting the crossing of limits in rotation accross the axes, this error tolerance factor defines how much the correction gets slowed down. The lower, the slower.
</constant>
<constant name="G6DOF_JOINT_ANGULAR_MOTOR_TARGET_VELOCITY" value="12">
+ Target speed for the motor at the axes.
</constant>
<constant name="G6DOF_JOINT_ANGULAR_MOTOR_FORCE_LIMIT" value="13">
+ Maximum acceleration for the motor at the axes.
</constant>
<constant name="G6DOF_JOINT_FLAG_ENABLE_LINEAR_LIMIT" value="0">
+ If [code]set[/code] there is linear motion possible within the given limits.
</constant>
<constant name="G6DOF_JOINT_FLAG_ENABLE_ANGULAR_LIMIT" value="1">
+ If [code]set[/code] there is rotational motion possible.
</constant>
<constant name="G6DOF_JOINT_FLAG_ENABLE_MOTOR" value="2">
+ If [code]set[/code] there is a rotational motor across these axes.
</constant>
<constant name="SHAPE_PLANE" value="0">
+ The [Shape] is a [PlaneShape].
</constant>
<constant name="SHAPE_RAY" value="1">
+ The [Shape] is a [RayShape].
</constant>
<constant name="SHAPE_SPHERE" value="2">
+ The [Shape] is a [SphereShape].
</constant>
<constant name="SHAPE_BOX" value="3">
+ The [Shape] is a [BoxShape].
</constant>
<constant name="SHAPE_CAPSULE" value="4">
+ The [Shape] is a [CapsuleShape].
</constant>
<constant name="SHAPE_CONVEX_POLYGON" value="5">
+ The [Shape] is a [ConvexPolygonShape].
</constant>
<constant name="SHAPE_CONCAVE_POLYGON" value="6">
+ The [Shape] is a [ConcavePolygonShape].
</constant>
<constant name="SHAPE_HEIGHTMAP" value="7">
+ The [Shape] is a [HeightMapShape].
</constant>
<constant name="SHAPE_CUSTOM" value="8">
+ This constant is used internally by the engine. Any attempt to create this kind of shape results in an error.
</constant>
<constant name="AREA_PARAM_GRAVITY" value="0">
+ Constant to set/get gravity strength in an area.
</constant>
<constant name="AREA_PARAM_GRAVITY_VECTOR" value="1">
+ Constant to set/get gravity vector/center in an area.
</constant>
<constant name="AREA_PARAM_GRAVITY_IS_POINT" value="2">
+ Constant to set/get whether the gravity vector of an area is a direction, or a center point.
</constant>
<constant name="AREA_PARAM_GRAVITY_DISTANCE_SCALE" value="3">
+ Constant to set/get the falloff factor for point gravity of an area. The greater this value is, the faster the strength of gravity decreases with the square of distance.
</constant>
<constant name="AREA_PARAM_GRAVITY_POINT_ATTENUATION" value="4">
+ This constant was used to set/get the falloff factor for point gravity. It has been superseded by AREA_PARAM_GRAVITY_DISTANCE_SCALE.
</constant>
<constant name="AREA_PARAM_LINEAR_DAMP" value="5">
+ Constant to set/get the linear dampening factor of an area.
</constant>
<constant name="AREA_PARAM_ANGULAR_DAMP" value="6">
+ Constant to set/get the angular dampening factor of an area.
</constant>
<constant name="AREA_PARAM_PRIORITY" value="7">
+ Constant to set/get the priority (order of processing) of an area.
</constant>
<constant name="AREA_SPACE_OVERRIDE_DISABLED" value="0">
This area does not affect gravity/damp. These are generally areas that exist only to detect collisions, and objects entering or exiting them.
@@ -1207,70 +1414,102 @@
This area replaces any gravity/damp calculated so far, but keeps calculating the rest of the areas, down to the default one.
</constant>
<constant name="BODY_MODE_STATIC" value="0">
+ Constant for static bodies.
</constant>
<constant name="BODY_MODE_KINEMATIC" value="1">
+ Constant for kinematic bodies.
</constant>
<constant name="BODY_MODE_RIGID" value="2">
+ Constant for rigid bodies.
</constant>
<constant name="BODY_MODE_CHARACTER" value="3">
+ Constant for rigid bodies in character mode. In this mode, a body can not rotate, and only its linear velocity is affected by physics.
</constant>
<constant name="BODY_PARAM_BOUNCE" value="0">
+ Constant to set/get a body's bounce factor.
</constant>
<constant name="BODY_PARAM_FRICTION" value="1">
+ Constant to set/get a body's friction.
</constant>
<constant name="BODY_PARAM_MASS" value="2">
+ Constant to set/get a body's mass.
</constant>
<constant name="BODY_PARAM_GRAVITY_SCALE" value="3">
- </constant>
- <constant name="BODY_PARAM_ANGULAR_DAMP" value="5">
+ Constant to set/get a body's gravity multiplier.
</constant>
<constant name="BODY_PARAM_LINEAR_DAMP" value="4">
+ Constant to set/get a body's linear dampening factor.
+ </constant>
+ <constant name="BODY_PARAM_ANGULAR_DAMP" value="5">
+ Constant to set/get a body's angular dampening factor.
</constant>
<constant name="BODY_PARAM_MAX" value="6">
+ This is the last ID for body parameters. Any attempt to set this property is ignored. Any attempt to get it returns 0.
</constant>
<constant name="BODY_STATE_TRANSFORM" value="0">
+ Constant to set/get the current transform matrix of the body.
</constant>
<constant name="BODY_STATE_LINEAR_VELOCITY" value="1">
+ Constant to set/get the current linear velocity of the body.
</constant>
<constant name="BODY_STATE_ANGULAR_VELOCITY" value="2">
+ Constant to set/get the current angular velocity of the body.
</constant>
<constant name="BODY_STATE_SLEEPING" value="3">
+ Constant to sleep/wake up a body, or to get whether it is sleeping.
</constant>
<constant name="BODY_STATE_CAN_SLEEP" value="4">
+ Constant to set/get whether the body can sleep.
</constant>
<constant name="AREA_BODY_ADDED" value="0">
+ The value of the first parameter and area callback function receives, when an object enters one of its shapes.
</constant>
<constant name="AREA_BODY_REMOVED" value="1">
+ The value of the first parameter and area callback function receives, when an object exits one of its shapes.
</constant>
<constant name="INFO_ACTIVE_OBJECTS" value="0">
+ Constant to get the number of objects that are not sleeping.
</constant>
<constant name="INFO_COLLISION_PAIRS" value="1">
+ Constant to get the number of possible collisions.
</constant>
<constant name="INFO_ISLAND_COUNT" value="2">
+ Constant to get the number of space regions where a collision could occur.
</constant>
<constant name="SPACE_PARAM_CONTACT_RECYCLE_RADIUS" value="0">
+ Constant to set/get the maximum distance a pair of bodies has to move before their collision status has to be recalculated.
</constant>
<constant name="SPACE_PARAM_CONTACT_MAX_SEPARATION" value="1">
+ Constant to set/get the maximum distance a shape can be from another before they are considered separated.
</constant>
<constant name="SPACE_PARAM_BODY_MAX_ALLOWED_PENETRATION" value="2">
+ Constant to set/get the maximum distance a shape can penetrate another shape before it is considered a collision.
</constant>
<constant name="SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_THRESHOLD" value="3">
+ Constant to set/get the threshold linear velocity of activity. A body marked as potentially inactive for both linear and angular velocity will be put to sleep after the time given.
</constant>
<constant name="SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_THRESHOLD" value="4">
+ Constant to set/get the threshold angular velocity of activity. A body marked as potentially inactive for both linear and angular velocity will be put to sleep after the time given.
</constant>
<constant name="SPACE_PARAM_BODY_TIME_TO_SLEEP" value="5">
+ Constant to set/get the maximum time of activity. A body marked as potentially inactive for both linear and angular velocity will be put to sleep after this time.
</constant>
<constant name="SPACE_PARAM_BODY_ANGULAR_VELOCITY_DAMP_RATIO" value="6">
</constant>
<constant name="SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS" value="7">
+ Constant to set/get the default solver bias for all physics constraints. A solver bias is a factor controlling how much two objects "rebound", after violating a constraint, to avoid leaving them in that state because of numerical imprecision.
</constant>
<constant name="BODY_AXIS_LOCK_DISABLED" value="0">
+ The [Body] can rotate and move freely.
</constant>
<constant name="BODY_AXIS_LOCK_X" value="1">
+ The [Body] cannot move across x axis can only rotate across x axis.
</constant>
<constant name="BODY_AXIS_LOCK_Y" value="2">
+ The [Body] cannot move across y axis can only rotate across y axis.
</constant>
<constant name="BODY_AXIS_LOCK_Z" value="3">
+ The [Body] cannot move across z axis can only rotate across z axis.
</constant>
</constants>
</class>
diff --git a/doc/classes/PhysicsServerSW.xml b/doc/classes/PhysicsServerSW.xml
index 7bffc23258..53e1c0057e 100644
--- a/doc/classes/PhysicsServerSW.xml
+++ b/doc/classes/PhysicsServerSW.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="PhysicsServerSW" inherits="PhysicsServer" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Software implementation of [PhysicsServer].
</brief_description>
<description>
+ This class exposes no new methods or properties and should not be used, as [PhysicsServer] automatically selects the best implementation available.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/PinJoint.xml b/doc/classes/PinJoint.xml
index 22aa35a0a4..1cc381b1b3 100644
--- a/doc/classes/PinJoint.xml
+++ b/doc/classes/PinJoint.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="PinJoint" inherits="Joint" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Pin Joint for 3D Shapes.
</brief_description>
<description>
+ Pin Joint for 3D Rigid Bodies. It pins 2 bodies (rigid or static) together.
</description>
<tutorials>
</tutorials>
@@ -30,18 +32,28 @@
</methods>
<members>
<member name="params/bias" type="float" setter="set_param" getter="get_param">
+ The force with wich the pinned objects stay in positional relation to each other.
+ The higher, the stronger.
</member>
<member name="params/damping" type="float" setter="set_param" getter="get_param">
+ The force with wich the pinned objects stay in velocity relation to each other.
+ The higher, the stronger.
</member>
<member name="params/impulse_clamp" type="float" setter="set_param" getter="get_param">
+ If above 0, this value is the maximum value for an impulse that this Joint produces.
</member>
</members>
<constants>
<constant name="PARAM_BIAS" value="0">
+ The force with wich the pinned objects stay in positional relation to each other.
+ The higher, the stronger.
</constant>
<constant name="PARAM_DAMPING" value="1">
+ The force with wich the pinned objects stay in velocity relation to each other.
+ The higher, the stronger.
</constant>
<constant name="PARAM_IMPULSE_CLAMP" value="2">
+ If above 0, this value is the maximum value for an impulse that this Joint produces.
</constant>
</constants>
</class>
diff --git a/doc/classes/PinJoint2D.xml b/doc/classes/PinJoint2D.xml
index 826a1684a4..009b0ec2f2 100644
--- a/doc/classes/PinJoint2D.xml
+++ b/doc/classes/PinJoint2D.xml
@@ -28,6 +28,7 @@
</methods>
<members>
<member name="softness" type="float" setter="set_softness" getter="get_softness">
+ The higher this value, the more the bond to the pinned partner can flex.
</member>
</members>
<constants>
diff --git a/doc/classes/PluginScript.xml b/doc/classes/PluginScript.xml
new file mode 100644
index 0000000000..334921016b
--- /dev/null
+++ b/doc/classes/PluginScript.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="PluginScript" inherits="Script" category="Core" version="3.0.alpha.custom_build">
+ <brief_description>
+ </brief_description>
+ <description>
+ </description>
+ <tutorials>
+ </tutorials>
+ <demos>
+ </demos>
+ <methods>
+ </methods>
+ <constants>
+ </constants>
+</class>
diff --git a/doc/classes/PoolByteArray.xml b/doc/classes/PoolByteArray.xml
index 2640b5118f..9ef5390c5e 100644
--- a/doc/classes/PoolByteArray.xml
+++ b/doc/classes/PoolByteArray.xml
@@ -31,7 +31,7 @@
<argument index="0" name="array" type="PoolByteArray">
</argument>
<description>
- Append a [PoolByteArray] at the end of this array.
+ Append a [code]PoolByteArray[/code] at the end of this array.
</description>
</method>
<method name="compress">
@@ -40,7 +40,7 @@
<argument index="0" name="compression_mode" type="int" default="0">
</argument>
<description>
- Returns a new [PoolByteArray] with the data compressed. Set the compression mode using one of [File]'s COMPRESS_* constants.
+ Returns a new [code]PoolByteArray[/code] with the data compressed. Set the compression mode using one of [File]'s COMPRESS_* constants.
</description>
</method>
<method name="decompress">
@@ -51,7 +51,7 @@
<argument index="1" name="compression_mode" type="int" default="0">
</argument>
<description>
- Returns a new [PoolByteArray] with the data decompressed. Set buffer_size to the size of the uncompressed data. Set the compression mode using one of [File]'s COMPRESS_* constants.
+ Returns a new [code]PoolByteArray[/code] with the data decompressed. Set buffer_size to the size of the uncompressed data. Set the compression mode using one of [File]'s COMPRESS_* constants.
</description>
</method>
<method name="get_string_from_ascii">
@@ -129,7 +129,7 @@
<argument index="1" name="to" type="int">
</argument>
<description>
- Returns the slice of the [PoolByteArray] between indices (inclusive) as a new [PoolByteArray]. Any negative index is considered to be from the end of the array.
+ Returns the slice of the [code]PoolByteArray[/code] between indices (inclusive) as a new [code]PoolByteArray[/code]. Any negative index is considered to be from the end of the array.
</description>
</method>
</methods>
diff --git a/doc/classes/PoolColorArray.xml b/doc/classes/PoolColorArray.xml
index 644256e765..70503a67b9 100644
--- a/doc/classes/PoolColorArray.xml
+++ b/doc/classes/PoolColorArray.xml
@@ -31,7 +31,7 @@
<argument index="0" name="array" type="PoolColorArray">
</argument>
<description>
- Append a [PoolColorArray] at the end of this array.
+ Append a [code]PoolColorArray[/code] at the end of this array.
</description>
</method>
<method name="insert">
diff --git a/doc/classes/PoolIntArray.xml b/doc/classes/PoolIntArray.xml
index 17772b6e2a..5caa8add1e 100644
--- a/doc/classes/PoolIntArray.xml
+++ b/doc/classes/PoolIntArray.xml
@@ -31,7 +31,7 @@
<argument index="0" name="array" type="PoolIntArray">
</argument>
<description>
- Append an [PoolIntArray] at the end of this array.
+ Append an [code]PoolIntArray[/code] at the end of this array.
</description>
</method>
<method name="insert">
diff --git a/doc/classes/PoolVector2Array.xml b/doc/classes/PoolVector2Array.xml
index e5df38483a..fbfdb11825 100644
--- a/doc/classes/PoolVector2Array.xml
+++ b/doc/classes/PoolVector2Array.xml
@@ -17,7 +17,7 @@
<argument index="0" name="from" type="Array">
</argument>
<description>
- Construct a new [PoolVector2Array]. Optionally, you can pass in an Array that will be converted.
+ Construct a new [code]PoolVector2Array[/code]. Optionally, you can pass in an Array that will be converted.
</description>
</method>
<method name="append">
@@ -31,7 +31,7 @@
<argument index="0" name="array" type="PoolVector2Array">
</argument>
<description>
- Append an [PoolVector2Array] at the end of this array.
+ Append an [code]PoolVector2Array[/code] at the end of this array.
</description>
</method>
<method name="insert">
diff --git a/doc/classes/PoolVector3Array.xml b/doc/classes/PoolVector3Array.xml
index 13a8290531..e5e2924273 100644
--- a/doc/classes/PoolVector3Array.xml
+++ b/doc/classes/PoolVector3Array.xml
@@ -31,7 +31,7 @@
<argument index="0" name="array" type="PoolVector3Array">
</argument>
<description>
- Append an [PoolVector3Array] at the end of this array.
+ Append an [code]PoolVector3Array[/code] at the end of this array.
</description>
</method>
<method name="insert">
diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml
index 1a3ea5c5c7..bdf2cc0062 100644
--- a/doc/classes/ProjectSettings.xml
+++ b/doc/classes/ProjectSettings.xml
@@ -51,6 +51,14 @@
Return the order of a configuration value (influences when saved to the config file).
</description>
</method>
+ <method name="get_setting" qualifiers="const">
+ <return type="Variant">
+ </return>
+ <argument index="0" name="name" type="String">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="get_singleton" qualifiers="const">
<return type="Object">
</return>
@@ -68,7 +76,7 @@
Convert a localized path (res://) to a full native OS path.
</description>
</method>
- <method name="has" qualifiers="const">
+ <method name="has_setting" qualifiers="const">
<return type="bool">
</return>
<argument index="0" name="name" type="String">
@@ -153,6 +161,16 @@
Set the order of a configuration value (influences when saved to the config file).
</description>
</method>
+ <method name="set_setting">
+ <return type="void">
+ </return>
+ <argument index="0" name="name" type="String">
+ </argument>
+ <argument index="1" name="value" type="Variant">
+ </argument>
+ <description>
+ </description>
+ </method>
</methods>
<constants>
</constants>
diff --git a/doc/classes/Quat.xml b/doc/classes/Quat.xml
index f07e143aa0..056d7d10fa 100644
--- a/doc/classes/Quat.xml
+++ b/doc/classes/Quat.xml
@@ -4,7 +4,10 @@
Quaternion.
</brief_description>
<description>
- Quaternion is a 4 dimensional vector that is used to represent a rotation. It mainly exists to perform SLERP (spherical-linear interpolation) between two rotations. Multiplying quaternions also cheaply reproduces rotation sequences. However quaternions need to be often renormalized, or else they suffer from precision issues.
+ A 4-dimensional vector representing a rotation.
+ The vector represents a 4 dimensional complex number where multiplication of the basis elements is not commutative (multiplying i with j gives a different result than multiplying j with i).
+ Multiplying quaternions reproduces rotation sequences. However quaternions need to be often renormalized, or else they suffer from precision issues.
+ It can be used to perform SLERP (spherical-linear interpolation) between two rotations.
</description>
<tutorials>
</tutorials>
@@ -23,6 +26,7 @@
<argument index="3" name="w" type="float">
</argument>
<description>
+ Returns a quaternion defined by these values.
</description>
</method>
<method name="Quat">
@@ -57,6 +61,7 @@
<argument index="3" name="t" type="float">
</argument>
<description>
+ Performs a cubic spherical-linear interpolation with another quaternion.
</description>
</method>
<method name="dot">
@@ -111,7 +116,7 @@
<argument index="1" name="t" type="float">
</argument>
<description>
- Perform a spherical-linear interpolation with another quaternion.
+ Performs a spherical-linear interpolation with another quaternion.
</description>
</method>
<method name="slerpni">
@@ -122,6 +127,7 @@
<argument index="1" name="t" type="float">
</argument>
<description>
+ Performs a spherical-linear interpolation with another quaterion without checking if the rotation path is not bigger than 90°.
</description>
</method>
<method name="xform">
@@ -130,17 +136,22 @@
<argument index="0" name="v" type="Vector3">
</argument>
<description>
+ Transforms the vector [code]v[/code] by this quaternion.
</description>
</method>
</methods>
<members>
<member name="w" type="float" setter="" getter="">
+ W component of the quaternion. Default value: [code]1[/code]
</member>
<member name="x" type="float" setter="" getter="">
+ X component of the quaternion. Default value: [code]0[/code]
</member>
<member name="y" type="float" setter="" getter="">
+ Y component of the quaternion. Default value: [code]0[/code]
</member>
<member name="z" type="float" setter="" getter="">
+ Z component of the quaternion. Default value: [code]0[/code]
</member>
</members>
<constants>
diff --git a/doc/classes/RayCast.xml b/doc/classes/RayCast.xml
index 2e6efff769..3f999f7fe2 100644
--- a/doc/classes/RayCast.xml
+++ b/doc/classes/RayCast.xml
@@ -5,12 +5,9 @@
</brief_description>
<description>
A RayCast represents a line from its origin to its destination position, [code]cast_to[/code]. It is used to query the 3D space in order to find the closest object along the path of the ray.
-
RayCast can ignore some objects by adding them to the exception list via [code]add_exception[/code], by setting proper filtering with collision layers, or by filtering object types with type masks.
-
Only enabled raycasts will be able to query the space and report collisions.
-
- RayCast calculates intersection every fixed frame (see [Node]), and the result is cached so it can be used later until the next frame. If multiple queries are required between fixed frames (or during the same frame) use [method force_raycast_update] after adjusting the raycast.
+ RayCast calculates intersection every physics frame (see [Node]), and the result is cached so it can be used later until the next frame. If multiple queries are required between physics frames (or during the same frame) use [method force_raycast_update] after adjusting the raycast.
</description>
<tutorials>
</tutorials>
@@ -47,7 +44,7 @@
</return>
<description>
Updates the collision information for the ray.
- Use this method to update the collision information immediately instead of waiting for the next [code]_fixed_process[/code] call, for example if the ray or its parent has changed state. Note: [code]enabled == true[/code] is not required for this to work.
+ Use this method to update the collision information immediately instead of waiting for the next [code]_physics_process[/code] call, for example if the ray or its parent has changed state. Note: [code]enabled == true[/code] is not required for this to work.
</description>
</method>
<method name="get_cast_to" qualifiers="const">
@@ -81,11 +78,19 @@
[/codeblock]
</description>
</method>
- <method name="get_collision_layer" qualifiers="const">
+ <method name="get_collision_mask" qualifiers="const">
<return type="int">
</return>
<description>
- Returns the collision layer for this ray.
+ Returns the collision mask for this ray.
+ </description>
+ </method>
+ <method name="get_collision_mask_bit" qualifiers="const">
+ <return type="bool">
+ </return>
+ <argument index="0" name="bit" type="int">
+ </argument>
+ <description>
</description>
</method>
<method name="get_collision_normal" qualifiers="const">
@@ -150,13 +155,23 @@
Sets the ray destination point, so that the ray will test from the ray's origin to [code]local_point[/code].
</description>
</method>
- <method name="set_collision_layer">
+ <method name="set_collision_mask">
+ <return type="void">
+ </return>
+ <argument index="0" name="mask" type="int">
+ </argument>
+ <description>
+ Set the mask to filter objects. Only objects in at least one collision layer enabled in the mask will be detected.
+ </description>
+ </method>
+ <method name="set_collision_mask_bit">
<return type="void">
</return>
- <argument index="0" name="layer" type="int">
+ <argument index="0" name="bit" type="int">
+ </argument>
+ <argument index="1" name="value" type="bool">
</argument>
<description>
- Set the mask to filter objects. Only objects with at least the same mask element set will be detected.
</description>
</method>
<method name="set_enabled">
@@ -182,8 +197,8 @@
<member name="cast_to" type="Vector3" setter="set_cast_to" getter="get_cast_to">
The ray's destination point, relative to the RayCast's [code]position[/code].
</member>
- <member name="collision_layer" type="int" setter="set_collision_layer" getter="get_collision_layer">
- The RayCast's collison layer(s). Only bodies in the same collision layer(s) will be detected.
+ <member name="collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask">
+ The ray's collision mask. Only objects in at least one collision layer enabled in the mask will be detected.
</member>
<member name="enabled" type="bool" setter="set_enabled" getter="is_enabled">
If [code]true[/code], collisions will be reported. Default value: [code]false[/code].
diff --git a/doc/classes/RayCast2D.xml b/doc/classes/RayCast2D.xml
index 5520abe050..45a83f7ded 100644
--- a/doc/classes/RayCast2D.xml
+++ b/doc/classes/RayCast2D.xml
@@ -7,7 +7,7 @@
A RayCast represents a line from its origin to its destination position, [code]cast_to[/code]. It is used to query the 2D space in order to find the closest object along the path of the ray.
RayCast2D can ignore some objects by adding them to the exception list via [code]add_exception[/code], by setting proper filtering with collision layers, or by filtering object types with type masks.
Only enabled raycasts will be able to query the space and report collisions.
- RayCast2D calculates intersection every fixed frame (see [Node]), and the result is cached so it can be used later until the next frame. If multiple queries are required between fixed frames (or during the same frame) use [method force_raycast_update] after adjusting the raycast.
+ RayCast2D calculates intersection every physics frame (see [Node]), and the result is cached so it can be used later until the next frame. If multiple queries are required between physics frames (or during the same frame) use [method force_raycast_update] after adjusting the raycast.
</description>
<tutorials>
</tutorials>
@@ -43,7 +43,7 @@
<return type="void">
</return>
<description>
- Updates the collision information for the ray. Use this method to update the collision information immediately instead of waiting for the next [code]_fixed_process[/code] call, for example if the ray or its parent has changed state. Note: [code]enabled == true[/code] is not required for this to work.
+ Updates the collision information for the ray. Use this method to update the collision information immediately instead of waiting for the next [code]_physics_process[/code] call, for example if the ray or its parent has changed state. Note: [code]enabled == true[/code] is not required for this to work.
</description>
</method>
<method name="get_cast_to" qualifiers="const">
@@ -77,11 +77,19 @@
[/codeblock]
</description>
</method>
- <method name="get_collision_layer" qualifiers="const">
+ <method name="get_collision_mask" qualifiers="const">
<return type="int">
</return>
<description>
- Returns the collision layer for this ray.
+ Returns the collision mask for this ray.
+ </description>
+ </method>
+ <method name="get_collision_mask_bit" qualifiers="const">
+ <return type="bool">
+ </return>
+ <argument index="0" name="bit" type="int">
+ </argument>
+ <description>
</description>
</method>
<method name="get_collision_normal" qualifiers="const">
@@ -153,13 +161,23 @@
Sets the ray destination point, so that the ray will test from the ray's origin to [code]local_point[/code]
</description>
</method>
- <method name="set_collision_layer">
+ <method name="set_collision_mask">
+ <return type="void">
+ </return>
+ <argument index="0" name="mask" type="int">
+ </argument>
+ <description>
+ Set the mask to filter objects. Only objects in at least one collision layer enabled in the mask will be detected.
+ </description>
+ </method>
+ <method name="set_collision_mask_bit">
<return type="void">
</return>
- <argument index="0" name="layer" type="int">
+ <argument index="0" name="bit" type="int">
+ </argument>
+ <argument index="1" name="value" type="bool">
</argument>
<description>
- Set the mask to filter objects. Only objects with at least the same mask element set will be detected.
</description>
</method>
<method name="set_enabled">
@@ -194,8 +212,8 @@
<member name="cast_to" type="Vector2" setter="set_cast_to" getter="get_cast_to">
The ray's destination point, relative to the RayCast's [code]position[/code].
</member>
- <member name="collision_layer" type="int" setter="set_collision_layer" getter="get_collision_layer">
- The RayCast2D's collison layer(s). Only bodies in the same collision layer(s) will be detected.
+ <member name="collision_mask" type="int" setter="set_collision_mask" getter="get_collision_mask">
+ The ray's collision mask. Only objects in at least one collision layer enabled in the mask will be detected.
</member>
<member name="enabled" type="bool" setter="set_enabled" getter="is_enabled">
If [code]true[/code], collisions will be reported. Default value: [code]false[/code].
diff --git a/doc/classes/Rect2.xml b/doc/classes/Rect2.xml
index 80f7830a16..5af8c82a7b 100644
--- a/doc/classes/Rect2.xml
+++ b/doc/classes/Rect2.xml
@@ -4,7 +4,7 @@
2D Axis-aligned bounding box.
</brief_description>
<description>
- Rect2 provides an 2D Axis-Aligned Bounding Box. It consists of a position, a size, and several utility functions. It is typically used for fast overlap tests.
+ Rect2 consists of a position, a size, and several utility functions. It is typically used for fast overlap tests.
</description>
<tutorials>
</tutorials>
@@ -19,7 +19,7 @@
<argument index="1" name="size" type="Vector2">
</argument>
<description>
- Construct a [Rect2] by position and size.
+ Constructs a [code]Rect2[/code] by position and size.
</description>
</method>
<method name="Rect2">
@@ -34,7 +34,7 @@
<argument index="3" name="height" type="float">
</argument>
<description>
- Construct a [Rect2] by x, y, width and height.
+ Constructs a [code]Rect2[/code] by x, y, width, and height.
</description>
</method>
<method name="clip">
@@ -43,7 +43,7 @@
<argument index="0" name="b" type="Rect2">
</argument>
<description>
- Returns the intersection of this [Rect2] and b.
+ Returns the intersection of this [code]Rect2[/code] and b.
</description>
</method>
<method name="encloses">
@@ -52,7 +52,7 @@
<argument index="0" name="b" type="Rect2">
</argument>
<description>
- Returns true if this [Rect2] completely encloses another one.
+ Returns [code]true[/code] if this [code]Rect2[/code] completely encloses another one.
</description>
</method>
<method name="expand">
@@ -61,14 +61,14 @@
<argument index="0" name="to" type="Vector2">
</argument>
<description>
- Return this [Rect2] expanded to include a given point.
+ Returns this [code]Rect2[/code] expanded to include a given point.
</description>
</method>
<method name="get_area">
<return type="float">
</return>
<description>
- Get the area of the [Rect2].
+ Returns the area of the [code]Rect2[/code].
</description>
</method>
<method name="grow">
@@ -77,7 +77,7 @@
<argument index="0" name="by" type="float">
</argument>
<description>
- Return a copy of the [Rect2] grown a given amount of units towards all the sides.
+ Returns a copy of the [code]Rect2[/code] grown a given amount of units towards all the sides.
</description>
</method>
<method name="grow_individual">
@@ -92,6 +92,7 @@
<argument index="3" name=" bottom" type="float">
</argument>
<description>
+ Returns a copy of the [code]Rect2[/code] grown a given amount of units towards each direction individually.
</description>
</method>
<method name="grow_margin">
@@ -102,13 +103,14 @@
<argument index="1" name="by" type="float">
</argument>
<description>
+ Returns a copy of the [code]Rect2[/code] grown a given amount of units towards the [Margin] direction.
</description>
</method>
<method name="has_no_area">
<return type="bool">
</return>
<description>
- Return true if the [Rect2] is flat or empty.
+ Returns [code]true[/code] if the [code]Rect2[/code] is flat or empty.
</description>
</method>
<method name="has_point">
@@ -117,7 +119,7 @@
<argument index="0" name="point" type="Vector2">
</argument>
<description>
- Return true if the [Rect2] contains a point.
+ Returns [code]true[/code] if the [code]Rect2[/code] contains a point.
</description>
</method>
<method name="intersects">
@@ -126,7 +128,7 @@
<argument index="0" name="b" type="Rect2">
</argument>
<description>
- Return true if the [Rect2] overlaps with another.
+ Returns [code]true[/code] if the [code]Rect2[/code] overlaps with another.
</description>
</method>
<method name="merge">
@@ -135,7 +137,7 @@
<argument index="0" name="b" type="Rect2">
</argument>
<description>
- Combine this [Rect2] with another, a larger one is returned that contains both.
+ Returns a larger Rect2 that contains this Rect2 and [code]with[/code].
</description>
</method>
</methods>
diff --git a/doc/classes/Rect3.xml b/doc/classes/Rect3.xml
index f41665db34..a56dac57c7 100644
--- a/doc/classes/Rect3.xml
+++ b/doc/classes/Rect3.xml
@@ -4,7 +4,7 @@
Axis-Aligned Bounding Box.
</brief_description>
<description>
- Rect3 provides an 3D Axis-Aligned Bounding Box. It consists of a position, a size, and several utility functions. It is typically used for simple (fast) overlap tests.
+ Rect3 consists of a position, a size, and several utility functions. It is typically used for fast overlap tests.
</description>
<tutorials>
</tutorials>
@@ -28,7 +28,7 @@
<argument index="0" name="with" type="Rect3">
</argument>
<description>
- Return true if this [Rect3] completely encloses another one.
+ Returns [code]true[/code] if this [code]Rect3[/code] completely encloses another one.
</description>
</method>
<method name="expand">
@@ -37,14 +37,14 @@
<argument index="0" name="to_point" type="Vector3">
</argument>
<description>
- Return this [Rect3] expanded to include a given point.
+ Returns this [code]Rect3[/code] expanded to include a given point.
</description>
</method>
<method name="get_area">
<return type="float">
</return>
<description>
- Get the area of the [Rect3].
+ Gets the area of the [code]Rect3[/code].
</description>
</method>
<method name="get_endpoint">
@@ -53,49 +53,49 @@
<argument index="0" name="idx" type="int">
</argument>
<description>
- Get the position of the 8 endpoints of the [Rect3] in space.
+ Gets the position of the 8 endpoints of the [code]Rect3[/code] in space.
</description>
</method>
<method name="get_longest_axis">
<return type="Vector3">
</return>
<description>
- Return the normalized longest axis of the [Rect3].
+ Returns the normalized longest axis of the [code]Rect3[/code].
</description>
</method>
<method name="get_longest_axis_index">
<return type="int">
</return>
<description>
- Return the index of the longest axis of the [Rect3] (according to [Vector3]::AXIS* enum).
+ Returns the index of the longest axis of the [code]Rect3[/code] (according to [Vector3]::AXIS* enum).
</description>
</method>
<method name="get_longest_axis_size">
<return type="float">
</return>
<description>
- Return the scalar length of the longest axis of the [Rect3].
+ Returns the scalar length of the longest axis of the [code]Rect3[/code].
</description>
</method>
<method name="get_shortest_axis">
<return type="Vector3">
</return>
<description>
- Return the normalized shortest axis of the [Rect3].
+ Returns the normalized shortest axis of the [code]Rect3[/code].
</description>
</method>
<method name="get_shortest_axis_index">
<return type="int">
</return>
<description>
- Return the index of the shortest axis of the [Rect3] (according to [Vector3]::AXIS* enum).
+ Returns the index of the shortest axis of the [code]Rect3[/code] (according to [Vector3]::AXIS* enum).
</description>
</method>
<method name="get_shortest_axis_size">
<return type="float">
</return>
<description>
- Return the scalar length of the shortest axis of the [Rect3].
+ Returns the scalar length of the shortest axis of the [code]Rect3[/code].
</description>
</method>
<method name="get_support">
@@ -104,7 +104,7 @@
<argument index="0" name="dir" type="Vector3">
</argument>
<description>
- Return the support point in a given direction. This is useful for collision detection algorithms.
+ Returns the support point in a given direction. This is useful for collision detection algorithms.
</description>
</method>
<method name="grow">
@@ -113,21 +113,21 @@
<argument index="0" name="by" type="float">
</argument>
<description>
- Return a copy of the [Rect3] grown a given amount of units towards all the sides.
+ Returns a copy of the [code]Rect3[/code] grown a given amount of units towards all the sides.
</description>
</method>
<method name="has_no_area">
<return type="bool">
</return>
<description>
- Return true if the [Rect3] is flat or empty.
+ Returns [code]true[/code] if the [code]Rect3[/code] is flat or empty.
</description>
</method>
<method name="has_no_surface">
<return type="bool">
</return>
<description>
- Return true if the [Rect3] is empty.
+ Returns [code]true[/code] if the [code]Rect3[/code] is empty.
</description>
</method>
<method name="has_point">
@@ -136,7 +136,7 @@
<argument index="0" name="point" type="Vector3">
</argument>
<description>
- Return true if the [Rect3] contains a point.
+ Returns [code]true[/code] if the [code]Rect3[/code] contains a point.
</description>
</method>
<method name="intersection">
@@ -145,7 +145,7 @@
<argument index="0" name="with" type="Rect3">
</argument>
<description>
- Return the intersection between two [Rect3]. An empty Rect3 (size 0,0,0) is returned on failure.
+ Returns the intersection between two [code]Rect3[/code]. An empty Rect3 (size 0,0,0) is returned on failure.
</description>
</method>
<method name="intersects">
@@ -154,7 +154,7 @@
<argument index="0" name="with" type="Rect3">
</argument>
<description>
- Return true if the [Rect3] overlaps with another.
+ Returns [code]true[/code] if the [code]Rect3[/code] overlaps with another.
</description>
</method>
<method name="intersects_plane">
@@ -163,7 +163,7 @@
<argument index="0" name="plane" type="Plane">
</argument>
<description>
- Return true if the [Rect3] is at both sides of a plane.
+ Returns [code]true[/code] if the [code]Rect3[/code] is on both sides of a plane.
</description>
</method>
<method name="intersects_segment">
@@ -174,7 +174,7 @@
<argument index="1" name="to" type="Vector3">
</argument>
<description>
- Return true if the [Rect3] intersects the line segment between from and to
+ Returns [code]true[/code] if the [code]Rect3[/code] intersects the line segment between [code]from[/code] and [code]to[/code].
</description>
</method>
<method name="merge">
@@ -183,7 +183,7 @@
<argument index="0" name="with" type="Rect3">
</argument>
<description>
- Combine this [Rect3] with another, a larger one is returned that contains both.
+ Returns a larger Rect3 that contains this Rect3 and [code]with[/code].
</description>
</method>
</methods>
@@ -192,6 +192,7 @@
Ending corner.
</member>
<member name="position" type="Vector3" setter="" getter="">
+ Beginning corner.
</member>
<member name="size" type="Vector3" setter="" getter="">
Size from position to end.
diff --git a/doc/classes/RemoteTransform.xml b/doc/classes/RemoteTransform.xml
index ecc136055e..67679bc9df 100644
--- a/doc/classes/RemoteTransform.xml
+++ b/doc/classes/RemoteTransform.xml
@@ -1,8 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="RemoteTransform" inherits="Spatial" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ RemoteTransform mirrors the [Transform] of another [Spatial] derived Node in the scene.
</brief_description>
<description>
+ RemoteTransform mirrors the [Transform] of another [Spatial] derived Node (called the remote node) in the scene.
+ It can be set to track another Node's position, rotation and/or scale and update its own accordingly, using either global or local coordinates.
</description>
<tutorials>
</tutorials>
@@ -82,14 +85,19 @@
</methods>
<members>
<member name="remote_path" type="NodePath" setter="set_remote_node" getter="get_remote_node">
+ The remote node's [NodePath].
</member>
<member name="update_position" type="bool" setter="set_update_position" getter="get_update_position">
+ If [code]true[/code] the remote node's position is mirrored.
</member>
<member name="update_rotation" type="bool" setter="set_update_rotation" getter="get_update_rotation">
+ If [code]true[/code] the remote node's rotation is mirrored.
</member>
<member name="update_scale" type="bool" setter="set_update_scale" getter="get_update_scale">
+ If [code]true[/code] the remote node's scale is mirrored.
</member>
<member name="use_global_coordinates" type="bool" setter="set_use_global_coordinates" getter="get_use_global_coordinates">
+ If [code]true[/code] global coordinates are used. If [code]false[/code] local coordinates are used. Default value: [code]true[/code].
</member>
</members>
<constants>
diff --git a/doc/classes/RemoteTransform2D.xml b/doc/classes/RemoteTransform2D.xml
index 346b8de621..eac7427f9f 100644
--- a/doc/classes/RemoteTransform2D.xml
+++ b/doc/classes/RemoteTransform2D.xml
@@ -1,8 +1,11 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="RemoteTransform2D" inherits="Node2D" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ RemoteTransform2D mirrors the [Transform2D] of another [CanvasItem] derived Node in the scene.
</brief_description>
<description>
+ RemoteTransform2D mirrors the [Transform2D] of another [CanvasItem] derived Node (called the remote node) in the scene.
+ It can be set to track another Node's position, rotation and/or and update its own accordingly, using either global or local coordinates.
</description>
<tutorials>
</tutorials>
@@ -82,14 +85,19 @@
</methods>
<members>
<member name="remote_path" type="NodePath" setter="set_remote_node" getter="get_remote_node">
+ The remote node's [NodePath].
</member>
<member name="update_position" type="bool" setter="set_update_position" getter="get_update_position">
+ If [code]true[/code] the remote node's position is mirrored.
</member>
<member name="update_rotation" type="bool" setter="set_update_rotation" getter="get_update_rotation">
+ If [code]true[/code] the remote node's rotation is mirrored.
</member>
<member name="update_scale" type="bool" setter="set_update_scale" getter="get_update_scale">
+ If [code]true[/code] the remote node's scale is mirrored.
</member>
<member name="use_global_coordinates" type="bool" setter="set_use_global_coordinates" getter="get_use_global_coordinates">
+ If [code]true[/code] global coordinates are used. If [code]false[/code] local coordinates are used. Default value: [code]true[/code].
</member>
</members>
<constants>
diff --git a/doc/classes/Resource.xml b/doc/classes/Resource.xml
index 57497f5d78..7767b26988 100644
--- a/doc/classes/Resource.xml
+++ b/doc/classes/Resource.xml
@@ -81,7 +81,7 @@
<argument index="0" name="path" type="String">
</argument>
<description>
- Set the path of the resource. This is useful mainly for editors when saving/loading, and shouldn't be changed by anything else. Fails if another [Resource] already has path "path".
+ Set the path of the resource. This is useful mainly for editors when saving/loading, and shouldn't be changed by anything else. Fails if another [code]Resource[/code] already has path "path".
</description>
</method>
<method name="setup_local_to_scene">
@@ -96,7 +96,7 @@
<argument index="0" name="path" type="String">
</argument>
<description>
- Set the path of the resource. Differs from set_path(), if another [Resource] exists with "path" it over-takes it, instead of failing.
+ Set the path of the resource. Differs from set_path(), if another [code]Resource[/code] exists with "path" it over-takes it, instead of failing.
</description>
</method>
</methods>
diff --git a/doc/classes/ResourceLoader.xml b/doc/classes/ResourceLoader.xml
index 6558a388c8..9fb3c71a5b 100644
--- a/doc/classes/ResourceLoader.xml
+++ b/doc/classes/ResourceLoader.xml
@@ -4,7 +4,7 @@
Resource Loader.
</brief_description>
<description>
- Resource Loader. This is a static object accessible as [ResourceLoader]. GDScript has a simplified load() function, though.
+ Resource Loader. This is a static object accessible as [code]ResourceLoader[/code]. GDScript has a simplified load() function, though.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/RichTextLabel.xml b/doc/classes/RichTextLabel.xml
index 9f8cdcce6d..cc644f34cb 100644
--- a/doc/classes/RichTextLabel.xml
+++ b/doc/classes/RichTextLabel.xml
@@ -39,24 +39,28 @@
<return type="void">
</return>
<description>
+ Clears the label's text.
</description>
</method>
<method name="get_bbcode" qualifiers="const">
<return type="String">
</return>
<description>
+ Returns label's BBCode.
</description>
</method>
<method name="get_line_count" qualifiers="const">
<return type="int">
</return>
<description>
+ Returns the number of lines in the text.
</description>
</method>
<method name="get_percent_visible" qualifiers="const">
<return type="float">
</return>
<description>
+ Returns the text's visibility as a floating point value between 0.0 and 1.0.
</description>
</method>
<method name="get_tab_size" qualifiers="const">
@@ -69,13 +73,14 @@
<return type="String">
</return>
<description>
- Returns the raw text, stripping out the formatting information.
+ Returns the label's text with the formatting removed.
</description>
</method>
<method name="get_total_character_count" qualifiers="const">
<return type="int">
</return>
<description>
+ Returns the total number of characters.
</description>
</method>
<method name="get_v_scroll">
@@ -94,6 +99,7 @@
<return type="int">
</return>
<description>
+ Returns the number of visible lines.
</description>
</method>
<method name="is_meta_underlined" qualifiers="const">
@@ -102,10 +108,17 @@
<description>
</description>
</method>
+ <method name="is_overriding_selected_font_color" qualifiers="const">
+ <return type="bool">
+ </return>
+ <description>
+ </description>
+ </method>
<method name="is_scroll_active" qualifiers="const">
<return type="bool">
</return>
<description>
+ Returns [code]true[/code] if active scrolling is enabled.
</description>
</method>
<method name="is_scroll_following" qualifiers="const">
@@ -118,19 +131,21 @@
<return type="bool">
</return>
<description>
- Return true if selecting the text inside this richtext is allowed.
+ Returns [code]true[/code] if the label's text can be selected.
</description>
</method>
<method name="is_using_bbcode" qualifiers="const">
<return type="bool">
</return>
<description>
+ Returns [code]true[/code] if the label has BBCode.
</description>
</method>
<method name="newline">
<return type="void">
</return>
<description>
+ Adds a newline to the end of the rich text.
</description>
</method>
<method name="parse_bbcode">
@@ -237,6 +252,7 @@
<argument index="0" name="text" type="String">
</argument>
<description>
+ Sets the BBCode text to the label.
</description>
</method>
<method name="set_meta_underline">
@@ -247,12 +263,21 @@
<description>
</description>
</method>
+ <method name="set_override_selected_font_color">
+ <return type="void">
+ </return>
+ <argument index="0" name="override" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="set_percent_visible">
<return type="void">
</return>
<argument index="0" name="percent_visible" type="float">
</argument>
<description>
+ Sets the text's visibility. Takes a floating point value between 0.0 and 1.0.
</description>
</method>
<method name="set_scroll_active">
@@ -277,7 +302,7 @@
<argument index="0" name="enabled" type="bool">
</argument>
<description>
- Set to true if selecting the text inside this richtext is allowed.
+ If [code]true[/code] text can be selected.
</description>
</method>
<method name="set_tab_size">
@@ -327,12 +352,19 @@
</methods>
<members>
<member name="bbcode_enabled" type="bool" setter="set_use_bbcode" getter="is_using_bbcode">
+ If [code]true[/code] the label uses BBCode formatting. Default value: [code]false[/code].
</member>
<member name="bbcode_text" type="String" setter="set_bbcode" getter="get_bbcode">
+ The label's text in BBCode format.
+ </member>
+ <member name="override_selected_font_color" type="bool" setter="set_override_selected_font_color" getter="is_overriding_selected_font_color">
+ If [code]true[/code] the label uses the custom font color. Default value: [code]false[/code].
</member>
<member name="percent_visible" type="float" setter="set_percent_visible" getter="get_percent_visible">
+ The text's visibility, as a [float] between 0.0 and 1.0.
</member>
<member name="visible_characters" type="int" setter="set_visible_characters" getter="get_visible_characters">
+ The restricted number of characters to display in the label.
</member>
</members>
<signals>
@@ -378,6 +410,8 @@
</constant>
<constant name="ITEM_LIST" value="9">
</constant>
+ <constant name="ITEM_TABLE" value="10">
+ </constant>
<constant name="ITEM_META" value="11">
</constant>
</constants>
diff --git a/doc/classes/RigidBody.xml b/doc/classes/RigidBody.xml
index 76a93248fb..f9488d2f7f 100644
--- a/doc/classes/RigidBody.xml
+++ b/doc/classes/RigidBody.xml
@@ -430,18 +430,18 @@
</signal>
</signals>
<constants>
- <constant name="MODE_STATIC" value="1">
- Static mode. The body behaves like a [StaticBody], and can only move by user code.
- </constant>
- <constant name="MODE_KINEMATIC" value="3">
- Kinematic body. The body behaves like a [KinematicBody], and can only move by user code.
- </constant>
<constant name="MODE_RIGID" value="0">
Rigid body. This is the "natural" state of a rigid body. It is affected by forces, and can move, rotate, and be affected by user code.
</constant>
+ <constant name="MODE_STATIC" value="1">
+ Static mode. The body behaves like a [StaticBody], and can only move by user code.
+ </constant>
<constant name="MODE_CHARACTER" value="2">
Character body. This behaves like a rigid body, but can not rotate.
</constant>
+ <constant name="MODE_KINEMATIC" value="3">
+ Kinematic body. The body behaves like a [KinematicBody], and can only move by user code.
+ </constant>
<constant name="AXIS_LOCK_DISABLED" value="0">
</constant>
<constant name="AXIS_LOCK_X" value="1">
diff --git a/doc/classes/RigidBody2D.xml b/doc/classes/RigidBody2D.xml
index a4faa697de..e0ca6084e6 100644
--- a/doc/classes/RigidBody2D.xml
+++ b/doc/classes/RigidBody2D.xml
@@ -1,14 +1,17 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="RigidBody2D" inherits="PhysicsBody2D" category="Core" version="3.0.alpha.custom_build">
<brief_description>
- Physics Body whose position is determined through physics simulation in 2D space.
+ A body that is controlled by the 2D physics engine.
</brief_description>
<description>
- This is the node that implements full 2D physics. This means that you do not control a RigidBody2D directly. Instead you can apply forces to it (gravity, impulses, etc.), and the physics simulation will calculate the resulting movement, collision, bouncing, rotating, etc.
- This node can use custom force integration, for writing complex physics motion behavior per node.
- This node can shift state between regular Rigid body, Kinematic, Character or Static.
- Character mode forbids this node from being rotated.
- As a warning, don't change RigidBody2D's position every frame or very often. Sporadic changes work fine, but physics runs at a different granularity (fixed hz) than usual rendering (process callback) and maybe even in a separate thread, so changing this from a process loop will yield strange behavior.
+ This node implements simulated 2D physics. You do not control a RigidBody2D directly. Instead you apply forces to it (gravity, impulses, etc.) and the physics simulation calculates the resulting movement based on its mass, friction, and other physical properties.
+ A RigidBody2D has 4 behavior modes (see [member mode]):
+ - [b]Rigid[/b]: The body behaves as a physical object. It collides with other bodies and responds to forces applied to it. This is the default mode.
+ - [b]Static[/b]: The body behaves like a [StaticBody2D] and does not move.
+ - [b]Character[/b]: Similar to [code]Rigid[/code] mode, but the body can not rotate.
+ - [b]Kinematic[/b]: The body behaves like a [KinematicBody2D], and must be moved by code.
+ [b]Note:[/b] You should not change a RigidBody2D's [code]position[/code] or [code]linear_velocity[/code] every frame or even very often. If you need to directly affect the body's state, use [method _integrate_forces], which allows you to directly access the physics state.
+ If you need to override the default physics behavior, you can write a custom force integration. See [member custom_integrator].
</description>
<tutorials>
</tutorials>
@@ -21,7 +24,7 @@
<argument index="0" name="state" type="Physics2DDirectBodyState">
</argument>
<description>
- Called during physics processing, allowing you to read and safely modify the simulation state for the object. By default it works in addition to the usual physics behavior, but [method set_use_custom_integrator] allows you to disable the default behavior and do fully custom force integration for a body.
+ Allows you to read and safely modify the simulation state for the object. Use this instead of [Node._physics_process] if you need to directly change the body's [code]position[/code] or other physics properties. By default it works in addition to the usual physics behavior, but [member custom_integrator] allows you to disable the default behavior and write custom force integration for a body.
</description>
</method>
<method name="add_force">
@@ -32,7 +35,7 @@
<argument index="1" name="force" type="Vector2">
</argument>
<description>
- Add a positioned force to the applied force and torque. As with [method apply_impulse], both the force and the offset from the body origin are in global coordinates.
+ Adds a positioned force to the body. Both the force and the offset from the body origin are in global coordinates.
</description>
</method>
<method name="apply_impulse">
@@ -43,7 +46,7 @@
<argument index="1" name="impulse" type="Vector2">
</argument>
<description>
- Apply a positioned impulse (which will be affected by the body mass and shape). This is the equivalent of hitting a billiard ball with a cue: a force that is applied once, and only once. Both the impulse and the offset from the body origin are in global coordinates.
+ Applies a positioned impulse to the body (which will be affected by the body mass and shape). This is the equivalent of hitting a billiard ball with a cue: a force that is applied instantaneously. Both the impulse and the offset from the body origin are in global coordinates.
</description>
</method>
<method name="get_angular_damp" qualifiers="const">
@@ -64,14 +67,14 @@
<return type="Vector2">
</return>
<description>
- Return the applied force vector.
+ Returns the body's total applied force.
</description>
</method>
<method name="get_applied_torque" qualifiers="const">
<return type="float">
</return>
<description>
- Return the torque which is being applied to this body.
+ Returns the body's total applied torque.
</description>
</method>
<method name="get_bounce" qualifiers="const">
@@ -85,7 +88,7 @@
<return type="Array">
</return>
<description>
- Return a list of the bodies colliding with this one. By default, number of max contacts reported is at 0 , see [method set_max_contacts_reported] to increase it. You must also enable contact monitor, see [method set_contact_monitor]
+ Returns a list of the bodies colliding with this one. Use [member contacts_reported] to set the maximum number reported. You must also set [member contact_monitor] to [code]true[/code].
</description>
</method>
<method name="get_continuous_collision_detection_mode" qualifiers="const">
@@ -113,7 +116,7 @@
<return type="float">
</return>
<description>
- Return the body's moment of inertia. This is usually automatically computed from the mass and the shapes. Note that this doesn't seem to work in a [code]_ready[/code] function: it apparently has not been auto-computed yet.
+ Returns the body's moment of inertia, which is computed automatically from the body's mass and assigned [Shape2D]s during the physics frame. Note that it will not yet have a value in the [code]_ready()[/code] function.
</description>
</method>
<method name="get_linear_damp" qualifiers="const">
@@ -127,7 +130,7 @@
<return type="Vector2">
</return>
<description>
- Return the body linear velocity. This changes by physics granularity. See [method set_linear_velocity].
+ Returns the body's linear velocity. This changes when a physics frame has passed, not during a normal update. See [method set_linear_velocity].
</description>
</method>
<method name="get_mass" qualifiers="const">
@@ -210,7 +213,7 @@
<argument index="0" name="force" type="Vector2">
</argument>
<description>
- Set the applied force vector. This is the equivalent of pushing a box over the ground: the force applied is applied constantly.
+ Sets the applied force vector. This is the equivalent of firing a rocket: the force is applied constantly.
</description>
</method>
<method name="set_applied_torque">
@@ -219,7 +222,7 @@
<argument index="0" name="torque" type="float">
</argument>
<description>
- Set a constant torque which will be applied to this body.
+ Sets the applied torque.
</description>
</method>
<method name="set_axis_velocity">
@@ -228,7 +231,7 @@
<argument index="0" name="axis_velocity" type="Vector2">
</argument>
<description>
- Set an axis velocity. The velocity in the given vector axis will be set as the given vector length. This is useful for jumping behavior.
+ Sets the body's velocity on the given axis. The velocity in the given vector axis will be set as the given vector length. This is useful for jumping behavior.
</description>
</method>
<method name="set_bounce">
@@ -378,59 +381,59 @@
<argument index="2" name="result" type="Physics2DTestMotionResult" default="null">
</argument>
<description>
- Return whether the body would collide, if it tried to move in the given vector. This method allows two extra parameters: A margin, which increases slightly the size of the shapes involved in the collision detection, and an object of type [Physics2DTestMotionResult], which will store additional information about the collision (should there be one).
+ Returns [code]true[/code] if a collision would result from moving in the given vector. [code]margin[/code] increases the size of the shapes involved in the collision detection, and [code]result[/code] is an object of type [Physics2DTestMotionResult], which contains additional information about the collision (should there be one).
</description>
</method>
</methods>
<members>
<member name="angular_damp" type="float" setter="set_angular_damp" getter="get_angular_damp">
- Damps RigidBody2D's rotational forces.
+ Damps the body's [member angular_velocity]. If [code]-1[/code] the body will use the "Default Angular Damp" in "Project &gt; Project Settings &gt; Physics &gt; 2d". Default value: [code]-1[/code].
</member>
<member name="angular_velocity" type="float" setter="set_angular_velocity" getter="get_angular_velocity">
- RigidBody2D's rotational velocity.
+ The body's rotational velocity.
</member>
<member name="bounce" type="float" setter="set_bounce" getter="get_bounce">
- RigidBody2D's bounciness.
+ The body's bounciness. Default value: [code]0[/code].
</member>
<member name="can_sleep" type="bool" setter="set_can_sleep" getter="is_able_to_sleep">
- If [code]true[/code] RigidBody2D will not calculate forces and will act as a static body while there is no movement. It will wake up when other forces are applied through other collisions or when the [code]apply_impulse[/code] method is used. Default value: [code]true[/code]
+ If [code]true[/code] the body will not calculate forces and will act as a static body if there is no movement. The body will wake up when other forces are applied via collisions or by using [method apply_impulse] or [method add_force]. Default value: [code]true[/code].
</member>
<member name="contact_monitor" type="bool" setter="set_contact_monitor" getter="is_contact_monitor_enabled">
- If [code]true[/code] RigidBody2D will emit signals when it collides with another RigidBody2D.
+ If [code]true[/code] the body will emit signals when it collides with another RigidBody2D. See also [member contacts_reported]. Default value: [code]false[/code].
</member>
<member name="contacts_reported" type="int" setter="set_max_contacts_reported" getter="get_max_contacts_reported">
- The maximum contacts to report. Bodies can keep a log of the contacts with other bodies, this is enabled by setting the maximum amount of contacts reported to a number greater than 0.
+ The maximum number of contacts to report. Default value: [code]0[/code].
</member>
<member name="continuous_cd" type="int" setter="set_continuous_collision_detection_mode" getter="get_continuous_collision_detection_mode" enum="RigidBody2D.CCDMode">
- If [code]true[/code] continuous collision detection is used. Default value: [code]false[/code]
- Continuous collision detection tries to predict where a moving body will collide, instead of moving it and correcting its movement if it collided. Continuous collision detection is more precise, and misses less impacts by small, fast-moving objects. Not using continuous collision detection is faster to compute, but can miss small, fast-moving objects.
+ Continuous collision detection mode. Default value: [code]CCD_MODE_DISABLED[/code].
+ Continuous collision detection tries to predict where a moving body will collide instead of moving it and correcting its movement after collision. Continuous collision detection is slower, but more precise and misses fewer collisions with small, fast-moving objects. Raycasting and shapecasting methods are available. See [code]CCD_MODE_[/code] constants for details.
</member>
<member name="custom_integrator" type="bool" setter="set_use_custom_integrator" getter="is_using_custom_integrator">
- If [code]true[/code] internal force integration will be disabled (like gravity or air friction) for this body. Other than collision response, the body will only move as determined by the [method _integrate_forces] function, if defined.
+ If [code]true[/code] internal force integration is disabled for this body. Aside from collision response, the body will only move as determined by the [method _integrate_forces] function.
</member>
<member name="friction" type="float" setter="set_friction" getter="get_friction">
- The body friction, from 0 (frictionless) to 1 (max friction).
+ The body's friction. Values range from [code]0[/code] (frictionless) to [code]1[/code] (maximum friction). Default value: [code]1[/code].
</member>
<member name="gravity_scale" type="float" setter="set_gravity_scale" getter="get_gravity_scale">
- This is multiplied by the global 2D gravity setting found in "Project &gt; Project Settings &gt; Physics &gt; 2d" to produce RigidBody2D's gravity. E.g. a value of 1 will be normal gravity, 2 will apply double gravity, and 0.5 will apply half gravity to this object.
+ Multiplies the gravity applied to the body. The body's gravity is calculated from the "Default Gravity" value in "Project &gt; Project Settings &gt; Physics &gt; 2d" and/or any additional gravity vector applied by [Area2D]s. Default value: [code]1[/code].
</member>
<member name="linear_damp" type="float" setter="set_linear_damp" getter="get_linear_damp">
- RigidBody2D's linear damp. Default of -1, cannot be less than -1. If this value is different from -1, any linear damp derived from the world or areas will be overridden.
+ Damps the body's [member linear_velocity]. If [code]-1[/code] the body will use the "Default Linear Damp" in "Project &gt; Project Settings &gt; Physics &gt; 2d". Default value: [code]-1[/code].
</member>
<member name="linear_velocity" type="Vector2" setter="set_linear_velocity" getter="get_linear_velocity">
- RigidBody2D's linear velocity. Can be used sporadically, but [b]DON'T SET THIS IN EVERY FRAME[/b], because physics may run in another thread and runs at a different granularity. Use [method _integrate_forces] as your process loop for precise control of the body state.
+ The body's linear velocity.
</member>
<member name="mass" type="float" setter="set_mass" getter="get_mass">
- RigidBody2D's mass.
+ The body's mass. Default value: [code]1[/code].
</member>
<member name="mode" type="int" setter="set_mode" getter="get_mode" enum="RigidBody2D.Mode">
- The body mode from the MODE_* enum. Modes include: MODE_STATIC, MODE_KINEMATIC, MODE_RIGID, and MODE_CHARACTER.
+ The body's mode. See [code]MODE_*[/code] constants. Default value: [code]MODE_RIGID[/code].
</member>
<member name="sleeping" type="bool" setter="set_sleeping" getter="is_sleeping">
- If [code]true[/code] RigidBody2D is sleeping and will not calculate forces until woken up by a collision or the [code]apply_impulse[/code] method.
+ If [code]true[/code] the body is sleeping and will not calculate forces until woken up by a collision or by using [method apply_impulse] or [method add_force].
</member>
<member name="weight" type="float" setter="set_weight" getter="get_weight">
- RigidBody2D's weight based on its mass and the global 2D gravity. Global values are set in "Project &gt; Project Settings &gt; Physics &gt; 2d".
+ The body's weight based on its mass and the "Default Gravity" value in "Project &gt; Project Settings &gt; Physics &gt; 2d".
</member>
</members>
<signals>
@@ -438,14 +441,14 @@
<argument index="0" name="body" type="Object">
</argument>
<description>
- Emitted when a body enters into contact with this one. Contact monitor and contacts reported must be enabled for this to work.
+ Emitted when a body enters into contact with this one. [member contact_monitor] must be [code]true[/code] and [member contacts_reported] greater than [code]0[/code].
</description>
</signal>
<signal name="body_exited">
<argument index="0" name="body" type="Object">
</argument>
<description>
- Emitted when a body exits contact with this one. Contact monitor and contacts reported must be enabled for this to work.
+ Emitted when a body exits contact with this one. [member contact_monitor] must be [code]true[/code] and [member contacts_reported] greater than [code]0[/code].
</description>
</signal>
<signal name="body_shape_entered">
@@ -458,8 +461,7 @@
<argument index="3" name="local_shape" type="int">
</argument>
<description>
- Emitted when a body enters into contact with this one. Contact monitor and contacts reported must be enabled for this to work.
- This signal not only receives the body that collided with this one, but also its [RID] (body_id), the shape index from the colliding body (body_shape), and the shape index from this body (local_shape) the other body collided with.
+ Emitted when a body enters into contact with this one. Reports colliding shape information. See [CollisionObject2D] for shape index information. [member contact_monitor] must be [code]true[/code] and [member contacts_reported] greater than [code]0[/code].
</description>
</signal>
<signal name="body_shape_exited">
@@ -472,37 +474,36 @@
<argument index="3" name="local_shape" type="int">
</argument>
<description>
- Emitted when a body shape exits contact with this one. Contact monitor and contacts reported must be enabled for this to work.
- This signal not only receives the body that stopped colliding with this one, but also its [RID] (body_id), the shape index from the colliding body (body_shape), and the shape index from this body (local_shape) the other body stopped colliding with.
+ Emitted when a body shape exits contact with this one. Reports colliding shape information. See [CollisionObject2D] for shape index information. [member contact_monitor] must be [code]true[/code] and [member contacts_reported] greater than [code]0[/code].
</description>
</signal>
<signal name="sleeping_state_changed">
<description>
- Emitted when the body changes its sleeping state. Either by sleeping or waking up.
+ Emitted when [member sleeping] changes.
</description>
</signal>
</signals>
<constants>
- <constant name="MODE_STATIC" value="1">
- Static mode. The body behaves like a [StaticBody2D], and can only move by user code.
- </constant>
- <constant name="MODE_KINEMATIC" value="3">
- Kinematic body. The body behaves like a [KinematicBody2D], and can only move by user code.
- </constant>
<constant name="MODE_RIGID" value="0">
- Rigid body. This is the "natural" state of a rigid body. It is affected by forces, and can move, rotate, and be affected by user code.
+ Rigid mode. The body behaves as a physical object. It collides with other bodies and responds to forces applied to it. This is the default mode.
+ </constant>
+ <constant name="MODE_STATIC" value="1">
+ Static mode. The body behaves like a [StaticBody2D] and does not move.
</constant>
<constant name="MODE_CHARACTER" value="2">
- Character body. This behaves like a rigid body, but can not rotate.
+ Character mode. Similar to [code]MODE_RIGID[/code], but the body can not rotate.
+ </constant>
+ <constant name="MODE_KINEMATIC" value="3">
+ Kinematic mode. The body behaves like a [KinematicBody2D], and must be moved by code.
</constant>
<constant name="CCD_MODE_DISABLED" value="0">
- Disables continuous collision detection. This is the fastest way to detect body collisions, but can miss small, fast-moving objects.
+ Continuous collision detection disabled. This is the fastest way to detect body collisions, but can miss small, fast-moving objects.
</constant>
<constant name="CCD_MODE_CAST_RAY" value="1">
- Enables continuous collision detection by raycasting. It is faster than shapecasting, but less precise.
+ Continuous collision detection enabled using raycasting. This is faster than shapecasting but less precise.
</constant>
<constant name="CCD_MODE_CAST_SHAPE" value="2">
- Enables continuous collision detection by shapecasting. It is the slowest CCD method, and the most precise.
+ Continuous collision detection enabled using shapecasting. This is the slowest CCD method and the most precise.
</constant>
</constants>
</class>
diff --git a/doc/classes/SceneTree.xml b/doc/classes/SceneTree.xml
index c40d9339d1..f6a6ce36e3 100644
--- a/doc/classes/SceneTree.xml
+++ b/doc/classes/SceneTree.xml
@@ -313,7 +313,7 @@
</argument>
<argument index="2" name="minsize" type="Vector2">
</argument>
- <argument index="3" name="shrink" type="int" default="1">
+ <argument index="3" name="shrink" type="float" default="1">
</argument>
<description>
</description>
@@ -336,10 +336,6 @@
<description>
</description>
</signal>
- <signal name="fixed_frame">
- <description>
- </description>
- </signal>
<signal name="idle_frame">
<description>
</description>
@@ -356,6 +352,12 @@
<description>
</description>
</signal>
+ <signal name="node_added">
+ <argument index="0" name="node" type="Object">
+ </argument>
+ <description>
+ </description>
+ </signal>
<signal name="node_configuration_warning_changed">
<argument index="0" name="node" type="Object">
</argument>
@@ -368,6 +370,10 @@
<description>
</description>
</signal>
+ <signal name="physics_frame">
+ <description>
+ </description>
+ </signal>
<signal name="screen_resized">
<description>
</description>
@@ -404,5 +410,7 @@
</constant>
<constant name="STRETCH_ASPECT_KEEP_HEIGHT" value="3">
</constant>
+ <constant name="STRETCH_ASPECT_EXPAND" value="4">
+ </constant>
</constants>
</class>
diff --git a/doc/classes/Script.xml b/doc/classes/Script.xml
index 307afba8a7..c13e009976 100644
--- a/doc/classes/Script.xml
+++ b/doc/classes/Script.xml
@@ -19,12 +19,6 @@
Returns true if the script can be instanced.
</description>
</method>
- <method name="get_node_type" qualifiers="const">
- <return type="String">
- </return>
- <description>
- </description>
- </method>
<method name="get_source_code" qualifiers="const">
<return type="String">
</return>
diff --git a/doc/classes/Semaphore.xml b/doc/classes/Semaphore.xml
index 0aeb6472af..c9c8ac0298 100644
--- a/doc/classes/Semaphore.xml
+++ b/doc/classes/Semaphore.xml
@@ -15,14 +15,14 @@
<return type="int" enum="Error">
</return>
<description>
- Lowers the [Semaphore], allowing one more thread in.
+ Lowers the [code]Semaphore[/code], allowing one more thread in.
</description>
</method>
<method name="wait">
<return type="int" enum="Error">
</return>
<description>
- Tries to wait for the [Semaphore], if its value is zero, blocks until non-zero.
+ Tries to wait for the [code]Semaphore[/code], if its value is zero, blocks until non-zero.
</description>
</method>
</methods>
diff --git a/doc/classes/SliderJoint.xml b/doc/classes/SliderJoint.xml
index 617390b6a4..adea8658d1 100644
--- a/doc/classes/SliderJoint.xml
+++ b/doc/classes/SliderJoint.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="SliderJoint" inherits="Joint" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Piston kind of slider between two bodies in 3D.
</brief_description>
<description>
+ Slides across the x-axis of the [Pivot] object.
</description>
<tutorials>
</tutorials>
@@ -30,96 +32,144 @@
</methods>
<members>
<member name="angular_limit/damping" type="float" setter="set_param" getter="get_param">
+ The amount of damping of the rotation when the limit is surpassed.
+ A lower damping value allows a rotation initiated by body A to travel to body B slower.
</member>
<member name="angular_limit/lower_angle" type="float" setter="_set_lower_limit_angular" getter="_get_lower_limit_angular">
+ The lower limit of rotation in the slider.
</member>
<member name="angular_limit/restitution" type="float" setter="set_param" getter="get_param">
+ The amount of restitution of the rotation when the limit is surpassed.
+ Does not affect damping.
</member>
<member name="angular_limit/softness" type="float" setter="set_param" getter="get_param">
+ A factor applied to the all rotation once the limit is surpassed.
+ Makes all rotation slower when between 0 and 1.
</member>
<member name="angular_limit/upper_angle" type="float" setter="_set_upper_limit_angular" getter="_get_upper_limit_angular">
+ The upper limit of rotation in the slider.
</member>
<member name="angular_motion/damping" type="float" setter="set_param" getter="get_param">
+ The amount of damping of the rotation in the limits.
</member>
<member name="angular_motion/restitution" type="float" setter="set_param" getter="get_param">
+ The amount of restitution of the rotation in the limits.
</member>
<member name="angular_motion/softness" type="float" setter="set_param" getter="get_param">
+ A factor applied to the all rotation in the limits.
</member>
<member name="angular_ortho/damping" type="float" setter="set_param" getter="get_param">
+ The amount of damping of the rotation across axes orthogonal to the slider.
</member>
<member name="angular_ortho/restitution" type="float" setter="set_param" getter="get_param">
+ The amount of restitution of the rotation across axes orthogonal to the slider.
</member>
<member name="angular_ortho/softness" type="float" setter="set_param" getter="get_param">
+ A factor applied to the all rotation across axes orthogonal to the slider.
</member>
<member name="linear_limit/damping" type="float" setter="set_param" getter="get_param">
+ The amount of damping that happens once the limit defined by [member linear_limit/lower_distance] and [member linear_limit/upper_distance] is surpassed.
</member>
<member name="linear_limit/lower_distance" type="float" setter="set_param" getter="get_param">
+ The minimum difference between the pivot points on their x-axis before damping happens.
</member>
<member name="linear_limit/restitution" type="float" setter="set_param" getter="get_param">
+ The amount of restitution once the limits are surpassed. The lower, the more velocity-energy gets lost.
</member>
<member name="linear_limit/softness" type="float" setter="set_param" getter="get_param">
+ A factor applied to the movement accross the slider axis once the limits get surpassed. The lower, the slower the movement.
</member>
<member name="linear_limit/upper_distance" type="float" setter="set_param" getter="get_param">
+ The maximum difference between the pivot points on their x-axis before damping happens.
</member>
<member name="linear_motion/damping" type="float" setter="set_param" getter="get_param">
+ The amount of damping inside the slider limits.
</member>
<member name="linear_motion/restitution" type="float" setter="set_param" getter="get_param">
+ The amount of restitution inside the slider limits.
</member>
<member name="linear_motion/softness" type="float" setter="set_param" getter="get_param">
+ A factor applied to the movement accross the slider axis as long as the slider is in the limits. The lower, the slower the movement.
</member>
<member name="linear_ortho/damping" type="float" setter="set_param" getter="get_param">
+ The amount of damping when movement is accross axes orthogonal to the slider.
</member>
<member name="linear_ortho/restitution" type="float" setter="set_param" getter="get_param">
+ The amount of restitution when movement is accross axes orthogonal to the slider.
</member>
<member name="linear_ortho/softness" type="float" setter="set_param" getter="get_param">
+ A factor applied to the movement accross axes orthogonal to the slider.
</member>
</members>
<constants>
<constant name="PARAM_LINEAR_LIMIT_UPPER" value="0">
+ The maximum difference between the pivot points on their x-axis before damping happens.
</constant>
<constant name="PARAM_LINEAR_LIMIT_LOWER" value="1">
+ The minimum difference between the pivot points on their x-axis before damping happens.
</constant>
<constant name="PARAM_LINEAR_LIMIT_SOFTNESS" value="2">
+ A factor applied to the movement accross the slider axis once the limits get surpassed. The lower, the slower the movement.
</constant>
<constant name="PARAM_LINEAR_LIMIT_RESTITUTION" value="3">
+ The amount of restitution once the limits are surpassed. The lower, the more velocityenergy gets lost.
</constant>
<constant name="PARAM_LINEAR_LIMIT_DAMPING" value="4">
+ The amount of damping once the slider limits are surpassed.
</constant>
<constant name="PARAM_LINEAR_MOTION_SOFTNESS" value="5">
+ A factor applied to the movement accross the slider axis as long as the slider is in the limits. The lower, the slower the movement.
</constant>
<constant name="PARAM_LINEAR_MOTION_RESTITUTION" value="6">
+ The amount of restitution inside the slider limits.
</constant>
<constant name="PARAM_LINEAR_MOTION_DAMPING" value="7">
+ The amount of damping inside the slider limits.
</constant>
<constant name="PARAM_LINEAR_ORTHOGONAL_SOFTNESS" value="8">
+ A factor applied to the movement accross axes orthogonal to the slider.
</constant>
<constant name="PARAM_LINEAR_ORTHOGONAL_RESTITUTION" value="9">
+ The amount of restitution when movement is accross axes orthogonal to the slider.
</constant>
<constant name="PARAM_LINEAR_ORTHOGONAL_DAMPING" value="10">
+ The amount of damping when movement is accross axes orthogonal to the slider.
</constant>
<constant name="PARAM_ANGULAR_LIMIT_UPPER" value="11">
+ The upper limit of rotation in the slider.
</constant>
<constant name="PARAM_ANGULAR_LIMIT_LOWER" value="12">
+ The lower limit of rotation in the slider.
</constant>
<constant name="PARAM_ANGULAR_LIMIT_SOFTNESS" value="13">
+ A factor applied to the all rotation once the limit is surpassed.
</constant>
<constant name="PARAM_ANGULAR_LIMIT_RESTITUTION" value="14">
+ The amount of restitution of the rotation when the limit is surpassed.
</constant>
<constant name="PARAM_ANGULAR_LIMIT_DAMPING" value="15">
+ The amount of damping of the rotation when the limit is surpassed.
</constant>
<constant name="PARAM_ANGULAR_MOTION_SOFTNESS" value="16">
+ A factor applied to the all rotation in the limits.
</constant>
<constant name="PARAM_ANGULAR_MOTION_RESTITUTION" value="17">
+ The amount of restitution of the rotation in the limits.
</constant>
<constant name="PARAM_ANGULAR_MOTION_DAMPING" value="18">
+ The amount of damping of the rotation in the limits.
</constant>
<constant name="PARAM_ANGULAR_ORTHOGONAL_SOFTNESS" value="19">
+ A factor applied to the all rotation across axes orthogonal to the slider.
</constant>
<constant name="PARAM_ANGULAR_ORTHOGONAL_RESTITUTION" value="20">
+ The amount of restitution of the rotation across axes orthogonal to the slider.
</constant>
<constant name="PARAM_ANGULAR_ORTHOGONAL_DAMPING" value="21">
+ The amount of damping of the rotation across axes orthogonal to the slider.
</constant>
<constant name="PARAM_MAX" value="22">
+ End flag of PARAM_* constants, used internally.
</constant>
</constants>
</class>
diff --git a/doc/classes/Spatial.xml b/doc/classes/Spatial.xml
index 54eb82fbff..38e971b6bd 100644
--- a/doc/classes/Spatial.xml
+++ b/doc/classes/Spatial.xml
@@ -29,7 +29,7 @@
<return type="Spatial">
</return>
<description>
- Returns the parent [Spatial], or an empty [Object] if no parent exists or parent is not of type [Spatial].
+ Returns the parent [code]Spatial[/code], or an empty [Object] if no parent exists or parent is not of type [code]Spatial[/code].
</description>
</method>
<method name="get_rotation" qualifiers="const">
@@ -209,7 +209,7 @@
<argument index="0" name="enable" type="bool">
</argument>
<description>
- Makes the node ignore its parents tranformations. Node tranformations are only in global space.
+ Makes the node ignore its parents transformations. Node transformations are only in global space.
</description>
</method>
<method name="set_gizmo">
@@ -234,7 +234,7 @@
<return type="void">
</return>
<description>
- Reset all tranformations for this node. Set its [Transform3D] to identity matrix.
+ Reset all transformations for this node. Set its [Transform3D] to identity matrix.
</description>
</method>
<method name="set_ignore_transform_notification">
@@ -329,7 +329,7 @@
<argument index="0" name="local_point" type="Vector3">
</argument>
<description>
- Tranforms [Vector3] "local_point" from this node's local space to world space.
+ Transforms [Vector3] "local_point" from this node's local space to world space.
</description>
</method>
<method name="to_local" qualifiers="const">
@@ -338,7 +338,7 @@
<argument index="0" name="global_point" type="Vector3">
</argument>
<description>
- Tranforms [Vector3] "global_point" from world space to this node's local space.
+ Transforms [Vector3] "global_point" from world space to this node's local space.
</description>
</method>
<method name="translate">
diff --git a/doc/classes/SpatialMaterial.xml b/doc/classes/SpatialMaterial.xml
index 344a42b7c0..db47875050 100644
--- a/doc/classes/SpatialMaterial.xml
+++ b/doc/classes/SpatialMaterial.xml
@@ -27,6 +27,12 @@
<description>
</description>
</method>
+ <method name="get_ao_light_affect" qualifiers="const">
+ <return type="float">
+ </return>
+ <description>
+ </description>
+ </method>
<method name="get_ao_texture_channel" qualifiers="const">
<return type="int" enum="SpatialMaterial.TextureChannel">
</return>
@@ -357,6 +363,14 @@
<description>
</description>
</method>
+ <method name="set_ao_light_affect">
+ <return type="void">
+ </return>
+ <argument index="0" name="amount" type="float">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="set_ao_texture_channel">
<return type="void">
</return>
@@ -777,6 +791,8 @@
</member>
<member name="ao_enabled" type="bool" setter="set_feature" getter="get_feature">
</member>
+ <member name="ao_light_affect" type="float" setter="set_ao_light_affect" getter="get_ao_light_affect">
+ </member>
<member name="ao_on_uv2" type="bool" setter="set_flag" getter="get_flag">
</member>
<member name="ao_texture" type="Texture" setter="set_texture" getter="get_texture">
@@ -1059,13 +1075,13 @@
</constant>
<constant name="FLAG_MAX" value="12">
</constant>
- <constant name="DIFFUSE_LAMBERT" value="0">
+ <constant name="DIFFUSE_BURLEY" value="0">
</constant>
- <constant name="DIFFUSE_LAMBERT_WRAP" value="1">
+ <constant name="DIFFUSE_LAMBERT" value="1">
</constant>
- <constant name="DIFFUSE_OREN_NAYAR" value="2">
+ <constant name="DIFFUSE_LAMBERT_WRAP" value="2">
</constant>
- <constant name="DIFFUSE_BURLEY" value="3">
+ <constant name="DIFFUSE_OREN_NAYAR" value="3">
</constant>
<constant name="DIFFUSE_TOON" value="4">
</constant>
diff --git a/doc/classes/SpatialVelocityTracker.xml b/doc/classes/SpatialVelocityTracker.xml
index 2cbc2b9739..95871c8cdc 100644
--- a/doc/classes/SpatialVelocityTracker.xml
+++ b/doc/classes/SpatialVelocityTracker.xml
@@ -15,7 +15,7 @@
<description>
</description>
</method>
- <method name="is_tracking_fixed_step" qualifiers="const">
+ <method name="is_tracking_physics_step" qualifiers="const">
<return type="bool">
</return>
<description>
@@ -29,7 +29,7 @@
<description>
</description>
</method>
- <method name="set_track_fixed_step">
+ <method name="set_track_physics_step">
<return type="void">
</return>
<argument index="0" name="enable" type="bool">
diff --git a/doc/classes/SpriteBase3D.xml b/doc/classes/SpriteBase3D.xml
index 7ed681ea12..f6c3367704 100644
--- a/doc/classes/SpriteBase3D.xml
+++ b/doc/classes/SpriteBase3D.xml
@@ -210,7 +210,7 @@
If set, texture can be seen from the back as well, if not, it is invisible when looking at it from behind.
</constant>
<constant name="FLAG_MAX" value="3">
- Used internally to mark the end of the Flags section.
+ Used internally to mark the end of the Flags section.
</constant>
<constant name="ALPHA_CUT_DISABLED" value="0">
</constant>
diff --git a/doc/classes/StreamPeer.xml b/doc/classes/StreamPeer.xml
index 2fdd4b07d5..077de3dc3c 100644
--- a/doc/classes/StreamPeer.xml
+++ b/doc/classes/StreamPeer.xml
@@ -43,7 +43,7 @@
<return type="int">
</return>
<description>
- Return the amount of bytes this [StreamPeer] has available.
+ Return the amount of bytes this [code]StreamPeer[/code] has available.
</description>
</method>
<method name="get_data">
@@ -135,7 +135,7 @@
<return type="bool">
</return>
<description>
- Return whether this [StreamPeer] is using big-endian format.
+ Return whether this [code]StreamPeer[/code] is using big-endian format.
</description>
</method>
<method name="put_16">
@@ -270,7 +270,7 @@
<argument index="0" name="enable" type="bool">
</argument>
<description>
- Set this [StreamPeer] to use big-endian format. Default is false.
+ Set this [code]StreamPeer[/code] to use big-endian format. Default is false.
</description>
</method>
</methods>
diff --git a/doc/classes/StreamPeerSSL.xml b/doc/classes/StreamPeerSSL.xml
index 7a2843ff47..5eb3f551f4 100644
--- a/doc/classes/StreamPeerSSL.xml
+++ b/doc/classes/StreamPeerSSL.xml
@@ -29,7 +29,7 @@
<argument index="2" name="for_hostname" type="String" default="&quot;&quot;">
</argument>
<description>
- Connect to a peer using an underlying [StreamPeer] "stream", when "validate_certs" is true, [StreamPeerSSL] will validate that the certificate presented by the peer matches the "for_hostname".
+ Connect to a peer using an underlying [StreamPeer] "stream", when "validate_certs" is true, [code]StreamPeerSSL[/code] will validate that the certificate presented by the peer matches the "for_hostname".
</description>
</method>
<method name="disconnect_from_stream">
@@ -49,10 +49,10 @@
</methods>
<constants>
<constant name="STATUS_DISCONNECTED" value="0">
- A status representing a [StreamPeerSSL] that is disconnected.
+ A status representing a [code]StreamPeerSSL[/code] that is disconnected.
</constant>
<constant name="STATUS_CONNECTED" value="1">
- A status representing a [StreamPeerSSL] that is connected to a host.
+ A status representing a [code]StreamPeerSSL[/code] that is connected to a host.
</constant>
<constant name="STATUS_ERROR_NO_CERTIFICATE" value="2">
An errot status that shows the peer did not present a SSL certificate and validation was requested.
diff --git a/doc/classes/StreamPeerTCP.xml b/doc/classes/StreamPeerTCP.xml
index 3b2af330b3..9b7cd91ea5 100644
--- a/doc/classes/StreamPeerTCP.xml
+++ b/doc/classes/StreamPeerTCP.xml
@@ -59,16 +59,16 @@
</methods>
<constants>
<constant name="STATUS_NONE" value="0">
- The initial status of the [StreamPeerTCP], also the status after a disconnect.
+ The initial status of the [code]StreamPeerTCP[/code], also the status after a disconnect.
</constant>
<constant name="STATUS_CONNECTING" value="1">
- A status representing a [StreamPeerTCP] that is connecting to a host.
+ A status representing a [code]StreamPeerTCP[/code] that is connecting to a host.
</constant>
<constant name="STATUS_CONNECTED" value="2">
- A status representing a [StreamPeerTCP] that is connected to a host.
+ A status representing a [code]StreamPeerTCP[/code] that is connected to a host.
</constant>
<constant name="STATUS_ERROR" value="3">
- A staus representing a [StreamPeerTCP] in error state.
+ A staus representing a [code]StreamPeerTCP[/code] in error state.
</constant>
</constants>
</class>
diff --git a/doc/classes/String.xml b/doc/classes/String.xml
index c7c19997b9..546712f223 100644
--- a/doc/classes/String.xml
+++ b/doc/classes/String.xml
@@ -17,6 +17,7 @@
<argument index="0" name="from" type="bool">
</argument>
<description>
+ Constructs a new String from the given [bool].
</description>
</method>
<method name="String">
@@ -25,6 +26,7 @@
<argument index="0" name="from" type="int">
</argument>
<description>
+ Constructs a new String from the given [int].
</description>
</method>
<method name="String">
@@ -33,6 +35,7 @@
<argument index="0" name="from" type="float">
</argument>
<description>
+ Constructs a new String from the given [float].
</description>
</method>
<method name="String">
@@ -41,6 +44,7 @@
<argument index="0" name="from" type="Vector2">
</argument>
<description>
+ Constructs a new String from the given [Vector2].
</description>
</method>
<method name="String">
@@ -49,6 +53,7 @@
<argument index="0" name="from" type="Rect2">
</argument>
<description>
+ Constructs a new String from the given [Rect2].
</description>
</method>
<method name="String">
@@ -57,6 +62,7 @@
<argument index="0" name="from" type="Vector3">
</argument>
<description>
+ Constructs a new String from the given [Vector3].
</description>
</method>
<method name="String">
@@ -65,6 +71,7 @@
<argument index="0" name="from" type="Transform2D">
</argument>
<description>
+ Constructs a new String from the given [Transform2D].
</description>
</method>
<method name="String">
@@ -73,6 +80,7 @@
<argument index="0" name="from" type="Plane">
</argument>
<description>
+ Constructs a new String from the given [Plane].
</description>
</method>
<method name="String">
@@ -81,6 +89,7 @@
<argument index="0" name="from" type="Quat">
</argument>
<description>
+ Constructs a new String from the given [Quat].
</description>
</method>
<method name="String">
@@ -89,6 +98,7 @@
<argument index="0" name="from" type="Rect3">
</argument>
<description>
+ Constructs a new String from the given [Rect3].
</description>
</method>
<method name="String">
@@ -97,6 +107,7 @@
<argument index="0" name="from" type="Basis">
</argument>
<description>
+ Constructs a new String from the given [Basis].
</description>
</method>
<method name="String">
@@ -105,6 +116,7 @@
<argument index="0" name="from" type="Transform">
</argument>
<description>
+ Constructs a new String from the given [Transform].
</description>
</method>
<method name="String">
@@ -113,6 +125,7 @@
<argument index="0" name="from" type="Color">
</argument>
<description>
+ Constructs a new String from the given [Color].
</description>
</method>
<method name="String">
@@ -121,6 +134,7 @@
<argument index="0" name="from" type="NodePath">
</argument>
<description>
+ Constructs a new String from the given [NodePath].
</description>
</method>
<method name="String">
@@ -129,6 +143,7 @@
<argument index="0" name="from" type="RID">
</argument>
<description>
+ Constructs a new String from the given [RID].
</description>
</method>
<method name="String">
@@ -137,6 +152,7 @@
<argument index="0" name="from" type="Dictionary">
</argument>
<description>
+ Constructs a new String from the given [Dictionary].
</description>
</method>
<method name="String">
@@ -145,6 +161,7 @@
<argument index="0" name="from" type="Array">
</argument>
<description>
+ Constructs a new String from the given [Array].
</description>
</method>
<method name="String">
@@ -153,6 +170,7 @@
<argument index="0" name="from" type="PoolByteArray">
</argument>
<description>
+ Constructs a new String from the given [PoolByteArray].
</description>
</method>
<method name="String">
@@ -161,6 +179,7 @@
<argument index="0" name="from" type="PoolIntArray">
</argument>
<description>
+ Constructs a new String from the given [PoolIntArray].
</description>
</method>
<method name="String">
@@ -169,6 +188,7 @@
<argument index="0" name="from" type="PoolRealArray">
</argument>
<description>
+ Constructs a new String from the given [PoolRealArray].
</description>
</method>
<method name="String">
@@ -177,6 +197,7 @@
<argument index="0" name="from" type="PoolStringArray">
</argument>
<description>
+ Constructs a new String from the given [PoolStringArray].
</description>
</method>
<method name="String">
@@ -185,6 +206,7 @@
<argument index="0" name="from" type="PoolVector2Array">
</argument>
<description>
+ Constructs a new String from the given [PoolVector2Array].
</description>
</method>
<method name="String">
@@ -193,6 +215,7 @@
<argument index="0" name="from" type="PoolVector3Array">
</argument>
<description>
+ Constructs a new String from the given [PoolVector3Array].
</description>
</method>
<method name="String">
@@ -201,6 +224,7 @@
<argument index="0" name="from" type="PoolColorArray">
</argument>
<description>
+ Constructs a new String from the given [PoolColorArray].
</description>
</method>
<method name="begins_with">
@@ -209,35 +233,35 @@
<argument index="0" name="text" type="String">
</argument>
<description>
- Return true if the strings begins with the given string.
+ Returns [code]true[/code] if the string begins with the given string.
</description>
</method>
<method name="bigrams">
<return type="PoolStringArray">
</return>
<description>
- Return the bigrams (pairs of consecutive letters) of this string.
+ Returns the bigrams (pairs of consecutive letters) of this string.
</description>
</method>
<method name="c_escape">
<return type="String">
</return>
<description>
- Return a copy of the string with special characters escaped using the C language standard.
+ Returns a copy of the string with special characters escaped using the C language standard.
</description>
</method>
<method name="c_unescape">
<return type="String">
</return>
<description>
- Return a copy of the string with escaped characters replaced by their meanings according to the C language standard.
+ Returns a copy of the string with escaped characters replaced by their meanings according to the C language standard.
</description>
</method>
<method name="capitalize">
<return type="String">
</return>
<description>
- Change the case of some letters. Replace underscores with spaces, convert all letters to lowercase then capitalize first and every letter following the space character. For [code]capitalize camelCase mixed_with_underscores[/code] it will return [code]Capitalize Camelcase Mixed With Underscores[/code].
+ Changes the case of some letters. Replaces underscores with spaces, converts all letters to lowercase, then capitalizes first and every letter following the space character. For [code]capitalize camelCase mixed_with_underscores[/code] it will return [code]Capitalize Camelcase Mixed With Underscores[/code].
</description>
</method>
<method name="casecmp_to">
@@ -246,14 +270,14 @@
<argument index="0" name="to" type="String">
</argument>
<description>
- Perform a case-sensitive comparison to another string, return -1 if less, 0 if equal and +1 if greater.
+ Performs a case-sensitive comparison to another string. Returns [code]-1[/code] if less than, [code]+1[/code] if greater than, or [code]0[/code] if equal.
</description>
</method>
<method name="empty">
<return type="bool">
</return>
<description>
- Return true if the string is empty.
+ Returns [code]true[/code] if the string is empty.
</description>
</method>
<method name="ends_with">
@@ -262,7 +286,7 @@
<argument index="0" name="text" type="String">
</argument>
<description>
- Return true if the strings ends with the given string.
+ Returns [code]true[/code] if the string ends with the given string.
</description>
</method>
<method name="erase">
@@ -271,7 +295,7 @@
<argument index="1" name="chars" type="int">
</argument>
<description>
- Erase [code]chars[/code] characters from the string starting from [code]position[/code].
+ Erases [code]chars[/code] characters from the string starting from [code]position[/code].
</description>
</method>
<method name="find">
@@ -282,7 +306,7 @@
<argument index="1" name="from" type="int" default="0">
</argument>
<description>
- Find the first occurrence of a substring, return the starting position of the substring or -1 if not found. Optionally, the initial search index can be passed.
+ Finds the first occurrence of a substring. Returns the starting position of the substring or -1 if not found. Optionally, the initial search index can be passed.
</description>
</method>
<method name="find_last">
@@ -291,7 +315,7 @@
<argument index="0" name="what" type="String">
</argument>
<description>
- Find the last occurrence of a substring, return the starting position of the substring or -1 if not found. Optionally, the initial search index can be passed.
+ Finds the last occurrence of a substring. Returns the starting position of the substring or -1 if not found. Optionally, the initial search index can be passed.
</description>
</method>
<method name="findn">
@@ -302,7 +326,7 @@
<argument index="1" name="from" type="int" default="0">
</argument>
<description>
- Find the first occurrence of a substring but search as case-insensitive, return the starting position of the substring or -1 if not found. Optionally, the initial search index can be passed.
+ Finds the first occurrence of a substring, ignoring case. Returns the starting position of the substring or -1 if not found. Optionally, the initial search index can be passed.
</description>
</method>
<method name="format">
@@ -313,48 +337,49 @@
<argument index="1" name="placeholder" type="String" default="{_}">
</argument>
<description>
+ Formats the string by replacing all occurences of [code]placeholder[/code] with [code]values[/code].
</description>
</method>
<method name="get_base_dir">
<return type="String">
</return>
<description>
- If the string is a path to a file, return the base directory.
+ If the string is a valid file path, returns the base directory name.
</description>
</method>
<method name="get_basename">
<return type="String">
</return>
<description>
- If the string is a path to a file, return the path to the file without the extension.
+ If the string is a valid file path, returns the full file path without the extension.
</description>
</method>
<method name="get_extension">
<return type="String">
</return>
<description>
- If the string is a path to a file, return the extension.
+ If the string is a valid file path, returns the extension.
</description>
</method>
<method name="get_file">
<return type="String">
</return>
<description>
- If the string is a path to a file, return the file and ignore the base directory.
+ If the string is a valid file path, returns the filename.
</description>
</method>
<method name="hash">
<return type="int">
</return>
<description>
- Hash the string and return a 32 bits integer.
+ Hashes the string and returns a 32-bit integer.
</description>
</method>
<method name="hex_to_int">
<return type="int">
</return>
<description>
- Convert a string containing a hexadecimal number into an int.
+ Converts a string containing a hexadecimal number into an integer.
</description>
</method>
<method name="insert">
@@ -365,21 +390,21 @@
<argument index="1" name="what" type="String">
</argument>
<description>
- Insert a substring at a given position.
+ Inserts a substring at a given position.
</description>
</method>
<method name="is_abs_path">
<return type="bool">
</return>
<description>
- If the string is a path to a file or directory, return true if the path is absolute.
+ If the string is a path to a file or directory, returns [code]true[/code] if the path is absolute.
</description>
</method>
<method name="is_rel_path">
<return type="bool">
</return>
<description>
- If the string is a path to a file or directory, return true if the path is relative.
+ If the string is a path to a file or directory, returns [code]true[/code] if the path is relative.
</description>
</method>
<method name="is_subsequence_of">
@@ -388,7 +413,7 @@
<argument index="0" name="text" type="String">
</argument>
<description>
- Check whether this string is a subsequence of the given string.
+ Returns [code]true[/code] if this string is a subsequence of the given string.
</description>
</method>
<method name="is_subsequence_ofi">
@@ -397,49 +422,49 @@
<argument index="0" name="text" type="String">
</argument>
<description>
- Check whether this string is a subsequence of the given string, without considering case.
+ Returns [code]true[/code] if this string is a subsequence of the given string, without considering case.
</description>
</method>
<method name="is_valid_float">
<return type="bool">
</return>
<description>
- Check whether the string contains a valid float.
+ Returns [code]true[/code] if this string contains a valid float.
</description>
</method>
<method name="is_valid_html_color">
<return type="bool">
</return>
<description>
- Check whether the string contains a valid color in HTML notation.
+ Returns [code]true[/code] if this string contains a valid color in HTML notation.
</description>
</method>
<method name="is_valid_identifier">
<return type="bool">
</return>
<description>
- Check whether the string is a valid identifier. As is common in programming languages, a valid identifier may contain only letters, digits and underscores (_) and the first character may not be a digit.
+ Returns [code]true[/code] if this string is a valid identifier. A valid identifier may contain only letters, digits and underscores (_) and the first character may not be a digit.
</description>
</method>
<method name="is_valid_integer">
<return type="bool">
</return>
<description>
- Check whether the string contains a valid integer.
+ Returns [code]true[/code] if this string contains a valid integer.
</description>
</method>
<method name="is_valid_ip_address">
<return type="bool">
</return>
<description>
- Check whether the string contains a valid IP address.
+ Returns [code]true[/code] if this string contains a valid IP address.
</description>
</method>
<method name="json_escape">
<return type="String">
</return>
<description>
- Return a copy of the string with special characters escaped using the JSON standard.
+ Returns a copy of the string with special characters escaped using the JSON standard.
</description>
</method>
<method name="left">
@@ -448,14 +473,14 @@
<argument index="0" name="position" type="int">
</argument>
<description>
- Return an amount of characters from the left of the string.
+ Returns a number of characters from the left of the string.
</description>
</method>
<method name="length">
<return type="int">
</return>
<description>
- Return the length of the string in characters.
+ Returns the string's amount of characters.
</description>
</method>
<method name="match">
@@ -464,7 +489,7 @@
<argument index="0" name="expr" type="String">
</argument>
<description>
- Do a simple expression match, where '*' matches zero or more arbitrary characters and '?' matches any single character except '.'.
+ Does a simple expression match, where '*' matches zero or more arbitrary characters and '?' matches any single character except '.'.
</description>
</method>
<method name="matchn">
@@ -473,21 +498,21 @@
<argument index="0" name="expr" type="String">
</argument>
<description>
- Do a simple case insensitive expression match, using ? and * wildcards (see [method match]).
+ Does a simple case insensitive expression match, using ? and * wildcards (see [method match]).
</description>
</method>
<method name="md5_buffer">
<return type="PoolByteArray">
</return>
<description>
- Return the MD5 hash of the string as an array of bytes.
+ Returns the MD5 hash of the string as an array of bytes.
</description>
</method>
<method name="md5_text">
<return type="String">
</return>
<description>
- Return the MD5 hash of the string as a string.
+ Returns the MD5 hash of the string as a string.
</description>
</method>
<method name="nocasecmp_to">
@@ -496,7 +521,7 @@
<argument index="0" name="to" type="String">
</argument>
<description>
- Perform a case-insensitive comparison to another string, return -1 if less, 0 if equal and +1 if greater.
+ Performs a case-insensitive comparison to another string. Returns [code]-1[/code] if less than, [code]+1[/code] if greater than, or [code]0[/code] if equal.
</description>
</method>
<method name="ord_at">
@@ -505,7 +530,7 @@
<argument index="0" name="at" type="int">
</argument>
<description>
- Return the character code at position [code]at[/code].
+ Returns the character code at position [code]at[/code].
</description>
</method>
<method name="pad_decimals">
@@ -514,7 +539,7 @@
<argument index="0" name="digits" type="int">
</argument>
<description>
- Format a number to have an exact number of [code]digits[/code] after the decimal point.
+ Formats a number to have an exact number of [code]digits[/code] after the decimal point.
</description>
</method>
<method name="pad_zeros">
@@ -523,7 +548,7 @@
<argument index="0" name="digits" type="int">
</argument>
<description>
- Format a number to have an exact number of [code]digits[/code] before the decimal point.
+ Formats a number to have an exact number of [code]digits[/code] before the decimal point.
</description>
</method>
<method name="percent_decode">
@@ -537,7 +562,7 @@
<return type="String">
</return>
<description>
- Percent-encode a string. This is meant to encode parameters in a URL when sending a HTTP GET request and bodies of form-urlencoded POST request.
+ Percent-encodes a string. Encodes parameters in a URL when sending a HTTP GET request (and bodies of form-urlencoded POST requests).
</description>
</method>
<method name="plus_file">
@@ -557,7 +582,7 @@
<argument index="1" name="forwhat" type="String">
</argument>
<description>
- Replace occurrences of a substring for different ones inside the string.
+ Replaces occurrences of a substring with the given one inside the string.
</description>
</method>
<method name="replacen">
@@ -568,7 +593,7 @@
<argument index="1" name="forwhat" type="String">
</argument>
<description>
- Replace occurrences of a substring for different ones inside the string, but search case-insensitive.
+ Replaces occurrences of a substring with the given one inside the string. Ignores case.
</description>
</method>
<method name="rfind">
@@ -579,7 +604,7 @@
<argument index="1" name="from" type="int" default="-1">
</argument>
<description>
- Perform a search for a substring, but start from the end of the string instead of the beginning.
+ Performs a search for a substring, but starts from the end of the string instead of the beginning.
</description>
</method>
<method name="rfindn">
@@ -590,7 +615,7 @@
<argument index="1" name="from" type="int" default="-1">
</argument>
<description>
- Perform a search for a substring, but start from the end of the string instead of the beginning. Also search case-insensitive.
+ Performs a search for a substring, but starts from the end of the string instead of the beginning. Ignores case.
</description>
</method>
<method name="right">
@@ -599,7 +624,7 @@
<argument index="0" name="position" type="int">
</argument>
<description>
- Return the right side of the string from a given position.
+ Returns the right side of the string from a given position.
</description>
</method>
<method name="sha256_buffer">
@@ -612,7 +637,7 @@
<return type="String">
</return>
<description>
- Return the SHA-256 hash of the string as a string.
+ Returns the SHA-256 hash of the string as a string.
</description>
</method>
<method name="similarity">
@@ -621,7 +646,7 @@
<argument index="0" name="text" type="String">
</argument>
<description>
- Return the similarity index of the text compared to this string. 1 means totally similar and 0 means totally dissimilar.
+ Returns the similarity index of the text compared to this string. 1 means totally similar and 0 means totally dissimilar.
</description>
</method>
<method name="split">
@@ -632,7 +657,7 @@
<argument index="1" name="allow_empty" type="bool" default="True">
</argument>
<description>
- Split the string by a divisor string, return an array of the substrings. Example "One,Two,Three" will return ["One","Two","Three"] if split by ",".
+ Splits the string by a divisor string and returns an array of the substrings. Example "One,Two,Three" will return ["One","Two","Three"] if split by ",".
</description>
</method>
<method name="split_floats">
@@ -643,7 +668,7 @@
<argument index="1" name="allow_empty" type="bool" default="True">
</argument>
<description>
- Split the string in floats by using a divisor string, return an array of the substrings. Example "1,2.5,3" will return [1,2.5,3] if split by ",".
+ Splits the string in floats by using a divisor string and returns an array of the substrings. Example "1,2.5,3" will return [1,2.5,3] if split by ",".
</description>
</method>
<method name="strip_edges">
@@ -654,7 +679,7 @@
<argument index="1" name="right" type="bool" default="True">
</argument>
<description>
- Return a copy of the string stripped of any non-printable character at the beginning and the end. The optional arguments are used to toggle stripping on the left and right edges respectively.
+ Returns a copy of the string stripped of any non-printable character at the beginning and the end. The optional arguments are used to toggle stripping on the left and right edges respectively.
</description>
</method>
<method name="substr">
@@ -665,63 +690,63 @@
<argument index="1" name="len" type="int">
</argument>
<description>
- Return part of the string from the position [code]from[/code], with length [code]len[/code].
+ Returns part of the string from the position [code]from[/code] with length [code]len[/code].
</description>
</method>
<method name="to_ascii">
<return type="PoolByteArray">
</return>
<description>
- Convert the String (which is a character array) to PoolByteArray (which is an array of bytes). The conversion is speeded up in comparison to to_utf8() with the assumption that all the characters the String contains are only ASCII characters.
+ Converts the String (which is a character array) to [PoolByteArray] (which is an array of bytes). The conversion is sped up in comparison to to_utf8() with the assumption that all the characters the String contains are only ASCII characters.
</description>
</method>
<method name="to_float">
<return type="float">
</return>
<description>
- Convert a string, containing a decimal number, into a [code]float[/code].
+ Converts a string containing a decimal number into a [code]float[/code].
</description>
</method>
<method name="to_int">
<return type="int">
</return>
<description>
- Convert a string, containing an integer number, into an [code]int[/code].
+ Converts a string containing an integer number into an [code]int[/code].
</description>
</method>
<method name="to_lower">
<return type="String">
</return>
<description>
- Return the string converted to lowercase.
+ Returns the string converted to lowercase.
</description>
</method>
<method name="to_upper">
<return type="String">
</return>
<description>
- Return the string converted to uppercase.
+ Returns the string converted to uppercase.
</description>
</method>
<method name="to_utf8">
<return type="PoolByteArray">
</return>
<description>
- Convert the String (which is an array of characters) to PoolByteArray (which is an array of bytes). The conversion is a bit slower than to_ascii(), but supports all UTF-8 characters. Therefore, you should prefer this function over to_ascii().
+ Converts the String (which is an array of characters) to [PoolByteArray] (which is an array of bytes). The conversion is a bit slower than to_ascii(), but supports all UTF-8 characters. Therefore, you should prefer this function over to_ascii().
</description>
</method>
<method name="xml_escape">
<return type="String">
</return>
<description>
- Return a copy of the string with special characters escaped using the XML standard.
+ Returns a copy of the string with special characters escaped using the XML standard.
</description>
</method>
<method name="xml_unescape">
<return type="String">
</return>
<description>
- Return a copy of the string with escaped characters replaced by their meanings according to the XML standard.
+ Returns a copy of the string with escaped characters replaced by their meanings according to the XML standard.
</description>
</method>
</methods>
diff --git a/doc/classes/StyleBoxFlat.xml b/doc/classes/StyleBoxFlat.xml
index b09b9f0679..eb9f82af6c 100644
--- a/doc/classes/StyleBoxFlat.xml
+++ b/doc/classes/StyleBoxFlat.xml
@@ -14,12 +14,12 @@
[codeblock]
height = 30
corner_radius_top_left = 50
- corner_raidus_bottom_left = 100
+ corner_radius_bottom_left = 100
[/codeblock]
The relative system now would take the 1:2 ratio of the two left corners to calculate the actual corner width. Both corners added will [b]never[/b] be more than the height. Result:
[codeblock]
corner_radius_top_left: 10
- corner_raidus_bottom_left: 20
+ corner_radius_bottom_left: 20
[/codeblock]
</description>
<tutorials>
@@ -202,7 +202,7 @@
</argument>
<argument index="1" name="radius_top_right" type="int">
</argument>
- <argument index="2" name="radius_botton_right" type="int">
+ <argument index="2" name="radius_bottom_right" type="int">
</argument>
<argument index="3" name="radius_bottom_left" type="int">
</argument>
@@ -268,7 +268,7 @@
</methods>
<members>
<member name="anti_aliasing" type="bool" setter="set_anti_aliased" getter="is_anti_aliased">
- Anti Aliasing draws a small ring around edges. This ring fades to transparent. As a result edges look much smoother. This is only noticable when using rounded corners.
+ Anti Aliasing draws a small ring around edges. This ring fades to transparent. As a result edges look much smoother. This is only noticeable when using rounded corners.
</member>
<member name="anti_aliasing_size" type="int" setter="set_aa_size" getter="get_aa_size">
This changes the size of the faded ring. Higher values can be used to achieve a "blurry" effect.
diff --git a/doc/classes/SurfaceTool.xml b/doc/classes/SurfaceTool.xml
index 1e91ee402b..987a725977 100644
--- a/doc/classes/SurfaceTool.xml
+++ b/doc/classes/SurfaceTool.xml
@@ -4,7 +4,7 @@
Helper tool to create geometry.
</brief_description>
<description>
- The [SurfaceTool] is used to construct a [Mesh] by specifying vertex attributes individually. It can be used to construct a [Mesh] from script. All properties except index need to be added before a call to [method add_vertex]. For example adding vertex colors and UVs looks like
+ The [code]SurfaceTool[/code] is used to construct a [Mesh] by specifying vertex attributes individually. It can be used to construct a [Mesh] from script. All properties except index need to be added before a call to [method add_vertex]. For example adding vertex colors and UVs looks like
[codeblock]
var st = SurfaceTool.new()
st.begin(Mesh.PRIMITIVE_TRIANGLES)
@@ -12,7 +12,7 @@
st.add_uv(Vector2(0, 0))
st.add_vertex(Vector3(0, 0, 0))
[/codeblock]
- The [SurfaceTool] now contains one vertex of a triangle which has a UV coordinate and a specified [Color]. If another vertex were added without calls to [method add_uv] or [method add_color] then the last values would be used.
+ The [code]SurfaceTool[/code] now contains one vertex of a triangle which has a UV coordinate and a specified [Color]. If another vertex were added without calls to [method add_uv] or [method add_color] then the last values would be used.
It is very important that vertex attributes are passed [b]before[/b] the call to [method add_vertex], failure to do this will result in an error when committing the vertex information to a mesh.
</description>
<tutorials>
diff --git a/doc/classes/TabContainer.xml b/doc/classes/TabContainer.xml
index ffe99eb82b..a7dd86a459 100644
--- a/doc/classes/TabContainer.xml
+++ b/doc/classes/TabContainer.xml
@@ -4,8 +4,10 @@
Tabbed Container.
</brief_description>
<description>
- Tabbed Container. Contains several children controls, but shows only one at the same time. Clicking on the top tabs allows to change the currently visible one.
- Children controls of this one automatically.
+ Sets the active tab's [code]visible[/code] property to the value [code]true[/code]. Sets all other children's to [code]false[/code].
+ Ignores non-[Control] children.
+ Individual tabs are always visible unless you use [method set_tab_disabled] and [method set_tab_title] to hide it.
+ To hide only a tab's content, nest the content inside a child [Control], so it receives the [code]TabContainer[/code]'s visibility setting instead.
</description>
<tutorials>
</tutorials>
@@ -16,40 +18,42 @@
<return type="bool">
</return>
<description>
- Return whether the tabs should be visible or hidden.
+ Returns [code]true[/code] if the tabs are visible.
</description>
</method>
<method name="get_current_tab" qualifiers="const">
<return type="int">
</return>
<description>
- Return the current tab index that is being shown.
+ Returns the currently visible tab's index.
</description>
</method>
<method name="get_current_tab_control" qualifiers="const">
<return type="Control">
</return>
<description>
+ Returns the child [Control] node located at the active tab index.
</description>
</method>
<method name="get_popup" qualifiers="const">
<return type="Popup">
</return>
<description>
+ Returns the [Popup] node instance if one has been set already with [method set_popup].
</description>
</method>
<method name="get_previous_tab" qualifiers="const">
<return type="int">
</return>
<description>
- Return the previous tab index that was being shown.
+ Returns the previously active tab index.
</description>
</method>
<method name="get_tab_align" qualifiers="const">
<return type="int" enum="TabContainer.TabAlign">
</return>
<description>
- Return tab alignment, from the ALIGN_* enum.
+ Returns the tab alignment. See the [code]ALIGN_*[/code] constants.
</description>
</method>
<method name="get_tab_control" qualifiers="const">
@@ -58,14 +62,14 @@
<argument index="0" name="idx" type="int">
</argument>
<description>
- Return the current tab control that is being shown.
+ Returns the currently visible tab's [Control] node.
</description>
</method>
<method name="get_tab_count" qualifiers="const">
<return type="int">
</return>
<description>
- Return the amount of tabs.
+ Returns the number of tabs.
</description>
</method>
<method name="get_tab_disabled" qualifiers="const">
@@ -74,6 +78,7 @@
<argument index="0" name="tab_idx" type="int">
</argument>
<description>
+ Returns [code]true[/code] if the tab at index [code]tab_idx[/code] is disabled.
</description>
</method>
<method name="get_tab_icon" qualifiers="const">
@@ -82,6 +87,7 @@
<argument index="0" name="tab_idx" type="int">
</argument>
<description>
+ Returns the [Texture] for the tab at index [code]tab_idx[/code] or null if the tab has no [Texture].
</description>
</method>
<method name="get_tab_title" qualifiers="const">
@@ -90,7 +96,7 @@
<argument index="0" name="tab_idx" type="int">
</argument>
<description>
- Return the title for the tab. Tab titles are by default the children node name, but this can be overridden.
+ Returns the title of the tab at index [code]tab_idx[/code]. Tab titles default to the name of the indexed child node, but this can be overridden with [method set_tab_title].
</description>
</method>
<method name="set_current_tab">
@@ -99,7 +105,7 @@
<argument index="0" name="tab_idx" type="int">
</argument>
<description>
- Bring a tab (and the Control it represents) to the front, and hide the rest.
+ Sets to [code]false[/code] the [code]visible[/code] property for all [Control] children except for the tab at [code]tab_idx[/code].
</description>
</method>
<method name="set_popup">
@@ -108,6 +114,7 @@
<argument index="0" name="popup" type="Node">
</argument>
<description>
+ If set on a [Popup] node instance, a popup menu icon appears in the top-right corner of the [code]TabContainer[/code]. Clicking it will expand the [Popup] node.
</description>
</method>
<method name="set_tab_align">
@@ -116,7 +123,7 @@
<argument index="0" name="align" type="int" enum="TabContainer.TabAlign">
</argument>
<description>
- Set tab alignment, from the ALIGN_* enum. Moves tabs to the left, right or center.
+ Sets tab alignment, from the [code]ALIGN_*[/code] constants. Moves tabs to the left, right, or center.
</description>
</method>
<method name="set_tab_disabled">
@@ -127,6 +134,7 @@
<argument index="1" name="disabled" type="bool">
</argument>
<description>
+ If [code]disabled[/code] is false, hides the tab at index [code]tab_idx[/code]. Note that its title text will remain, unless also removed with [method set_tab_title].
</description>
</method>
<method name="set_tab_icon">
@@ -137,7 +145,7 @@
<argument index="1" name="icon" type="Texture">
</argument>
<description>
- Set an icon for a tab.
+ Sets an icon for the tab at index [code]tab_idx[/code].
</description>
</method>
<method name="set_tab_title">
@@ -148,7 +156,7 @@
<argument index="1" name="title" type="String">
</argument>
<description>
- Set a title for the tab. Tab titles are by default the children node name, but this can be overridden.
+ Sets a title for the tab at index [code]tab_idx[/code]. Tab titles default to the name of the indexed child node, but this can be overridden with [method set_tab_title].
</description>
</method>
<method name="set_tabs_visible">
@@ -157,35 +165,39 @@
<argument index="0" name="visible" type="bool">
</argument>
<description>
- Set whether the tabs should be visible or hidden.
+ If [code]true[/code] tabs are visible. If [code]false[/code] tabs' content and titles are hidden. Default value: [code]true[/code].
</description>
</method>
</methods>
<members>
<member name="current_tab" type="int" setter="set_current_tab" getter="get_current_tab">
+ The current tab index. When set, this index's [Control] node's [code]visible[/code] property is set to [code]true[/code] and all others are set to [code]false[/code].
</member>
<member name="tab_align" type="int" setter="set_tab_align" getter="get_tab_align" enum="TabContainer.TabAlign">
+ The alignment of all tabs in the tab container. See the [code]ALIGN_*[/code] constants for details.
</member>
<member name="tabs_visible" type="bool" setter="set_tabs_visible" getter="are_tabs_visible">
+ If [code]true[/code] tabs are visible. If [code]false[/code] tabs' content and titles are hidden. Default value: [code]true[/code].
</member>
</members>
<signals>
<signal name="pre_popup_pressed">
<description>
+ Emitted when the [code]TabContainer[/code]'s [Popup] button is clicked. See [method set_popup] for details.
</description>
</signal>
<signal name="tab_changed">
<argument index="0" name="tab" type="int">
</argument>
<description>
- Emitted only when the current tab changes.
+ Emitted when switching to another tab.
</description>
</signal>
<signal name="tab_selected">
<argument index="0" name="tab" type="int">
</argument>
<description>
- Emitted when a tab is being selected, even if it is the same tab.
+ Emitted when a tab is selected, even if it is the current tab.
</description>
</signal>
</signals>
diff --git a/doc/classes/Tabs.xml b/doc/classes/Tabs.xml
index 78821a244c..d3893ab9a7 100644
--- a/doc/classes/Tabs.xml
+++ b/doc/classes/Tabs.xml
@@ -213,12 +213,12 @@
</constant>
<constant name="ALIGN_MAX" value="3">
</constant>
+ <constant name="CLOSE_BUTTON_SHOW_NEVER" value="0">
+ </constant>
<constant name="CLOSE_BUTTON_SHOW_ACTIVE_ONLY" value="1">
</constant>
<constant name="CLOSE_BUTTON_SHOW_ALWAYS" value="2">
</constant>
- <constant name="CLOSE_BUTTON_SHOW_NEVER" value="0">
- </constant>
<constant name="CLOSE_BUTTON_MAX" value="3">
</constant>
</constants>
diff --git a/doc/classes/TextEdit.xml b/doc/classes/TextEdit.xml
index d77cb69eef..43e5158515 100644
--- a/doc/classes/TextEdit.xml
+++ b/doc/classes/TextEdit.xml
@@ -239,6 +239,18 @@
Returns true if highlight all occurrences is enabled.
</description>
</method>
+ <method name="is_highlight_current_line_enabled" qualifiers="const">
+ <return type="bool">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="is_overriding_selected_font_color" qualifiers="const">
+ <return type="bool">
+ </return>
+ <description>
+ </description>
+ </method>
<method name="is_selection_active" qualifiers="const">
<return type="bool">
</return>
@@ -334,6 +346,14 @@
Set to enable highlighting all occurrences of the current selection.
</description>
</method>
+ <method name="set_highlight_current_line">
+ <return type="void">
+ </return>
+ <argument index="0" name="enabled" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="set_max_chars">
<return type="void">
</return>
@@ -343,6 +363,14 @@
Set the maximum amount of characters editable.
</description>
</method>
+ <method name="set_override_selected_font_color">
+ <return type="void">
+ </return>
+ <argument index="0" name="override" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="set_readonly">
<return type="void">
</return>
@@ -421,6 +449,10 @@
</member>
<member name="highlight_all_occurrences" type="bool" setter="set_highlight_all_occurrences" getter="is_highlight_all_occurrences_enabled">
</member>
+ <member name="highlight_current_line" type="bool" setter="set_highlight_current_line" getter="is_highlight_current_line_enabled">
+ </member>
+ <member name="override_selected_font_color" type="bool" setter="set_override_selected_font_color" getter="is_overriding_selected_font_color">
+ </member>
<member name="show_line_numbers" type="bool" setter="set_show_line_numbers" getter="is_show_line_numbers_enabled">
</member>
<member name="smooth_scrolling" type="bool" setter="set_smooth_scroll_enable" getter="is_smooth_scroll_enabled">
diff --git a/doc/classes/Texture.xml b/doc/classes/Texture.xml
index cbf72eb991..93cba29d09 100644
--- a/doc/classes/Texture.xml
+++ b/doc/classes/Texture.xml
@@ -125,9 +125,6 @@
<constant name="FLAG_FILTER" value="4">
Turn on magnifying filter, to enable smooth zooming in of the texture.
</constant>
- <constant name="FLAG_VIDEO_SURFACE" value="4096">
- Texture is a video surface.
- </constant>
<constant name="FLAGS_DEFAULT" value="7">
Default flags. Generate mipmaps, repeat, and filter are enabled.
</constant>
@@ -137,5 +134,8 @@
</constant>
<constant name="FLAG_MIRRORED_REPEAT" value="32">
</constant>
+ <constant name="FLAG_VIDEO_SURFACE" value="4096">
+ Texture is a video surface.
+ </constant>
</constants>
</class>
diff --git a/doc/classes/Thread.xml b/doc/classes/Thread.xml
index 2156d04614..e2326ffe98 100644
--- a/doc/classes/Thread.xml
+++ b/doc/classes/Thread.xml
@@ -4,7 +4,7 @@
A unit of execution in a process.
</brief_description>
<description>
- A unit of execution in a process. Can run methods on [Object]\ s simultaneously. The use of synchronization via [Mutex], [Semaphore] is advised if working with shared objects.
+ A unit of execution in a process. Can run methods on [Object]s simultaneously. The use of synchronization via [Mutex], [Semaphore] is advised if working with shared objects.
</description>
<tutorials>
</tutorials>
@@ -15,14 +15,14 @@
<return type="String">
</return>
<description>
- Returns the current [Thread]\ s id, uniquely identifying it among all threads.
+ Returns the current [code]Thread[/code]s id, uniquely identifying it among all threads.
</description>
</method>
<method name="is_active" qualifiers="const">
<return type="bool">
</return>
<description>
- Returns true if this [Thread] is currently active. An active [Thread] cannot start work on a new method but can be joined with [method wait_to_finish].
+ Returns true if this [code]Thread[/code] is currently active. An active [code]Thread[/code] cannot start work on a new method but can be joined with [method wait_to_finish].
</description>
</method>
<method name="start">
@@ -37,7 +37,7 @@
<argument index="3" name="priority" type="int" default="1">
</argument>
<description>
- Starts a new [Thread] that runs "method" on object "instance" with "userdata" passed as an argument. The "priority" of the [Thread] can be changed by passing a PRIORITY_* enum.
+ Starts a new [code]Thread[/code] that runs "method" on object "instance" with "userdata" passed as an argument. The "priority" of the [code]Thread[/code] can be changed by passing a PRIORITY_* enum.
Returns OK on success, or ERR_CANT_CREATE on failure.
</description>
</method>
@@ -45,7 +45,7 @@
<return type="Variant">
</return>
<description>
- Joins the [Thread] and waits for it to finish. Returns what the method called returned.
+ Joins the [code]Thread[/code] and waits for it to finish. Returns what the method called returned.
</description>
</method>
</methods>
diff --git a/doc/classes/Timer.xml b/doc/classes/Timer.xml
index 35979bb1fc..035dec7980 100644
--- a/doc/classes/Timer.xml
+++ b/doc/classes/Timer.xml
@@ -141,8 +141,8 @@
</signal>
</signals>
<constants>
- <constant name="TIMER_PROCESS_FIXED" value="0">
- Update the Timer at fixed intervals (framerate processing).
+ <constant name="TIMER_PROCESS_PHYSICS" value="0">
+ Update the Timer during the physics step at each frame (fixed framerate processing).
</constant>
<constant name="TIMER_PROCESS_IDLE" value="1">
Update the Timer during the idle time at each frame.
diff --git a/doc/classes/TouchScreenButton.xml b/doc/classes/TouchScreenButton.xml
index 8a96fa1454..51cb7f86f2 100644
--- a/doc/classes/TouchScreenButton.xml
+++ b/doc/classes/TouchScreenButton.xml
@@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="TouchScreenButton" inherits="Node2D" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Button for touch screen devices.
</brief_description>
<description>
+ Button for touch screen devices. You can set it to be visible on all screens, or only on touch devices.
</description>
<tutorials>
</tutorials>
@@ -13,36 +15,42 @@
<return type="String">
</return>
<description>
+ Returns the button's action.
</description>
</method>
<method name="get_bitmask" qualifiers="const">
<return type="BitMap">
</return>
<description>
+ Returns the button's bitmask.
</description>
</method>
<method name="get_shape" qualifiers="const">
<return type="Shape2D">
</return>
<description>
+ Returns the button's shape.
</description>
</method>
<method name="get_texture" qualifiers="const">
<return type="Texture">
</return>
<description>
+ Returns the button's texture for the normal state.
</description>
</method>
<method name="get_texture_pressed" qualifiers="const">
<return type="Texture">
</return>
<description>
+ Returns the button's texture for the pressed state.
</description>
</method>
<method name="get_visibility_mode" qualifiers="const">
<return type="int" enum="TouchScreenButton.VisibilityMode">
</return>
<description>
+ Sets the button's visibility mode. See [code]VISIBILITY_*[/code] constants.
</description>
</method>
<method name="is_passby_press_enabled" qualifiers="const">
@@ -55,6 +63,7 @@
<return type="bool">
</return>
<description>
+ Returns [code]true[/code] if this button is currently pressed.
</description>
</method>
<method name="is_shape_centered" qualifiers="const">
@@ -75,6 +84,7 @@
<argument index="0" name="action" type="String">
</argument>
<description>
+ Sets the button's action.
</description>
</method>
<method name="set_bitmask">
@@ -83,6 +93,7 @@
<argument index="0" name="bitmask" type="BitMap">
</argument>
<description>
+ Sets the button's [BitMap] bitmask.
</description>
</method>
<method name="set_passby_press">
@@ -91,6 +102,7 @@
<argument index="0" name="enabled" type="bool">
</argument>
<description>
+ If [code]true[/code] passby presses are enabled for this button.
</description>
</method>
<method name="set_shape">
@@ -99,6 +111,7 @@
<argument index="0" name="shape" type="Shape2D">
</argument>
<description>
+ Sets the button's shape.
</description>
</method>
<method name="set_shape_centered">
@@ -107,6 +120,7 @@
<argument index="0" name="bool" type="bool">
</argument>
<description>
+ If [code]true[/code] the button's shape is centered.
</description>
</method>
<method name="set_shape_visible">
@@ -115,6 +129,7 @@
<argument index="0" name="bool" type="bool">
</argument>
<description>
+ If [code]true[/code] the button's shape is visible.
</description>
</method>
<method name="set_texture">
@@ -123,6 +138,7 @@
<argument index="0" name="texture" type="Texture">
</argument>
<description>
+ Sets the button's [Texture] for the normal state.
</description>
</method>
<method name="set_texture_pressed">
@@ -131,6 +147,7 @@
<argument index="0" name="texture_pressed" type="Texture">
</argument>
<description>
+ Sets the button's [Texture] for the pressed state.
</description>
</method>
<method name="set_visibility_mode">
@@ -139,43 +156,57 @@
<argument index="0" name="mode" type="int" enum="TouchScreenButton.VisibilityMode">
</argument>
<description>
+ Sets the button's visibility mode. See the [code]VISIBILITY_*[/code] constants.
</description>
</method>
</methods>
<members>
<member name="action" type="String" setter="set_action" getter="get_action">
+ The button's action. Actions can be handled with [InputEventAction].
</member>
<member name="bitmask" type="BitMap" setter="set_bitmask" getter="get_bitmask">
+ The button's bitmask.
</member>
<member name="normal" type="Texture" setter="set_texture" getter="get_texture">
+ The button's texture for the normal state.
</member>
<member name="passby_press" type="bool" setter="set_passby_press" getter="is_passby_press_enabled">
+ If [code]true[/code] passby presses are enabled.
</member>
<member name="pressed" type="Texture" setter="set_texture_pressed" getter="get_texture_pressed">
+ The button's texture for the pressed state.
</member>
<member name="shape" type="Shape2D" setter="set_shape" getter="get_shape">
+ The button's shape.
</member>
<member name="shape_centered" type="bool" setter="set_shape_centered" getter="is_shape_centered">
+ If [code]true[/code] the button's shape is centered.
</member>
<member name="shape_visible" type="bool" setter="set_shape_visible" getter="is_shape_visible">
+ If [code]true[/code] the button's shape is visible.
</member>
<member name="visibility_mode" type="int" setter="set_visibility_mode" getter="get_visibility_mode" enum="TouchScreenButton.VisibilityMode">
+ The button's visibility mode. See [code]VISIBILITY_*[/code] constants.
</member>
</members>
<signals>
<signal name="pressed">
<description>
+ Emitted when the button is pressed (down).
</description>
</signal>
<signal name="released">
<description>
+ Emitted when the button is released (up).
</description>
</signal>
</signals>
<constants>
<constant name="VISIBILITY_ALWAYS" value="0">
+ Always visible.
</constant>
<constant name="VISIBILITY_TOUCHSCREEN_ONLY" value="1">
+ Visible on touch screens only.
</constant>
</constants>
</class>
diff --git a/doc/classes/Transform.xml b/doc/classes/Transform.xml
index 6780de1943..cd80d568e7 100644
--- a/doc/classes/Transform.xml
+++ b/doc/classes/Transform.xml
@@ -68,7 +68,7 @@
<return type="Transform">
</return>
<description>
- Returns the inverse of the transfrom, under the assumption that the transformation is composed of rotation, scaling and translation.
+ Returns the inverse of the transform, under the assumption that the transformation is composed of rotation, scaling and translation.
</description>
</method>
<method name="interpolate_with">
@@ -104,7 +104,7 @@
<return type="Transform">
</return>
<description>
- Returns the transfrom with the basis orthogonal (90 degrees), and normalized axis vectors.
+ Returns the transform with the basis orthogonal (90 degrees), and normalized axis vectors.
</description>
</method>
<method name="rotated">
diff --git a/doc/classes/Transform2D.xml b/doc/classes/Transform2D.xml
index 0e39505ac3..a9d71d7093 100644
--- a/doc/classes/Transform2D.xml
+++ b/doc/classes/Transform2D.xml
@@ -17,7 +17,7 @@
<argument index="0" name="from" type="Transform">
</argument>
<description>
- Constructs the [Transform2D] from a 3D [Transform].
+ Constructs the [code]Transform2D[/code] from a 3D [Transform].
</description>
</method>
<method name="Transform2D">
@@ -30,7 +30,7 @@
<argument index="2" name="origin" type="Vector2">
</argument>
<description>
- Constructs the [Transform2D] from 3 [Vector2] consisting of rows x, y and origin.
+ Constructs the [code]Transform2D[/code] from 3 [Vector2] consisting of rows x, y and origin.
</description>
</method>
<method name="Transform2D">
@@ -41,7 +41,7 @@
<argument index="1" name="position" type="Vector2">
</argument>
<description>
- Constructs the [Transform2D] from rotation angle in radians and position [Vector2].
+ Constructs the [code]Transform2D[/code] from rotation angle in radians and position [Vector2].
</description>
</method>
<method name="affine_inverse">
@@ -112,7 +112,7 @@
<return type="Transform2D">
</return>
<description>
- Returns the transfrom with the basis orthogonal (90 degrees), and normalized axis vectors.
+ Returns the transform with the basis orthogonal (90 degrees), and normalized axis vectors.
</description>
</method>
<method name="rotated">
diff --git a/doc/classes/TranslationServer.xml b/doc/classes/TranslationServer.xml
index 974b0e283f..1657541c19 100644
--- a/doc/classes/TranslationServer.xml
+++ b/doc/classes/TranslationServer.xml
@@ -30,6 +30,14 @@
<description>
</description>
</method>
+ <method name="get_locale_name" qualifiers="const">
+ <return type="String">
+ </return>
+ <argument index="0" name="locale" type="String">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="remove_translation">
<return type="void">
</return>
diff --git a/doc/classes/TreeItem.xml b/doc/classes/TreeItem.xml
index 10ebc72134..f0eb23b636 100644
--- a/doc/classes/TreeItem.xml
+++ b/doc/classes/TreeItem.xml
@@ -4,7 +4,7 @@
Control for a single item inside a [Tree].
</brief_description>
<description>
- Control for a single item inside a [Tree]. May have child [TreeItem]\ s and be styled as well as contain buttons.
+ Control for a single item inside a [Tree]. May have child [code]TreeItem[/code]s and be styled as well as contain buttons.
</description>
<tutorials>
</tutorials>
@@ -25,7 +25,7 @@
<argument index="4" name="tooltip" type="String" default="&quot;&quot;">
</argument>
<description>
- Adds a button with [Texture] [code]button[/code] at column [code]column[/code]. The [code]button_idx[/code] index is used to identify the button when calling other methods. If not specified, the next available index is used, which may be retrieved by calling [code]get_buton_count()[/code] immediately after this method. Optionally, the button can be [code]disabled[/code] and have a [code]tooltip[/code].
+ Adds a button with [Texture] [code]button[/code] at column [code]column[/code]. The [code]button_idx[/code] index is used to identify the button when calling other methods. If not specified, the next available index is used, which may be retrieved by calling [code]get_buton_count()[/code] immediately after this method. Optionally, the button can be [code]disabled[/code] and have a [code]tooltip[/code].
</description>
</method>
<method name="clear_custom_bg_color">
diff --git a/doc/classes/Tween.xml b/doc/classes/Tween.xml
index d291f44de3..b11498083b 100644
--- a/doc/classes/Tween.xml
+++ b/doc/classes/Tween.xml
@@ -12,7 +12,7 @@
tween.start()
[/codeblock]
Some of the methods of this class require a property name. You can get the property name by hovering over the property in the inspector of the editor.
- Many of the methods accept [code]trans_type[/code] and [code]ease_type[/code]. The first accepts an TRANS_* constant, and refers to the way the timing of the animation is handled (you might want to see [code]http://easings.net/[/code] for some examples). The second accepts an EASE_* constant, and controls the where [code]trans_type[/code] is applied to the interpolation (in the beginning, the end, or both). If you don't know which transision and easing to pick, you can try different TRANS_* constants with EASE_IN_OUT, and use the one that looks best.
+ Many of the methods accept [code]trans_type[/code] and [code]ease_type[/code]. The first accepts an TRANS_* constant, and refers to the way the timing of the animation is handled (you might want to see [code]http://easings.net/[/code] for some examples). The second accepts an EASE_* constant, and controls the where [code]trans_type[/code] is applied to the interpolation (in the beginning, the end, or both). If you don't know which transition and easing to pick, you can try different TRANS_* constants with EASE_IN_OUT, and use the one that looks best.
</description>
<tutorials>
</tutorials>
@@ -135,7 +135,7 @@
<argument index="7" name="arg5" type="Variant" default="null">
</argument>
<description>
- Call [code]callback[/code] of [code]object[/code] after [code]duration[/code] on the main thread (similar to [methog Object.call_deferred). [code]arg1[/code]-[code]arg5[/code] are arguments to be passed to the callback.
+ Call [code]callback[/code] of [code]object[/code] after [code]duration[/code] on the main thread (similar to [method Object.call_deferred]). [code]arg1[/code]-[code]arg5[/code] are arguments to be passed to the callback.
</description>
</method>
<method name="interpolate_method">
@@ -158,7 +158,7 @@
<argument index="7" name="delay" type="float" default="0">
</argument>
<description>
- Animate [code]method[/code] of [code]object[/code] from [code]initial_val[/code] to [code]final_val[/code] for [code]duration[/code] seconds, [code]delay[/code] seconds later. Methods are animated by calling them with consecuitive values.
+ Animate [code]method[/code] of [code]object[/code] from [code]initial_val[/code] to [code]final_val[/code] for [code]duration[/code] seconds, [code]delay[/code] seconds later. Methods are animated by calling them with consecutive values.
[code]trans_type[/code] accepts TRANS_* constants, and is the way the animation is interpolated, while [code]ease_type[/code] accepts EASE_* constants, and controls the place of the interpolation (the beginning, the end, or both). You can read more about them in the class description.
</description>
</method>
@@ -296,7 +296,7 @@
<argument index="0" name="mode" type="int" enum="Tween.TweenProcessMode">
</argument>
<description>
- Set whether the Tween uses [code]_process[/code] or [code]_fixed_process[/code] (accepts TWEEN_PROCESS_IDLE and TWEEN_PROCESS_FIXED constants, respectively).
+ Set whether the Tween uses [code]_process[/code] or [code]_physics_process[/code] (accepts TWEEN_PROCESS_IDLE and TWEEN_PROCESS_PHYSICS constants, respectively).
</description>
</method>
<method name="start">
@@ -346,7 +346,7 @@
<argument index="8" name="delay" type="float" default="0">
</argument>
<description>
- Animate [code]method[/code] of [code]object[/code] from the value returned by [code]initial.initial_method[/code] to [code]final_val[/code] for [code]duration[/code] seconds, [code]delay[/code] seconds later. Methods are animated by calling them with consecuitive values.
+ Animate [code]method[/code] of [code]object[/code] from the value returned by [code]initial.initial_method[/code] to [code]final_val[/code] for [code]duration[/code] seconds, [code]delay[/code] seconds later. Methods are animated by calling them with consecutive values.
[code]trans_type[/code] accepts TRANS_* constants, and is the way the animation is interpolated, while [code]ease_type[/code] accepts EASE_* constants, and controls the place of the interpolation (the beginning, the end, or both). You can read more about them in the class description.
</description>
</method>
@@ -422,11 +422,11 @@
</signal>
</signals>
<constants>
- <constant name="TWEEN_PROCESS_FIXED" value="0">
- The [Tween] should use [code]_fixed_process[/code] for timekeeping when this is enabled.
+ <constant name="TWEEN_PROCESS_PHYSICS" value="0">
+ The [code]Tween[/code] should use [code]_physics_process[/code] for timekeeping when this is enabled.
</constant>
<constant name="TWEEN_PROCESS_IDLE" value="1">
- The [Tween] should use [code]_process[/code] for timekeeping when this is enabled (default).
+ The [code]Tween[/code] should use [code]_process[/code] for timekeeping when this is enabled (default).
</constant>
<constant name="TRANS_LINEAR" value="0">
Means that the animation is interpolated linearly.
diff --git a/doc/classes/VSlider.xml b/doc/classes/VSlider.xml
index e4ba4a19c5..fa4fa34d54 100644
--- a/doc/classes/VSlider.xml
+++ b/doc/classes/VSlider.xml
@@ -19,6 +19,8 @@
</theme_item>
<theme_item name="grabber" type="Texture">
</theme_item>
+ <theme_item name="grabber_area" type="StyleBox">
+ </theme_item>
<theme_item name="grabber_disabled" type="Texture">
</theme_item>
<theme_item name="grabber_disabled" type="StyleBox">
diff --git a/doc/classes/Vector3.xml b/doc/classes/Vector3.xml
index fdbdabafd3..a05bc5db9a 100644
--- a/doc/classes/Vector3.xml
+++ b/doc/classes/Vector3.xml
@@ -37,6 +37,7 @@
<argument index="0" name="to" type="Vector3">
</argument>
<description>
+ Returns the vector's minimum angle to the vector [code]to[/code].
</description>
</method>
<method name="bounce">
@@ -61,7 +62,7 @@
<argument index="0" name="b" type="Vector3">
</argument>
<description>
- Return the cross product with b.
+ Returns the cross product with [code]b[/code].
</description>
</method>
<method name="cubic_interpolate">
@@ -76,7 +77,7 @@
<argument index="3" name="t" type="float">
</argument>
<description>
- Perform a cubic interpolation between vectors pre_a, a, b, post_b (a is current), by the given amount (t).
+ Performs a cubic interpolation between vectors [code]pre_a[/code], [code]a[/code], [code]b[/code], [code]post_b[/code] ([code]a[/code] is current), by the given amount (t).
</description>
</method>
<method name="distance_squared_to">
@@ -85,7 +86,7 @@
<argument index="0" name="b" type="Vector3">
</argument>
<description>
- Return the squared distance (distance minus the last square root) to b. Prefer this function over distance_to if you need to sort vectors or need the squared distance for some formula.
+ Returns the squared distance to [code]b[/code]. Prefer this function over distance_to if you need to sort vectors or need the squared distance for some formula.
</description>
</method>
<method name="distance_to">
@@ -94,7 +95,7 @@
<argument index="0" name="b" type="Vector3">
</argument>
<description>
- Return the distance to b.
+ Returns the distance to b.
</description>
</method>
<method name="dot">
@@ -103,7 +104,7 @@
<argument index="0" name="b" type="Vector3">
</argument>
<description>
- Return the dot product with b.
+ Returns the dot product with b.
</description>
</method>
<method name="floor">
@@ -131,14 +132,14 @@
<return type="float">
</return>
<description>
- Return the length of the vector.
+ Returns the length of the vector.
</description>
</method>
<method name="length_squared">
<return type="float">
</return>
<description>
- Return the length of the vector, squared. Prefer this function over "length" if you need to sort vectors or need the squared length for some formula.
+ Returns the length of the vector, squared. Prefer this function over "length" if you need to sort vectors or need the squared length for some formula.
</description>
</method>
<method name="linear_interpolate">
@@ -170,7 +171,7 @@
<return type="Vector3">
</return>
<description>
- Return a copy of the normalized vector to unit length. This is the same as v / v.length().
+ Returns a copy of the normalized vector to unit length. This is the same as v / v.length().
</description>
</method>
<method name="outer">
@@ -179,7 +180,7 @@
<argument index="0" name="b" type="Vector3">
</argument>
<description>
- Return the outer product with b.
+ Returns the outer product with b.
</description>
</method>
<method name="reflect">
@@ -217,14 +218,14 @@
<argument index="0" name="by" type="float">
</argument>
<description>
- Return a copy of the vector, snapped to the lowest neared multiple.
+ Returns a copy of the vector, snapped to the lowest neared multiple.
</description>
</method>
<method name="to_diagonal_matrix">
<return type="Basis">
</return>
<description>
- Return a diagonal matrix with the vector as main diagonal.
+ Returns a diagonal matrix with the vector as main diagonal.
</description>
</method>
</methods>
diff --git a/doc/classes/VehicleWheel.xml b/doc/classes/VehicleWheel.xml
index 82e93e0f01..b2e54e25bc 100644
--- a/doc/classes/VehicleWheel.xml
+++ b/doc/classes/VehicleWheel.xml
@@ -39,6 +39,12 @@
<description>
</description>
</method>
+ <method name="get_skidinfo" qualifiers="const">
+ <return type="float">
+ </return>
+ <description>
+ </description>
+ </method>
<method name="get_suspension_max_force" qualifiers="const">
<return type="float">
</return>
diff --git a/doc/classes/VideoPlayer.xml b/doc/classes/VideoPlayer.xml
index bac7d1e3b0..5387ec30b3 100644
--- a/doc/classes/VideoPlayer.xml
+++ b/doc/classes/VideoPlayer.xml
@@ -22,7 +22,7 @@
<return type="int">
</return>
<description>
- Get the amount of miliseconds to store in buffer while playing.
+ Get the amount of milliseconds to store in buffer while playing.
</description>
</method>
<method name="get_stream" qualifiers="const">
@@ -126,7 +126,7 @@
<argument index="0" name="msec" type="int">
</argument>
<description>
- Set the amount of miliseconds to buffer during playback.
+ Set the amount of milliseconds to buffer during playback.
</description>
</method>
<method name="set_expand">
diff --git a/doc/classes/Viewport.xml b/doc/classes/Viewport.xml
index 2cf36ba69b..28a7cb7c8e 100644
--- a/doc/classes/Viewport.xml
+++ b/doc/classes/Viewport.xml
@@ -192,14 +192,14 @@
<return type="Variant">
</return>
<description>
- Returs the drag data from the GUI, that was previously returned by [method Control.get_drag_data].
+ Returns the drag data from the GUI, that was previously returned by [method Control.get_drag_data].
</description>
</method>
<method name="gui_has_modal_stack" qualifiers="const">
<return type="bool">
</return>
<description>
- Returs whether there are shown modals on-screen.
+ Returns whether there are shown modals on-screen.
</description>
</method>
<method name="has_transparent_background" qualifiers="const">
@@ -303,7 +303,7 @@
<argument index="0" name="xform" type="Transform2D">
</argument>
<description>
- Set the canvas transform of the viewport, useful for changing the on-screen positions of all child [CanvasItem]\ s. This is relative to the global canvas transform of the viewport.
+ Set the canvas transform of the viewport, useful for changing the on-screen positions of all child [CanvasItem]s. This is relative to the global canvas transform of the viewport.
</description>
</method>
<method name="set_clear_mode">
diff --git a/doc/classes/VisibilityEnabler.xml b/doc/classes/VisibilityEnabler.xml
index ebe646679a..881ba91fad 100644
--- a/doc/classes/VisibilityEnabler.xml
+++ b/doc/classes/VisibilityEnabler.xml
@@ -39,12 +39,12 @@
</member>
</members>
<constants>
- <constant name="ENABLER_FREEZE_BODIES" value="1">
- This enabler will freeze [RigidBody] nodes.
- </constant>
<constant name="ENABLER_PAUSE_ANIMATIONS" value="0">
This enabler will pause [AnimationPlayer] nodes.
</constant>
+ <constant name="ENABLER_FREEZE_BODIES" value="1">
+ This enabler will freeze [RigidBody] nodes.
+ </constant>
<constant name="ENABLER_MAX" value="2">
</constant>
</constants>
diff --git a/doc/classes/VisibilityEnabler2D.xml b/doc/classes/VisibilityEnabler2D.xml
index b8ef1f8d22..b881de4f91 100644
--- a/doc/classes/VisibilityEnabler2D.xml
+++ b/doc/classes/VisibilityEnabler2D.xml
@@ -33,8 +33,6 @@
</method>
</methods>
<members>
- <member name="fixed_process_parent" type="bool" setter="set_enabler" getter="is_enabler_enabled">
- </member>
<member name="freeze_bodies" type="bool" setter="set_enabler" getter="is_enabler_enabled">
</member>
<member name="pause_animated_sprites" type="bool" setter="set_enabler" getter="is_enabler_enabled">
@@ -43,26 +41,28 @@
</member>
<member name="pause_particles" type="bool" setter="set_enabler" getter="is_enabler_enabled">
</member>
+ <member name="physics_process_parent" type="bool" setter="set_enabler" getter="is_enabler_enabled">
+ </member>
<member name="process_parent" type="bool" setter="set_enabler" getter="is_enabler_enabled">
</member>
</members>
<constants>
- <constant name="ENABLER_FREEZE_BODIES" value="1">
- This enabler will freeze [RigidBody2D] nodes.
- </constant>
<constant name="ENABLER_PAUSE_ANIMATIONS" value="0">
This enabler will pause [AnimationPlayer] nodes.
</constant>
+ <constant name="ENABLER_FREEZE_BODIES" value="1">
+ This enabler will freeze [RigidBody2D] nodes.
+ </constant>
<constant name="ENABLER_PAUSE_PARTICLES" value="2">
This enabler will stop [Particles2D] nodes.
</constant>
- <constant name="ENABLER_PAUSE_ANIMATED_SPRITES" value="5">
- </constant>
<constant name="ENABLER_PARENT_PROCESS" value="3">
This enabler will stop the parent's _process function.
</constant>
- <constant name="ENABLER_PARENT_FIXED_PROCESS" value="4">
- This enabler will stop the parent's _fixed_process function.
+ <constant name="ENABLER_PARENT_PHYSICS_PROCESS" value="4">
+ This enabler will stop the parent's _physics_process function.
+ </constant>
+ <constant name="ENABLER_PAUSE_ANIMATED_SPRITES" value="5">
</constant>
<constant name="ENABLER_MAX" value="6">
</constant>
diff --git a/doc/classes/VisualScript.xml b/doc/classes/VisualScript.xml
index e44547cd8f..8961ff1564 100644
--- a/doc/classes/VisualScript.xml
+++ b/doc/classes/VisualScript.xml
@@ -4,7 +4,7 @@
A script implemented in the Visual Script programming environment.
</brief_description>
<description>
- A script implemented in the Visual Script programming environment. The script exends the functionality of all objects that instance it.
+ A script implemented in the Visual Script programming environment. The script extends the functionality of all objects that instance it.
[method Object.set_script] extends an existing object, if that object's class matches one of the script's base classes.
You are most likely to use this class via the Visual Script editor or when writing plugins for it.
</description>
diff --git a/doc/classes/VisualScriptBuiltinFunc.xml b/doc/classes/VisualScriptBuiltinFunc.xml
index f48f5a5308..5891b24bfd 100644
--- a/doc/classes/VisualScriptBuiltinFunc.xml
+++ b/doc/classes/VisualScriptBuiltinFunc.xml
@@ -114,97 +114,101 @@
<constant name="MATH_LERP" value="26">
Return a number linearly interpolated between the first two inputs, based on the third input. Uses the formula [code]a + (a - b) * t[/code].
</constant>
- <constant name="MATH_DECTIME" value="27">
+ <constant name="MATH_INVERSE_LERP" value="27">
+ </constant>
+ <constant name="MATH_RANGE_LERP" value="28">
+ </constant>
+ <constant name="MATH_DECTIME" value="29">
Return the result of 'value' decreased by 'step' * 'amount'.
</constant>
- <constant name="MATH_RANDOMIZE" value="28">
+ <constant name="MATH_RANDOMIZE" value="30">
Randomize the seed (or the internal state) of the random number generator. Current implementation reseeds using a number based on time.
</constant>
- <constant name="MATH_RAND" value="29">
+ <constant name="MATH_RAND" value="31">
Return a random 32 bits integer value. To obtain a random value between 0 to N (where N is smaller than 2^32 - 1), you can use it with the remainder function.
</constant>
- <constant name="MATH_RANDF" value="30">
+ <constant name="MATH_RANDF" value="32">
Return a random floating-point value between 0 and 1. To obtain a random value between 0 to N, you can use it with multiplication.
</constant>
- <constant name="MATH_RANDOM" value="31">
+ <constant name="MATH_RANDOM" value="33">
Return a random floating-point value between the two inputs.
</constant>
- <constant name="MATH_SEED" value="32">
+ <constant name="MATH_SEED" value="34">
Set the seed for the random number generator.
</constant>
- <constant name="MATH_RANDSEED" value="33">
+ <constant name="MATH_RANDSEED" value="35">
Return a random value from the given seed, along with the new seed.
</constant>
- <constant name="MATH_DEG2RAD" value="34">
+ <constant name="MATH_DEG2RAD" value="36">
Convert the input from degrees to radians.
</constant>
- <constant name="MATH_RAD2DEG" value="35">
+ <constant name="MATH_RAD2DEG" value="37">
Convert the input from radians to degrees.
</constant>
- <constant name="MATH_LINEAR2DB" value="36">
+ <constant name="MATH_LINEAR2DB" value="38">
Convert the input from linear volume to decibel volume.
</constant>
- <constant name="MATH_DB2LINEAR" value="37">
+ <constant name="MATH_DB2LINEAR" value="39">
Convert the input from decibel volume to linear volume.
</constant>
- <constant name="LOGIC_MAX" value="38">
+ <constant name="LOGIC_MAX" value="40">
Return the greater of the two numbers, also known as their maximum.
</constant>
- <constant name="LOGIC_MIN" value="39">
+ <constant name="LOGIC_MIN" value="41">
Return the lesser of the two numbers, also known as their minimum.
</constant>
- <constant name="LOGIC_CLAMP" value="40">
+ <constant name="LOGIC_CLAMP" value="42">
Return the input clamped inside the given range, ensuring the result is never outside it. Equivalent to `min(max(input, range_low), range_high)`
</constant>
- <constant name="LOGIC_NEAREST_PO2" value="41">
+ <constant name="LOGIC_NEAREST_PO2" value="43">
Return the nearest power of 2 to the input.
</constant>
- <constant name="OBJ_WEAKREF" value="42">
+ <constant name="OBJ_WEAKREF" value="44">
Create a [WeakRef] from the input.
</constant>
- <constant name="FUNC_FUNCREF" value="43">
+ <constant name="FUNC_FUNCREF" value="45">
Create a [FuncRef] from the input.
</constant>
- <constant name="TYPE_CONVERT" value="44">
+ <constant name="TYPE_CONVERT" value="46">
Convert between types.
</constant>
- <constant name="TYPE_OF" value="45">
+ <constant name="TYPE_OF" value="47">
Return the type of the input as an integer. Check [enum Variant.Type] for the integers that might be returned.
</constant>
- <constant name="TYPE_EXISTS" value="46">
+ <constant name="TYPE_EXISTS" value="48">
Checks if a type is registered in the [ClassDB].
</constant>
- <constant name="TEXT_CHAR" value="47">
+ <constant name="TEXT_CHAR" value="49">
Return a character with the given ascii value.
</constant>
- <constant name="TEXT_STR" value="48">
+ <constant name="TEXT_STR" value="50">
Convert the input to a string.
</constant>
- <constant name="TEXT_PRINT" value="49">
+ <constant name="TEXT_PRINT" value="51">
Print the given string to the output window.
</constant>
- <constant name="TEXT_PRINTERR" value="50">
+ <constant name="TEXT_PRINTERR" value="52">
Print the given string to the standard error output.
</constant>
- <constant name="TEXT_PRINTRAW" value="51">
+ <constant name="TEXT_PRINTRAW" value="53">
Print the given string to the standard output, without adding a newline.
</constant>
- <constant name="VAR_TO_STR" value="52">
+ <constant name="VAR_TO_STR" value="54">
Serialize a [Variant] to a string.
</constant>
- <constant name="STR_TO_VAR" value="53">
+ <constant name="STR_TO_VAR" value="55">
Deserialize a [Variant] from a string serialized using [VAR_TO_STR].
</constant>
- <constant name="VAR_TO_BYTES" value="54">
+ <constant name="VAR_TO_BYTES" value="56">
Serialize a [Variant] to a [PoolByteArray].
</constant>
- <constant name="BYTES_TO_VAR" value="55">
+ <constant name="BYTES_TO_VAR" value="57">
Deserialize a [Variant] from a [PoolByteArray] serialized using [VAR_TO_BYTES].
</constant>
- <constant name="COLORN" value="56">
+ <constant name="COLORN" value="58">
Return the [Color] with the given name and alpha ranging from 0 to 1. Note: names are defined in color_names.inc.
</constant>
- <constant name="FUNC_MAX" value="57">
+ <constant name="FUNC_MAX" value="59">
The maximum value the [member function] property can have.
</constant>
</constants>
diff --git a/doc/classes/VisualScriptClassConstant.xml b/doc/classes/VisualScriptClassConstant.xml
index 70e7de5dd9..0377fa8f09 100644
--- a/doc/classes/VisualScriptClassConstant.xml
+++ b/doc/classes/VisualScriptClassConstant.xml
@@ -1,10 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="VisualScriptClassConstant" inherits="VisualScriptNode" category="Core" version="3.0.alpha.custom_build">
<brief_description>
- A Visual Script node representing a constant from a class.
+ Gets a constant from a given class.
</brief_description>
<description>
- A Visual Script node representing a constant from the classes, such as [@GlobalScope.TYPE_INT].
+ This node returns a constant from a given class, such as [@GlobalScope.TYPE_INT]. See the given class' documentation for available constants.
+ [b]Input Ports:[/b]
+ none
+ [b]Output Ports:[/b]
+ - Data (variant): [code]value[/code]
</description>
<tutorials>
</tutorials>
@@ -42,10 +46,10 @@
</methods>
<members>
<member name="base_type" type="String" setter="set_base_type" getter="get_base_type">
- The type to get the constant from.
+ The constant's parent class.
</member>
<member name="constant" type="String" setter="set_class_constant" getter="get_class_constant">
- The name of the constant to return.
+ The constant to return. See the given class for its available constants.
</member>
</members>
<constants>
diff --git a/doc/classes/VisualScriptConstant.xml b/doc/classes/VisualScriptConstant.xml
index 508087a928..2a704adecf 100644
--- a/doc/classes/VisualScriptConstant.xml
+++ b/doc/classes/VisualScriptConstant.xml
@@ -1,10 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="VisualScriptConstant" inherits="VisualScriptNode" category="Core" version="3.0.alpha.custom_build">
<brief_description>
- A Visual Script node which returns a constant value.
+ Gets a contant's value.
</brief_description>
<description>
- A Visual Script node which returns the specified constant value.
+ This node returns a constant's value.
+ [b]Input Ports:[/b]
+ none
+ [b]Output Ports:[/b]
+ - Data (variant): [code]get[/code]
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/VisualScriptEmitSignal.xml b/doc/classes/VisualScriptEmitSignal.xml
index 844b5a40ec..8d132ed321 100644
--- a/doc/classes/VisualScriptEmitSignal.xml
+++ b/doc/classes/VisualScriptEmitSignal.xml
@@ -1,10 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="VisualScriptEmitSignal" inherits="VisualScriptNode" category="Core" version="3.0.alpha.custom_build">
<brief_description>
- A Visual Script node which emits a specified signal.
+ Emits a specified signal.
</brief_description>
<description>
- A Visual Script node which emits a specified signal when it is executed.
+ Emits a specified signal when it is executed.
+ [b]Input Ports:[/b]
+ - Sequence: [code]emit[/code]
+ [b]Output Ports:[/b]
+ - Sequence
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/VisualScriptIterator.xml b/doc/classes/VisualScriptIterator.xml
index 74309fcf00..1f9a4fddde 100644
--- a/doc/classes/VisualScriptIterator.xml
+++ b/doc/classes/VisualScriptIterator.xml
@@ -1,8 +1,17 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="VisualScriptIterator" inherits="VisualScriptNode" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Steps through items in a given input.
</brief_description>
<description>
+ This node steps through each item in a given input. Input can be any sequence data type, such as an [Array] or [String]. When each item has been processed, execution passed out the [code]exit[/code] Sequence port.
+ [b]Input Ports:[/b]
+ - Sequence: [code]for (elem) in (input)[/code]
+ - Data (variant): [code]input[/code]
+ [b]Output Ports:[/b]
+ - Sequence: [code]each[/code]
+ - Sequence: [code]exit[/code]
+ - Data (variant): [code]elem[/code]
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/VisualScriptLocalVar.xml b/doc/classes/VisualScriptLocalVar.xml
index 7db550d5fe..3101b3e34b 100644
--- a/doc/classes/VisualScriptLocalVar.xml
+++ b/doc/classes/VisualScriptLocalVar.xml
@@ -1,8 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="VisualScriptLocalVar" inherits="VisualScriptNode" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Gets a local variable's value.
</brief_description>
<description>
+ Returns a local variable's value. "Var Name" must be supplied, with an optional type.
+ [b]Input Ports:[/b]
+ none
+ [b]Output Ports:[/b]
+ - Data (variant): [code]get[/code]
</description>
<tutorials>
</tutorials>
@@ -40,8 +46,10 @@
</methods>
<members>
<member name="type" type="int" setter="set_var_type" getter="get_var_type" enum="Variant.Type">
+ The local variable's type.
</member>
<member name="var_name" type="String" setter="set_var_name" getter="get_var_name">
+ The local variable's name.
</member>
</members>
<constants>
diff --git a/doc/classes/VisualScriptLocalVarSet.xml b/doc/classes/VisualScriptLocalVarSet.xml
index 6e69f13383..e039a7204e 100644
--- a/doc/classes/VisualScriptLocalVarSet.xml
+++ b/doc/classes/VisualScriptLocalVarSet.xml
@@ -1,8 +1,16 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="VisualScriptLocalVarSet" inherits="VisualScriptNode" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Changes a local variable's value.
</brief_description>
<description>
+ Changes a local variable's value to the given input. The new value is also provided on an output Data port.
+ [b]Input Ports:[/b]
+ - Sequence
+ - Data (variant): [code]set[/code]
+ [b]Output Ports:[/b]
+ - Sequence
+ - Data (variant): [code]get[/code]
</description>
<tutorials>
</tutorials>
@@ -40,8 +48,10 @@
</methods>
<members>
<member name="type" type="int" setter="set_var_type" getter="get_var_type" enum="Variant.Type">
+ The local variable's type.
</member>
<member name="var_name" type="String" setter="set_var_name" getter="get_var_name">
+ The local variable's name.
</member>
</members>
<constants>
diff --git a/doc/classes/VisualScriptMathConstant.xml b/doc/classes/VisualScriptMathConstant.xml
index 1ef7d71e10..86744e5caf 100644
--- a/doc/classes/VisualScriptMathConstant.xml
+++ b/doc/classes/VisualScriptMathConstant.xml
@@ -1,8 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="VisualScriptMathConstant" inherits="VisualScriptNode" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Commonly used mathematical constants.
</brief_description>
<description>
+ Provides common math constants, such as Pi or Euler's constant, on an output Data port.
+ [b]Input Ports:[/b]
+ none
+ [b]Output Ports:[/b]
+ - Data (variant): [code]get[/code]
</description>
<tutorials>
</tutorials>
@@ -26,24 +32,33 @@
</methods>
<members>
<member name="constant" type="int" setter="set_math_constant" getter="get_math_constant" enum="VisualScriptMathConstant.MathConstant">
+ The math constant.
</member>
</members>
<constants>
<constant name="MATH_CONSTANT_ONE" value="0">
+ Unity: [code]1[/code]
</constant>
<constant name="MATH_CONSTANT_PI" value="1">
+ Pi: [code]3.141593[/code]
</constant>
<constant name="MATH_CONSTANT_2PI" value="2">
+ Pi times two: [code]6.283185[/code]
</constant>
<constant name="MATH_CONSTANT_HALF_PI" value="3">
+ Pi divided by two: [code]1.570796[/code]
</constant>
<constant name="MATH_CONSTANT_E" value="4">
+ Natural log: [code]2.718282[/code]
</constant>
<constant name="MATH_CONSTANT_SQRT2" value="5">
+ Square root of two: [code]1.414214[/code]
</constant>
<constant name="MATH_CONSTANT_INF" value="6">
+ Infinity: [code]inf[/code]
</constant>
<constant name="MATH_CONSTANT_NAN" value="7">
+ Not a number: [code]nan[/code]
</constant>
<constant name="MATH_CONSTANT_MAX" value="8">
</constant>
diff --git a/doc/classes/VisualScriptOperator.xml b/doc/classes/VisualScriptOperator.xml
index 7e85af8af2..de08075af2 100644
--- a/doc/classes/VisualScriptOperator.xml
+++ b/doc/classes/VisualScriptOperator.xml
@@ -7,9 +7,7 @@
- Data (variant): [code]A[/code]
- Data (variant): [code]B[/code]
[b]Output Ports:[/b]
- - Sequence: [code]true[/code]
- - Sequence: [code]false[/code]
- - Sequence: [code]done[/code]
+ - Data (variant): [code]result[/code]
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/VisualScriptPreload.xml b/doc/classes/VisualScriptPreload.xml
index b68bf5546b..b683439751 100644
--- a/doc/classes/VisualScriptPreload.xml
+++ b/doc/classes/VisualScriptPreload.xml
@@ -1,8 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="VisualScriptPreload" inherits="VisualScriptNode" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Creates a new [Resource] or loads one from the filesystem.
</brief_description>
<description>
+ Creates a new [Resource] or loads one from the filesystem.
+ [b]Input Ports:[/b]
+ none
+ [b]Output Ports:[/b]
+ - Data (object): [code]res[/code]
</description>
<tutorials>
</tutorials>
@@ -26,6 +32,7 @@
</methods>
<members>
<member name="resource" type="Resource" setter="set_preload" getter="get_preload">
+ The [Resource] to load.
</member>
</members>
<constants>
diff --git a/doc/classes/VisualScriptReturn.xml b/doc/classes/VisualScriptReturn.xml
index 55c53e17a0..ad18e96230 100644
--- a/doc/classes/VisualScriptReturn.xml
+++ b/doc/classes/VisualScriptReturn.xml
@@ -1,8 +1,15 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="VisualScriptReturn" inherits="VisualScriptNode" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Exits a function and returns an optional value.
</brief_description>
<description>
+ Ends the execution of a function and returns control to the calling function. Optionally, it can return a [Variant] value.
+ [b]Input Ports:[/b]
+ - Sequence
+ - Data (variant): [code]result[/code] (optional)
+ [b]Output Ports:[/b]
+ none
</description>
<tutorials>
</tutorials>
@@ -40,8 +47,10 @@
</methods>
<members>
<member name="return_enabled" type="bool" setter="set_enable_return_value" getter="is_return_value_enabled">
+ If [code]true[/code] the [code]return[/code] input port is available.
</member>
<member name="return_type" type="int" setter="set_return_type" getter="get_return_type" enum="Variant.Type">
+ The return value's data type.
</member>
</members>
<constants>
diff --git a/doc/classes/VisualScriptSelect.xml b/doc/classes/VisualScriptSelect.xml
index 855da76e6c..f265c57645 100644
--- a/doc/classes/VisualScriptSelect.xml
+++ b/doc/classes/VisualScriptSelect.xml
@@ -1,8 +1,16 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="VisualScriptSelect" inherits="VisualScriptNode" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Chooses between two input values.
</brief_description>
<description>
+ Chooses between two input values based on a Boolean condition.
+ [b]Input Ports:[/b]
+ - Data (boolean): [code]cond[/code]
+ - Data (variant): [code]a[/code]
+ - Data (variant): [code]b[/code]
+ [b]Output Ports:[/b]
+ - Data (variant): [code]out[/code]
</description>
<tutorials>
</tutorials>
@@ -26,6 +34,7 @@
</methods>
<members>
<member name="type" type="int" setter="set_typed" getter="get_typed" enum="Variant.Type">
+ The input variables' type.
</member>
</members>
<constants>
diff --git a/doc/classes/VisualScriptSelf.xml b/doc/classes/VisualScriptSelf.xml
index a60f7eee03..723b138722 100644
--- a/doc/classes/VisualScriptSelf.xml
+++ b/doc/classes/VisualScriptSelf.xml
@@ -1,8 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="VisualScriptSelf" inherits="VisualScriptNode" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Outputs a reference to the current instance.
</brief_description>
<description>
+ Provides a reference to the node running the visual script.
+ [b]Input Ports:[/b]
+ none
+ [b]Output Ports:[/b]
+ - Data (object): [code]instance[/code]
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/VisualScriptSequence.xml b/doc/classes/VisualScriptSequence.xml
index a60c9e782b..845da4e50b 100644
--- a/doc/classes/VisualScriptSequence.xml
+++ b/doc/classes/VisualScriptSequence.xml
@@ -1,8 +1,16 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="VisualScriptSequence" inherits="VisualScriptNode" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Executes a series of Sequence ports.
</brief_description>
<description>
+ Steps through a series of one or more output Sequence ports. The [code]current[/code] data port outputs the currently executing item.
+ [b]Input Ports:[/b]
+ - Sequence: [code]in order[/code]
+ [b]Output Ports:[/b]
+ - Sequence: [code]1[/code]
+ - Sequence: [code]2 - n[/code] (optional)
+ - Data (int): [code]current[/code]
</description>
<tutorials>
</tutorials>
@@ -26,6 +34,7 @@
</methods>
<members>
<member name="steps" type="int" setter="set_steps" getter="get_steps">
+ The number of steps in the sequence.
</member>
</members>
<constants>
diff --git a/doc/classes/VisualScriptSwitch.xml b/doc/classes/VisualScriptSwitch.xml
index 95ed737372..2540ae54cc 100644
--- a/doc/classes/VisualScriptSwitch.xml
+++ b/doc/classes/VisualScriptSwitch.xml
@@ -1,8 +1,19 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="VisualScriptSwitch" inherits="VisualScriptNode" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Branches program flow based on a given input's value.
</brief_description>
<description>
+ Branches the flow based on an input's value. Use "Case Count" in the Inspector to set the number of branches and each comparison's optional type.
+ [b]Input Ports:[/b]
+ - Sequence: [code]'input' is[/code]
+ - Data (variant): [code]=[/code]
+ - Data (variant): [code]=[/code] (optional)
+ - Data (variant): [code]input[/code]
+ [b]Output Ports:[/b]
+ - Sequence
+ - Sequence (optional)
+ - Sequence: [code]done[/code]
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/VisualScriptVariableGet.xml b/doc/classes/VisualScriptVariableGet.xml
index 8411933756..5b45dd0cc4 100644
--- a/doc/classes/VisualScriptVariableGet.xml
+++ b/doc/classes/VisualScriptVariableGet.xml
@@ -1,8 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="VisualScriptVariableGet" inherits="VisualScriptNode" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Gets a variable's value.
</brief_description>
<description>
+ Returns a variable's value. "Var Name" must be supplied, with an optional type.
+ [b]Input Ports:[/b]
+ none
+ [b]Output Ports:[/b]
+ - Data (variant): [code]value[/code]
</description>
<tutorials>
</tutorials>
@@ -26,6 +32,7 @@
</methods>
<members>
<member name="var_name" type="String" setter="set_variable" getter="get_variable">
+ The variable's name.
</member>
</members>
<constants>
diff --git a/doc/classes/VisualScriptVariableSet.xml b/doc/classes/VisualScriptVariableSet.xml
index fbe0f8e275..51f85f6881 100644
--- a/doc/classes/VisualScriptVariableSet.xml
+++ b/doc/classes/VisualScriptVariableSet.xml
@@ -1,8 +1,15 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="VisualScriptVariableSet" inherits="VisualScriptNode" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Changes a variable's value.
</brief_description>
<description>
+ Changes a variable's value to the given input.
+ [b]Input Ports:[/b]
+ - Sequence
+ - Data (variant): [code]set[/code]
+ [b]Output Ports:[/b]
+ - Sequence
</description>
<tutorials>
</tutorials>
@@ -26,6 +33,7 @@
</methods>
<members>
<member name="var_name" type="String" setter="set_variable" getter="get_variable">
+ The variable's name.
</member>
</members>
<constants>
diff --git a/doc/classes/VisualScriptWhile.xml b/doc/classes/VisualScriptWhile.xml
index b49678582e..60bf161339 100644
--- a/doc/classes/VisualScriptWhile.xml
+++ b/doc/classes/VisualScriptWhile.xml
@@ -1,8 +1,16 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="VisualScriptWhile" inherits="VisualScriptNode" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Conditional loop.
</brief_description>
<description>
+ Loops while a condition is [code]true[/code]. Execution continues out the [code]exit[/code] Sequence port when the loop terminates.
+ [b]Input Ports:[/b]
+ - Sequence: [code]while(cond)[/code]
+ - Data (bool): [code]cond[/code]
+ [b]Output Ports:[/b]
+ - Sequence: [code]repeat[/code]
+ - Sequence: [code]exit[/code]
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/VisualScriptYield.xml b/doc/classes/VisualScriptYield.xml
index b8938daa67..a0d95f151a 100644
--- a/doc/classes/VisualScriptYield.xml
+++ b/doc/classes/VisualScriptYield.xml
@@ -47,7 +47,7 @@
<constants>
<constant name="YIELD_FRAME" value="1">
</constant>
- <constant name="YIELD_FIXED_FRAME" value="2">
+ <constant name="YIELD_PHYSICS_FRAME" value="2">
</constant>
<constant name="YIELD_WAIT" value="3">
</constant>
diff --git a/doc/classes/VisualServer.xml b/doc/classes/VisualServer.xml
index 242fc18ab9..8e3cb8ee50 100644
--- a/doc/classes/VisualServer.xml
+++ b/doc/classes/VisualServer.xml
@@ -12,12 +12,1342 @@
<demos>
</demos>
<methods>
+ <method name="black_bars_set_images">
+ <return type="void">
+ </return>
+ <argument index="0" name="left" type="RID">
+ </argument>
+ <argument index="1" name="top" type="RID">
+ </argument>
+ <argument index="2" name="right" type="RID">
+ </argument>
+ <argument index="3" name="bottom" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="black_bars_set_margins">
+ <return type="void">
+ </return>
+ <argument index="0" name="left" type="int">
+ </argument>
+ <argument index="1" name="top" type="int">
+ </argument>
+ <argument index="2" name="right" type="int">
+ </argument>
+ <argument index="3" name="bottom" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_create">
+ <return type="RID">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_add_circle">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="pos" type="Vector2">
+ </argument>
+ <argument index="2" name="radius" type="float">
+ </argument>
+ <argument index="3" name="color" type="Color">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_add_clip_ignore">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="ignore" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_add_line">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="from" type="Vector2">
+ </argument>
+ <argument index="2" name="to" type="Vector2">
+ </argument>
+ <argument index="3" name="color" type="Color">
+ </argument>
+ <argument index="4" name="width" type="float" default="1.0">
+ </argument>
+ <argument index="5" name="antialiased" type="bool" default="false">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_add_mesh">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="mesh" type="RID">
+ </argument>
+ <argument index="2" name="skeleton" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_add_multimesh">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="mesh" type="RID">
+ </argument>
+ <argument index="2" name="skeleton" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_add_nine_patch">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="rect" type="Rect2">
+ </argument>
+ <argument index="2" name="source" type="Rect2">
+ </argument>
+ <argument index="3" name="texture" type="RID">
+ </argument>
+ <argument index="4" name="topleft" type="Vector2">
+ </argument>
+ <argument index="5" name="bottomright" type="Vector2">
+ </argument>
+ <argument index="6" name="x_axis_mode" type="int" enum="VisualServer.NinePatchAxisMode" default="0">
+ </argument>
+ <argument index="7" name="y_axis_mode" type="int" enum="VisualServer.NinePatchAxisMode" default="0">
+ </argument>
+ <argument index="8" name="draw_center" type="bool" default="true">
+ </argument>
+ <argument index="9" name="modulate" type="Color" default="Color( 1, 1, 1, 1 )">
+ </argument>
+ <argument index="10" name="normal_map" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_add_particles">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="particles" type="RID">
+ </argument>
+ <argument index="2" name="texture" type="RID">
+ </argument>
+ <argument index="3" name="normal_map" type="RID">
+ </argument>
+ <argument index="4" name="h_frames" type="int">
+ </argument>
+ <argument index="5" name="v_frames" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_add_polygon">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="points" type="PoolVector2Array">
+ </argument>
+ <argument index="2" name="colors" type="PoolColorArray">
+ </argument>
+ <argument index="3" name="uvs" type="PoolVector2Array" default="PoolVector2Array( )">
+ </argument>
+ <argument index="4" name="texture" type="RID">
+ </argument>
+ <argument index="5" name="normal_map" type="RID">
+ </argument>
+ <argument index="6" name="antialiased" type="bool" default="false">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_add_polyline">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="points" type="PoolVector2Array">
+ </argument>
+ <argument index="2" name="colors" type="PoolColorArray">
+ </argument>
+ <argument index="3" name="width" type="float" default="1.0">
+ </argument>
+ <argument index="4" name="antialiased" type="bool" default="false">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_add_primitive">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="points" type="PoolVector2Array">
+ </argument>
+ <argument index="2" name="colors" type="PoolColorArray">
+ </argument>
+ <argument index="3" name="uvs" type="PoolVector2Array">
+ </argument>
+ <argument index="4" name="texture" type="RID">
+ </argument>
+ <argument index="5" name="width" type="float" default="1.0">
+ </argument>
+ <argument index="6" name="normal_map" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_add_rect">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="rect" type="Rect2">
+ </argument>
+ <argument index="2" name="color" type="Color">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_add_set_transform">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="transform" type="Transform2D">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_add_texture_rect">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="rect" type="Rect2">
+ </argument>
+ <argument index="2" name="texture" type="RID">
+ </argument>
+ <argument index="3" name="tile" type="bool" default="false">
+ </argument>
+ <argument index="4" name="modulate" type="Color" default="Color( 1, 1, 1, 1 )">
+ </argument>
+ <argument index="5" name="transpose" type="bool" default="false">
+ </argument>
+ <argument index="6" name="normal_map" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_add_texture_rect_region">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="rect" type="Rect2">
+ </argument>
+ <argument index="2" name="texture" type="RID">
+ </argument>
+ <argument index="3" name="src_rect" type="Rect2">
+ </argument>
+ <argument index="4" name="modulate" type="Color" default="Color( 1, 1, 1, 1 )">
+ </argument>
+ <argument index="5" name="transpose" type="bool" default="false">
+ </argument>
+ <argument index="6" name="normal_map" type="RID">
+ </argument>
+ <argument index="7" name="clip_uv" type="bool" default="true">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_add_triangle_array">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="indices" type="PoolIntArray">
+ </argument>
+ <argument index="2" name="points" type="PoolVector2Array">
+ </argument>
+ <argument index="3" name="colors" type="PoolColorArray">
+ </argument>
+ <argument index="4" name="uvs" type="PoolVector2Array" default="PoolVector2Array( )">
+ </argument>
+ <argument index="5" name="texture" type="RID">
+ </argument>
+ <argument index="6" name="count" type="int" default="-1">
+ </argument>
+ <argument index="7" name="normal_map" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_clear">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_create">
+ <return type="RID">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_set_clip">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="clip" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_set_copy_to_backbuffer">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="enabled" type="bool">
+ </argument>
+ <argument index="2" name="rect" type="Rect2">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_set_custom_rect">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="use_custom_rect" type="bool">
+ </argument>
+ <argument index="2" name="rect" type="Rect2" default="Rect2( 0, 0, 0, 0 )">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_set_distance_field_mode">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="enabled" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_set_draw_behind_parent">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="enabled" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_set_draw_index">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="index" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_set_light_mask">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="mask" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_set_material">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="material" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_set_modulate">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="color" type="Color">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_set_parent">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="parent" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_set_self_modulate">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="color" type="Color">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_set_sort_children_by_y">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="enabled" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_set_transform">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="transform" type="Transform2D">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_set_use_parent_material">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="enabled" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_set_visible">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="visible" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_set_z">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="z" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_item_set_z_as_relative_to_parent">
+ <return type="void">
+ </return>
+ <argument index="0" name="item" type="RID">
+ </argument>
+ <argument index="1" name="enabled" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_attach_to_canvas">
+ <return type="void">
+ </return>
+ <argument index="0" name="light" type="RID">
+ </argument>
+ <argument index="1" name="canvas" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_create">
+ <return type="RID">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_occluder_attach_to_canvas">
+ <return type="void">
+ </return>
+ <argument index="0" name="occluder" type="RID">
+ </argument>
+ <argument index="1" name="canvas" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_occluder_create">
+ <return type="RID">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_occluder_set_enabled">
+ <return type="void">
+ </return>
+ <argument index="0" name="occluder" type="RID">
+ </argument>
+ <argument index="1" name="enabled" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_occluder_set_light_mask">
+ <return type="void">
+ </return>
+ <argument index="0" name="occluder" type="RID">
+ </argument>
+ <argument index="1" name="mask" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_occluder_set_polygon">
+ <return type="void">
+ </return>
+ <argument index="0" name="occluder" type="RID">
+ </argument>
+ <argument index="1" name="polygon" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_occluder_set_transform">
+ <return type="void">
+ </return>
+ <argument index="0" name="occluder" type="RID">
+ </argument>
+ <argument index="1" name="transform" type="Transform2D">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_set_color">
+ <return type="void">
+ </return>
+ <argument index="0" name="light" type="RID">
+ </argument>
+ <argument index="1" name="color" type="Color">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_set_enabled">
+ <return type="void">
+ </return>
+ <argument index="0" name="light" type="RID">
+ </argument>
+ <argument index="1" name="enabled" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_set_energy">
+ <return type="void">
+ </return>
+ <argument index="0" name="light" type="RID">
+ </argument>
+ <argument index="1" name="energy" type="float">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_set_height">
+ <return type="void">
+ </return>
+ <argument index="0" name="light" type="RID">
+ </argument>
+ <argument index="1" name="height" type="float">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_set_item_cull_mask">
+ <return type="void">
+ </return>
+ <argument index="0" name="light" type="RID">
+ </argument>
+ <argument index="1" name="mask" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_set_item_shadow_cull_mask">
+ <return type="void">
+ </return>
+ <argument index="0" name="light" type="RID">
+ </argument>
+ <argument index="1" name="mask" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_set_layer_range">
+ <return type="void">
+ </return>
+ <argument index="0" name="light" type="RID">
+ </argument>
+ <argument index="1" name="min_layer" type="int">
+ </argument>
+ <argument index="2" name="max_layer" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_set_mode">
+ <return type="void">
+ </return>
+ <argument index="0" name="light" type="RID">
+ </argument>
+ <argument index="1" name="mode" type="int" enum="VisualServer.CanvasLightMode">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_set_scale">
+ <return type="void">
+ </return>
+ <argument index="0" name="light" type="RID">
+ </argument>
+ <argument index="1" name="scale" type="float">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_set_shadow_buffer_size">
+ <return type="void">
+ </return>
+ <argument index="0" name="light" type="RID">
+ </argument>
+ <argument index="1" name="size" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_set_shadow_color">
+ <return type="void">
+ </return>
+ <argument index="0" name="light" type="RID">
+ </argument>
+ <argument index="1" name="color" type="Color">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_set_shadow_enabled">
+ <return type="void">
+ </return>
+ <argument index="0" name="light" type="RID">
+ </argument>
+ <argument index="1" name="enabled" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_set_shadow_filter">
+ <return type="void">
+ </return>
+ <argument index="0" name="light" type="RID">
+ </argument>
+ <argument index="1" name="filter" type="int" enum="VisualServer.CanvasLightShadowFilter">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_set_shadow_gradient_length">
+ <return type="void">
+ </return>
+ <argument index="0" name="light" type="RID">
+ </argument>
+ <argument index="1" name="length" type="float">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_set_shadow_smooth">
+ <return type="void">
+ </return>
+ <argument index="0" name="light" type="RID">
+ </argument>
+ <argument index="1" name="smooth" type="float">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_set_texture">
+ <return type="void">
+ </return>
+ <argument index="0" name="light" type="RID">
+ </argument>
+ <argument index="1" name="texture" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_set_texture_offset">
+ <return type="void">
+ </return>
+ <argument index="0" name="light" type="RID">
+ </argument>
+ <argument index="1" name="offset" type="Vector2">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_set_transform">
+ <return type="void">
+ </return>
+ <argument index="0" name="light" type="RID">
+ </argument>
+ <argument index="1" name="transform" type="Transform2D">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_light_set_z_range">
+ <return type="void">
+ </return>
+ <argument index="0" name="light" type="RID">
+ </argument>
+ <argument index="1" name="min_z" type="int">
+ </argument>
+ <argument index="2" name="max_z" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_occluder_polygon_create">
+ <return type="RID">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_occluder_polygon_set_cull_mode">
+ <return type="void">
+ </return>
+ <argument index="0" name="occluder_polygon" type="RID">
+ </argument>
+ <argument index="1" name="mode" type="int" enum="VisualServer.CanvasOccluderPolygonCullMode">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_occluder_polygon_set_shape">
+ <return type="void">
+ </return>
+ <argument index="0" name="occluder_polygon" type="RID">
+ </argument>
+ <argument index="1" name="shape" type="PoolVector2Array">
+ </argument>
+ <argument index="2" name="closed" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_occluder_polygon_set_shape_as_lines">
+ <return type="void">
+ </return>
+ <argument index="0" name="occluder_polygon" type="RID">
+ </argument>
+ <argument index="1" name="shape" type="PoolVector2Array">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_set_item_mirroring">
+ <return type="void">
+ </return>
+ <argument index="0" name="canvas" type="RID">
+ </argument>
+ <argument index="1" name="item" type="RID">
+ </argument>
+ <argument index="2" name="mirroring" type="Vector2">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="canvas_set_modulate">
+ <return type="void">
+ </return>
+ <argument index="0" name="canvas" type="RID">
+ </argument>
+ <argument index="1" name="color" type="Color">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="draw">
+ <return type="void">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="finish">
+ <return type="void">
+ </return>
+ <description>
+ </description>
+ </method>
<method name="force_draw">
<return type="void">
</return>
<description>
</description>
</method>
+ <method name="force_sync">
+ <return type="void">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="free">
+ <return type="void">
+ </return>
+ <argument index="0" name="rid" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="get_render_info">
+ <return type="int">
+ </return>
+ <argument index="0" name="info" type="int" enum="VisualServer.RenderInfo">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="get_test_cube">
+ <return type="RID">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="get_test_texture">
+ <return type="RID">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="get_white_texture">
+ <return type="RID">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="has_changed" qualifiers="const">
+ <return type="bool">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="has_feature" qualifiers="const">
+ <return type="bool">
+ </return>
+ <argument index="0" name="feature" type="int" enum="VisualServer.Features">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="has_os_feature" qualifiers="const">
+ <return type="bool">
+ </return>
+ <argument index="0" name="feature" type="String">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="init">
+ <return type="void">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="make_sphere_mesh">
+ <return type="RID">
+ </return>
+ <argument index="0" name="latitudes" type="int">
+ </argument>
+ <argument index="1" name="longitudes" type="int">
+ </argument>
+ <argument index="2" name="radius" type="float">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="material_create">
+ <return type="RID">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="material_get_param" qualifiers="const">
+ <return type="Variant">
+ </return>
+ <argument index="0" name="material" type="RID">
+ </argument>
+ <argument index="1" name="parameter" type="String">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="material_get_shader" qualifiers="const">
+ <return type="RID">
+ </return>
+ <argument index="0" name="shader_material" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="material_set_line_width">
+ <return type="void">
+ </return>
+ <argument index="0" name="material" type="RID">
+ </argument>
+ <argument index="1" name="width" type="float">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="material_set_next_pass">
+ <return type="void">
+ </return>
+ <argument index="0" name="material" type="RID">
+ </argument>
+ <argument index="1" name="next_material" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="material_set_param">
+ <return type="void">
+ </return>
+ <argument index="0" name="material" type="RID">
+ </argument>
+ <argument index="1" name="parameter" type="String">
+ </argument>
+ <argument index="2" name="value" type="Variant">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="material_set_render_priority">
+ <return type="void">
+ </return>
+ <argument index="0" name="material" type="RID">
+ </argument>
+ <argument index="1" name="priority" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="material_set_shader">
+ <return type="void">
+ </return>
+ <argument index="0" name="shader_material" type="RID">
+ </argument>
+ <argument index="1" name="shader" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="mesh_add_surface_from_arrays">
+ <return type="void">
+ </return>
+ <argument index="0" name="mesh" type="RID">
+ </argument>
+ <argument index="1" name="primtive" type="int" enum="VisualServer.PrimitiveType">
+ </argument>
+ <argument index="2" name="arrays" type="Array">
+ </argument>
+ <argument index="3" name="blend_shapes" type="Array" default="[ ]">
+ </argument>
+ <argument index="4" name="compress_format" type="int" default="97792">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="mesh_clear">
+ <return type="void">
+ </return>
+ <argument index="0" name="mesh" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="mesh_create">
+ <return type="RID">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="mesh_get_blend_shape_count" qualifiers="const">
+ <return type="int">
+ </return>
+ <argument index="0" name="mesh" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="mesh_get_blend_shape_mode" qualifiers="const">
+ <return type="int" enum="VisualServer.BlendShapeMode">
+ </return>
+ <argument index="0" name="mesh" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="mesh_get_custom_aabb" qualifiers="const">
+ <return type="Rect3">
+ </return>
+ <argument index="0" name="mesh" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="mesh_get_surface_count" qualifiers="const">
+ <return type="int">
+ </return>
+ <argument index="0" name="mesh" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="mesh_remove_surface">
+ <return type="void">
+ </return>
+ <argument index="0" name="mesh" type="RID">
+ </argument>
+ <argument index="1" name="index" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="mesh_set_blend_shape_count">
+ <return type="void">
+ </return>
+ <argument index="0" name="mesh" type="RID">
+ </argument>
+ <argument index="1" name="amount" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="mesh_set_blend_shape_mode">
+ <return type="void">
+ </return>
+ <argument index="0" name="mesh" type="RID">
+ </argument>
+ <argument index="1" name="mode" type="int" enum="VisualServer.BlendShapeMode">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="mesh_set_custom_aabb">
+ <return type="void">
+ </return>
+ <argument index="0" name="mesh" type="RID">
+ </argument>
+ <argument index="1" name="aabb" type="Rect3">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="mesh_surface_get_aabb" qualifiers="const">
+ <return type="Rect3">
+ </return>
+ <argument index="0" name="mesh" type="RID">
+ </argument>
+ <argument index="1" name="surface" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="mesh_surface_get_array" qualifiers="const">
+ <return type="PoolByteArray">
+ </return>
+ <argument index="0" name="mesh" type="RID">
+ </argument>
+ <argument index="1" name="surface" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="mesh_surface_get_array_index_len" qualifiers="const">
+ <return type="int">
+ </return>
+ <argument index="0" name="mesh" type="RID">
+ </argument>
+ <argument index="1" name="surface" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="mesh_surface_get_array_len" qualifiers="const">
+ <return type="int">
+ </return>
+ <argument index="0" name="mesh" type="RID">
+ </argument>
+ <argument index="1" name="surface" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="mesh_surface_get_arrays" qualifiers="const">
+ <return type="Array">
+ </return>
+ <argument index="0" name="mesh" type="RID">
+ </argument>
+ <argument index="1" name="surface" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="mesh_surface_get_blend_shape_arrays" qualifiers="const">
+ <return type="Array">
+ </return>
+ <argument index="0" name="mesh" type="RID">
+ </argument>
+ <argument index="1" name="surface" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="mesh_surface_get_format" qualifiers="const">
+ <return type="int">
+ </return>
+ <argument index="0" name="mesh" type="RID">
+ </argument>
+ <argument index="1" name="surface" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="mesh_surface_get_index_array" qualifiers="const">
+ <return type="PoolByteArray">
+ </return>
+ <argument index="0" name="mesh" type="RID">
+ </argument>
+ <argument index="1" name="surface" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="mesh_surface_get_material" qualifiers="const">
+ <return type="RID">
+ </return>
+ <argument index="0" name="mesh" type="RID">
+ </argument>
+ <argument index="1" name="surface" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="mesh_surface_get_primitive_type" qualifiers="const">
+ <return type="int" enum="VisualServer.PrimitiveType">
+ </return>
+ <argument index="0" name="mesh" type="RID">
+ </argument>
+ <argument index="1" name="surface" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="mesh_surface_get_skeleton_aabb" qualifiers="const">
+ <return type="Array">
+ </return>
+ <argument index="0" name="mesh" type="RID">
+ </argument>
+ <argument index="1" name="surface" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="mesh_surface_set_material">
+ <return type="void">
+ </return>
+ <argument index="0" name="mesh" type="RID">
+ </argument>
+ <argument index="1" name="surface" type="int">
+ </argument>
+ <argument index="2" name="material" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="request_frame_drawn_callback">
+ <return type="void">
+ </return>
+ <argument index="0" name="where" type="Object">
+ </argument>
+ <argument index="1" name="method" type="String">
+ </argument>
+ <argument index="2" name="userdata" type="Variant">
+ </argument>
+ <description>
+ Schedules a callback to the corresponding named 'method' on 'where' after a frame has been drawn.
+ The callback method must use only 1 argument which will be called with 'userdata'.
+ </description>
+ </method>
+ <method name="set_boot_image">
+ <return type="void">
+ </return>
+ <argument index="0" name="image" type="Image">
+ </argument>
+ <argument index="1" name="color" type="Color">
+ </argument>
+ <argument index="2" name="scale" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="set_debug_generate_wireframes">
+ <return type="void">
+ </return>
+ <argument index="0" name="generate" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="set_default_clear_color">
+ <return type="void">
+ </return>
+ <argument index="0" name="color" type="Color">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="shader_create">
+ <return type="RID">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="shader_get_code" qualifiers="const">
+ <return type="String">
+ </return>
+ <argument index="0" name="shader" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="shader_get_default_texture_param" qualifiers="const">
+ <return type="RID">
+ </return>
+ <argument index="0" name="shader" type="RID">
+ </argument>
+ <argument index="1" name="name" type="String">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="shader_get_param_list" qualifiers="const">
+ <return type="Array">
+ </return>
+ <argument index="0" name="shader" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="shader_set_code">
+ <return type="void">
+ </return>
+ <argument index="0" name="shader" type="RID">
+ </argument>
+ <argument index="1" name="code" type="String">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="shader_set_default_texture_param">
+ <return type="void">
+ </return>
+ <argument index="0" name="shader" type="RID">
+ </argument>
+ <argument index="1" name="name" type="String">
+ </argument>
+ <argument index="2" name="texture" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="sky_create">
+ <return type="RID">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="sky_set_texture">
+ <return type="void">
+ </return>
+ <argument index="0" name="sky" type="RID">
+ </argument>
+ <argument index="1" name="cube_map" type="RID">
+ </argument>
+ <argument index="2" name="radiance_size" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="sync">
+ <return type="void">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="texture_allocate">
+ <return type="void">
+ </return>
+ <argument index="0" name="texture" type="RID">
+ </argument>
+ <argument index="1" name="width" type="int">
+ </argument>
+ <argument index="2" name="height" type="int">
+ </argument>
+ <argument index="3" name="format" type="int" enum="Image.Format">
+ </argument>
+ <argument index="4" name="flags" type="int" default="7">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="texture_create">
<return type="RID">
</return>
@@ -34,6 +1364,22 @@
<description>
</description>
</method>
+ <method name="texture_debug_usage">
+ <return type="Array">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="texture_get_data" qualifiers="const">
+ <return type="Image">
+ </return>
+ <argument index="0" name="texture" type="RID">
+ </argument>
+ <argument index="1" name="cube_side" type="int" enum="VisualServer.CubeMapSide" default="0">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="texture_get_flags" qualifiers="const">
<return type="int">
</return>
@@ -42,6 +1388,14 @@
<description>
</description>
</method>
+ <method name="texture_get_format" qualifiers="const">
+ <return type="int" enum="Image.Format">
+ </return>
+ <argument index="0" name="texture" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="texture_get_height" qualifiers="const">
<return type="int">
</return>
@@ -50,6 +1404,22 @@
<description>
</description>
</method>
+ <method name="texture_get_path" qualifiers="const">
+ <return type="String">
+ </return>
+ <argument index="0" name="texture" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="texture_get_texid" qualifiers="const">
+ <return type="int">
+ </return>
+ <argument index="0" name="texture" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="texture_get_width" qualifiers="const">
<return type="int">
</return>
@@ -58,6 +1428,18 @@
<description>
</description>
</method>
+ <method name="texture_set_data">
+ <return type="void">
+ </return>
+ <argument index="0" name="texture" type="RID">
+ </argument>
+ <argument index="1" name="image" type="Image">
+ </argument>
+ <argument index="2" name="cube_side" type="int" enum="VisualServer.CubeMapSide" default="0">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="texture_set_flags">
<return type="void">
</return>
@@ -68,6 +1450,16 @@
<description>
</description>
</method>
+ <method name="texture_set_path">
+ <return type="void">
+ </return>
+ <argument index="0" name="texture" type="RID">
+ </argument>
+ <argument index="1" name="path" type="String">
+ </argument>
+ <description>
+ </description>
+ </method>
<method name="texture_set_shrink_all_x2_on_set_data">
<return type="void">
</return>
@@ -76,7 +1468,639 @@
<description>
</description>
</method>
+ <method name="texture_set_size_override">
+ <return type="void">
+ </return>
+ <argument index="0" name="texture" type="RID">
+ </argument>
+ <argument index="1" name="width" type="int">
+ </argument>
+ <argument index="2" name="height" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="textures_keep_original">
+ <return type="void">
+ </return>
+ <argument index="0" name="enable" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_attach_camera">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="camera" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_attach_canvas">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="canvas" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_attach_to_screen">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="rect" type="Rect2" default="Rect2( 0, 0, 0, 0 )">
+ </argument>
+ <argument index="2" name="screen" type="int" default="0">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_create">
+ <return type="RID">
+ </return>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_detach">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_get_render_info">
+ <return type="int">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="info" type="int" enum="VisualServer.ViewportRenderInfo">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_get_texture" qualifiers="const">
+ <return type="RID">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_remove_canvas">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="canvas" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_set_active">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="active" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_set_canvas_layer">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="canvas" type="RID">
+ </argument>
+ <argument index="2" name="layer" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_set_canvas_transform">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="canvas" type="RID">
+ </argument>
+ <argument index="2" name="offset" type="Transform2D">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_set_clear_mode">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="clear_mode" type="int" enum="VisualServer.ViewportClearMode">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_set_debug_draw">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="draw" type="int" enum="VisualServer.ViewportDebugDraw">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_set_disable_3d">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="disabled" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_set_disable_environment">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="disabled" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_set_global_canvas_transform">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="transform" type="Transform2D">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_set_hdr">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="enabled" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_set_hide_canvas">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="hidden" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_set_hide_scenario">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="hidden" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_set_msaa">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="msaa" type="int" enum="VisualServer.ViewportMSAA">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_set_parent_viewport">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="parent_viewport" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_set_scenario">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="scenario" type="RID">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_set_shadow_atlas_quadrant_subdivision">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="quadrant" type="int">
+ </argument>
+ <argument index="2" name="subdivision" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_set_shadow_atlas_size">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="size" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_set_size">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="width" type="int">
+ </argument>
+ <argument index="2" name="height" type="int">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_set_transparent_background">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="enabled" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_set_update_mode">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="update_mode" type="int" enum="VisualServer.ViewportUpdateMode">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_set_usage">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="usage" type="int" enum="VisualServer.ViewportUsage">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_set_use_arvr">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="use_arvr" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
+ <method name="viewport_set_vflip">
+ <return type="void">
+ </return>
+ <argument index="0" name="viewport" type="RID">
+ </argument>
+ <argument index="1" name="enabled" type="bool">
+ </argument>
+ <description>
+ </description>
+ </method>
</methods>
<constants>
+ <constant name="NO_INDEX_ARRAY" value="-1" enum="">
+ </constant>
+ <constant name="ARRAY_WEIGHTS_SIZE" value="4" enum="">
+ </constant>
+ <constant name="CANVAS_ITEM_Z_MIN" value="-4096" enum="">
+ </constant>
+ <constant name="CANVAS_ITEM_Z_MAX" value="4096" enum="">
+ </constant>
+ <constant name="MAX_GLOW_LEVELS" value="7" enum="">
+ </constant>
+ <constant name="MAX_CURSORS" value="8" enum="">
+ </constant>
+ <constant name="MATERIAL_RENDER_PRIORITY_MIN" value="-128" enum="">
+ </constant>
+ <constant name="MATERIAL_RENDER_PRIORITY_MAX" value="127" enum="">
+ </constant>
+ <constant name="CUBEMAP_LEFT" value="0">
+ </constant>
+ <constant name="CUBEMAP_RIGHT" value="1">
+ </constant>
+ <constant name="CUBEMAP_BOTTOM" value="2">
+ </constant>
+ <constant name="CUBEMAP_TOP" value="3">
+ </constant>
+ <constant name="CUBEMAP_FRONT" value="4">
+ </constant>
+ <constant name="CUBEMAP_BACK" value="5">
+ </constant>
+ <constant name="TEXTURE_FLAG_MIPMAPS" value="1">
+ </constant>
+ <constant name="TEXTURE_FLAG_REPEAT" value="2">
+ </constant>
+ <constant name="TEXTURE_FLAG_FILTER" value="4">
+ </constant>
+ <constant name="TEXTURE_FLAG_ANISOTROPIC_FILTER" value="8">
+ </constant>
+ <constant name="TEXTURE_FLAG_CONVERT_TO_LINEAR" value="16">
+ </constant>
+ <constant name="TEXTURE_FLAG_MIRRORED_REPEAT" value="32">
+ </constant>
+ <constant name="TEXTURE_FLAG_CUBEMAP" value="2048">
+ </constant>
+ <constant name="TEXTURE_FLAG_USED_FOR_STREAMING" value="4096">
+ </constant>
+ <constant name="TEXTURE_FLAGS_DEFAULT" value="7">
+ </constant>
+ <constant name="SHADER_SPATIAL" value="0">
+ </constant>
+ <constant name="SHADER_CANVAS_ITEM" value="1">
+ </constant>
+ <constant name="SHADER_PARTICLES" value="2">
+ </constant>
+ <constant name="SHADER_MAX" value="3">
+ </constant>
+ <constant name="ARRAY_VERTEX" value="0">
+ </constant>
+ <constant name="ARRAY_NORMAL" value="1">
+ </constant>
+ <constant name="ARRAY_TANGENT" value="2">
+ </constant>
+ <constant name="ARRAY_COLOR" value="3">
+ </constant>
+ <constant name="ARRAY_TEX_UV" value="4">
+ </constant>
+ <constant name="ARRAY_TEX_UV2" value="5">
+ </constant>
+ <constant name="ARRAY_BONES" value="6">
+ </constant>
+ <constant name="ARRAY_WEIGHTS" value="7">
+ </constant>
+ <constant name="ARRAY_INDEX" value="8">
+ </constant>
+ <constant name="ARRAY_MAX" value="9">
+ </constant>
+ <constant name="ARRAY_FORMAT_VERTEX" value="1">
+ </constant>
+ <constant name="ARRAY_FORMAT_NORMAL" value="2">
+ </constant>
+ <constant name="ARRAY_FORMAT_TANGENT" value="4">
+ </constant>
+ <constant name="ARRAY_FORMAT_COLOR" value="8">
+ </constant>
+ <constant name="ARRAY_FORMAT_TEX_UV" value="16">
+ </constant>
+ <constant name="ARRAY_FORMAT_TEX_UV2" value="32">
+ </constant>
+ <constant name="ARRAY_FORMAT_BONES" value="64">
+ </constant>
+ <constant name="ARRAY_FORMAT_WEIGHTS" value="128">
+ </constant>
+ <constant name="ARRAY_FORMAT_INDEX" value="256">
+ </constant>
+ <constant name="ARRAY_COMPRESS_VERTEX" value="512">
+ </constant>
+ <constant name="ARRAY_COMPRESS_NORMAL" value="1024">
+ </constant>
+ <constant name="ARRAY_COMPRESS_TANGENT" value="2048">
+ </constant>
+ <constant name="ARRAY_COMPRESS_COLOR" value="4096">
+ </constant>
+ <constant name="ARRAY_COMPRESS_TEX_UV" value="8192">
+ </constant>
+ <constant name="ARRAY_COMPRESS_TEX_UV2" value="16384">
+ </constant>
+ <constant name="ARRAY_COMPRESS_BONES" value="32768">
+ </constant>
+ <constant name="ARRAY_COMPRESS_WEIGHTS" value="65536">
+ </constant>
+ <constant name="ARRAY_COMPRESS_INDEX" value="131072">
+ </constant>
+ <constant name="ARRAY_FLAG_USE_2D_VERTICES" value="262144">
+ </constant>
+ <constant name="ARRAY_FLAG_USE_16_BIT_BONES" value="524288">
+ </constant>
+ <constant name="ARRAY_COMPRESS_DEFAULT" value="97792">
+ </constant>
+ <constant name="PRIMITIVE_POINTS" value="0">
+ </constant>
+ <constant name="PRIMITIVE_LINES" value="1">
+ </constant>
+ <constant name="PRIMITIVE_LINE_STRIP" value="2">
+ </constant>
+ <constant name="PRIMITIVE_LINE_LOOP" value="3">
+ </constant>
+ <constant name="PRIMITIVE_TRIANGLES" value="4">
+ </constant>
+ <constant name="PRIMITIVE_TRIANGLE_STRIP" value="5">
+ </constant>
+ <constant name="PRIMITIVE_TRIANGLE_FAN" value="6">
+ </constant>
+ <constant name="PRIMITIVE_MAX" value="7">
+ </constant>
+ <constant name="BLEND_SHAPE_MODE_NORMALIZED" value="0">
+ </constant>
+ <constant name="BLEND_SHAPE_MODE_RELATIVE" value="1">
+ </constant>
+ <constant name="LIGHT_DIRECTIONAL" value="0">
+ </constant>
+ <constant name="LIGHT_OMNI" value="1">
+ </constant>
+ <constant name="LIGHT_SPOT" value="2">
+ </constant>
+ <constant name="LIGHT_PARAM_ENERGY" value="0">
+ </constant>
+ <constant name="LIGHT_PARAM_SPECULAR" value="1">
+ </constant>
+ <constant name="LIGHT_PARAM_RANGE" value="2">
+ </constant>
+ <constant name="LIGHT_PARAM_ATTENUATION" value="3">
+ </constant>
+ <constant name="LIGHT_PARAM_SPOT_ANGLE" value="4">
+ </constant>
+ <constant name="LIGHT_PARAM_SPOT_ATTENUATION" value="5">
+ </constant>
+ <constant name="LIGHT_PARAM_CONTACT_SHADOW_SIZE" value="6">
+ </constant>
+ <constant name="LIGHT_PARAM_SHADOW_MAX_DISTANCE" value="7">
+ </constant>
+ <constant name="LIGHT_PARAM_SHADOW_SPLIT_1_OFFSET" value="8">
+ </constant>
+ <constant name="LIGHT_PARAM_SHADOW_SPLIT_2_OFFSET" value="9">
+ </constant>
+ <constant name="LIGHT_PARAM_SHADOW_SPLIT_3_OFFSET" value="10">
+ </constant>
+ <constant name="LIGHT_PARAM_SHADOW_NORMAL_BIAS" value="11">
+ </constant>
+ <constant name="LIGHT_PARAM_SHADOW_BIAS" value="12">
+ </constant>
+ <constant name="LIGHT_PARAM_SHADOW_BIAS_SPLIT_SCALE" value="13">
+ </constant>
+ <constant name="LIGHT_PARAM_MAX" value="14">
+ </constant>
+ <constant name="VIEWPORT_UPDATE_DISABLED" value="0">
+ </constant>
+ <constant name="VIEWPORT_UPDATE_ONCE" value="1">
+ </constant>
+ <constant name="VIEWPORT_UPDATE_WHEN_VISIBLE" value="2">
+ </constant>
+ <constant name="VIEWPORT_UPDATE_ALWAYS" value="3">
+ </constant>
+ <constant name="VIEWPORT_CLEAR_ALWAYS" value="0">
+ </constant>
+ <constant name="VIEWPORT_CLEAR_NEVER" value="1">
+ </constant>
+ <constant name="VIEWPORT_CLEAR_ONLY_NEXT_FRAME" value="2">
+ </constant>
+ <constant name="VIEWPORT_MSAA_DISABLED" value="0">
+ </constant>
+ <constant name="VIEWPORT_MSAA_2X" value="1">
+ </constant>
+ <constant name="VIEWPORT_MSAA_4X" value="2">
+ </constant>
+ <constant name="VIEWPORT_MSAA_8X" value="3">
+ </constant>
+ <constant name="VIEWPORT_MSAA_16X" value="4">
+ </constant>
+ <constant name="VIEWPORT_USAGE_2D" value="0">
+ </constant>
+ <constant name="VIEWPORT_USAGE_2D_NO_SAMPLING" value="1">
+ </constant>
+ <constant name="VIEWPORT_USAGE_3D" value="2">
+ </constant>
+ <constant name="VIEWPORT_USAGE_3D_NO_EFFECTS" value="3">
+ </constant>
+ <constant name="VIEWPORT_RENDER_INFO_OBJECTS_IN_FRAME" value="0">
+ </constant>
+ <constant name="VIEWPORT_RENDER_INFO_VERTICES_IN_FRAME" value="1">
+ </constant>
+ <constant name="VIEWPORT_RENDER_INFO_MATERIAL_CHANGES_IN_FRAME" value="2">
+ </constant>
+ <constant name="VIEWPORT_RENDER_INFO_SHADER_CHANGES_IN_FRAME" value="3">
+ </constant>
+ <constant name="VIEWPORT_RENDER_INFO_SURFACE_CHANGES_IN_FRAME" value="4">
+ </constant>
+ <constant name="VIEWPORT_RENDER_INFO_DRAW_CALLS_IN_FRAME" value="5">
+ </constant>
+ <constant name="VIEWPORT_RENDER_INFO_MAX" value="6">
+ </constant>
+ <constant name="VIEWPORT_DEBUG_DRAW_DISABLED" value="0">
+ </constant>
+ <constant name="VIEWPORT_DEBUG_DRAW_UNSHADED" value="1">
+ </constant>
+ <constant name="VIEWPORT_DEBUG_DRAW_OVERDRAW" value="2">
+ </constant>
+ <constant name="VIEWPORT_DEBUG_DRAW_WIREFRAME" value="3">
+ </constant>
+ <constant name="SCENARIO_DEBUG_DISABLED" value="0">
+ </constant>
+ <constant name="SCENARIO_DEBUG_WIREFRAME" value="1">
+ </constant>
+ <constant name="SCENARIO_DEBUG_OVERDRAW" value="2">
+ </constant>
+ <constant name="SCENARIO_DEBUG_SHADELESS" value="3">
+ </constant>
+ <constant name="INSTANCE_NONE" value="0">
+ </constant>
+ <constant name="INSTANCE_MESH" value="1">
+ </constant>
+ <constant name="INSTANCE_MULTIMESH" value="2">
+ </constant>
+ <constant name="INSTANCE_IMMEDIATE" value="3">
+ </constant>
+ <constant name="INSTANCE_PARTICLES" value="4">
+ </constant>
+ <constant name="INSTANCE_LIGHT" value="5">
+ </constant>
+ <constant name="INSTANCE_REFLECTION_PROBE" value="6">
+ </constant>
+ <constant name="INSTANCE_GI_PROBE" value="7">
+ </constant>
+ <constant name="INSTANCE_MAX" value="8">
+ </constant>
+ <constant name="INSTANCE_GEOMETRY_MASK" value="30">
+ </constant>
+ <constant name="NINE_PATCH_STRETCH" value="0">
+ </constant>
+ <constant name="NINE_PATCH_TILE" value="1">
+ </constant>
+ <constant name="NINE_PATCH_TILE_FIT" value="2">
+ </constant>
+ <constant name="CANVAS_LIGHT_MODE_ADD" value="0">
+ </constant>
+ <constant name="CANVAS_LIGHT_MODE_SUB" value="1">
+ </constant>
+ <constant name="CANVAS_LIGHT_MODE_MIX" value="2">
+ </constant>
+ <constant name="CANVAS_LIGHT_MODE_MASK" value="3">
+ </constant>
+ <constant name="CANVAS_LIGHT_FILTER_NONE" value="0">
+ </constant>
+ <constant name="CANVAS_LIGHT_FILTER_PCF3" value="1">
+ </constant>
+ <constant name="CANVAS_LIGHT_FILTER_PCF5" value="2">
+ </constant>
+ <constant name="CANVAS_LIGHT_FILTER_PCF7" value="3">
+ </constant>
+ <constant name="CANVAS_LIGHT_FILTER_PCF9" value="4">
+ </constant>
+ <constant name="CANVAS_LIGHT_FILTER_PCF13" value="5">
+ </constant>
+ <constant name="CANVAS_OCCLUDER_POLYGON_CULL_DISABLED" value="0">
+ </constant>
+ <constant name="CANVAS_OCCLUDER_POLYGON_CULL_CLOCKWISE" value="1">
+ </constant>
+ <constant name="CANVAS_OCCLUDER_POLYGON_CULL_COUNTER_CLOCKWISE" value="2">
+ </constant>
+ <constant name="INFO_OBJECTS_IN_FRAME" value="0">
+ </constant>
+ <constant name="INFO_VERTICES_IN_FRAME" value="1">
+ </constant>
+ <constant name="INFO_MATERIAL_CHANGES_IN_FRAME" value="2">
+ </constant>
+ <constant name="INFO_SHADER_CHANGES_IN_FRAME" value="3">
+ </constant>
+ <constant name="INFO_SURFACE_CHANGES_IN_FRAME" value="4">
+ </constant>
+ <constant name="INFO_DRAW_CALLS_IN_FRAME" value="5">
+ </constant>
+ <constant name="INFO_USAGE_VIDEO_MEM_TOTAL" value="6">
+ </constant>
+ <constant name="INFO_VIDEO_MEM_USED" value="7">
+ </constant>
+ <constant name="INFO_TEXTURE_MEM_USED" value="8">
+ </constant>
+ <constant name="INFO_VERTEX_MEM_USED" value="9">
+ </constant>
+ <constant name="FEATURE_SHADERS" value="0">
+ </constant>
+ <constant name="FEATURE_MULTITHREADED" value="1">
+ </constant>
</constants>
</class>
diff --git a/doc/classes/WeakRef.xml b/doc/classes/WeakRef.xml
index 1071a40c3b..23629881d3 100644
--- a/doc/classes/WeakRef.xml
+++ b/doc/classes/WeakRef.xml
@@ -4,7 +4,7 @@
Holds an [Object], but does not contribute to the reference count if the object is a reference.
</brief_description>
<description>
- A weakref can hold a [Reference], without contributing to the reference counter. A weakref can be created from an [Object] using [method @GDScript.weakref]. If this object is not a reference, weakref still works, however, it does not have any effect on the object. Weakrefs are useful in cases where multiple classes have variables that refer to eachother. Without weakrefs, using these classes could lead to memory leaks, since both references keep eachother from being released. Making part of the variables a weakref can prevent this cyclic dependency, and allows the references to be released.
+ A weakref can hold a [Reference], without contributing to the reference counter. A weakref can be created from an [Object] using [method @GDScript.weakref]. If this object is not a reference, weakref still works, however, it does not have any effect on the object. Weakrefs are useful in cases where multiple classes have variables that refer to each other. Without weakrefs, using these classes could lead to memory leaks, since both references keep each other from being released. Making part of the variables a weakref can prevent this cyclic dependency, and allows the references to be released.
</description>
<tutorials>
</tutorials>
diff --git a/doc/classes/WorldEnvironment.xml b/doc/classes/WorldEnvironment.xml
index a9450c1743..561cd09f43 100644
--- a/doc/classes/WorldEnvironment.xml
+++ b/doc/classes/WorldEnvironment.xml
@@ -4,7 +4,7 @@
Sets environment properties for the entire scene
</brief_description>
<description>
- The [WorldEnvironment] node can be added to a scene in order to set default [Environment] variables for the scene. The [WorldEnvironment] can be overridden by an [Environment] node set on the current [Camera]. Additionally, only one [WorldEnvironment] may be instanced in a given scene at a time. The [WorldEnvironment] allows the user to specify default lighting parameters (e.g. ambient lighting), various post-processing effects (e.g. SSAO, DOF, Tonemapping), and how to draw the background (e.g. solid color, skybox).
+ The [code]WorldEnvironment[/code] node can be added to a scene in order to set default [Environment] variables for the scene. The [code]WorldEnvironment[/code] can be overridden by an [Environment] node set on the current [Camera]. Additionally, only one [code]WorldEnvironment[/code] may be instanced in a given scene at a time. The [code]WorldEnvironment[/code] allows the user to specify default lighting parameters (e.g. ambient lighting), various post-processing effects (e.g. SSAO, DOF, Tonemapping), and how to draw the background (e.g. solid color, skybox).
</description>
<tutorials>
</tutorials>
diff --git a/doc/tools/doc_status.py b/doc/tools/doc_status.py
index e89b49eb4d..170ded9f50 100644
--- a/doc/tools/doc_status.py
+++ b/doc/tools/doc_status.py
@@ -250,15 +250,16 @@ class ClassStatus:
for tag in list(c):
if tag.tag in ['methods']:
for sub_tag in list(tag):
- methods.append(sub_tag.find('name'))
+ methods.append(sub_tag.attrib['name'])
if tag.tag in ['members']:
for sub_tag in list(tag):
try:
- methods.remove(sub_tag.find('setter'))
- methods.remove(sub_tag.find('getter'))
+ if(sub_tag.attrib['setter'].startswith('_') == False):
+ methods.remove(sub_tag.attrib['setter'])
+ if(sub_tag.attrib['getter'].startswith('_') == False):
+ methods.remove(sub_tag.attrib['getter'])
except:
pass
-
for tag in list(c):
if tag.tag == 'brief_description':
@@ -269,7 +270,7 @@ class ClassStatus:
elif tag.tag in ['methods', 'signals']:
for sub_tag in list(tag):
- if sub_tag.find('name') in methods or tag.tag == 'signals':
+ if sub_tag.attrib['name'] in methods or tag.tag == 'signals':
descr = sub_tag.find('description')
status.progresses[tag.tag].increment(len(descr.text.strip()) > 0)
elif tag.tag in ['constants', 'members']:
diff --git a/doc/tools/makerst.py b/doc/tools/makerst.py
index c4dff588b0..dc015d781b 100644
--- a/doc/tools/makerst.py
+++ b/doc/tools/makerst.py
@@ -14,14 +14,14 @@ for arg in sys.argv[1:]:
input_list.append(arg)
if len(input_list) < 1:
- print 'usage: makerst.py <path to folders> and/or <path to .xml files> (order of arguments irrelevant)'
- print 'example: makerst.py "../../modules/" "../classes" path_to/some_class.xml'
+ print('usage: makerst.py <path to folders> and/or <path to .xml files> (order of arguments irrelevant)')
+ print('example: makerst.py "../../modules/" "../classes" path_to/some_class.xml')
sys.exit(0)
def validate_tag(elem, tag):
if elem.tag != tag:
- print "Tag mismatch, expected '" + tag + "', got " + elem.tag
+ print("Tag mismatch, expected '" + tag + "', got " + elem.tag)
sys.exit(255)
@@ -41,7 +41,7 @@ def make_class_list(class_list, columns):
f = codecs.open('class_list.rst', 'wb', 'utf-8')
prev = 0
col_max = len(class_list) / columns + 1
- print ('col max is ', col_max)
+ print(('col max is ', col_max))
col_count = 0
row_count = 0
last_initial = ''
@@ -189,8 +189,11 @@ def rstize_text(text, cclass):
post_text = text[endq_pos + 1:]
tag_text = text[pos + 1:endq_pos]
+ escape_post = False
+
if tag_text in class_names:
tag_text = make_type(tag_text)
+ escape_post = True
else: # command
cmd = tag_text
space_pos = tag_text.find(' ')
@@ -209,7 +212,7 @@ def rstize_text(text, cclass):
cmd = tag_text[:space_pos]
param = tag_text[space_pos + 1:]
tag_text = param
- elif cmd.find('method') == 0:
+ elif cmd.find('method') == 0 or cmd.find('member') == 0 or cmd.find('signal') == 0:
cmd = tag_text[:space_pos]
param = tag_text[space_pos + 1:]
@@ -218,12 +221,14 @@ def rstize_text(text, cclass):
tag_text = ':ref:`' + class_param + '.' + method_param + '<class_' + class_param + '_' + method_param + '>`'
else:
tag_text = ':ref:`' + param + '<class_' + cclass + "_" + param + '>`'
+ escape_post = True
elif cmd.find('image=') == 0:
tag_text = "" # '![](' + cmd[6:] + ')'
elif cmd.find('url=') == 0:
tag_text = ':ref:`' + cmd[4:] + '<' + cmd[4:] + ">`"
elif cmd == '/url':
- tag_text = ')'
+ tag_text = ''
+ escape_post = True
elif cmd == 'center':
tag_text = ''
elif cmd == '/center':
@@ -248,6 +253,11 @@ def rstize_text(text, cclass):
inside_code = True
else:
tag_text = make_type(tag_text)
+ escape_post = True
+
+ # Properly escape things like `[Node]s`
+ if escape_post and post_text and post_text[0].isalnum(): # not punctuation, escape
+ post_text = '\ ' + post_text
text = pre_text + tag_text + post_text
pos = len(pre_text) + len(tag_text)
@@ -300,16 +310,11 @@ def make_method(
if declare or pp == None:
- # span.attrib["class"]="funcdecl"
- # a=ET.SubElement(span,"a")
- # a.attrib["name"]=name+"_"+m.attrib["name"]
- # a.text=name+"::"+m.attrib["name"]
-
- s = ' **' + m.attrib['name'] + '** '
+ s = '**' + m.attrib['name'] + '** '
else:
s = ':ref:`' + m.attrib['name'] + '<class_' + cname + "_" + m.attrib['name'] + '>` '
- s += ' **(**'
+ s += '**(**'
argfound = False
for a in mdata['argidx']:
arg = mdata[a]
@@ -329,10 +334,6 @@ def make_method(
if 'default' in arg.attrib:
s += '=' + arg.attrib['default']
- argfound = True
-
- if argfound:
- s += ' '
s += ' **)**'
if 'qualifiers' in m.attrib:
@@ -445,7 +446,9 @@ def make_rst_class(node):
if events != None and len(list(events)) > 0:
f.write(make_heading('Signals', '-'))
for m in list(events):
+ f.write(".. _class_" + name + "_" + m.attrib['name'] + ":\n\n")
make_method(f, node.attrib['name'], m, True, name, True)
+ f.write('\n')
d = m.find('description')
if d == None or d.text.strip() == '':
continue
@@ -459,12 +462,14 @@ def make_rst_class(node):
f.write(make_heading('Member Variables', '-'))
for c in list(members):
+ # Leading two spaces necessary to prevent breaking the <ul>
+ f.write(" .. _class_" + name + "_" + c.attrib['name'] + ":\n\n")
s = '- '
s += make_type(c.attrib['type']) + ' '
s += '**' + c.attrib['name'] + '**'
if c.text.strip() != '':
- s += ' - ' + c.text.strip()
- f.write(s + '\n')
+ s += ' - ' + rstize_text(c.text.strip(), name)
+ f.write(s + '\n\n')
f.write('\n')
constants = node.find('constants')
@@ -507,8 +512,8 @@ for path in input_list:
for subdir, dirs, _ in os.walk(path):
if 'doc_classes' in dirs:
doc_dir = os.path.join(subdir, 'doc_classes')
- class_file_name = [f for f in os.listdir(doc_dir) if f.endswith('.xml')][0]
- file_list.append(os.path.join(doc_dir, class_file_name))
+ class_file_names = [f for f in os.listdir(doc_dir) if f.endswith('.xml')]
+ file_list += [os.path.join(doc_dir, f) for f in class_file_names]
elif not os.path.isfile(path):
file_list += [os.path.join(path, f) for f in os.listdir(path) if f.endswith('.xml')]
elif os.path.isfile(path) and path.endswith('.xml'):
@@ -519,7 +524,7 @@ for file in file_list:
doc = tree.getroot()
if 'version' not in doc.attrib:
- print "Version missing from 'doc'"
+ print("Version missing from 'doc'")
sys.exit(255)
version = doc.attrib['version']
diff --git a/drivers/gles3/rasterizer_scene_gles3.cpp b/drivers/gles3/rasterizer_scene_gles3.cpp
index ba8d490762..8ec988bec1 100644
--- a/drivers/gles3/rasterizer_scene_gles3.cpp
+++ b/drivers/gles3/rasterizer_scene_gles3.cpp
@@ -895,7 +895,7 @@ void RasterizerSceneGLES3::environment_set_ssr(RID p_env, bool p_enable, int p_m
env->ssr_roughness = p_roughness;
}
-void RasterizerSceneGLES3::environment_set_ssao(RID p_env, bool p_enable, float p_radius, float p_intensity, float p_radius2, float p_intensity2, float p_bias, float p_light_affect, const Color &p_color, bool p_blur) {
+void RasterizerSceneGLES3::environment_set_ssao(RID p_env, bool p_enable, float p_radius, float p_intensity, float p_radius2, float p_intensity2, float p_bias, float p_light_affect, const Color &p_color, VS::EnvironmentSSAOQuality p_quality, VisualServer::EnvironmentSSAOBlur p_blur, float p_bilateral_sharpness) {
Environment *env = environment_owner.getornull(p_env);
ERR_FAIL_COND(!env);
@@ -909,6 +909,8 @@ void RasterizerSceneGLES3::environment_set_ssao(RID p_env, bool p_enable, float
env->ssao_light_affect = p_light_affect;
env->ssao_color = p_color;
env->ssao_filter = p_blur;
+ env->ssao_quality = p_quality;
+ env->ssao_bilateral_sharpness = p_bilateral_sharpness;
}
void RasterizerSceneGLES3::environment_set_tonemap(RID p_env, VS::EnvironmentToneMapper p_tone_mapper, float p_exposure, float p_white, bool p_auto_exposure, float p_min_luminance, float p_max_luminance, float p_auto_exp_speed, float p_auto_exp_scale) {
@@ -1132,9 +1134,9 @@ bool RasterizerSceneGLES3::_setup_material(RasterizerStorageGLES3::Material *p_m
state.current_depth_draw = p_material->shader->spatial.depth_draw_mode;
}
-//glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
+ //glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
-/*
+ /*
if (p_material->flags[VS::MATERIAL_FLAG_WIREFRAME])
glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);
else
@@ -2350,22 +2352,7 @@ void RasterizerSceneGLES3::_draw_sky(RasterizerStorageGLES3::Sky *p_sky, const C
glDepthFunc(GL_LEQUAL);
glColorMask(1, 1, 1, 1);
- float flip_sign = p_vflip ? -1 : 1;
-
- Vector3 vertices[8] = {
- Vector3(-1, -1 * flip_sign, 1),
- Vector3(0, 1, 0),
- Vector3(1, -1 * flip_sign, 1),
- Vector3(1, 1, 0),
- Vector3(1, 1 * flip_sign, 1),
- Vector3(1, 0, 0),
- Vector3(-1, 1 * flip_sign, 1),
- Vector3(0, 0, 0)
-
- };
-
- //sky uv vectors
- float vw, vh, zn;
+ // Camera
CameraMatrix camera;
if (p_custom_fov) {
@@ -2380,17 +2367,39 @@ void RasterizerSceneGLES3::_draw_sky(RasterizerStorageGLES3::Sky *p_sky, const C
camera = p_projection;
}
- camera.get_viewport_size(vw, vh);
- zn = p_projection.get_z_near();
+ float flip_sign = p_vflip ? -1 : 1;
- for (int i = 0; i < 4; i++) {
+ /*
+ If matrix[2][0] or matrix[2][1] we're dealing with an asymmetrical projection matrix. This is the case for stereoscopic rendering (i.e. VR).
+ To ensure the image rendered is perspective correct we need to move some logic into the shader. For this the USE_ASYM_PANO option is introduced.
+ It also means the uv coordinates are ignored in this mode and we don't need our loop.
+ */
+ bool asymmetrical = ((camera.matrix[2][0] != 0.0) || (camera.matrix[2][1] != 0.0));
+
+ Vector3 vertices[8] = {
+ Vector3(-1, -1 * flip_sign, 1),
+ Vector3(0, 1, 0),
+ Vector3(1, -1 * flip_sign, 1),
+ Vector3(1, 1, 0),
+ Vector3(1, 1 * flip_sign, 1),
+ Vector3(1, 0, 0),
+ Vector3(-1, 1 * flip_sign, 1),
+ Vector3(0, 0, 0)
+ };
- Vector3 uv = vertices[i * 2 + 1];
- uv.x = (uv.x * 2.0 - 1.0) * vw;
- uv.y = -(uv.y * 2.0 - 1.0) * vh;
- uv.z = -zn;
- vertices[i * 2 + 1] = p_transform.basis.xform(uv).normalized();
- vertices[i * 2 + 1].z = -vertices[i * 2 + 1].z;
+ if (!asymmetrical) {
+ float vw, vh, zn;
+ camera.get_viewport_size(vw, vh);
+ zn = p_projection.get_z_near();
+
+ for (int i = 0; i < 4; i++) {
+ Vector3 uv = vertices[i * 2 + 1];
+ uv.x = (uv.x * 2.0 - 1.0) * vw;
+ uv.y = -(uv.y * 2.0 - 1.0) * vh;
+ uv.z = -zn;
+ vertices[i * 2 + 1] = p_transform.basis.xform(uv).normalized();
+ vertices[i * 2 + 1].z = -vertices[i * 2 + 1].z;
+ }
}
glBindBuffer(GL_ARRAY_BUFFER, state.sky_verts);
@@ -2399,16 +2408,24 @@ void RasterizerSceneGLES3::_draw_sky(RasterizerStorageGLES3::Sky *p_sky, const C
glBindVertexArray(state.sky_array);
- storage->shaders.copy.set_conditional(CopyShaderGLES3::USE_PANORAMA, true);
+ storage->shaders.copy.set_conditional(CopyShaderGLES3::USE_ASYM_PANO, asymmetrical);
+ storage->shaders.copy.set_conditional(CopyShaderGLES3::USE_PANORAMA, !asymmetrical);
storage->shaders.copy.set_conditional(CopyShaderGLES3::USE_MULTIPLIER, true);
storage->shaders.copy.bind();
storage->shaders.copy.set_uniform(CopyShaderGLES3::MULTIPLIER, p_energy);
+ if (asymmetrical) {
+ // pack the bits we need from our projection matrix
+ storage->shaders.copy.set_uniform(CopyShaderGLES3::ASYM_PROJ, camera.matrix[2][0], camera.matrix[0][0], camera.matrix[2][1], camera.matrix[1][1]);
+ ///@TODO I couldn't get mat3 + p_transform.basis to work, that would be better here.
+ storage->shaders.copy.set_uniform(CopyShaderGLES3::PANO_TRANSFORM, p_transform);
+ }
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
glBindVertexArray(0);
glColorMask(1, 1, 1, 1);
+ storage->shaders.copy.set_conditional(CopyShaderGLES3::USE_ASYM_PANO, false);
storage->shaders.copy.set_conditional(CopyShaderGLES3::USE_MULTIPLIER, false);
storage->shaders.copy.set_conditional(CopyShaderGLES3::USE_PANORAMA, false);
}
@@ -2554,8 +2571,8 @@ void RasterizerSceneGLES3::_setup_directional_light(int p_index, const Transform
ubo_data.light_direction_attenuation[3] = 1.0;
ubo_data.light_params[0] = 0;
- ubo_data.light_params[1] = li->light_ptr->param[VS::LIGHT_PARAM_SPECULAR];
- ubo_data.light_params[2] = 0;
+ ubo_data.light_params[1] = 0;
+ ubo_data.light_params[2] = li->light_ptr->param[VS::LIGHT_PARAM_SPECULAR];
ubo_data.light_params[3] = 0;
Color shadow_color = li->light_ptr->shadow_color.to_linear();
@@ -3171,6 +3188,15 @@ void RasterizerSceneGLES3::_render_mrts(Environment *env, const CameraMatrix &p_
glDisable(GL_CULL_FACE);
glDisable(GL_BLEND);
+ if (env->ssao_enabled || env->ssr_enabled) {
+
+ //copy normal and roughness to effect buffer
+ glBindFramebuffer(GL_READ_FRAMEBUFFER, storage->frame.current_rt->buffers.fbo);
+ glReadBuffer(GL_COLOR_ATTACHMENT2);
+ glBindFramebuffer(GL_DRAW_FRAMEBUFFER, storage->frame.current_rt->buffers.effect_fbo);
+ glBlitFramebuffer(0, 0, storage->frame.current_rt->width, storage->frame.current_rt->height, 0, 0, storage->frame.current_rt->width, storage->frame.current_rt->height, GL_COLOR_BUFFER_BIT, GL_NEAREST);
+ }
+
if (env->ssao_enabled) {
//copy diffuse to front buffer
glBindFramebuffer(GL_READ_FRAMEBUFFER, storage->frame.current_rt->buffers.fbo);
@@ -3220,6 +3246,8 @@ void RasterizerSceneGLES3::_render_mrts(Environment *env, const CameraMatrix &p_
// do SSAO!
state.ssao_shader.set_conditional(SsaoShaderGLES3::ENABLE_RADIUS2, env->ssao_radius2 > 0.001);
state.ssao_shader.set_conditional(SsaoShaderGLES3::USE_ORTHOGONAL_PROJECTION, p_cam_projection.is_orthogonal());
+ state.ssao_shader.set_conditional(SsaoShaderGLES3::SSAO_QUALITY_LOW, env->ssao_quality == VS::ENV_SSAO_QUALITY_LOW);
+ state.ssao_shader.set_conditional(SsaoShaderGLES3::SSAO_QUALITY_HIGH, env->ssao_quality == VS::ENV_SSAO_QUALITY_HIGH);
state.ssao_shader.bind();
state.ssao_shader.set_uniform(SsaoShaderGLES3::CAMERA_Z_FAR, p_cam_projection.get_z_far());
state.ssao_shader.set_uniform(SsaoShaderGLES3::CAMERA_Z_NEAR, p_cam_projection.get_z_near());
@@ -3272,6 +3300,9 @@ void RasterizerSceneGLES3::_render_mrts(Environment *env, const CameraMatrix &p_
state.ssao_blur_shader.set_uniform(SsaoBlurShaderGLES3::CAMERA_Z_FAR, p_cam_projection.get_z_far());
state.ssao_blur_shader.set_uniform(SsaoBlurShaderGLES3::CAMERA_Z_NEAR, p_cam_projection.get_z_near());
+ state.ssao_blur_shader.set_uniform(SsaoBlurShaderGLES3::EDGE_SHARPNESS, env->ssao_bilateral_sharpness);
+ state.ssao_blur_shader.set_uniform(SsaoBlurShaderGLES3::FILTER_SCALE, int(env->ssao_filter));
+
GLint axis[2] = { i, 1 - i };
glUniform2iv(state.ssao_blur_shader.get_uniform(SsaoBlurShaderGLES3::AXIS), 1, axis);
glUniform2iv(state.ssao_blur_shader.get_uniform(SsaoBlurShaderGLES3::SCREEN_SIZE), 1, ss);
@@ -3280,6 +3311,8 @@ void RasterizerSceneGLES3::_render_mrts(Environment *env, const CameraMatrix &p_
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->effects.ssao.blur_red[i]);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->depth);
+ glActiveTexture(GL_TEXTURE2);
+ glBindTexture(GL_TEXTURE_2D, storage->frame.current_rt->buffers.effect);
glBindFramebuffer(GL_FRAMEBUFFER, storage->frame.current_rt->effects.ssao.blur_fbo[1 - i]);
if (i == 0) {
glClearBufferfv(GL_COLOR, 0, white.components); // specular
@@ -3371,12 +3404,6 @@ void RasterizerSceneGLES3::_render_mrts(Environment *env, const CameraMatrix &p_
if (env->ssr_enabled) {
- //copy normal and roughness to effect buffer
- glBindFramebuffer(GL_READ_FRAMEBUFFER, storage->frame.current_rt->buffers.fbo);
- glReadBuffer(GL_COLOR_ATTACHMENT2);
- glBindFramebuffer(GL_DRAW_FRAMEBUFFER, storage->frame.current_rt->buffers.effect_fbo);
- glBlitFramebuffer(0, 0, storage->frame.current_rt->width, storage->frame.current_rt->height, 0, 0, storage->frame.current_rt->width, storage->frame.current_rt->height, GL_COLOR_BUFFER_BIT, GL_NEAREST);
-
//blur diffuse into effect mipmaps using separatable convolution
//storage->shaders.copy.set_conditional(CopyShaderGLES3::GAUSSIAN_HORIZONTAL,true);
_blur_effect_buffer();
@@ -3996,6 +4023,8 @@ void RasterizerSceneGLES3::render_scene(const Transform &p_cam_transform, const
state.ubo_data.shadow_dual_paraboloid_render_side = 0;
state.ubo_data.shadow_dual_paraboloid_render_zfar = 0;
+ p_cam_projection.get_viewport_size(state.ubo_data.viewport_size[0], state.ubo_data.viewport_size[1]);
+
if (storage->frame.current_rt) {
state.ubo_data.screen_pixel_size[0] = 1.0 / storage->frame.current_rt->width;
state.ubo_data.screen_pixel_size[1] = 1.0 / storage->frame.current_rt->height;
diff --git a/drivers/gles3/rasterizer_scene_gles3.h b/drivers/gles3/rasterizer_scene_gles3.h
index 28a5cef0ee..69b43c7813 100644
--- a/drivers/gles3/rasterizer_scene_gles3.h
+++ b/drivers/gles3/rasterizer_scene_gles3.h
@@ -124,6 +124,7 @@ public:
float z_slope_scale;
float shadow_dual_paraboloid_render_zfar;
float shadow_dual_paraboloid_render_side;
+ float viewport_size[2];
float screen_pixel_size[2];
float shadow_atlas_pixel_size[2];
float shadow_directional_pixel_size[2];
@@ -143,7 +144,7 @@ public:
float fog_height_min;
float fog_height_max;
float fog_height_curve;
- uint8_t padding[8];
+ // make sure this struct is padded to be a multiple of 16 bytes for webgl
} ubo_data;
@@ -379,7 +380,9 @@ public:
float ssao_bias;
float ssao_light_affect;
Color ssao_color;
- bool ssao_filter;
+ VS::EnvironmentSSAOQuality ssao_quality;
+ float ssao_bilateral_sharpness;
+ VS::EnvironmentSSAOBlur ssao_filter;
bool glow_enabled;
int glow_levels;
@@ -456,7 +459,9 @@ public:
ssao_radius2 = 0.0;
ssao_bias = 0.01;
ssao_light_affect = 0;
- ssao_filter = true;
+ ssao_filter = VS::ENV_SSAO_BLUR_3x3;
+ ssao_quality = VS::ENV_SSAO_QUALITY_LOW;
+ ssao_bilateral_sharpness = 4;
tone_mapper = VS::ENV_TONE_MAPPER_LINEAR;
tone_mapper_exposure = 1.0;
@@ -532,7 +537,7 @@ public:
virtual void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture);
virtual void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_in, float p_fade_out, float p_depth_tolerance, bool p_roughness);
- virtual void environment_set_ssao(RID p_env, bool p_enable, float p_radius, float p_intensity, float p_radius2, float p_intensity2, float p_bias, float p_light_affect, const Color &p_color, bool p_blur);
+ virtual void environment_set_ssao(RID p_env, bool p_enable, float p_radius, float p_intensity, float p_radius2, float p_intensity2, float p_bias, float p_light_affect, const Color &p_color, VS::EnvironmentSSAOQuality p_quality, VS::EnvironmentSSAOBlur p_blur, float p_bilateral_sharpness);
virtual void environment_set_tonemap(RID p_env, VS::EnvironmentToneMapper p_tone_mapper, float p_exposure, float p_white, bool p_auto_exposure, float p_min_luminance, float p_max_luminance, float p_auto_exp_speed, float p_auto_exp_scale);
diff --git a/drivers/gles3/rasterizer_storage_gles3.cpp b/drivers/gles3/rasterizer_storage_gles3.cpp
index 44a9909bd7..296d945cda 100644
--- a/drivers/gles3/rasterizer_storage_gles3.cpp
+++ b/drivers/gles3/rasterizer_storage_gles3.cpp
@@ -2430,7 +2430,8 @@ void RasterizerStorageGLES3::_update_material(Material *material) {
if (material->shader && material->shader->mode == VS::SHADER_SPATIAL) {
- if (!material->shader->spatial.uses_alpha && material->shader->spatial.blend_mode == Shader::Spatial::BLEND_MODE_MIX) {
+ if (material->shader->spatial.blend_mode == Shader::Spatial::BLEND_MODE_MIX &&
+ (!material->shader->spatial.uses_alpha || (material->shader->spatial.uses_alpha && material->shader->spatial.depth_draw_mode == Shader::Spatial::DEPTH_DRAW_ALPHA_PREPASS))) {
can_cast_shadow = true;
}
diff --git a/drivers/gles3/shader_compiler_gles3.cpp b/drivers/gles3/shader_compiler_gles3.cpp
index 91159e3381..ad08c59de8 100644
--- a/drivers/gles3/shader_compiler_gles3.cpp
+++ b/drivers/gles3/shader_compiler_gles3.cpp
@@ -766,10 +766,10 @@ ShaderCompilerGLES3::ShaderCompilerGLES3() {
//builtins
actions[VS::SHADER_SPATIAL].renames["TIME"] = "time";
- //actions[VS::SHADER_SPATIAL].renames["VIEWPORT_SIZE"]=ShaderLanguage::TYPE_VEC2;
+ actions[VS::SHADER_SPATIAL].renames["VIEWPORT_SIZE"] = "viewport_size";
actions[VS::SHADER_SPATIAL].renames["FRAGCOORD"] = "gl_FragCoord";
- actions[VS::SHADER_SPATIAL].renames["FRONT_FACING"] = "gl_FrotFacing";
+ actions[VS::SHADER_SPATIAL].renames["FRONT_FACING"] = "gl_FrontFacing";
actions[VS::SHADER_SPATIAL].renames["NORMALMAP"] = "normalmap";
actions[VS::SHADER_SPATIAL].renames["NORMALMAP_DEPTH"] = "normaldepth";
actions[VS::SHADER_SPATIAL].renames["ALBEDO"] = "albedo";
@@ -838,6 +838,7 @@ ShaderCompilerGLES3::ShaderCompilerGLES3() {
actions[VS::SHADER_SPATIAL].render_mode_defines["diffuse_lambert_wrap"] = "#define DIFFUSE_LAMBERT_WRAP\n";
actions[VS::SHADER_SPATIAL].render_mode_defines["diffuse_toon"] = "#define DIFFUSE_TOON\n";
+ actions[VS::SHADER_SPATIAL].render_mode_defines["specular_schlick_ggx"] = "#define SPECULAR_SCHLICK_GGX\n";
actions[VS::SHADER_SPATIAL].render_mode_defines["specular_blinn"] = "#define SPECULAR_BLINN\n";
actions[VS::SHADER_SPATIAL].render_mode_defines["specular_phong"] = "#define SPECULAR_PHONG\n";
actions[VS::SHADER_SPATIAL].render_mode_defines["specular_toon"] = "#define SPECULAR_TOON\n";
diff --git a/drivers/gles3/shaders/copy.glsl b/drivers/gles3/shaders/copy.glsl
index d33193ee50..743fe122d1 100644
--- a/drivers/gles3/shaders/copy.glsl
+++ b/drivers/gles3/shaders/copy.glsl
@@ -27,6 +27,8 @@ void main() {
#if defined(USE_CUBEMAP) || defined(USE_PANORAMA)
cube_interp = cube_in;
+#elif defined(USE_ASYM_PANO)
+ uv_interp = vertex_attrib.xy;
#else
uv_interp = uv_in;
#ifdef V_FLIP
@@ -59,6 +61,11 @@ in vec3 cube_interp;
in vec2 uv_interp;
#endif
+#ifdef USE_ASYM_PANO
+uniform highp mat4 pano_transform;
+uniform highp vec4 asym_proj;
+#endif
+
#ifdef USE_CUBEMAP
uniform samplerCube source_cube; //texunit:0
#else
@@ -70,7 +77,7 @@ uniform sampler2D source; //texunit:0
uniform float multiplier;
#endif
-#ifdef USE_PANORAMA
+#if defined(USE_PANORAMA) || defined(USE_ASYM_PANO)
vec4 texturePanorama(vec3 normal,sampler2D pano ) {
@@ -122,6 +129,21 @@ void main() {
vec4 color = texturePanorama( normalize(cube_interp), source );
+#elif defined(USE_ASYM_PANO)
+
+ // When an assymetrical projection matrix is used (applicable for stereoscopic rendering i.e. VR) we need to do this calculation per fragment to get a perspective correct result.
+ // Note that we're ignoring the x-offset for IPD, with Z sufficiently in the distance it becomes neglectible, as a result we could probably just set cube_normal.z to -1.
+ // The Matrix[2][0] (= asym_proj.x) and Matrix[2][1] (= asym_proj.z) values are what provide the right shift in the image.
+
+ vec3 cube_normal;
+ cube_normal.z = -1000000.0;
+ cube_normal.x = (cube_normal.z * (-uv_interp.x - asym_proj.x)) / asym_proj.y;
+ cube_normal.y = (cube_normal.z * (-uv_interp.y - asym_proj.z)) / asym_proj.a;
+ cube_normal = mat3(pano_transform) * cube_normal;
+ cube_normal.z = -cube_normal.z;
+
+ vec4 color = texturePanorama( normalize(cube_normal.xyz), source );
+
#elif defined(USE_CUBEMAP)
vec4 color = texture( source_cube, normalize(cube_interp) );
diff --git a/drivers/gles3/shaders/scene.glsl b/drivers/gles3/shaders/scene.glsl
index 341a5bf2c7..9880663143 100644
--- a/drivers/gles3/shaders/scene.glsl
+++ b/drivers/gles3/shaders/scene.glsl
@@ -80,6 +80,7 @@ layout(std140) uniform SceneData { //ubo:0
highp float shadow_dual_paraboloid_render_zfar;
highp float shadow_dual_paraboloid_render_side;
+ highp vec2 viewport_size;
highp vec2 screen_pixel_size;
highp vec2 shadow_atlas_pixel_size;
highp vec2 directional_shadow_pixel_size;
@@ -566,6 +567,7 @@ in vec3 normal_interp;
uniform bool no_ambient_light;
+
#ifdef USE_RADIANCE_MAP
@@ -663,6 +665,7 @@ layout(std140) uniform SceneData {
highp float shadow_dual_paraboloid_render_zfar;
highp float shadow_dual_paraboloid_render_side;
+ highp vec2 viewport_size;
highp vec2 screen_pixel_size;
highp vec2 shadow_atlas_pixel_size;
highp vec2 directional_shadow_pixel_size;
@@ -865,11 +868,57 @@ float contact_shadow_compute(vec3 pos, vec3 dir, float max_distance) {
#endif
-// GGX Specular
-// Source: http://www.filmicworlds.com/images/ggx-opt/optimized-ggx.hlsl
-float G1V(float dotNV, float k)
-{
- return 1.0 / (dotNV * (1.0 - k) + k);
+
+// This returns the G_GGX function divided by 2 cos_theta_m, where in practice cos_theta_m is either N.L or N.V.
+// We're dividing this factor off because the overall term we'll end up looks like
+// (see, for example, the first unnumbered equation in B. Burley, "Physically Based Shading at Disney", SIGGRAPH 2012):
+//
+// F(L.V) D(N.H) G(N.L) G(N.V) / (4 N.L N.V)
+//
+// We're basically regouping this as
+//
+// F(L.V) D(N.H) [G(N.L)/(2 N.L)] [G(N.V) / (2 N.V)]
+//
+// and thus, this function implements the [G(N.m)/(2 N.m)] part with m = L or V.
+//
+// The contents of the D and G (G1) functions (GGX) are taken from
+// E. Heitz, "Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs", J. Comp. Graph. Tech. 3 (2) (2014).
+// Eqns 71-72 and 85-86 (see also Eqns 43 and 80).
+
+float G_GGX_2cos(float cos_theta_m, float alpha) {
+ // Schlick's approximation
+ // C. Schlick, "An Inexpensive BRDF Model for Physically-based Rendering", Computer Graphics Forum. 13 (3): 233 (1994)
+ // Eq. (19), although see Heitz (2014) the about the problems with his derivation.
+ // It nevertheless approximates GGX well with k = alpha/2.
+ float k = 0.5*alpha;
+ return 0.5 / (cos_theta_m * (1.0 - k) + k);
+
+ // float cos2 = cos_theta_m*cos_theta_m;
+ // float sin2 = (1.0-cos2);
+ // return 1.0 /( cos_theta_m + sqrt(cos2 + alpha*alpha*sin2) );
+}
+
+float D_GGX(float cos_theta_m, float alpha) {
+ float alpha2 = alpha*alpha;
+ float d = 1.0 + (alpha2-1.0)*cos_theta_m*cos_theta_m;
+ return alpha2/(M_PI * d * d);
+}
+
+float G_GGX_anisotropic_2cos(float cos_theta_m, float alpha_x, float alpha_y, float cos_phi, float sin_phi) {
+ float cos2 = cos_theta_m * cos_theta_m;
+ float sin2 = (1.0-cos2);
+ float s_x = alpha_x * cos_phi;
+ float s_y = alpha_y * sin_phi;
+ return 1.0 / (cos_theta_m + sqrt(cos2 + (s_x*s_x + s_y*s_y)*sin2 ));
+}
+
+float D_GGX_anisotropic(float cos_theta_m, float alpha_x, float alpha_y, float cos_phi, float sin_phi) {
+ float cos2 = cos_theta_m * cos_theta_m;
+ float sin2 = (1.0-cos2);
+ float r_x = cos_phi/alpha_x;
+ float r_y = sin_phi/alpha_y;
+ float d = cos2 + sin2*(r_x * r_x + r_y * r_y);
+ return 1.0 / (M_PI * alpha_x * alpha_y * d * d );
}
@@ -894,7 +943,7 @@ vec3 metallic_to_specular_color(float metallic, float specular, vec3 albedo) {
return mix(vec3(dielectric), albedo, metallic); // TODO: reference?
}
-void light_compute(vec3 N, vec3 L, vec3 V, vec3 B, vec3 T, vec3 light_color, vec3 attenuation, vec3 diffuse_color, vec3 transmission, float specular_blob_intensity, float roughness, float rim, float rim_tint, float clearcoat, float clearcoat_gloss, float anisotropy, inout vec3 diffuse_light, inout vec3 specular_light) {
+void light_compute(vec3 N, vec3 L, vec3 V, vec3 B, vec3 T, vec3 light_color, vec3 attenuation, vec3 diffuse_color, vec3 transmission, float specular_blob_intensity, float roughness, float metallic, float rim, float rim_tint, float clearcoat, float clearcoat_gloss, float anisotropy, inout vec3 diffuse_light, inout vec3 specular_light) {
#if defined(USE_LIGHT_SHADER_CODE)
//light is written by the light shader
@@ -913,80 +962,82 @@ LIGHT_SHADER_CODE
float NdotV = dot(N, V);
float cNdotV = max(NdotV, 0.0);
+ if (metallic < 1.0) {
#if defined(DIFFUSE_OREN_NAYAR)
- vec3 diffuse_brdf_NL;
+ vec3 diffuse_brdf_NL;
#else
- float diffuse_brdf_NL; // BRDF times N.L for calculating diffuse radiance
+ float diffuse_brdf_NL; // BRDF times N.L for calculating diffuse radiance
#endif
#if defined(DIFFUSE_LAMBERT_WRAP)
- //energy conserving lambert wrap shader
- diffuse_brdf_NL = max(0.0,(NdotL + roughness) / ((1.0 + roughness) * (1.0 + roughness)));
+ //energy conserving lambert wrap shader
+ diffuse_brdf_NL = max(0.0,(NdotL + roughness) / ((1.0 + roughness) * (1.0 + roughness)));
#elif defined(DIFFUSE_OREN_NAYAR)
- {
- // see http://mimosa-pudica.net/improved-oren-nayar.html
- float LdotV = dot(L, V);
+ {
+ // see http://mimosa-pudica.net/improved-oren-nayar.html
+ float LdotV = dot(L, V);
- float s = LdotV - NdotL * NdotV;
- float t = mix(1.0, max(NdotL, NdotV), step(0.0, s));
+ float s = LdotV - NdotL * NdotV;
+ float t = mix(1.0, max(NdotL, NdotV), step(0.0, s));
- float sigma2 = roughness * roughness; // TODO: this needs checking
- vec3 A = 1.0 + sigma2 * (- 0.5 / (sigma2 + 0.33) + 0.17*diffuse_color / (sigma2 + 0.13) );
- float B = 0.45 * sigma2 / (sigma2 + 0.09);
+ float sigma2 = roughness * roughness; // TODO: this needs checking
+ vec3 A = 1.0 + sigma2 * (- 0.5 / (sigma2 + 0.33) + 0.17*diffuse_color / (sigma2 + 0.13) );
+ float B = 0.45 * sigma2 / (sigma2 + 0.09);
- diffuse_brdf_NL = cNdotL * (A + vec3(B) * s / t) * (1.0 / M_PI);
- }
+ diffuse_brdf_NL = cNdotL * (A + vec3(B) * s / t) * (1.0 / M_PI);
+ }
#elif defined(DIFFUSE_TOON)
- diffuse_brdf_NL = smoothstep(-roughness,max(roughness,0.01),NdotL);
+ diffuse_brdf_NL = smoothstep(-roughness,max(roughness,0.01),NdotL);
#elif defined(DIFFUSE_BURLEY)
- {
+ {
- vec3 H = normalize(V + L);
- float cLdotH = max(0.0,dot(L, H));
+ vec3 H = normalize(V + L);
+ float cLdotH = max(0.0,dot(L, H));
- float FD90 = 0.5 + 2.0 * cLdotH * cLdotH * roughness;
- float FdV = 1.0 + (FD90 - 1.0) * SchlickFresnel(cNdotV);
- float FdL = 1.0 + (FD90 - 1.0) * SchlickFresnel(cNdotL);
- diffuse_brdf_NL = (1.0 / M_PI) * FdV * FdL * cNdotL;
-/*
- float energyBias = mix(roughness, 0.0, 0.5);
- float energyFactor = mix(roughness, 1.0, 1.0 / 1.51);
- float fd90 = energyBias + 2.0 * VoH * VoH * roughness;
- float f0 = 1.0;
- float lightScatter = f0 + (fd90 - f0) * pow(1.0 - cNdotL, 5.0);
- float viewScatter = f0 + (fd90 - f0) * pow(1.0 - cNdotV, 5.0);
-
- diffuse_brdf_NL = lightScatter * viewScatter * energyFactor;*/
- }
+ float FD90 = 0.5 + 2.0 * cLdotH * cLdotH * roughness;
+ float FdV = 1.0 + (FD90 - 1.0) * SchlickFresnel(cNdotV);
+ float FdL = 1.0 + (FD90 - 1.0) * SchlickFresnel(cNdotL);
+ diffuse_brdf_NL = (1.0 / M_PI) * FdV * FdL * cNdotL;
+ /*
+ float energyBias = mix(roughness, 0.0, 0.5);
+ float energyFactor = mix(roughness, 1.0, 1.0 / 1.51);
+ float fd90 = energyBias + 2.0 * VoH * VoH * roughness;
+ float f0 = 1.0;
+ float lightScatter = f0 + (fd90 - f0) * pow(1.0 - cNdotL, 5.0);
+ float viewScatter = f0 + (fd90 - f0) * pow(1.0 - cNdotV, 5.0);
+
+ diffuse_brdf_NL = lightScatter * viewScatter * energyFactor;*/
+ }
#else
- //lambert
- diffuse_brdf_NL = cNdotL * (1.0 / M_PI);
+ //lambert
+ diffuse_brdf_NL = cNdotL * (1.0 / M_PI);
#endif
#if defined(TRANSMISSION_USED)
- diffuse_light += light_color * diffuse_color * mix(vec3(diffuse_brdf_NL), vec3(M_PI), transmission) * attenuation;
+ diffuse_light += light_color * diffuse_color * mix(vec3(diffuse_brdf_NL), vec3(M_PI), transmission) * attenuation;
#else
- diffuse_light += light_color * diffuse_color * diffuse_brdf_NL * attenuation;
+ diffuse_light += light_color * diffuse_color * diffuse_brdf_NL * attenuation;
#endif
#if defined(LIGHT_USE_RIM)
- float rim_light = pow(1.0-cNdotV, (1.0-roughness)*16.0);
- diffuse_light += rim_light * rim * mix(vec3(1.0),diffuse_color,rim_tint) * light_color;
+ float rim_light = pow(1.0-cNdotV, (1.0-roughness)*16.0);
+ diffuse_light += rim_light * rim * mix(vec3(1.0),diffuse_color,rim_tint) * light_color;
#endif
+ }
- if (roughness > 0.0) {
+ if (roughness > 0.0) { // FIXME: roughness == 0 should not disable specular light entirely
// D
@@ -1019,14 +1070,13 @@ LIGHT_SHADER_CODE
#elif defined(SPECULAR_SCHLICK_GGX)
// shlick+ggx as default
- float alpha = roughness * roughness;
vec3 H = normalize(V + L);
float cNdotH = max(dot(N,H), 0.0);
float cLdotH = max(dot(L,H), 0.0);
-#if defined(LIGHT_USE_ANISOTROPY)
+# if defined(LIGHT_USE_ANISOTROPY)
float aspect = sqrt(1.0-anisotropy*0.9);
float rx = roughness/aspect;
@@ -1035,44 +1085,43 @@ LIGHT_SHADER_CODE
float ay = ry*ry;
float XdotH = dot( T, H );
float YdotH = dot( B, H );
- float denom = XdotH*XdotH / (ax*ax) + YdotH*YdotH / (ay*ay) + cNdotH*cNdotH;
- float D = 1.0 / ( M_PI * ax*ay * denom*denom );
+ float D = D_GGX_anisotropic(cNdotH, ax, ay, XdotH, YdotH);
+ float G = G_GGX_anisotropic_2cos(cNdotL, ax, ay, XdotH, YdotH) * G_GGX_anisotropic_2cos(cNdotV, ax, ay, XdotH, YdotH);
-#else
- float alphaSqr = alpha * alpha;
- float denom = cNdotH * cNdotH * (alphaSqr - 1.0) + 1.0;
- float D = alphaSqr / (M_PI * denom * denom);
-#endif
+# else
+ float alpha = roughness * roughness;
+ float D = D_GGX(cNdotH, alpha);
+ float G = G_GGX_2cos(cNdotL, alpha) * G_GGX_2cos(cNdotV, alpha);
+# endif
// F
float F0 = 1.0; // FIXME
float cLdotH5 = SchlickFresnel(cLdotH);
float F = mix(cLdotH5, 1.0, F0);
- // V
- float k = alpha / 2.0f;
- float vis = G1V(cNdotL, k) * G1V(cNdotV, k);
+ float specular_brdf_NL = cNdotL * D * F * G;
- float speci = cNdotL * D * F * vis;
-
- specular_light += speci * light_color * specular_blob_intensity * attenuation;
+ specular_light += specular_brdf_NL * light_color * specular_blob_intensity * attenuation;
#endif
#if defined(LIGHT_USE_CLEARCOAT)
-
+ if (clearcoat_gloss > 0.0) {
# if !defined(SPECULAR_SCHLICK_GGX) && !defined(SPECULAR_BLINN)
- vec3 H = normalize(V + L);
+ vec3 H = normalize(V + L);
# endif
# if !defined(SPECULAR_SCHLICK_GGX)
- float cNdotH = max(dot(N,H), 0.0);
- float cLdotH = max(dot(L,H), 0.0);
- float cLdotH5 = SchlickFresnel(cLdotH);
+ float cNdotH = max(dot(N,H), 0.0);
+ float cLdotH = max(dot(L,H), 0.0);
+ float cLdotH5 = SchlickFresnel(cLdotH);
#endif
- float Dr = GTR1(cNdotH, mix(.1, .001, clearcoat_gloss));
- float Fr = mix(.04, 1.0, cLdotH5);
- float Gr = G1V(cNdotL, .25) * G1V(cNdotV, .25);
+ float Dr = GTR1(cNdotH, mix(.1, .001, clearcoat_gloss));
+ float Fr = mix(.04, 1.0, cLdotH5);
+ float Gr = G_GGX_2cos(cNdotL, .25) * G_GGX_2cos(cNdotV, .25);
- specular_light += .25*clearcoat*Gr*Fr*Dr;
+ float specular_brdf_NL = 0.25 * clearcoat * Gr * Fr * Dr * cNdotL;
+
+ specular_light += specular_brdf_NL * light_color * specular_blob_intensity * attenuation;
+ }
#endif
}
@@ -1154,7 +1203,7 @@ vec3 light_transmittance(float translucency,vec3 light_vec, vec3 normal, vec3 po
}
#endif
-void light_process_omni(int idx, vec3 vertex, vec3 eye_vec,vec3 normal,vec3 binormal, vec3 tangent, vec3 albedo, vec3 transmission, float roughness, float rim, float rim_tint, float clearcoat, float clearcoat_gloss, float anisotropy, float p_blob_intensity, inout vec3 diffuse_light, inout vec3 specular_light) {
+void light_process_omni(int idx, vec3 vertex, vec3 eye_vec,vec3 normal,vec3 binormal, vec3 tangent, vec3 albedo, vec3 transmission, float roughness, float metallic, float rim, float rim_tint, float clearcoat, float clearcoat_gloss, float anisotropy, float p_blob_intensity, inout vec3 diffuse_light, inout vec3 specular_light) {
vec3 light_rel_vec = omni_lights[idx].light_pos_inv_radius.xyz-vertex;
float light_length = length( light_rel_vec );
@@ -1208,11 +1257,11 @@ void light_process_omni(int idx, vec3 vertex, vec3 eye_vec,vec3 normal,vec3 bino
light_attenuation*=mix(omni_lights[idx].shadow_color_contact.rgb,vec3(1.0),shadow);
}
- light_compute(normal,normalize(light_rel_vec),eye_vec,binormal,tangent,omni_lights[idx].light_color_energy.rgb,light_attenuation,albedo,transmission,omni_lights[idx].light_params.z*p_blob_intensity,roughness,rim,rim_tint,clearcoat,clearcoat_gloss,anisotropy,diffuse_light,specular_light);
+ light_compute(normal,normalize(light_rel_vec),eye_vec,binormal,tangent,omni_lights[idx].light_color_energy.rgb,light_attenuation,albedo,transmission,omni_lights[idx].light_params.z*p_blob_intensity,roughness,metallic,rim,rim_tint,clearcoat,clearcoat_gloss,anisotropy,diffuse_light,specular_light);
}
-void light_process_spot(int idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 binormal, vec3 tangent,vec3 albedo, vec3 transmission,float roughness, float rim,float rim_tint, float clearcoat, float clearcoat_gloss,float anisotropy,float p_blob_intensity, inout vec3 diffuse_light, inout vec3 specular_light) {
+void light_process_spot(int idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 binormal, vec3 tangent,vec3 albedo, vec3 transmission,float roughness, float metallic, float rim, float rim_tint, float clearcoat, float clearcoat_gloss,float anisotropy,float p_blob_intensity, inout vec3 diffuse_light, inout vec3 specular_light) {
vec3 light_rel_vec = spot_lights[idx].light_pos_inv_radius.xyz-vertex;
float light_length = length( light_rel_vec );
@@ -1242,7 +1291,7 @@ void light_process_spot(int idx, vec3 vertex, vec3 eye_vec, vec3 normal, vec3 bi
light_attenuation*=mix(spot_lights[idx].shadow_color_contact.rgb,vec3(1.0),shadow);
}
- light_compute(normal,normalize(light_rel_vec),eye_vec,binormal,tangent,spot_lights[idx].light_color_energy.rgb,light_attenuation,albedo,transmission,spot_lights[idx].light_params.z*p_blob_intensity,roughness,rim,rim_tint,clearcoat,clearcoat_gloss,anisotropy,diffuse_light,specular_light);
+ light_compute(normal,normalize(light_rel_vec),eye_vec,binormal,tangent,spot_lights[idx].light_color_energy.rgb,light_attenuation,albedo,transmission,spot_lights[idx].light_params.z*p_blob_intensity,roughness,metallic,rim,rim_tint,clearcoat,clearcoat_gloss,anisotropy,diffuse_light,specular_light);
}
@@ -1875,7 +1924,7 @@ FRAGMENT_SHADER_CODE
specular_light*=mix(vec3(1.0),light_attenuation,specular_light_interp.a);
#else
- light_compute(normal,-light_direction_attenuation.xyz,eye_vec,binormal,tangent,light_color_energy.rgb,light_attenuation,albedo,transmission,light_params.z*specular_blob_intensity,roughness,rim,rim_tint,clearcoat,clearcoat_gloss,anisotropy,diffuse_light,specular_light);
+ light_compute(normal,-light_direction_attenuation.xyz,eye_vec,binormal,tangent,light_color_energy.rgb,light_attenuation,albedo,transmission,light_params.z*specular_blob_intensity,roughness,metallic,rim,rim_tint,clearcoat,clearcoat_gloss,anisotropy,diffuse_light,specular_light);
#endif
@@ -1913,11 +1962,11 @@ FRAGMENT_SHADER_CODE
#else
for(int i=0;i<omni_light_count;i++) {
- light_process_omni(omni_light_indices[i],vertex,eye_vec,normal,binormal,tangent,albedo,transmission,roughness,rim,rim_tint,clearcoat,clearcoat_gloss,anisotropy,specular_blob_intensity,diffuse_light,specular_light);
+ light_process_omni(omni_light_indices[i],vertex,eye_vec,normal,binormal,tangent,albedo,transmission,roughness,metallic,rim,rim_tint,clearcoat,clearcoat_gloss,anisotropy,specular_blob_intensity,diffuse_light,specular_light);
}
for(int i=0;i<spot_light_count;i++) {
- light_process_spot(spot_light_indices[i],vertex,eye_vec,normal,binormal,tangent,albedo,transmission,roughness,rim,rim_tint,clearcoat,clearcoat_gloss,anisotropy,specular_blob_intensity,diffuse_light,specular_light);
+ light_process_spot(spot_light_indices[i],vertex,eye_vec,normal,binormal,tangent,albedo,transmission,roughness,metallic,rim,rim_tint,clearcoat,clearcoat_gloss,anisotropy,specular_blob_intensity,diffuse_light,specular_light);
}
#endif //USE_VERTEX_LIGHTING
@@ -1944,7 +1993,7 @@ FRAGMENT_SHADER_CODE
//energy conservation
- diffuse_light *= 1.0-metallic; // TODO: avoid diffuse and ambient light calculations when metallic == 1
+ diffuse_light *= 1.0-metallic; // TODO: avoid all diffuse and ambient light calculations when metallic == 1 up to this point
ambient_light *= 1.0-metallic;
@@ -2063,5 +2112,3 @@ FRAGMENT_SHADER_CODE
}
-
-
diff --git a/drivers/gles3/shaders/ssao.glsl b/drivers/gles3/shaders/ssao.glsl
index c668e63745..219f0957e0 100644
--- a/drivers/gles3/shaders/ssao.glsl
+++ b/drivers/gles3/shaders/ssao.glsl
@@ -13,8 +13,24 @@ void main() {
#define TWO_PI 6.283185307179586476925286766559
+#ifdef SSAO_QUALITY_HIGH
+
+#define NUM_SAMPLES (80)
+
+#endif
+
+#ifdef SSAO_QUALITY_LOW
+
#define NUM_SAMPLES (15)
+#endif
+
+#if !defined(SSAO_QUALITY_LOW) && !defined(SSAO_QUALITY_HIGH)
+
+#define NUM_SAMPLES (40)
+
+#endif
+
// If using depth mip levels, the log of the maximum pixel offset before we need to switch to a lower
// miplevel to maintain reasonable spatial locality in the cache
// If this number is too small (< 3), too many taps will land in the same pixel, and we'll get bad variance that manifests as flashing.
@@ -212,12 +228,12 @@ void main() {
//visibility=-C.z/camera_z_far;
//return;
-
- //vec3 n_C = texelFetch(source_normal,ssC,0).rgb * 2.0 - 1.0;
-
+#if 0
+ vec3 n_C = texelFetch(source_normal,ssC,0).rgb * 2.0 - 1.0;
+#else
vec3 n_C = reconstructCSFaceNormal(C);
n_C = -n_C;
-
+#endif
// Hash function used in the HPG12 AlchemyAO paper
float randomPatternRotationAngle = mod(float((3 * ssC.x ^ ssC.y + ssC.x * ssC.y) * 10), TWO_PI);
diff --git a/drivers/gles3/shaders/ssao_blur.glsl b/drivers/gles3/shaders/ssao_blur.glsl
index c7c978dc37..472dc21acf 100644
--- a/drivers/gles3/shaders/ssao_blur.glsl
+++ b/drivers/gles3/shaders/ssao_blur.glsl
@@ -15,6 +15,7 @@ void main() {
uniform sampler2D source_ssao; //texunit:0
uniform sampler2D source_depth; //texunit:1
+uniform sampler2D source_normal; //texunit:3
layout(location = 0) out float visibility;
@@ -24,7 +25,7 @@ layout(location = 0) out float visibility;
// Tunable Parameters:
/** Increase to make depth edges crisper. Decrease to reduce flicker. */
-#define EDGE_SHARPNESS (4.0)
+uniform float edge_sharpness;
/** Step in 2-pixel intervals since we already blurred against neighbors in the
first AO pass. This constant can be increased while R decreases to improve
@@ -34,7 +35,8 @@ layout(location = 0) out float visibility;
unobjectionable after shading was applied but eliminated most temporal incoherence
from using small numbers of sample taps.
*/
-#define SCALE (3)
+
+uniform int filter_scale;
/** Filter radius in pixels. This will be multiplied by SCALE. */
#define R (4)
@@ -63,13 +65,14 @@ void main() {
ivec2 ssC = ivec2(gl_FragCoord.xy);
float depth = texelFetch(source_depth, ssC, 0).r;
+ //vec3 normal = texelFetch(source_normal,ssC,0).rgb * 2.0 - 1.0;
depth = depth * 2.0 - 1.0;
depth = 2.0 * camera_z_near * camera_z_far / (camera_z_far + camera_z_near - depth * (camera_z_far - camera_z_near));
float depth_divide = 1.0 / camera_z_far;
- depth*=depth_divide;
+// depth*=depth_divide;
/*
if (depth > camera_z_far*0.999) {
@@ -92,20 +95,23 @@ void main() {
// so the IF statement has no runtime cost
if (r != 0) {
- ivec2 ppos = ssC + axis * (r * SCALE);
+ ivec2 ppos = ssC + axis * (r * filter_scale);
float value = texelFetch(source_ssao, clamp(ppos,ivec2(0),clamp_limit), 0).r;
- float temp_depth = texelFetch(source_depth, clamp(ssC,ivec2(0),clamp_limit), 0).r;
+ ivec2 rpos = clamp(ppos,ivec2(0),clamp_limit);
+ float temp_depth = texelFetch(source_depth, rpos, 0).r;
+ //vec3 temp_normal = texelFetch(source_normal, rpos, 0).rgb * 2.0 - 1.0;
temp_depth = temp_depth * 2.0 - 1.0;
temp_depth = 2.0 * camera_z_near * camera_z_far / (camera_z_far + camera_z_near - temp_depth * (camera_z_far - camera_z_near));
- temp_depth *= depth_divide;
+// temp_depth *= depth_divide;
// spatial domain: offset gaussian tap
float weight = 0.3 + gaussian[abs(r)];
+ //weight *= max(0.0,dot(temp_normal,normal));
// range domain (the "bilateral" weight). As depth difference increases, decrease weight.
weight *= max(0.0, 1.0
- - (EDGE_SHARPNESS * 2000.0) * abs(temp_depth - depth)
+ - edge_sharpness * abs(temp_depth - depth)
);
sum += value * weight;
diff --git a/drivers/gles3/shaders/tonemap.glsl b/drivers/gles3/shaders/tonemap.glsl
index 73dec4f90c..2f671158b2 100644
--- a/drivers/gles3/shaders/tonemap.glsl
+++ b/drivers/gles3/shaders/tonemap.glsl
@@ -175,12 +175,9 @@ vec3 tonemap_reindhart(vec3 color,float white) {
return ( color * ( 1.0 + ( color / ( white) ) ) ) / ( 1.0 + color );
}
-
void main() {
- ivec2 coord = ivec2(gl_FragCoord.xy);
- vec3 color = texelFetch(source,coord,0).rgb;
-
+ vec4 color = textureLod(source, uv_interp, 0.0);
#ifdef USE_AUTO_EXPOSURE
@@ -324,5 +321,3 @@ void main() {
frag_color=vec4(color.rgb,1.0);
}
-
-
diff --git a/drivers/unix/os_unix.cpp b/drivers/unix/os_unix.cpp
index e0a62b316d..729abd57ef 100644
--- a/drivers/unix/os_unix.cpp
+++ b/drivers/unix/os_unix.cpp
@@ -136,7 +136,9 @@ void OS_Unix::initialize_core() {
void OS_Unix::initialize_logger() {
Vector<Logger *> loggers;
loggers.push_back(memnew(UnixTerminalLogger));
- loggers.push_back(memnew(RotatedFileLogger("user://logs/log.txt")));
+ // FIXME: Reenable once we figure out how to get this properly in user://
+ // instead of littering the user's working dirs (res:// + pwd) with log files (GH-12277)
+ //loggers.push_back(memnew(RotatedFileLogger("user://logs/log.txt")));
_set_logger(memnew(CompositeLogger(loggers)));
}
@@ -343,7 +345,7 @@ Error OS_Unix::execute(const String &p_path, const List<String> &p_arguments, bo
execvp(getprogname(), &args[0]);
}
#else
- execv(p_path.utf8().get_data(), &args[0]);
+ execvp(p_path.utf8().get_data(), &args[0]);
#endif
// still alive? something failed..
fprintf(stderr, "**ERROR** OS_Unix::execute - Could not create child process while executing: %s\n", p_path.utf8().get_data());
diff --git a/drivers/windows/dir_access_windows.cpp b/drivers/windows/dir_access_windows.cpp
index 8d6e78dbee..0bc4201ba3 100644
--- a/drivers/windows/dir_access_windows.cpp
+++ b/drivers/windows/dir_access_windows.cpp
@@ -164,7 +164,7 @@ Error DirAccessWindows::make_dir(String p_dir) {
p_dir = fix_path(p_dir);
if (p_dir.is_rel_path())
- p_dir = get_current_dir().plus_file(p_dir);
+ p_dir = current_dir.plus_file(p_dir);
p_dir = p_dir.replace("/", "\\");
diff --git a/editor/SCsub b/editor/SCsub
index 772feca5f8..2b6494608b 100644
--- a/editor/SCsub
+++ b/editor/SCsub
@@ -415,12 +415,11 @@ if env['tools']:
f.close()
# API documentation
- docs=[]
- print("cdir is: "+env.Dir('#').abspath)
- for f in os.listdir(os.path.join(env.Dir('#').abspath,"doc/classes")):
- docs.append("#doc/classes/"+f)
+ docs = []
+ for f in os.listdir(os.path.join(env.Dir('#').abspath, "doc/classes")):
+ docs.append("#doc/classes/" + f)
- _make_doc_data_class_path(os.path.join(env.Dir('#').abspath,"editor/doc"))
+ _make_doc_data_class_path(os.path.join(env.Dir('#').abspath, "editor/doc"))
env.Depends("#editor/doc_data_compressed.gen.h", docs)
env.Command("#editor/doc_data_compressed.gen.h", docs, make_doc_header)
diff --git a/editor/animation_editor.cpp b/editor/animation_editor.cpp
index b832b993bb..54eb695178 100644
--- a/editor/animation_editor.cpp
+++ b/editor/animation_editor.cpp
@@ -64,6 +64,8 @@ private:
float transition;
Mode mode;
+ LineEdit *value_edit;
+
void _notification(int p_what) {
if (p_what == NOTIFICATION_DRAW) {
@@ -144,14 +146,11 @@ private:
}
}
- String txt = String::num(exp, 2);
if (mode == MODE_DISABLED) {
- txt = TTR("Disabled");
+ f->draw(ci, Point2(5, 5 + f->get_ascent()), TTR("Disabled"), color);
} else if (mode == MODE_MULTIPLE) {
- txt += " - " + TTR("All Selection");
+ f->draw(ci, Point2(5, 5 + f->get_ascent() + value_edit->get_size().height), TTR("All Selection"), color);
}
-
- f->draw(ci, Point2(10, 10 + f->get_ascent()), txt, color);
}
}
@@ -163,6 +162,8 @@ private:
if (mode == MODE_DISABLED)
return;
+ value_edit->release_focus();
+
float rel = mm->get_relative().x;
if (rel == 0)
return;
@@ -187,24 +188,28 @@ private:
if (sg)
val = -val;
- transition = val;
- update();
- //emit_signal("variant_changed");
- emit_signal("transition_changed", transition);
+ force_transition(val);
}
}
+ void _edit_value_changed(const String &p_value_str) {
+
+ force_transition(p_value_str.to_float());
+ }
+
public:
static void _bind_methods() {
//ClassDB::bind_method("_update_obj",&AnimationKeyEdit::_update_obj);
ClassDB::bind_method("_gui_input", &AnimationCurveEdit::_gui_input);
+ ClassDB::bind_method("_edit_value_changed", &AnimationCurveEdit::_edit_value_changed);
ADD_SIGNAL(MethodInfo("transition_changed"));
}
void set_mode(Mode p_mode) {
mode = p_mode;
+ value_edit->set_visible(mode != MODE_DISABLED);
update();
}
@@ -218,7 +223,8 @@ public:
}
void set_transition(float p_transition) {
- transition = p_transition;
+ transition = Math::stepify(p_transition, 0.01);
+ value_edit->set_text(String::num(transition));
update();
}
@@ -229,9 +235,8 @@ public:
void force_transition(float p_value) {
if (mode == MODE_DISABLED)
return;
- transition = p_value;
+ set_transition(p_value);
emit_signal("transition_changed", p_value);
- update();
}
AnimationCurveEdit() {
@@ -239,6 +244,11 @@ public:
transition = 1.0;
set_default_cursor_shape(CURSOR_HSPLIT);
mode = MODE_DISABLED;
+
+ value_edit = memnew(LineEdit);
+ value_edit->hide();
+ value_edit->connect("text_entered", this, "_edit_value_changed");
+ add_child(value_edit);
}
};
@@ -1101,7 +1111,7 @@ void AnimationKeyEditor::_track_editor_draw() {
Color select_color = color;
select_color.a = 0.1;
Color invalid_path_color = get_color("error_color", "Editor");
- Color track_select_color = get_color("accent", "Editor");
+ Color track_select_color = get_color("highlighted_font_color", "Editor");
Ref<Texture> remove_icon = get_icon("Remove", "EditorIcons");
Ref<Texture> move_up_icon = get_icon("MoveUp", "EditorIcons");
diff --git a/editor/code_editor.cpp b/editor/code_editor.cpp
index ee1faf5a55..0100c221c4 100644
--- a/editor/code_editor.cpp
+++ b/editor/code_editor.cpp
@@ -1089,6 +1089,7 @@ void CodeTextEditor::update_editor_settings() {
text_editor->set_line_length_guideline_column(EditorSettings::get_singleton()->get("text_editor/line_numbers/line_length_guideline_column"));
text_editor->set_syntax_coloring(EditorSettings::get_singleton()->get("text_editor/highlighting/syntax_highlighting"));
text_editor->set_highlight_all_occurrences(EditorSettings::get_singleton()->get("text_editor/highlighting/highlight_all_occurrences"));
+ text_editor->set_highlight_current_line(EditorSettings::get_singleton()->get("text_editor/highlighting/highlight_current_line"));
text_editor->cursor_set_blink_enabled(EditorSettings::get_singleton()->get("text_editor/cursor/caret_blink"));
text_editor->cursor_set_blink_speed(EditorSettings::get_singleton()->get("text_editor/cursor/caret_blink_speed"));
text_editor->set_draw_breakpoint_gutter(EditorSettings::get_singleton()->get("text_editor/line_numbers/show_breakpoint_gutter"));
diff --git a/editor/collada/collada.cpp b/editor/collada/collada.cpp
index 2d49840683..6dbfd84c86 100644
--- a/editor/collada/collada.cpp
+++ b/editor/collada/collada.cpp
@@ -422,11 +422,6 @@ Vector<String> Collada::_read_string_array(XMLParser &parser) {
// parse String data
String str = parser.get_node_data();
array = str.split_spaces();
- /*
- for(int i=0;i<array.size();i++) {
- print_line(itos(i)+": "+array[i]);
- }
- */
} else if (parser.get_node_type() == XMLParser::NODE_ELEMENT_END)
break; // end parsing text
}
@@ -1320,11 +1315,8 @@ void Collada::_parse_morph_controller(XMLParser &parser, String p_id) {
state.morph_controller_data_map[p_id] = MorphControllerData();
MorphControllerData &morphdata = state.morph_controller_data_map[p_id];
- print_line("morph source: " + parser.get_attribute_value("source") + " id: " + p_id);
morphdata.mesh = _uri_to_id(parser.get_attribute_value("source"));
- print_line("morph source2: " + morphdata.mesh);
morphdata.mode = parser.get_attribute_value("method");
- printf("JJmorph: %p\n", &morphdata);
String current_source;
while (parser.read() == OK) {
@@ -1690,7 +1682,6 @@ Collada::Node *Collada::_parse_visual_scene_node(XMLParser &parser) {
} else if (section != "node") {
//usually what defines the type of node
- //print_line(" don't know what to do with "+section);
if (section.begins_with("instance_")) {
if (!node) {
@@ -1863,9 +1854,6 @@ void Collada::_parse_animation(XMLParser &parser) {
String source = _uri_to_id(channel_sources[i]);
String target = channel_targets[i];
- if (!samplers.has(source)) {
- print_line("channel lacks source: " + source);
- }
ERR_CONTINUE(!samplers.has(source));
Map<String, String> &sampler = samplers[source];
@@ -1970,8 +1958,6 @@ void Collada::_parse_animation(XMLParser &parser) {
track.target = target;
}
- print_line("TARGET: " + track.target);
-
state.animation_tracks.push_back(track);
if (!state.referenced_tracks.has(target))
@@ -2027,8 +2013,8 @@ void Collada::_parse_animation_clip(XMLParser &parser) {
}
state.animation_clips.push_back(clip);
- print_line("found anim clip: " + clip.name);
}
+
void Collada::_parse_scene(XMLParser &parser) {
if (parser.is_empty()) {
@@ -2044,7 +2030,6 @@ void Collada::_parse_scene(XMLParser &parser) {
if (name == "instance_visual_scene") {
state.root_visual_scene = _uri_to_id(parser.get_attribute_value("url"));
- print_line("***ROOT VISUAL SCENE: " + state.root_visual_scene);
} else if (name == "instance_physics_scene") {
state.root_physics_scene = _uri_to_id(parser.get_attribute_value("url"));
@@ -2213,9 +2198,6 @@ void Collada::_merge_skeletons(VisualScene *p_vscene, Node *p_node) {
NodeJoint *nj = SAFE_CAST<NodeJoint *>(state.scene_map[nodeid]);
ERR_CONTINUE(!nj); //broken collada
- if (!nj->owner) {
- print_line("no owner for: " + String(nodeid));
- }
ERR_CONTINUE(!nj->owner); //weird, node should have a skeleton owner
skeletons.insert(nj->owner);
@@ -2268,10 +2250,6 @@ void Collada::_merge_skeletons2(VisualScene *p_vscene) {
name = state.sid_to_node_map[F->key()];
- if (!state.scene_map.has(name)) {
- print_line("no foundie node for: " + name);
- }
-
ERR_CONTINUE(!state.scene_map.has(name));
Node *node = state.scene_map[name];
@@ -2299,9 +2277,6 @@ void Collada::_merge_skeletons2(VisualScene *p_vscene) {
if (skeleton != sk) {
//whoa.. wtf, merge.
- print_line("MERGED BONES!!");
-
- //NodeSkeleton *merged = E->get();
_remove_node(p_vscene, sk);
for (int i = 0; i < sk->children.size(); i++) {
@@ -2399,9 +2374,6 @@ bool Collada::_move_geometry_to_skeletons(VisualScene *p_vscene, Node *p_node, L
ERR_FAIL_COND_V(!state.scene_map.has(nodeid), false); //weird, it should have it...
NodeJoint *nj = SAFE_CAST<NodeJoint *>(state.scene_map[nodeid]);
ERR_FAIL_COND_V(!nj, false);
- if (!nj->owner) {
- print_line("Has no owner: " + nj->name);
- }
ERR_FAIL_COND_V(!nj->owner, false); //weird, node should have a skeleton owner
NodeSkeleton *sk = nj->owner;
diff --git a/editor/dependency_editor.cpp b/editor/dependency_editor.cpp
index 5305c4f256..29e2423e9b 100644
--- a/editor/dependency_editor.cpp
+++ b/editor/dependency_editor.cpp
@@ -337,92 +337,142 @@ DependencyEditorOwners::DependencyEditorOwners() {
///////////////////////
-void DependencyRemoveDialog::_fill_owners(EditorFileSystemDirectory *efsd) {
+void DependencyRemoveDialog::_find_files_in_removed_folder(EditorFileSystemDirectory *efsd, const String &p_folder) {
+ if (!efsd)
+ return;
+
+ for (int i = 0; i < efsd->get_subdir_count(); ++i) {
+ _find_files_in_removed_folder(efsd->get_subdir(i), p_folder);
+ }
+ for (int i = 0; i < efsd->get_file_count(); i++) {
+ String file = efsd->get_file_path(i);
+ ERR_FAIL_COND(all_remove_files.has(file)); //We are deleting a directory which is contained in a directory we are deleting...
+ all_remove_files[file] = p_folder; //Point the file to the ancestor directory we are deleting so we know what to parent it under in the tree.
+ }
+}
+void DependencyRemoveDialog::_find_all_removed_dependencies(EditorFileSystemDirectory *efsd, Vector<RemovedDependency> &p_removed) {
if (!efsd)
return;
for (int i = 0; i < efsd->get_subdir_count(); i++) {
- _fill_owners(efsd->get_subdir(i));
+ _find_all_removed_dependencies(efsd->get_subdir(i), p_removed);
}
for (int i = 0; i < efsd->get_file_count(); i++) {
+ const String path = efsd->get_file_path(i);
- Vector<String> deps = efsd->get_file_deps(i);
- //print_line(":::"+efsd->get_file_path(i));
- Set<String> met;
- for (int j = 0; j < deps.size(); j++) {
- if (files.has(deps[j])) {
- met.insert(deps[j]);
- }
- }
- if (!met.size())
+ //It doesn't matter if a file we are about to delete will have some of its dependencies removed too
+ if (all_remove_files.has(path))
continue;
- exist = true;
-
- Ref<Texture> icon;
- String type = efsd->get_file_type(i);
- if (!has_icon(type, "EditorIcons")) {
- icon = get_icon("Object", "EditorIcons");
- } else {
- icon = get_icon(type, "EditorIcons");
+ Vector<String> all_deps = efsd->get_file_deps(i);
+ for (int j = 0; j < all_deps.size(); ++j) {
+ if (all_remove_files.has(all_deps[j])) {
+ RemovedDependency dep;
+ dep.file = path;
+ dep.file_type = efsd->get_file_type(i);
+ dep.dependency = all_deps[j];
+ dep.dependency_folder = all_remove_files[all_deps[j]];
+ p_removed.push_back(dep);
+ }
}
+ }
+}
- for (Set<String>::Element *E = met.front(); E; E = E->next()) {
+void DependencyRemoveDialog::_build_removed_dependency_tree(const Vector<RemovedDependency> &p_removed) {
+ owners->clear();
+ owners->create_item(); // root
- String which = E->get();
- if (!files[which]) {
- TreeItem *ti = owners->create_item(owners->get_root());
- ti->set_text(0, which.get_file());
- files[which] = ti;
+ Map<String, TreeItem *> tree_items;
+ for (int i = 0; i < p_removed.size(); i++) {
+ RemovedDependency rd = p_removed[i];
+
+ //Ensure that the dependency is already in the tree
+ if (!tree_items.has(rd.dependency)) {
+ if (rd.dependency_folder.length() > 0) {
+ //Ensure the ancestor folder is already in the tree
+ if (!tree_items.has(rd.dependency_folder)) {
+ TreeItem *folder_item = owners->create_item(owners->get_root());
+ folder_item->set_text(0, rd.dependency_folder);
+ folder_item->set_icon(0, get_icon("Folder", "EditorIcons"));
+ tree_items[rd.dependency_folder] = folder_item;
+ }
+ TreeItem *dependency_item = owners->create_item(tree_items[rd.dependency_folder]);
+ dependency_item->set_text(0, rd.dependency);
+ dependency_item->set_icon(0, get_icon("Warning", "EditorIcons"));
+ tree_items[rd.dependency] = dependency_item;
+ } else {
+ TreeItem *dependency_item = owners->create_item(owners->get_root());
+ dependency_item->set_text(0, rd.dependency);
+ dependency_item->set_icon(0, get_icon("Warning", "EditorIcons"));
+ tree_items[rd.dependency] = dependency_item;
}
- TreeItem *ti = owners->create_item(files[which]);
- ti->set_text(0, efsd->get_file_path(i));
- ti->set_icon(0, icon);
}
+
+ //List this file under this dependency
+ Ref<Texture> icon = has_icon(rd.file_type, "EditorIcons") ? get_icon(rd.file_type, "EditorIcons") : get_icon("Object", "EditorIcons");
+ TreeItem *file_item = owners->create_item(tree_items[rd.dependency]);
+ file_item->set_text(0, rd.file);
+ file_item->set_icon(0, icon);
}
}
-void DependencyRemoveDialog::show(const Vector<String> &to_erase) {
-
- exist = false;
+void DependencyRemoveDialog::show(const Vector<String> &p_folders, const Vector<String> &p_files) {
+ all_remove_files.clear();
+ to_delete.clear();
owners->clear();
- files.clear();
- owners->create_item(); // root
- for (int i = 0; i < to_erase.size(); i++) {
- files[to_erase[i]] = NULL;
+
+ for (int i = 0; i < p_folders.size(); ++i) {
+ String folder = p_folders[i].ends_with("/") ? p_folders[i] : (p_folders[i] + "/");
+ _find_files_in_removed_folder(EditorFileSystem::get_singleton()->get_filesystem_path(folder), folder);
+ to_delete.push_back(folder);
+ }
+ for (int i = 0; i < p_files.size(); ++i) {
+ all_remove_files[p_files[i]] = String();
+ to_delete.push_back(p_files[i]);
}
- _fill_owners(EditorFileSystem::get_singleton()->get_filesystem());
+ Vector<RemovedDependency> removed_deps;
+ _find_all_removed_dependencies(EditorFileSystem::get_singleton()->get_filesystem(), removed_deps);
+ removed_deps.sort();
- if (exist) {
- owners->show();
- text->set_text(TTR("The files being removed are required by other resources in order for them to work.\nRemove them anyway? (no undo)"));
- popup_centered_minsize(Size2(500, 220));
- } else {
+ if (removed_deps.empty()) {
owners->hide();
text->set_text(TTR("Remove selected files from the project? (no undo)"));
popup_centered_minsize(Size2(400, 100));
+ } else {
+ _build_removed_dependency_tree(removed_deps);
+ owners->show();
+ text->set_text(TTR("The files being removed are required by other resources in order for them to work.\nRemove them anyway? (no undo)"));
+ popup_centered_minsize(Size2(500, 350));
}
}
void DependencyRemoveDialog::ok_pressed() {
-
- bool changed = false;
-
- for (Map<String, TreeItem *>::Element *E = files.front(); E; E = E->next()) {
-
- if (ResourceCache::has(E->key())) {
- Resource *res = ResourceCache::get(E->key());
+ bool files_only = true;
+ for (int i = 0; i < to_delete.size(); ++i) {
+ if (to_delete[i].ends_with("/")) {
+ files_only = false;
+ } else if (ResourceCache::has(to_delete[i])) {
+ Resource *res = ResourceCache::get(to_delete[i]);
res->set_path(""); //clear reference to path
}
- String fpath = OS::get_singleton()->get_resource_dir() + E->key().replace_first("res://", "/");
- OS::get_singleton()->move_to_trash(fpath);
- changed = true;
+
+ String path = OS::get_singleton()->get_resource_dir() + to_delete[i].replace_first("res://", "/");
+ print_line("Moving to trash: " + path);
+ Error err = OS::get_singleton()->move_to_trash(path);
+ if (err != OK) {
+ EditorNode::get_singleton()->add_io_error(TTR("Cannot remove:\n") + to_delete[i] + "\n");
+ }
}
- if (changed) {
+ if (files_only) {
+ //If we only deleted files we should only need to tell the file system about the files we touched.
+ for (int i = 0; i < to_delete.size(); ++i) {
+ EditorFileSystem::get_singleton()->update_file(to_delete[i]);
+ }
+ } else {
EditorFileSystem::get_singleton()->scan_changes();
}
}
@@ -494,7 +544,7 @@ DependencyErrorDialog::DependencyErrorDialog() {
vb->add_margin_child(TTR("Scene failed to load due to missing dependencies:"), files, true);
files->set_v_size_flags(SIZE_EXPAND_FILL);
get_ok()->set_text(TTR("Open Anyway"));
- get_cancel()->set_text(TTR("Done"));
+ get_cancel()->set_text(TTR("Close"));
text = memnew(Label);
vb->add_child(text);
diff --git a/editor/dependency_editor.h b/editor/dependency_editor.h
index 4dfb9de268..c7e9baa5c2 100644
--- a/editor/dependency_editor.h
+++ b/editor/dependency_editor.h
@@ -84,14 +84,33 @@ class DependencyRemoveDialog : public ConfirmationDialog {
Label *text;
Tree *owners;
- bool exist;
- Map<String, TreeItem *> files;
- void _fill_owners(EditorFileSystemDirectory *efsd);
+
+ Map<String, String> all_remove_files;
+ Vector<String> to_delete;
+
+ struct RemovedDependency {
+ String file;
+ String file_type;
+ String dependency;
+ String dependency_folder;
+
+ bool operator<(const RemovedDependency &p_other) const {
+ if (dependency_folder.empty() != p_other.dependency_folder.empty()) {
+ return p_other.dependency_folder.empty();
+ } else {
+ return dependency < p_other.dependency;
+ }
+ }
+ };
+
+ void _find_files_in_removed_folder(EditorFileSystemDirectory *efsd, const String &p_folder);
+ void _find_all_removed_dependencies(EditorFileSystemDirectory *efsd, Vector<RemovedDependency> &p_removed);
+ void _build_removed_dependency_tree(const Vector<RemovedDependency> &p_removed);
void ok_pressed();
public:
- void show(const Vector<String> &to_erase);
+ void show(const Vector<String> &p_folders, const Vector<String> &p_files);
DependencyRemoveDialog();
};
diff --git a/editor/editor_export.cpp b/editor/editor_export.cpp
index bc20a99809..efe32b99ab 100644
--- a/editor/editor_export.cpp
+++ b/editor/editor_export.cpp
@@ -342,12 +342,10 @@ String EditorExportPlatform::find_export_template(String template_file_name, Str
bool has_system_path = (system_file != "");
system_file = system_file.plus_file(base_name);
- print_line("test user file: " + user_file);
// Prefer user file
if (FileAccess::exists(user_file)) {
return user_file;
}
- print_line("test system file: " + system_file);
// Now check system file
if (has_system_path) {
@@ -927,13 +925,10 @@ void EditorExport::_save() {
}
config->save("res://export_presets.cfg");
-
- print_line("saved ok");
}
void EditorExport::save_presets() {
- print_line("save presets");
if (block_save)
return;
save_timer->start();
diff --git a/editor/editor_file_dialog.cpp b/editor/editor_file_dialog.cpp
index b980c4f0ec..a0ca9b88e0 100644
--- a/editor/editor_file_dialog.cpp
+++ b/editor/editor_file_dialog.cpp
@@ -1368,35 +1368,41 @@ EditorFileDialog::EditorFileDialog() {
VBoxContainer *item_vb = memnew(VBoxContainer);
list_hb->add_child(item_vb);
- item_vb->set_h_size_flags(SIZE_EXPAND_FILL);
- item_list = memnew(ItemList);
- item_list->set_v_size_flags(SIZE_EXPAND_FILL);
- item_vb->add_margin_child(TTR("Directories & Files:"), item_list, true);
+ HBoxContainer *preview_hb = memnew(HBoxContainer);
+ preview_hb->set_v_size_flags(SIZE_EXPAND_FILL);
+ item_vb->add_child(preview_hb);
- HBoxContainer *filter_hb = memnew(HBoxContainer);
- item_vb->add_child(filter_hb);
+ VBoxContainer *list_vb = memnew(VBoxContainer);
+ list_vb->set_h_size_flags(SIZE_EXPAND_FILL);
+ list_vb->add_child(memnew(Label(TTR("Directories & Files:"))));
+ preview_hb->add_child(list_vb);
- VBoxContainer *filter_vb = memnew(VBoxContainer);
- filter_hb->add_child(filter_vb);
- filter_vb->set_h_size_flags(SIZE_EXPAND_FILL);
+ item_list = memnew(ItemList);
+ item_list->set_v_size_flags(SIZE_EXPAND_FILL);
+ list_vb->add_child(item_list);
preview_vb = memnew(VBoxContainer);
- filter_hb->add_child(preview_vb);
+ preview_hb->add_child(preview_vb);
CenterContainer *prev_cc = memnew(CenterContainer);
preview_vb->add_margin_child(TTR("Preview:"), prev_cc);
preview = memnew(TextureRect);
prev_cc->add_child(preview);
preview_vb->hide();
+ HBoxContainer *filename_hbc = memnew(HBoxContainer);
+ filename_hbc->add_child(memnew(Label(TTR("File:"))));
file = memnew(LineEdit);
- //add_child(file);
- filter_vb->add_margin_child(TTR("File:"), file);
-
+ file->set_stretch_ratio(4);
+ file->set_h_size_flags(SIZE_EXPAND_FILL);
+ filename_hbc->add_child(file);
filter = memnew(OptionButton);
- //add_child(filter);
- filter_vb->add_margin_child(TTR("Filter:"), filter);
+ filter->set_stretch_ratio(3);
+ filter->set_h_size_flags(SIZE_EXPAND_FILL);
filter->set_clip_text(true); //too many extensions overflow it
+ filename_hbc->add_child(filter);
+ filename_hbc->set_h_size_flags(SIZE_EXPAND_FILL);
+ item_vb->add_child(filename_hbc);
dir_access = DirAccess::create(DirAccess::ACCESS_RESOURCES);
access = ACCESS_RESOURCES;
diff --git a/editor/editor_file_system.cpp b/editor/editor_file_system.cpp
index 4ae786391b..a6fc8dcddf 100644
--- a/editor/editor_file_system.cpp
+++ b/editor/editor_file_system.cpp
@@ -240,17 +240,12 @@ void EditorFileSystem::_scan_filesystem() {
String update_cache = EditorSettings::get_singleton()->get_project_settings_path().plus_file("filesystem_update3");
- print_line("try to see fs update2");
if (FileAccess::exists(update_cache)) {
-
- print_line("it exists");
-
{
FileAccessRef f = FileAccess::open(update_cache, FileAccess::READ);
String l = f->get_line().strip_edges();
while (l != String()) {
- print_line("erased cache for: " + l + " " + itos(file_cache.has(l)));
file_cache.erase(l); //erase cache for this, so it gets updated
l = f->get_line().strip_edges();
}
@@ -278,9 +273,6 @@ void EditorFileSystem::_scan_filesystem() {
memdelete(d);
- //save back the findings
- //String fscache = EditorSettings::get_singleton()->get_project_settings_path().plus_file("file_cache");
-
f = FileAccess::open(fscache, FileAccess::WRITE);
_save_filesystem_cache(new_filesystem, f);
f->close();
@@ -322,7 +314,6 @@ bool EditorFileSystem::_update_scan_actions() {
} break;
case ItemAction::ACTION_DIR_ADD: {
- //print_line("*ACTION ADD DIR: "+ia.new_dir->get_name());
int idx = 0;
for (int i = 0; i < ia.dir->subdirs.size(); i++) {
@@ -341,7 +332,6 @@ bool EditorFileSystem::_update_scan_actions() {
case ItemAction::ACTION_DIR_REMOVE: {
ERR_CONTINUE(!ia.dir->parent);
- //print_line("*ACTION REMOVE DIR: "+ia.dir->get_name());
ia.dir->parent->subdirs.erase(ia.dir);
memdelete(ia.dir);
fs_changed = true;
@@ -362,7 +352,6 @@ bool EditorFileSystem::_update_scan_actions() {
}
fs_changed = true;
- //print_line("*ACTION ADD FILE: "+ia.new_file->file);
} break;
case ItemAction::ACTION_FILE_REMOVE: {
@@ -374,7 +363,6 @@ bool EditorFileSystem::_update_scan_actions() {
ia.dir->files.remove(idx);
fs_changed = true;
- //print_line("*ACTION REMOVE FILE: "+ia.file);
} break;
case ItemAction::ACTION_FILE_REIMPORT: {
@@ -512,7 +500,6 @@ bool EditorFileSystem::_check_missing_imported_files(const String &p_path) {
for (List<String>::Element *E = to_check.front(); E; E = E->next()) {
if (!FileAccess::exists(E->get())) {
- print_line("missing " + E->get() + ", reimport");
return false;
}
}
@@ -639,22 +626,7 @@ void EditorFileSystem::_scan_new_dir(EditorFileSystemDirectory *p_dir, DirAccess
} else {
- if (!fc) {
- print_line("REIMPORT BECAUSE: not previously found");
- } else if (fc->modification_time != mt) {
- print_line("REIMPORT BECAUSE: modified resource time " + itos(fc->modification_time) + " vs " + itos(mt));
-
- } else if (fc->import_modification_time != import_mt) {
- print_line("REIMPORT BECAUSE: modified .import time" + itos(fc->import_modification_time) + " vs " + itos(import_mt));
-
- } else {
-
- print_line("REIMPORT BECAUSE: missing imported files");
- }
-
fi->type = ResourceFormatImporter::get_singleton()->get_resource_type(path);
- //fi->deps = ResourceLoader::get_dependencies(path); pointless because it will be reimported, but..
- print_line("import extension tried resource type for " + path + " and its " + fi->type);
fi->modified_time = 0;
fi->import_modified_time = 0;
fi->import_valid = ResourceLoader::is_import_valid(path);
@@ -678,7 +650,6 @@ void EditorFileSystem::_scan_new_dir(EditorFileSystemDirectory *p_dir, DirAccess
//new or modified time
fi->type = ResourceLoader::get_resource_type(path);
fi->deps = _get_dependencies(path);
- print_line("regular import tried resource type for " + path + " and its " + fi->type);
fi->modified_time = mt;
fi->import_modified_time = 0;
fi->import_valid = true;
@@ -697,8 +668,6 @@ void EditorFileSystem::_scan_fs_changes(EditorFileSystemDirectory *p_dir, const
bool updated_dir = false;
String cd = p_dir->get_path();
- //print_line("dir: "+p_dir->get_path()+" MODTIME: "+itos(p_dir->modified_time)+" CTIME: "+itos(current_mtime));
-
if (current_mtime != p_dir->modified_time) {
updated_dir = true;
@@ -791,11 +760,6 @@ void EditorFileSystem::_scan_fs_changes(EditorFileSystemDirectory *p_dir, const
if (import_extensions.has(ext)) {
//if it can be imported, and it was added, it needs to be reimported
- print_line("REIMPORT: file was not found before, reimport");
- print_line("at dir: " + p_dir->get_path() + " file: " + f);
- for (int i = 0; i < p_dir->files.size(); i++) {
- print_line(itos(i) + ": " + p_dir->files[i]->file);
- }
ItemAction ia;
ia.action = ItemAction::ACTION_FILE_REIMPORT;
ia.dir = p_dir;
@@ -835,20 +799,15 @@ void EditorFileSystem::_scan_fs_changes(EditorFileSystemDirectory *p_dir, const
bool reimport = false;
if (mt != p_dir->files[i]->modified_time) {
- print_line("REIMPORT: modified time changed, reimport");
reimport = true; //it was modified, must be reimported.
} else if (!FileAccess::exists(path + ".import")) {
- print_line("REIMPORT: no .import exists, reimport");
reimport = true; //no .import file, obviously reimport
} else {
uint64_t import_mt = FileAccess::get_modified_time(path + ".import");
- //print_line(itos(import_mt) + " vs " + itos(p_dir->files[i]->import_modified_time));
if (import_mt != p_dir->files[i]->import_modified_time) {
- print_line("REIMPORT: import modified changed, reimport");
reimport = true;
} else if (!_check_missing_imported_files(path)) {
- print_line("REIMPORT: imported files removed");
reimport = true;
}
}
@@ -947,9 +906,6 @@ void EditorFileSystem::scan_changes() {
Thread::Settings s;
s.priority = Thread::PRIORITY_LOW;
thread_sources = Thread::create(_thread_func_sources, this, s);
- //tree->hide();
- //print_line("SCAN BEGIN!");
- //progress->show();
}
}
@@ -1000,7 +956,6 @@ void EditorFileSystem::_notification(int p_what) {
thread_sources = NULL;
if (_update_scan_actions())
emit_signal("filesystem_changed");
- //print_line("sources changed: "+itos(sources_changed.size()));
emit_signal("sources_changed", sources_changed.size() > 0);
}
} else if (!scanning) {
@@ -1017,10 +972,6 @@ void EditorFileSystem::_notification(int p_what) {
_update_scan_actions();
emit_signal("filesystem_changed");
emit_signal("sources_changed", sources_changed.size() > 0);
- //print_line("initial sources changed: "+itos(sources_changed.size()));
-
- } else {
- //progress->set_text("Scanning...\n"+itos(total*100)+"%");
}
}
} break;
@@ -1239,7 +1190,6 @@ void EditorFileSystem::_save_late_updated_files() {
void EditorFileSystem::_resource_saved(const String &p_path) {
- //print_line("resource saved: "+p_path);
EditorFileSystem::get_singleton()->update_file(p_path);
}
@@ -1311,14 +1261,10 @@ void EditorFileSystem::update_file(const String &p_file) {
_save_late_updated_files(); //files need to be updated in the re-scan
}
- //print_line("UPDATING: "+p_file);
fs->files[cpos]->type = type;
fs->files[cpos]->modified_time = FileAccess::get_modified_time(p_file);
fs->files[cpos]->deps = _get_dependencies(p_file);
fs->files[cpos]->import_valid = ResourceLoader::is_import_valid(p_file);
- //if (FileAccess::exists(p_file+".import")) {
- // fs->files[cpos]->import_modified_time=FileAccess::get_modified_time(p_file+".import");
- //}
EditorResourcePreview::get_singleton()->call_deferred("check_for_invalidation", p_file);
call_deferred("emit_signal", "filesystem_changed"); //update later
@@ -1326,8 +1272,6 @@ void EditorFileSystem::update_file(const String &p_file) {
void EditorFileSystem::_reimport_file(const String &p_file) {
- print_line("REIMPORTING: " + p_file);
-
EditorFileSystemDirectory *fs = NULL;
int cpos = -1;
bool found = _find_file(p_file, &fs, cpos);
diff --git a/editor/editor_help.cpp b/editor/editor_help.cpp
index cb94ea72d1..2c4d3035a4 100644
--- a/editor/editor_help.cpp
+++ b/editor/editor_help.cpp
@@ -694,7 +694,7 @@ Error EditorHelp::_goto_desc(const String &p_class, int p_vscr) {
inherits = doc->class_list[inherits].inherits;
if (inherits != "") {
- class_desc->add_text(" , ");
+ class_desc->add_text(" < ");
}
}
@@ -1699,7 +1699,7 @@ void EditorHelp::_notification(int p_what) {
case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
- class_desc->add_color_override("selection_color", EDITOR_DEF("text_editor/highlighting/selection_color", Color(0.2, 0.2, 1)));
+ class_desc->add_color_override("selection_color", get_color("text_editor/theme/selection_color", "Editor"));
} break;
@@ -1788,7 +1788,7 @@ EditorHelp::EditorHelp() {
class_desc = memnew(RichTextLabel);
vbc->add_child(class_desc);
class_desc->set_v_size_flags(SIZE_EXPAND_FILL);
- class_desc->add_color_override("selection_color", EDITOR_DEF("text_editor/highlighting/selection_color", Color(0.2, 0.2, 1)));
+ class_desc->add_color_override("selection_color", get_color("text_editor/theme/selection_color", "Editor"));
class_desc->connect("meta_clicked", this, "_class_desc_select");
class_desc->connect("gui_input", this, "_class_desc_input");
}
@@ -1879,7 +1879,7 @@ void EditorHelpBit::_notification(int p_what) {
switch (p_what) {
case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
- rich_text->add_color_override("selection_color", EDITOR_DEF("text_editor/highlighting/selection_color", Color(0.2, 0.2, 1)));
+ rich_text->add_color_override("selection_color", get_color("text_editor/theme/selection_color", "Editor"));
} break;
default: break;
@@ -1898,6 +1898,7 @@ EditorHelpBit::EditorHelpBit() {
add_child(rich_text);
rich_text->set_anchors_and_margins_preset(Control::PRESET_WIDE);
rich_text->connect("meta_clicked", this, "_meta_clicked");
- rich_text->add_color_override("selection_color", EDITOR_DEF("text_editor/highlighting/selection_color", Color(0.2, 0.2, 1)));
+ rich_text->add_color_override("selection_color", get_color("text_editor/theme/selection_color", "Editor"));
+ rich_text->set_override_selected_font_color(false);
set_custom_minimum_size(Size2(0, 70 * EDSCALE));
}
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp
index ff415c83f1..3513126a9b 100644
--- a/editor/editor_node.cpp
+++ b/editor/editor_node.cpp
@@ -308,6 +308,8 @@ void EditorNode::_notification(int p_what) {
}
_update_scene_tabs();
+ recent_scenes->set_as_minsize();
+
// debugger area
if (ScriptEditor::get_singleton()->get_debugger()->is_visible())
bottom_panel->add_style_override("panel", gui_base->get_stylebox("BottomPanelDebuggerOverride", "EditorStyles"));
@@ -373,6 +375,9 @@ void EditorNode::_fs_changed() {
String err = "Preset \"" + export_defer.preset + "\" doesn't have a platform.";
ERR_PRINT(err.utf8().get_data());
} else {
+ // ensures export_project does not loop infinitely, because notifications may
+ // come during the export
+ export_defer.preset = "";
platform->export_project(preset, export_defer.debug, export_defer.path, /*p_flags*/ 0);
}
}
@@ -403,7 +408,6 @@ void EditorNode::_fs_changed() {
uint64_t mt = FileAccess::get_modified_time(E->get()->get_import_path());
if (mt != E->get()->get_import_last_modified_time()) {
- print_line("success");
changed.push_back(E->get());
}
#endif
@@ -428,7 +432,7 @@ void EditorNode::_fs_changed() {
}
void EditorNode::_resources_reimported(const Vector<String> &p_resources) {
- print_line("reimporting");
+
List<String> scenes; //will load later
for (int i = 0; i < p_resources.size(); i++) {
@@ -460,7 +464,6 @@ void EditorNode::_sources_changed(bool p_exist) {
if (defer_load_scene != "") {
- print_line("loading scene DEFERRED");
load_scene(defer_load_scene);
defer_load_scene = "";
}
@@ -778,7 +781,6 @@ bool EditorNode::_find_and_save_resource(RES p_res, Map<RES, bool> &processed, i
if (p_res->get_path().is_resource_file()) {
if (changed || subchanged) {
//save
- print_line("Also saving modified external resource: " + p_res->get_path());
ResourceSaver::save(p_res->get_path(), p_res, flags);
}
processed[p_res] = false; //because it's a file
@@ -1451,7 +1453,7 @@ void EditorNode::_edit_current() {
}
} else if (current_res->get_path().is_resource_file()) {
if (FileAccess::exists(current_res->get_path() + ".import")) {
- editable_warning = TTR("This resource was imported, so it's not editable. Change it's settings in the import panel and re-import.");
+ editable_warning = TTR("This resource was imported, so it's not editable. Change its settings in the import panel and then re-import.");
}
}
} else if (is_node) {
@@ -1988,7 +1990,6 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {
case EDIT_UNDO: {
if (Input::get_singleton()->get_mouse_button_mask() & 0x7) {
- print_line("no because state");
break; // can't undo while mouse buttons are pressed
}
@@ -2669,12 +2670,12 @@ void EditorNode::set_addon_plugin_enabled(const String &p_addon, bool p_enabled)
String addon_path = "res://addons/" + p_addon + "/plugin.cfg";
Error err = cf->load(addon_path);
if (err != OK) {
- show_warning(TTR("Unable to enable addon plugin at: '") + addon_path + TTR("' parsing of config failed."));
+ show_warning(vformat(TTR("Unable to enable addon plugin at: '%s' parsing of config failed."), addon_path));
return;
}
if (!cf->has_section_key("plugin", "script")) {
- show_warning(TTR("Unable to find script field for addon plugin at: 'res://addons/") + p_addon + "''.");
+ show_warning(vformat(TTR("Unable to find script field for addon plugin at: 'res://addons/%s'."), p_addon));
return;
}
@@ -2684,18 +2685,18 @@ void EditorNode::set_addon_plugin_enabled(const String &p_addon, bool p_enabled)
Ref<Script> script = ResourceLoader::load(path);
if (script.is_null()) {
- show_warning(TTR("Unable to load addon script from path: '") + path + "'.");
+ show_warning(vformat(TTR("Unable to load addon script from path: '%s'."), path));
return;
}
//could check inheritance..
if (String(script->get_instance_base_type()) != "EditorPlugin") {
- show_warning(TTR("Unable to load addon script from path: '") + path + "' Base type is not EditorPlugin.");
+ show_warning(vformat(TTR("Unable to load addon script from path: '%s' Base type is not EditorPlugin."), path));
return;
}
if (!script->is_tool()) {
- show_warning(TTR("Unable to load addon script from path: '") + path + "' Script is not in tool mode.");
+ show_warning(vformat(TTR("Unable to load addon script from path: '%s' Script is not in tool mode."), path));
return;
}
@@ -2957,7 +2958,6 @@ Error EditorNode::load_scene(const String &p_scene, bool p_ignore_broken_deps, b
dependency_errors.clear();
- print_line("actually loading it");
Error err;
Ref<PackedScene> sdata = ResourceLoader::load(lpath, "", true, &err);
if (!sdata.is_valid()) {
@@ -3153,12 +3153,19 @@ void EditorNode::_add_to_recent_scenes(const String &p_scene) {
void EditorNode::_open_recent_scene(int p_idx) {
String base = "_" + ProjectSettings::get_singleton()->get_resource_path().replace("\\", "::").replace("/", "::");
- Vector<String> rc = EDITOR_DEF(base + "/_recent_scenes", Array());
- ERR_FAIL_INDEX(p_idx, rc.size());
+ if (p_idx == recent_scenes->get_item_count() - 1) {
+
+ EditorSettings::get_singleton()->erase(base + "/_recent_scenes");
+ call_deferred("_update_recent_scenes");
+ } else {
+
+ Vector<String> rc = EDITOR_DEF(base + "/_recent_scenes", Array());
+ ERR_FAIL_INDEX(p_idx, rc.size());
- String path = "res://" + rc[p_idx];
- load_scene(path);
+ String path = "res://" + rc[p_idx];
+ load_scene(path);
+ }
}
void EditorNode::_update_recent_scenes() {
@@ -3166,10 +3173,15 @@ void EditorNode::_update_recent_scenes() {
String base = "_" + ProjectSettings::get_singleton()->get_resource_path().replace("\\", "::").replace("/", "::");
Vector<String> rc = EDITOR_DEF(base + "/_recent_scenes", Array());
recent_scenes->clear();
+
for (int i = 0; i < rc.size(); i++) {
recent_scenes->add_item(rc[i], i);
}
+
+ recent_scenes->add_separator();
+ recent_scenes->add_shortcut(ED_SHORTCUT("editor/clear_recent", TTR("Clear Recent Scenes")));
+ recent_scenes->set_as_minsize();
}
void EditorNode::_quick_opened() {
@@ -4282,15 +4294,11 @@ void EditorNode::reload_scene(const String &p_path) {
//first of all, reload internal textures, materials, meshes, etc. as they might have changed on disk
- print_line("reloading: " + p_path);
List<Ref<Resource> > cached;
ResourceCache::get_cached_resources(&cached);
List<Ref<Resource> > to_clear; //clear internal resources from previous scene from being used
for (List<Ref<Resource> >::Element *E = cached.front(); E; E = E->next()) {
- if (E->get()->get_path().find("::") != -1) {
- print_line(E->get()->get_path());
- }
if (E->get()->get_path().begins_with(p_path + "::")) { //subresources of existing scene
to_clear.push_back(E->get());
}
@@ -4298,7 +4306,6 @@ void EditorNode::reload_scene(const String &p_path) {
//so reload reloads everything, clear subresources of previous scene
while (to_clear.front()) {
- print_line("bye bye: " + to_clear.front()->get()->get_path());
to_clear.front()->get()->set_path("");
to_clear.pop_front();
}
@@ -4510,6 +4517,7 @@ void EditorNode::_bind_methods() {
ClassDB::bind_method("_set_main_scene_state", &EditorNode::_set_main_scene_state);
ClassDB::bind_method("_update_scene_tabs", &EditorNode::_update_scene_tabs);
ClassDB::bind_method("_discard_changes", &EditorNode::_discard_changes);
+ ClassDB::bind_method("_update_recent_scenes", &EditorNode::_update_recent_scenes);
ClassDB::bind_method("_prepare_history", &EditorNode::_prepare_history);
ClassDB::bind_method("_select_history", &EditorNode::_select_history);
@@ -5525,6 +5533,10 @@ EditorNode::EditorNode() {
Ref<SpatialMaterialConversionPlugin> spatial_mat_convert;
spatial_mat_convert.instance();
resource_conversion_plugins.push_back(spatial_mat_convert);
+
+ Ref<ParticlesMaterialConversionPlugin> particles_mat_convert;
+ particles_mat_convert.instance();
+ resource_conversion_plugins.push_back(particles_mat_convert);
}
circle_step_msec = OS::get_singleton()->get_ticks_msec();
circle_step_frame = Engine::get_singleton()->get_frames_drawn();
@@ -5675,12 +5687,12 @@ void EditorPluginList::edit(Object *p_object) {
}
}
-bool EditorPluginList::forward_gui_input(const Transform2D &p_canvas_xform, const Ref<InputEvent> &p_event) {
+bool EditorPluginList::forward_gui_input(const Ref<InputEvent> &p_event) {
bool discard = false;
for (int i = 0; i < plugins_list.size(); i++) {
- if (plugins_list[i]->forward_canvas_gui_input(p_canvas_xform, p_event)) {
+ if (plugins_list[i]->forward_canvas_gui_input(p_event)) {
discard = true;
}
}
@@ -5704,10 +5716,10 @@ bool EditorPluginList::forward_spatial_gui_input(Camera *p_camera, const Ref<Inp
return discard;
}
-void EditorPluginList::forward_draw_over_canvas(const Transform2D &p_canvas_xform, Control *p_canvas) {
+void EditorPluginList::forward_draw_over_canvas(Control *p_canvas) {
for (int i = 0; i < plugins_list.size(); i++) {
- plugins_list[i]->forward_draw_over_canvas(p_canvas_xform, p_canvas);
+ plugins_list[i]->forward_draw_over_canvas(p_canvas);
}
}
diff --git a/editor/editor_node.h b/editor/editor_node.h
index 0d1c6787cd..32d46e686b 100644
--- a/editor/editor_node.h
+++ b/editor/editor_node.h
@@ -812,9 +812,9 @@ public:
void make_visible(bool p_visible);
void edit(Object *p_object);
- bool forward_gui_input(const Transform2D &p_canvas_xform, const Ref<InputEvent> &p_event);
+ bool forward_gui_input(const Ref<InputEvent> &p_event);
bool forward_spatial_gui_input(Camera *p_camera, const Ref<InputEvent> &p_event, bool serve_when_force_input_enabled);
- void forward_draw_over_canvas(const Transform2D &p_canvas_xform, Control *p_canvas);
+ void forward_draw_over_canvas(Control *p_canvas);
void add_plugin(EditorPlugin *p_plugin);
void clear();
bool empty();
diff --git a/editor/editor_plugin.cpp b/editor/editor_plugin.cpp
index b4460c5619..c8abc1f9db 100644
--- a/editor/editor_plugin.cpp
+++ b/editor/editor_plugin.cpp
@@ -258,7 +258,7 @@ void EditorInterface::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_resource_previewer"), &EditorInterface::get_resource_previewer);
ClassDB::bind_method(D_METHOD("get_resource_filesystem"), &EditorInterface::get_resource_file_system);
ClassDB::bind_method(D_METHOD("get_editor_viewport"), &EditorInterface::get_editor_viewport);
- ClassDB::bind_method(D_METHOD("make_mesh_previews"), &EditorInterface::_make_mesh_previews);
+ ClassDB::bind_method(D_METHOD("make_mesh_previews", "meshes", "preview_size"), &EditorInterface::_make_mesh_previews);
ClassDB::bind_method(D_METHOD("save_scene"), &EditorInterface::save_scene);
ClassDB::bind_method(D_METHOD("save_scene_as", "path", "with_preview"), &EditorInterface::save_scene_as, DEFVAL(true));
@@ -402,18 +402,18 @@ Ref<SpatialEditorGizmo> EditorPlugin::create_spatial_gizmo(Spatial *p_spatial) {
return Ref<SpatialEditorGizmo>();
}
-bool EditorPlugin::forward_canvas_gui_input(const Transform2D &p_canvas_xform, const Ref<InputEvent> &p_event) {
+bool EditorPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p_event) {
if (get_script_instance() && get_script_instance()->has_method("forward_canvas_gui_input")) {
- return get_script_instance()->call("forward_canvas_gui_input", p_canvas_xform, p_event);
+ return get_script_instance()->call("forward_canvas_gui_input", p_event);
}
return false;
}
-void EditorPlugin::forward_draw_over_canvas(const Transform2D &p_canvas_xform, Control *p_canvas) {
+void EditorPlugin::forward_draw_over_canvas(Control *p_canvas) {
if (get_script_instance() && get_script_instance()->has_method("forward_draw_over_canvas")) {
- get_script_instance()->call("forward_draw_over_canvas", p_canvas_xform, p_canvas);
+ get_script_instance()->call("forward_draw_over_canvas", p_canvas);
}
}
@@ -632,6 +632,7 @@ void EditorPlugin::_bind_methods() {
BIND_ENUM_CONSTANT(CONTAINER_SPATIAL_EDITOR_BOTTOM);
BIND_ENUM_CONSTANT(CONTAINER_CANVAS_EDITOR_MENU);
BIND_ENUM_CONSTANT(CONTAINER_CANVAS_EDITOR_SIDE);
+ BIND_ENUM_CONSTANT(CONTAINER_CANVAS_EDITOR_BOTTOM);
BIND_ENUM_CONSTANT(CONTAINER_PROPERTY_EDITOR_BOTTOM);
BIND_ENUM_CONSTANT(DOCK_SLOT_LEFT_UL);
diff --git a/editor/editor_plugin.h b/editor/editor_plugin.h
index 18530e9ce4..1d68eee117 100644
--- a/editor/editor_plugin.h
+++ b/editor/editor_plugin.h
@@ -156,8 +156,8 @@ public:
void notify_scene_closed(const String &scene_filepath);
virtual Ref<SpatialEditorGizmo> create_spatial_gizmo(Spatial *p_spatial);
- virtual bool forward_canvas_gui_input(const Transform2D &p_canvas_xform, const Ref<InputEvent> &p_event);
- virtual void forward_draw_over_canvas(const Transform2D &p_canvas_xform, Control *p_canvas);
+ virtual bool forward_canvas_gui_input(const Ref<InputEvent> &p_event);
+ virtual void forward_draw_over_canvas(Control *p_canvas);
virtual bool forward_spatial_gui_input(Camera *p_camera, const Ref<InputEvent> &p_event);
virtual String get_name() const;
virtual bool has_main_screen() const;
diff --git a/editor/editor_profiler.cpp b/editor/editor_profiler.cpp
index 968d8b831e..faf49ffd41 100644
--- a/editor/editor_profiler.cpp
+++ b/editor/editor_profiler.cpp
@@ -634,7 +634,7 @@ EditorProfiler::EditorProfiler() {
display_mode->add_item(TTR("Frame Time (sec)"));
display_mode->add_item(TTR("Average Time (sec)"));
display_mode->add_item(TTR("Frame %"));
- display_mode->add_item(TTR("Fixed Frame %"));
+ display_mode->add_item(TTR("Physics Frame %"));
display_mode->connect("item_selected", this, "_combo_changed");
hb->add_child(display_mode);
diff --git a/editor/editor_resource_preview.cpp b/editor/editor_resource_preview.cpp
index 437ad5ac3f..f92962a4cb 100644
--- a/editor/editor_resource_preview.cpp
+++ b/editor/editor_resource_preview.cpp
@@ -185,7 +185,6 @@ void EditorResourcePreview::_thread() {
path += ":" + itos(cache[item.path].last_hash); //keep last hash (see description of what this is in condition below)
}
- print_line("cached: " + item.path);
_preview_ready(path, cache[item.path].preview, item.id, item.function, item.userdata);
preview_mutex->unlock();
@@ -201,16 +200,12 @@ void EditorResourcePreview::_thread() {
if (item.resource.is_valid()) {
- print_line("generated: " + item.path);
-
texture = _generate_preview(item, String());
//adding hash to the end of path (should be ID:<objid>:<hash>) because of 5 argument limit to call_deferred
_preview_ready(item.path + ":" + itos(item.resource->hash_edited_version()), texture, item.id, item.function, item.userdata);
} else {
- print_line("from file: " + item.path);
-
String temp_path = EditorSettings::get_singleton()->get_settings_path().plus_file("tmp");
String cache_base = ProjectSettings::get_singleton()->globalize_path(item.path).md5_text();
cache_base = temp_path.plus_file("resthumb-" + cache_base);
@@ -218,12 +213,9 @@ void EditorResourcePreview::_thread() {
//does not have it, try to load a cached thumbnail
String file = cache_base + ".txt";
- //print_line("cachetxt at "+file);
FileAccess *f = FileAccess::open(file, FileAccess::READ);
if (!f) {
- //print_line("generate because not cached");
-
//generate
texture = _generate_preview(item, cache_base);
} else {
@@ -283,7 +275,6 @@ void EditorResourcePreview::_thread() {
}
}
- //print_line("notify of preview ready");
_preview_ready(item.path, texture, item.id, item.function, item.userdata);
}
}
diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp
index b532bb793a..78cc215421 100644
--- a/editor/editor_settings.cpp
+++ b/editor/editor_settings.cpp
@@ -544,6 +544,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
{
String lang_hint = "en";
String host_lang = OS::get_singleton()->get_locale();
+ host_lang = TranslationServer::standardize_locale(host_lang);
String best;
@@ -632,6 +633,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
_initial_set("text_editor/highlighting/syntax_highlighting", true);
_initial_set("text_editor/highlighting/highlight_all_occurrences", true);
+ _initial_set("text_editor/highlighting/highlight_current_line", true);
_initial_set("text_editor/cursor/scroll_past_end_of_file", false);
_initial_set("text_editor/indent/type", 0);
@@ -705,7 +707,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
_initial_set("editors/3d/navigation_feel/orbit_sensitivity", 0.4);
hints["editors/3d/navigation_feel/orbit_sensitivity"] = PropertyInfo(Variant::REAL, "editors/3d/navigation_feel/orbit_sensitivity", PROPERTY_HINT_RANGE, "0.0, 2, 0.01");
- _initial_set("editors/3d/navigation_feel/orbit_inertia", 0.15);
+ _initial_set("editors/3d/navigation_feel/orbit_inertia", 0.05);
hints["editors/3d/navigation_feel/orbit_inertia"] = PropertyInfo(Variant::REAL, "editors/3d/navigation_feel/orbit_inertia", PROPERTY_HINT_RANGE, "0.0, 1, 0.01");
_initial_set("editors/3d/navigation_feel/translation_inertia", 0.15);
hints["editors/3d/navigation_feel/translation_inertia"] = PropertyInfo(Variant::REAL, "editors/3d/navigation_feel/translation_inertia", PROPERTY_HINT_RANGE, "0.0, 1, 0.01");
@@ -719,12 +721,13 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
// freelook
_initial_set("editors/3d/freelook/freelook_inertia", 0.1);
hints["editors/3d/freelook/freelook_inertia"] = PropertyInfo(Variant::REAL, "editors/3d/freelook/freelook_inertia", PROPERTY_HINT_RANGE, "0.0, 1, 0.01");
- _initial_set("editors/3d/freelook/freelook_base_speed", 0.1);
+ _initial_set("editors/3d/freelook/freelook_base_speed", 5.0);
hints["editors/3d/freelook/freelook_base_speed"] = PropertyInfo(Variant::REAL, "editors/3d/freelook/freelook_base_speed", PROPERTY_HINT_RANGE, "0.0, 10, 0.01");
_initial_set("editors/3d/freelook/freelook_activation_modifier", 0);
hints["editors/3d/freelook/freelook_activation_modifier"] = PropertyInfo(Variant::INT, "editors/3d/freelook/freelook_activation_modifier", PROPERTY_HINT_ENUM, "None,Shift,Alt,Meta,Ctrl");
_initial_set("editors/3d/freelook/freelook_modifier_speed_factor", 3.0);
hints["editors/3d/freelook/freelook_modifier_speed_factor"] = PropertyInfo(Variant::REAL, "editors/3d/freelook/freelook_modifier_speed_factor", PROPERTY_HINT_RANGE, "0.0, 10.0, 0.1");
+ _initial_set("editors/3d/freelook/freelook_speed_zoom_link", false);
_initial_set("editors/2d/bone_width", 5);
_initial_set("editors/2d/bone_color1", Color(1.0, 1.0, 1.0, 0.9));
diff --git a/editor/editor_themes.cpp b/editor/editor_themes.cpp
index 0436ac78df..29859a1a56 100644
--- a/editor/editor_themes.cpp
+++ b/editor/editor_themes.cpp
@@ -233,7 +233,6 @@ void editor_register_and_generate_icons(Ref<Theme> p_theme, bool p_dark_theme =
clock_t end_time = clock();
double time_d = (double)(end_time - begin_time) / CLOCKS_PER_SEC;
- print_line("SVG_GENERATION TIME: " + rtos(time_d));
#else
print_line("Sorry no icons for you");
#endif
@@ -350,6 +349,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
theme->set_color("contrast_color_2", "Editor", contrast_color_2);
theme->set_color("font_color", "Editor", font_color);
+ theme->set_color("highlighted_font_color", "Editor", font_color_hl);
theme->set_color("disabled_font_color", "Editor", font_color_disabled);
theme->set_color("mono_color", "Editor", mono_color);
@@ -391,7 +391,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
editor_register_and_generate_icons(theme, dark_theme, thumb_size);
}
// thumbnail size has changed, so we regenerate the medium sizes
- if (p_theme != NULL && fabs(p_theme->get_constant("thumb_size", "Editor") - thumb_size) > 0.00001) {
+ if (p_theme != NULL && fabs((double)p_theme->get_constant("thumb_size", "Editor") - thumb_size) > 0.00001) {
editor_register_and_generate_icons(p_theme, dark_theme, thumb_size, true);
}
@@ -971,8 +971,8 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
const Color dim_color = Color(font_color.r, font_color.g, font_color.b, 0.5);
const float mono_value = mono_color.r;
- const Color alpha1 = Color(mono_value, mono_value, mono_value, 0.1);
- const Color alpha2 = Color(mono_value, mono_value, mono_value, 0.3);
+ const Color alpha1 = Color(mono_value, mono_value, mono_value, 0.07);
+ const Color alpha2 = Color(mono_value, mono_value, mono_value, 0.14);
const Color alpha3 = Color(mono_value, mono_value, mono_value, 0.5);
const Color alpha4 = Color(mono_value, mono_value, mono_value, 0.7);
@@ -997,7 +997,7 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
const Color caret_color = mono_color;
const Color caret_background_color = mono_color.inverted();
const Color text_selected_color = dark_color_3;
- const Color selection_color = alpha3;
+ const Color selection_color = alpha2;
const Color brace_mismatch_color = error_color;
const Color current_line_color = alpha1;
const Color line_length_guideline_color = warning_color;
diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp
index a9d72607b4..62d77f56bc 100644
--- a/editor/filesystem_dock.cpp
+++ b/editor/filesystem_dock.cpp
@@ -38,16 +38,12 @@
#include "project_settings.h"
#include "scene/main/viewport.h"
-bool FileSystemDock::_create_tree(TreeItem *p_parent, EditorFileSystemDirectory *p_dir) {
+bool FileSystemDock::_create_tree(TreeItem *p_parent, EditorFileSystemDirectory *p_dir, Vector<String> &uncollapsed_paths) {
TreeItem *item = tree->create_item(p_parent);
String dname = p_dir->get_name();
if (dname == "")
dname = "res://";
- else {
- // collapse every tree item but the root folder
- item->set_collapsed(true);
- }
item->set_text(0, dname);
item->set_icon(0, get_icon("Folder", "EditorIcons"));
@@ -61,38 +57,78 @@ bool FileSystemDock::_create_tree(TreeItem *p_parent, EditorFileSystemDirectory
item->select(0);
}
+ if ((path.begins_with(lpath) && path != lpath)) {
+ item->set_collapsed(false);
+ } else {
+ bool is_collapsed = true;
+ for (int i = 0; i < uncollapsed_paths.size(); i++) {
+ if (lpath == uncollapsed_paths[i]) {
+ is_collapsed = false;
+ break;
+ }
+ }
+ item->set_collapsed(is_collapsed);
+ }
+
for (int i = 0; i < p_dir->get_subdir_count(); i++)
- _create_tree(item, p_dir->get_subdir(i));
+ _create_tree(item, p_dir->get_subdir(i), uncollapsed_paths);
return true;
}
-void FileSystemDock::_update_tree() {
+void FileSystemDock::_update_tree(bool keep_collapse_state) {
+
+ Vector<String> uncollapsed_paths;
+ if (keep_collapse_state) {
+ TreeItem *root = tree->get_root();
+ if (root) {
+ TreeItem *resTree = root->get_children()->get_next();
+
+ Vector<TreeItem *> needs_check;
+ needs_check.push_back(resTree);
+
+ while (needs_check.size()) {
+ if (!needs_check[0]->is_collapsed()) {
+ uncollapsed_paths.push_back(needs_check[0]->get_metadata(0));
+ TreeItem *child = needs_check[0]->get_children();
+ while (child) {
+ needs_check.push_back(child);
+ child = child->get_next();
+ }
+ }
+ needs_check.remove(0);
+ }
+ }
+ }
tree->clear();
updating_tree = true;
+
TreeItem *root = tree->create_item();
TreeItem *favorites = tree->create_item(root);
favorites->set_icon(0, get_icon("Favorites", "EditorIcons"));
favorites->set_text(0, TTR("Favorites:"));
favorites->set_selectable(0, false);
- Vector<String> faves = EditorSettings::get_singleton()->get_favorite_dirs();
- for (int i = 0; i < faves.size(); i++) {
- if (!faves[i].begins_with("res://"))
+
+ Vector<String> favorite_paths = EditorSettings::get_singleton()->get_favorite_dirs();
+ String res_path = "res://";
+ Ref<Texture> folder_icon = get_icon("Folder", "EditorIcons");
+ for (int i = 0; i < favorite_paths.size(); i++) {
+ String fave = favorite_paths[i];
+ if (!fave.begins_with(res_path))
continue;
TreeItem *ti = tree->create_item(favorites);
- String fv = faves[i];
- if (fv == "res://")
+ if (fave == res_path)
ti->set_text(0, "/");
else
- ti->set_text(0, faves[i].get_file());
- ti->set_icon(0, get_icon("Folder", "EditorIcons"));
+ ti->set_text(0, fave.get_file());
+ ti->set_icon(0, folder_icon);
ti->set_selectable(0, true);
- ti->set_metadata(0, faves[i]);
+ ti->set_metadata(0, fave);
}
- _create_tree(root, EditorFileSystem::get_singleton()->get_filesystem());
+ _create_tree(root, EditorFileSystem::get_singleton()->get_filesystem(), uncollapsed_paths);
updating_tree = false;
}
@@ -104,26 +140,28 @@ void FileSystemDock::_notification(int p_what) {
bool new_mode = get_size().height < get_viewport_rect().size.height / 2;
- if (new_mode != split_mode) {
+ if (new_mode != low_height_mode) {
- split_mode = new_mode;
+ low_height_mode = new_mode;
- //print_line("SPLIT MODE? "+itos(split_mode));
- if (split_mode) {
+ if (low_height_mode) {
file_list_vb->hide();
- tree->set_custom_minimum_size(Size2(0, 0));
tree->set_v_size_flags(SIZE_EXPAND_FILL);
- button_back->show();
+ button_tree->show();
} else {
- tree->show();
- file_list_vb->show();
- tree->set_custom_minimum_size(Size2(0, 200) * EDSCALE);
tree->set_v_size_flags(SIZE_FILL);
- button_back->hide();
- if (!EditorFileSystem::get_singleton()->is_scanning()) {
- _fs_changed();
+ if (!tree->is_visible()) {
+ tree->show();
+ button_favorite->show();
+ _update_tree(true);
+ }
+
+ if (!file_list_vb->is_visible()) {
+ file_list_vb->show();
+ button_tree->hide();
+ _update_files(true);
}
}
}
@@ -138,30 +176,32 @@ void FileSystemDock::_notification(int p_what) {
EditorFileSystem::get_singleton()->connect("filesystem_changed", this, "_fs_changed");
EditorResourcePreview::get_singleton()->connect("preview_invalidated", this, "_preview_invalidated");
- button_reload->set_icon(get_icon("Reload", "EditorIcons"));
- button_favorite->set_icon(get_icon("Favorites", "EditorIcons"));
- //button_instance->set_icon( get_icon("Add","EditorIcons"));
- //button_open->set_icon( get_icon("Folder","EditorIcons"));
- button_back->set_icon(get_icon("Filesystem", "EditorIcons"));
+ String ei = "EditorIcons";
+ button_reload->set_icon(get_icon("Reload", ei));
+ button_favorite->set_icon(get_icon("Favorites", ei));
+ //button_instance->set_icon(get_icon("Add", ei));
+ //button_open->set_icon(get_icon("Folder", ei));
+ button_tree->set_icon(get_icon("Filesystem", ei));
_update_file_display_toggle_button();
button_display_mode->connect("pressed", this, "_change_file_display");
- //file_options->set_icon( get_icon("Tools","EditorIcons"));
+ //file_options->set_icon( get_icon("Tools","ei"));
files->connect("item_activated", this, "_select_file");
button_hist_next->connect("pressed", this, "_fw_history");
button_hist_prev->connect("pressed", this, "_bw_history");
- search_box->add_icon_override("right_icon", get_icon("Search", "EditorIcons"));
+ search_box->add_icon_override("right_icon", get_icon("Search", ei));
- button_hist_next->set_icon(get_icon("Forward", "EditorIcons"));
- button_hist_prev->set_icon(get_icon("Back", "EditorIcons"));
+ button_hist_next->set_icon(get_icon("Forward", ei));
+ button_hist_prev->set_icon(get_icon("Back", ei));
file_options->connect("id_pressed", this, "_file_option");
folder_options->connect("id_pressed", this, "_folder_option");
- button_back->connect("pressed", this, "_go_to_tree", varray(), CONNECT_DEFERRED);
- current_path->connect("text_entered", this, "_go_to_dir");
- _update_tree(); //maybe it finished already
+ button_tree->connect("pressed", this, "_go_to_tree", varray(), CONNECT_DEFERRED);
+ current_path->connect("text_entered", this, "navigate_to_path");
if (EditorFileSystem::get_singleton()->is_scanning()) {
_set_scanning_mode();
+ } else {
+ _update_tree(false);
}
} break;
@@ -179,8 +219,7 @@ void FileSystemDock::_notification(int p_what) {
if (tree->is_visible_in_tree() && dd.has("type")) {
if ((String(dd["type"]) == "files") || (String(dd["type"]) == "files_and_dirs") || (String(dd["type"]) == "resource")) {
tree->set_drop_mode_flags(Tree::DROP_MODE_ON_ITEM);
- }
- if ((String(dd["type"]) == "favorite")) {
+ } else if ((String(dd["type"]) == "favorite")) {
tree->set_drop_mode_flags(Tree::DROP_MODE_INBETWEEN);
}
}
@@ -193,52 +232,54 @@ void FileSystemDock::_notification(int p_what) {
} break;
case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
+ String ei = "EditorIcons";
int new_mode = int(EditorSettings::get_singleton()->get("docks/filesystem/display_mode"));
//_update_icons
- button_reload->set_icon(get_icon("Reload", "EditorIcons"));
- button_favorite->set_icon(get_icon("Favorites", "EditorIcons"));
- button_back->set_icon(get_icon("Filesystem", "EditorIcons"));
- _update_file_display_toggle_button();
-
- search_box->add_icon_override("right_icon", get_icon("Search", "EditorIcons"));
+ button_reload->set_icon(get_icon("Reload", ei));
+ button_favorite->set_icon(get_icon("Favorites", ei));
+ button_tree->set_icon(get_icon("Filesystem", ei));
+ button_hist_next->set_icon(get_icon("Forward", ei));
+ button_hist_prev->set_icon(get_icon("Back", ei));
- button_hist_next->set_icon(get_icon("Forward", "EditorIcons"));
- button_hist_prev->set_icon(get_icon("Back", "EditorIcons"));
+ search_box->add_icon_override("right_icon", get_icon("Search", ei));
if (new_mode != display_mode) {
set_display_mode(new_mode);
} else {
+ _update_file_display_toggle_button();
_update_files(true);
}
- _update_tree();
-
+ _update_tree(true);
} break;
}
}
void FileSystemDock::_dir_selected() {
- TreeItem *ti = tree->get_selected();
- if (!ti)
+ TreeItem *sel = tree->get_selected();
+ if (!sel)
return;
- String dir = ti->get_metadata(0);
+ path = sel->get_metadata(0);
+
bool found = false;
Vector<String> favorites = EditorSettings::get_singleton()->get_favorite_dirs();
for (int i = 0; i < favorites.size(); i++) {
- if (favorites[i] == dir) {
+ if (favorites[i] == path) {
found = true;
break;
}
}
button_favorite->set_pressed(found);
+ current_path->set_text(path);
+ _push_to_history();
- if (!split_mode) {
- _open_pressed(); //go directly to dir
+ if (!low_height_mode) {
+ _update_files(false);
}
}
@@ -247,27 +288,25 @@ void FileSystemDock::_favorites_pressed() {
TreeItem *sel = tree->get_selected();
if (!sel)
return;
- String dir = sel->get_metadata(0);
+ path = sel->get_metadata(0);
int idx = -1;
Vector<String> favorites = EditorSettings::get_singleton()->get_favorite_dirs();
for (int i = 0; i < favorites.size(); i++) {
- if (favorites[i] == dir) {
+ if (favorites[i] == path) {
idx = i;
break;
}
}
- if (button_favorite->is_pressed() && idx == -1) {
- favorites.push_back(dir);
- EditorSettings::get_singleton()->set_favorite_dirs(favorites);
- _update_tree();
- } else if (!button_favorite->is_pressed() && idx != -1) {
+ if (idx == -1) {
+ favorites.push_back(path);
+ } else {
favorites.remove(idx);
- EditorSettings::get_singleton()->set_favorite_dirs(favorites);
- _update_tree();
}
+ EditorSettings::get_singleton()->set_favorite_dirs(favorites);
+ _update_tree(true);
}
String FileSystemDock::get_selected_path() const {
@@ -275,8 +314,8 @@ String FileSystemDock::get_selected_path() const {
TreeItem *sel = tree->get_selected();
if (!sel)
return "";
- String path = sel->get_metadata(0);
- return "res://" + path;
+
+ return sel->get_metadata(0);
}
String FileSystemDock::get_current_path() const {
@@ -286,27 +325,33 @@ String FileSystemDock::get_current_path() const {
void FileSystemDock::navigate_to_path(const String &p_path) {
// If the path is a file, do not only go to the directory in the tree, also select the file in the file list.
- String dir_path = "";
String file_name = "";
DirAccess *dirAccess = DirAccess::open("res://");
if (dirAccess->file_exists(p_path)) {
- dir_path = p_path.get_base_dir();
+ path = p_path.get_base_dir();
file_name = p_path.get_file();
} else if (dirAccess->dir_exists(p_path)) {
- dir_path = p_path;
+ path = p_path;
} else {
ERR_EXPLAIN(TTR("Cannot navigate to '" + p_path + "' as it has not been found in the file system!"));
ERR_FAIL();
}
- path = dir_path;
- _update_tree();
- tree->ensure_cursor_is_visible();
+ current_path->set_text(path);
+ _push_to_history();
- if (!file_name.empty()) {
- _open_pressed(); // Seems to be the only way to get into the file view. This also pushes to history.
+ if (!low_height_mode) {
+ _update_tree(true);
+ _update_files(false);
+ } else {
+ if (file_name.empty()) {
+ _go_to_tree();
+ } else {
+ _go_to_file_list();
+ }
+ }
- // Focus the given file.
+ if (!file_name.empty()) {
for (int i = 0; i < files->get_item_count(); i++) {
if (files->get_item_text(i) == file_name) {
files->select(i, true);
@@ -319,27 +364,13 @@ void FileSystemDock::navigate_to_path(const String &p_path) {
void FileSystemDock::_thumbnail_done(const String &p_path, const Ref<Texture> &p_preview, const Variant &p_udata) {
- bool valid = false;
-
- if (search_box->is_visible()) {
- valid = true;
- } else {
- valid = (path == p_path.get_base_dir());
- }
-
- if (p_preview.is_valid() && valid) {
+ if ((file_list_vb->is_visible_in_tree() || path == p_path.get_base_dir()) && p_preview.is_valid()) {
Array uarr = p_udata;
int idx = uarr[0];
String file = uarr[1];
- if (idx >= files->get_item_count())
- return;
- if (files->get_item_text(idx) != file)
- return;
- String fpath = files->get_item_metadata(idx);
- if (fpath != p_path)
- return;
- files->set_item_icon(idx, p_preview);
+ if (idx < files->get_item_count() && files->get_item_text(idx) == file && files->get_item_metadata(idx) == p_path)
+ files->set_item_icon(idx, p_preview);
}
}
@@ -416,6 +447,7 @@ void FileSystemDock::_update_files(bool p_keep_selection) {
if (!efd)
return;
+ String ei = "EditorIcons";
int thumbnail_size = EditorSettings::get_singleton()->get("docks/filesystem/thumbnail_size");
thumbnail_size *= EDSCALE;
Ref<Texture> folder_thumbnail;
@@ -425,9 +457,9 @@ void FileSystemDock::_update_files(bool p_keep_selection) {
bool always_show_folders = EditorSettings::get_singleton()->get("docks/filesystem/always_show_folders");
bool use_thumbnails = (display_mode == DISPLAY_THUMBNAILS);
- bool use_folders = search_box->get_text().length() == 0 && (split_mode || always_show_folders);
+ bool use_folders = search_box->get_text().length() == 0 && (low_height_mode || always_show_folders);
- if (use_thumbnails) { //thumbnails
+ if (use_thumbnails) {
files->set_max_columns(0);
files->set_icon_mode(ItemList::ICON_MODE_TOP);
@@ -436,13 +468,13 @@ void FileSystemDock::_update_files(bool p_keep_selection) {
files->set_fixed_icon_size(Size2(thumbnail_size, thumbnail_size));
if (thumbnail_size < 64) {
- folder_thumbnail = get_icon("FolderMediumThumb", "EditorIcons");
- file_thumbnail = get_icon("FileMediumThumb", "EditorIcons");
- file_thumbnail_broken = get_icon("FileDeadMediumThumb", "EditorIcons");
+ folder_thumbnail = get_icon("FolderMediumThumb", ei);
+ file_thumbnail = get_icon("FileMediumThumb", ei);
+ file_thumbnail_broken = get_icon("FileDeadMediumThumb", ei);
} else {
- folder_thumbnail = get_icon("FolderBigThumb", "EditorIcons");
- file_thumbnail = get_icon("FileBigThumb", "EditorIcons");
- file_thumbnail_broken = get_icon("FileDeadBigThumb", "EditorIcons");
+ folder_thumbnail = get_icon("FolderBigThumb", ei);
+ file_thumbnail = get_icon("FileBigThumb", ei);
+ file_thumbnail_broken = get_icon("FileDeadBigThumb", ei);
}
} else {
@@ -454,14 +486,10 @@ void FileSystemDock::_update_files(bool p_keep_selection) {
}
if (use_folders) {
+ Ref<Texture> folderIcon = (use_thumbnails) ? folder_thumbnail : get_icon("folder", "FileDialog");
if (path != "res://") {
-
- if (use_thumbnails) {
- files->add_item("..", folder_thumbnail, true);
- } else {
- files->add_item("..", get_icon("folder", "FileDialog"), true);
- }
+ files->add_item("..", folderIcon, false);
String bd = path.get_base_dir();
if (bd != "res://" && !bd.ends_with("/"))
@@ -474,12 +502,7 @@ void FileSystemDock::_update_files(bool p_keep_selection) {
String dname = efd->get_subdir(i)->get_name();
- if (use_thumbnails) {
- files->add_item(dname, folder_thumbnail, true);
- } else {
- files->add_item(dname, get_icon("folder", "FileDialog"), true);
- }
-
+ files->add_item(dname, folderIcon, true);
files->set_item_metadata(files->get_item_count() - 1, path.plus_file(dname) + "/");
if (cselection.has(dname))
@@ -489,12 +512,9 @@ void FileSystemDock::_update_files(bool p_keep_selection) {
List<FileInfo> filelist;
- if (search_box->get_text().length()) {
-
- if (search_box->get_text().length() > 1) {
- _search(EditorFileSystem::get_singleton()->get_filesystem(), &filelist, 128);
- }
+ if (search_box->get_text().length() > 0) {
+ _search(EditorFileSystem::get_singleton()->get_filesystem(), &filelist, 128);
filelist.sort();
} else {
@@ -511,90 +531,93 @@ void FileSystemDock::_update_files(bool p_keep_selection) {
}
}
- StringName ei = "EditorIcons"; //make it faster..
- StringName oi = "Object";
+ String oi = "Object";
for (List<FileInfo>::Element *E = filelist.front(); E; E = E->next()) {
- String fname = E->get().name;
- String fp = E->get().path;
- StringName type = E->get().type;
+ FileInfo *finfo = &(E->get());
+ String fname = finfo->name;
+ String fpath = finfo->path;
+ String ftype = finfo->type;
Ref<Texture> type_icon;
- Ref<Texture> big_icon = file_thumbnail;
+ Ref<Texture> big_icon;
String tooltip = fname;
- if (!E->get().import_broken) {
-
- if (has_icon(type, ei)) {
- type_icon = get_icon(type, ei);
- } else {
- type_icon = get_icon(oi, ei);
- }
+ if (!finfo->import_broken) {
+ type_icon = (has_icon(ftype, ei)) ? get_icon(ftype, ei) : get_icon(oi, ei);
+ big_icon = file_thumbnail;
} else {
- type_icon = get_icon("ImportFail", "EditorIcons");
+ type_icon = get_icon("ImportFail", ei);
big_icon = file_thumbnail_broken;
tooltip += TTR("\nStatus: Import of file failed. Please fix file and reimport manually.");
}
- if (E->get().sources.size()) {
- for (int i = 0; i < E->get().sources.size(); i++) {
- tooltip += TTR("\nSource: ") + E->get().sources[i];
- }
- }
-
+ int item_index;
if (use_thumbnails) {
files->add_item(fname, big_icon, true);
- files->set_item_metadata(files->get_item_count() - 1, fp);
- files->set_item_tag_icon(files->get_item_count() - 1, type_icon);
- Array udata;
- udata.resize(2);
- udata[0] = files->get_item_count() - 1;
- udata[1] = fname;
- if (!E->get().import_broken) {
- EditorResourcePreview::get_singleton()->queue_resource_preview(fp, this, "_thumbnail_done", udata);
+ item_index = files->get_item_count() - 1;
+ files->set_item_metadata(item_index, fpath);
+ files->set_item_tag_icon(item_index, type_icon);
+ if (!finfo->import_broken) {
+ Array udata;
+ udata.resize(2);
+ udata[0] = item_index;
+ udata[1] = fname;
+ EditorResourcePreview::get_singleton()->queue_resource_preview(fpath, this, "_thumbnail_done", udata);
}
} else {
files->add_item(fname, type_icon, true);
- files->set_item_metadata(files->get_item_count() - 1, fp);
+ item_index = files->get_item_count() - 1;
+ files->set_item_metadata(item_index, fpath);
}
if (cselection.has(fname))
- files->select(files->get_item_count() - 1, false);
+ files->select(item_index, false);
- files->set_item_tooltip(files->get_item_count() - 1, tooltip);
+ if (finfo->sources.size()) {
+ for (int j = 0; j < finfo->sources.size(); j++) {
+ tooltip += "\nSource: " + finfo->sources[j];
+ }
+ }
+ files->set_item_tooltip(item_index, tooltip);
}
}
void FileSystemDock::_select_file(int p_idx) {
-
- files->select(p_idx, true);
- _file_option(FILE_OPEN);
+ String fpath = files->get_item_metadata(p_idx);
+ if (fpath.ends_with("/")) {
+ if (fpath != "res://") {
+ fpath = fpath.substr(0, fpath.length() - 1);
+ }
+ path = fpath;
+ _update_files(false);
+ current_path->set_text(path);
+ _push_to_history();
+ } else {
+ if (ResourceLoader::get_resource_type(path) == "PackedScene") {
+ editor->open_request(path);
+ } else {
+ editor->load_resource(path);
+ }
+ }
}
void FileSystemDock::_go_to_tree() {
- tree->show();
- file_list_vb->hide();
- _update_tree();
+ if (low_height_mode) {
+ tree->show();
+ button_favorite->show();
+ file_list_vb->hide();
+ }
+
+ _update_tree(true);
tree->grab_focus();
tree->ensure_cursor_is_visible();
- button_favorite->show();
//button_open->hide();
//file_options->hide();
}
-void FileSystemDock::_go_to_dir(const String &p_dir) {
-
- DirAccess *da = DirAccess::create(DirAccess::ACCESS_RESOURCES);
- if (da->change_dir(p_dir) == OK) {
- path = da->get_current_dir();
- _update_files(false);
- }
- current_path->set_text(path);
- memdelete(da);
-}
-
void FileSystemDock::_preview_invalidated(const String &p_path) {
if (display_mode == DISPLAY_THUMBNAILS && p_path.get_base_dir() == path && search_box->get_text() == String() && file_list_vb->is_visible_in_tree()) {
@@ -617,17 +640,15 @@ void FileSystemDock::_preview_invalidated(const String &p_path) {
void FileSystemDock::_fs_changed() {
button_hist_prev->set_disabled(history_pos == 0);
- button_hist_next->set_disabled(history_pos + 1 == history.size());
+ button_hist_next->set_disabled(history_pos == history.size() - 1);
scanning_vb->hide();
split_box->show();
if (tree->is_visible()) {
- button_favorite->show();
- _update_tree();
+ _update_tree(true);
}
if (file_list_vb->is_visible()) {
-
_update_files(true);
}
@@ -636,9 +657,9 @@ void FileSystemDock::_fs_changed() {
void FileSystemDock::_set_scanning_mode() {
- split_box->hide();
button_hist_prev->set_disabled(true);
button_hist_next->set_disabled(true);
+ split_box->hide();
scanning_vb->show();
set_process(true);
if (EditorFileSystem::get_singleton()->is_scanning()) {
@@ -653,69 +674,63 @@ void FileSystemDock::_fw_history() {
if (history_pos < history.size() - 1)
history_pos++;
- path = history[history_pos];
-
- if (tree->is_visible()) {
- _update_tree();
- tree->grab_focus();
- tree->ensure_cursor_is_visible();
- }
-
- if (file_list_vb->is_visible()) {
- _update_files(false);
- current_path->set_text(path);
- }
-
- button_hist_prev->set_disabled(history_pos == 0);
- button_hist_next->set_disabled(history_pos + 1 == history.size());
+ _update_history();
}
void FileSystemDock::_bw_history() {
-
if (history_pos > 0)
history_pos--;
+ _update_history();
+}
+
+void FileSystemDock::_update_history() {
path = history[history_pos];
+ current_path->set_text(path);
if (tree->is_visible()) {
- _update_tree();
+ _update_tree(true);
tree->grab_focus();
tree->ensure_cursor_is_visible();
}
if (file_list_vb->is_visible()) {
_update_files(false);
- current_path->set_text(path);
}
button_hist_prev->set_disabled(history_pos == 0);
- button_hist_next->set_disabled(history_pos + 1 == history.size());
+ button_hist_next->set_disabled(history_pos == history.size() - 1);
}
void FileSystemDock::_push_to_history() {
-
- history.resize(history_pos + 1);
if (history[history_pos] != path) {
+ history.resize(history_pos + 1);
history.push_back(path);
history_pos++;
+
+ if (history.size() > history_max_size) {
+ history.remove(0);
+ history_pos = history_max_size - 1;
+ }
}
button_hist_prev->set_disabled(history_pos == 0);
- button_hist_next->set_disabled(history_pos + 1 == history.size());
+ button_hist_next->set_disabled(history_pos == history.size() - 1);
}
-void FileSystemDock::_find_inside_move_files(EditorFileSystemDirectory *efsd, Vector<String> &files) {
+void FileSystemDock::_get_all_files_in_dir(EditorFileSystemDirectory *efsd, Vector<String> &files) const {
+ if (efsd == NULL)
+ return;
for (int i = 0; i < efsd->get_subdir_count(); i++) {
- _find_inside_move_files(efsd->get_subdir(i), files);
+ _get_all_files_in_dir(efsd->get_subdir(i), files);
}
for (int i = 0; i < efsd->get_file_count(); i++) {
files.push_back(efsd->get_file_path(i));
}
}
-void FileSystemDock::_find_remaps(EditorFileSystemDirectory *efsd, Map<String, String> &renames, List<String> &to_remaps) {
-
+void FileSystemDock::_find_remaps(EditorFileSystemDirectory *efsd, const Map<String, String> &renames, Vector<String> &to_remaps) const {
for (int i = 0; i < efsd->get_subdir_count(); i++) {
_find_remaps(efsd->get_subdir(i), renames, to_remaps);
}
@@ -730,199 +745,157 @@ void FileSystemDock::_find_remaps(EditorFileSystemDirectory *efsd, Map<String, S
}
}
-void FileSystemDock::_rename_operation(const String &p_to_path) {
+void FileSystemDock::_try_move_item(const FileOrFolder &p_item, const String &p_new_path, Map<String, String> &p_renames) const {
+ //Ensure folder paths end with "/"
+ String old_path = (p_item.is_file || p_item.path.ends_with("/")) ? p_item.path : (p_item.path + "/");
+ String new_path = (p_item.is_file || p_new_path.ends_with("/")) ? p_new_path : (p_new_path + "/");
- if (move_files[0] == p_to_path) {
- EditorNode::get_singleton()->show_warning(TTR("Same source and destination files, doing nothing."));
+ if (new_path == old_path) {
return;
- }
- if (FileAccess::exists(p_to_path)) {
- EditorNode::get_singleton()->show_warning(TTR("Target file exists, can't overwrite. Delete first."));
+ } else if (old_path == "res://") {
+ EditorNode::get_singleton()->add_io_error(TTR("Cannot move/rename resources root."));
+ return;
+ } else if (!p_item.is_file && new_path.begins_with(old_path)) {
+ //This check doesn't erroneously catch renaming to a longer name as folder paths always end with "/"
+ EditorNode::get_singleton()->add_io_error(TTR("Cannot move a folder into itself.\n") + old_path + "\n");
return;
}
- Map<String, String> renames;
- renames[move_files[0]] = p_to_path;
-
- List<String> remap;
-
- _find_remaps(EditorFileSystem::get_singleton()->get_filesystem(), renames, remap);
- print_line("found files to remap: " + itos(remap.size()));
-
- //perform remaps
- for (List<String>::Element *E = remap.front(); E; E = E->next()) {
-
- Error err = ResourceLoader::rename_dependencies(E->get(), renames);
- print_line("remapping: " + E->get());
-
- if (err != OK) {
- EditorNode::get_singleton()->add_io_error("Can't rename deps for:\n" + E->get() + "\n");
- }
+ //Build a list of files which will have new paths as a result of this operation
+ Vector<String> changed_paths;
+ if (p_item.is_file) {
+ changed_paths.push_back(old_path);
+ } else {
+ _get_all_files_in_dir(EditorFileSystem::get_singleton()->get_filesystem_path(old_path), changed_paths);
}
- //finally, perform moves
-
DirAccess *da = DirAccess::create(DirAccess::ACCESS_RESOURCES);
+ print_line("Moving " + old_path + " -> " + new_path);
+ Error err = da->rename(old_path, new_path);
+ if (err == OK) {
+ //Move/Rename any corresponding import settings too
+ if (p_item.is_file && FileAccess::exists(old_path + ".import")) {
+ err = da->rename(old_path + ".import", new_path + ".import");
+ if (err != OK) {
+ EditorNode::get_singleton()->add_io_error(TTR("Error moving:\n") + old_path + ".import\n");
+ }
+ }
- Error err = da->rename(move_files[0], p_to_path);
- print_line("moving file " + move_files[0] + " to " + p_to_path);
- if (err != OK) {
- EditorNode::get_singleton()->add_io_error("Error moving file:\n" + move_files[0] + "\n");
+ //Only treat as a changed dependency if it was successfully moved
+ for (int i = 0; i < changed_paths.size(); ++i) {
+ p_renames[changed_paths[i]] = changed_paths[i].replace_first(old_path, new_path);
+ print_line(" Remap: " + changed_paths[i] + " -> " + p_renames[changed_paths[i]]);
+ }
+ } else {
+ EditorNode::get_singleton()->add_io_error(TTR("Error moving:\n") + old_path + "\n");
}
-
- //rescan everything
memdelete(da);
- print_line("call rescan!");
- _rescan();
}
-void FileSystemDock::_move_operation(const String &p_to_path) {
-
- if (p_to_path == path) {
- EditorNode::get_singleton()->show_warning(TTR("Same source and destination paths, doing nothing."));
- return;
+void FileSystemDock::_update_dependencies_after_move(const Map<String, String> &p_renames) const {
+ //The following code assumes that the following holds:
+ // 1) EditorFileSystem contains the old paths/folder structure from before the rename/move.
+ // 2) ResourceLoader can use the new paths without needing to call rescan.
+ Vector<String> remaps;
+ _find_remaps(EditorFileSystem::get_singleton()->get_filesystem(), p_renames, remaps);
+ for (int i = 0; i < remaps.size(); ++i) {
+ //Because we haven't called a rescan yet the found remap might still be an old path itself.
+ String file = p_renames.has(remaps[i]) ? p_renames[remaps[i]] : remaps[i];
+ print_line("Remapping dependencies for: " + file);
+ Error err = ResourceLoader::rename_dependencies(file, p_renames);
+ if (err != OK) {
+ EditorNode::get_singleton()->add_io_error(TTR("Unable to update dependencies:\n") + remaps[i] + "\n");
+ }
}
+}
- //find files inside dirs to be moved
-
- Vector<String> inside_files;
-
- for (int i = 0; i < move_dirs.size(); i++) {
- if (p_to_path.begins_with(move_dirs[i])) {
- EditorNode::get_singleton()->show_warning(TTR("Can't move directories to within themselves."));
- return;
- }
+void FileSystemDock::_make_dir_confirm() {
+ String dir_name = make_dir_dialog_text->get_text().strip_edges();
- EditorFileSystemDirectory *efsd = EditorFileSystem::get_singleton()->get_filesystem_path(move_dirs[i]);
- if (!efsd)
- continue;
- _find_inside_move_files(efsd, inside_files);
+ if (dir_name.length() == 0) {
+ EditorNode::get_singleton()->show_warning(TTR("No name provided"));
+ return;
+ } else if (dir_name.find("/") != -1 || dir_name.find("\\") != -1 || dir_name.find(":") != -1) {
+ EditorNode::get_singleton()->show_warning(TTR("Provided name contains invalid characters"));
+ return;
}
- //make list of remaps
- Map<String, String> renames;
- String repfrom = path == "res://" ? path : String(path + "/");
- String repto = p_to_path;
- if (!repto.ends_with("/")) {
- repto += "/";
+ print_line("Making folder " + dir_name + " in " + path);
+ DirAccess *da = DirAccess::create(DirAccess::ACCESS_RESOURCES);
+ Error err = da->change_dir(path);
+ if (err == OK) {
+ err = da->make_dir(dir_name);
}
+ memdelete(da);
- print_line("reprfrom: " + repfrom + " repto " + repto);
-
- for (int i = 0; i < move_files.size(); i++) {
- renames[move_files[i]] = move_files[i].replace_first(repfrom, repto);
- print_line("move file " + move_files[i] + " -> " + renames[move_files[i]]);
- }
- for (int i = 0; i < inside_files.size(); i++) {
- renames[inside_files[i]] = inside_files[i].replace_first(repfrom, repto);
- print_line("inside file " + inside_files[i] + " -> " + renames[inside_files[i]]);
+ if (err == OK) {
+ print_line("call rescan!");
+ _rescan();
+ } else {
+ EditorNode::get_singleton()->show_warning(TTR("Could not create folder."));
}
+}
- //make list of files that will be run the remapping
- List<String> remap;
-
- _find_remaps(EditorFileSystem::get_singleton()->get_filesystem(), renames, remap);
- print_line("found files to remap: " + itos(remap.size()));
-
- //perform remaps
- for (List<String>::Element *E = remap.front(); E; E = E->next()) {
-
- Error err = ResourceLoader::rename_dependencies(E->get(), renames);
- print_line("remapping: " + E->get());
+void FileSystemDock::_rename_operation_confirm() {
- if (err != OK) {
- EditorNode::get_singleton()->add_io_error(TTR("Can't rename deps for:\n") + E->get() + "\n");
- }
+ String new_name = rename_dialog_text->get_text().strip_edges();
+ if (new_name.length() == 0) {
+ EditorNode::get_singleton()->show_warning(TTR("No name provided."));
+ return;
+ } else if (new_name.find("/") != -1 || new_name.find("\\") != -1 || new_name.find(":") != -1) {
+ EditorNode::get_singleton()->show_warning(TTR("Name contains invalid characters."));
+ return;
}
- //finally, perform moves
+ String old_path = to_rename.path.ends_with("/") ? to_rename.path.substr(0, to_rename.path.length() - 1) : to_rename.path;
+ String new_path = old_path.get_base_dir().plus_file(new_name);
+ if (old_path == new_path) {
+ return;
+ }
+ //Present a more user friendly warning for name conflict
DirAccess *da = DirAccess::create(DirAccess::ACCESS_RESOURCES);
-
- for (int i = 0; i < move_files.size(); i++) {
-
- String to = move_files[i].replace_first(repfrom, repto);
- Error err = da->rename(move_files[i], to);
- print_line("moving file " + move_files[i] + " to " + to);
- if (err != OK) {
- EditorNode::get_singleton()->add_io_error(TTR("Error moving file:\n") + move_files[i] + "\n");
- }
- if (FileAccess::exists(move_files[i] + ".import")) { //move imported files too
- //@todo should remove the files in .import folder
- err = da->rename(move_files[i] + ".import", to + ".import");
- if (err != OK) {
- EditorNode::get_singleton()->add_io_error(TTR("Error moving file:\n") + move_files[i] + ".import\n");
- }
- }
+ if (da->file_exists(new_path) || da->dir_exists(new_path)) {
+ EditorNode::get_singleton()->show_warning(TTR("A file or folder with this name already exists."));
+ memdelete(da);
+ return;
}
+ memdelete(da);
- for (int i = 0; i < move_dirs.size(); i++) {
+ Map<String, String> renames;
+ _try_move_item(to_rename, new_path, renames);
+ _update_dependencies_after_move(renames);
- String mdir = move_dirs[i];
- if (mdir == "res://")
- continue;
+ //Rescan everything
+ print_line("call rescan!");
+ _rescan();
+}
- if (mdir.ends_with("/")) {
- mdir = mdir.substr(0, mdir.length() - 1);
- }
+void FileSystemDock::_move_operation_confirm(const String &p_to_path) {
- String to = p_to_path.plus_file(mdir.get_file());
- Error err = da->rename(mdir, to);
- print_line("moving dir " + mdir + " to " + to);
- if (err != OK) {
- EditorNode::get_singleton()->add_io_error(TTR("Error moving dir:\n") + move_dirs[i] + "\n");
- }
+ Map<String, String> renames;
+ for (int i = 0; i < to_move.size(); i++) {
+ String old_path = to_move[i].path.ends_with("/") ? to_move[i].path.substr(0, to_move[i].path.length() - 1) : to_move[i].path;
+ String new_path = p_to_path.plus_file(old_path.get_file());
+ _try_move_item(to_move[i], new_path, renames);
}
- memdelete(da);
- //rescan everything
+ _update_dependencies_after_move(renames);
print_line("call rescan!");
_rescan();
}
void FileSystemDock::_file_option(int p_option) {
-
switch (p_option) {
-
- case FILE_SHOW_IN_EXPLORER:
+ case FILE_SHOW_IN_EXPLORER: {
+ String dir = ProjectSettings::get_singleton()->globalize_path(this->path);
+ OS::get_singleton()->shell_open(String("file://") + dir);
+ } break;
case FILE_OPEN: {
- int idx = -1;
- for (int i = 0; i < files->get_item_count(); i++) {
- if (files->is_selected(i)) {
- idx = i;
- break;
- }
- }
-
- if (idx < 0)
- return;
-
- String path = files->get_item_metadata(idx);
- if (p_option == FILE_SHOW_IN_EXPLORER) {
- String dir = ProjectSettings::get_singleton()->globalize_path(path);
- dir = dir.substr(0, dir.find_last("/"));
- OS::get_singleton()->shell_open(String("file://") + dir);
- return;
- }
-
- if (path.ends_with("/")) {
- if (path != "res://") {
- path = path.substr(0, path.length() - 1);
- }
- this->path = path;
- _update_files(false);
- current_path->set_text(path);
- _push_to_history();
- } else {
-
- if (ResourceLoader::get_resource_type(path) == "PackedScene") {
-
- editor->open_request(path);
- } else {
-
- editor->load_resource(path);
- }
- }
+ int idx = files->get_current();
+ if (idx < 0 || idx >= files->get_item_count())
+ break;
+ _select_file(idx);
} break;
case FILE_INSTANCE: {
@@ -931,9 +904,9 @@ void FileSystemDock::_file_option(int p_option) {
for (int i = 0; i < files->get_item_count(); i++) {
if (!files->is_selected(i))
continue;
- String path = files->get_item_metadata(i);
- if (EditorFileSystem::get_singleton()->get_file_type(path) == "PackedScene") {
- paths.push_back(path);
+ String fpath = files->get_item_metadata(i);
+ if (EditorFileSystem::get_singleton()->get_file_type(fpath) == "PackedScene") {
+ paths.push_back(fpath);
}
}
@@ -946,76 +919,71 @@ void FileSystemDock::_file_option(int p_option) {
int idx = files->get_current();
if (idx < 0 || idx >= files->get_item_count())
break;
- String path = files->get_item_metadata(idx);
- deps_editor->edit(path);
+ String fpath = files->get_item_metadata(idx);
+ deps_editor->edit(fpath);
} break;
case FILE_OWNERS: {
int idx = files->get_current();
if (idx < 0 || idx >= files->get_item_count())
break;
- String path = files->get_item_metadata(idx);
- owners_editor->show(path);
+ String fpath = files->get_item_metadata(idx);
+ owners_editor->show(fpath);
} break;
case FILE_MOVE: {
-
- move_dirs.clear();
- move_files.clear();
-
+ to_move.clear();
for (int i = 0; i < files->get_item_count(); i++) {
-
- String path = files->get_item_metadata(i);
if (!files->is_selected(i))
continue;
- if (files->get_item_text(i) == "..") {
- EditorNode::get_singleton()->show_warning(TTR("Can't operate on '..'"));
- return;
- }
-
- if (path.ends_with("/")) {
- move_dirs.push_back(path.substr(0, path.length() - 1));
- } else {
- move_files.push_back(path);
- }
+ String fpath = files->get_item_metadata(i);
+ to_move.push_back(FileOrFolder(fpath, !fpath.ends_with("/")));
}
-
- if (move_dirs.empty() && move_files.size() == 1) {
-
- rename_dialog->clear_filters();
- rename_dialog->add_filter("*." + move_files[0].get_extension());
- rename_dialog->set_mode(EditorFileDialog::MODE_SAVE_FILE);
- rename_dialog->set_current_path(move_files[0]);
- rename_dialog->popup_centered_ratio();
- rename_dialog->set_title(TTR("Pick New Name and Location For:") + " " + move_files[0].get_file());
-
- } else {
- //just move
+ if (to_move.size() > 0) {
move_dialog->popup_centered_ratio();
}
+ } break;
+ case FILE_RENAME: {
+ int idx = files->get_current();
+ if (idx < 0 || idx >= files->get_item_count())
+ break;
+ to_rename.path = files->get_item_metadata(idx);
+ to_rename.is_file = !to_rename.path.ends_with("/");
+ if (to_rename.is_file) {
+ String name = to_rename.path.get_file();
+ rename_dialog->set_title(TTR("Renaming file:") + " " + name);
+ rename_dialog_text->set_text(name);
+ rename_dialog_text->select(0, name.find_last("."));
+ } else {
+ String name = to_rename.path.substr(0, to_rename.path.length() - 1).get_file();
+ rename_dialog->set_title(TTR("Renaming folder:") + " " + name);
+ rename_dialog_text->set_text(name);
+ rename_dialog_text->select(0, name.length());
+ }
+ rename_dialog->popup_centered_minsize(Size2(250, 80) * EDSCALE);
+ rename_dialog_text->grab_focus();
} break;
case FILE_REMOVE: {
-
- Vector<String> torem;
+ Vector<String> remove_files;
+ Vector<String> remove_folders;
for (int i = 0; i < files->get_item_count(); i++) {
-
- String path = files->get_item_metadata(i);
- if (!files->is_selected(i))
- continue;
- torem.push_back(path);
+ String fpath = files->get_item_metadata(i);
+ if (files->is_selected(i) && fpath != "res://") {
+ if (fpath.ends_with("/")) {
+ remove_folders.push_back(fpath);
+ } else {
+ remove_files.push_back(fpath);
+ }
+ }
}
- if (torem.empty()) {
- EditorNode::get_singleton()->show_warning(TTR("No files selected!"));
- break;
+ if (remove_files.size() + remove_folders.size() > 0) {
+ remove_dialog->show(remove_folders, remove_files);
+ //1) find if used
+ //2) warn
}
-
- remove_dialog->show(torem);
- //1) find if used
- //2) warn
-
} break;
case FILE_INFO: {
@@ -1028,8 +996,8 @@ void FileSystemDock::_file_option(int p_option) {
if (!files->is_selected(i))
continue;
- String path = files->get_item_metadata(i);
- reimport.push_back(path);
+ String fpath = files->get_item_metadata(i);
+ reimport.push_back(fpath);
}
ERR_FAIL_COND(reimport.size() == 0);
@@ -1052,61 +1020,97 @@ void FileSystemDock::_file_option(int p_option) {
}
*/
-
} break;
- case FILE_COPY_PATH:
-
+ case FILE_NEW_FOLDER: {
+ make_dir_dialog_text->set_text("new folder");
+ make_dir_dialog_text->select_all();
+ make_dir_dialog->popup_centered_minsize(Size2(250, 80) * EDSCALE);
+ make_dir_dialog_text->grab_focus();
+ } break;
+ case FILE_COPY_PATH: {
int idx = files->get_current();
if (idx < 0 || idx >= files->get_item_count())
break;
- String path = files->get_item_metadata(idx);
- OS::get_singleton()->set_clipboard(path);
+ String fpath = files->get_item_metadata(idx);
+ OS::get_singleton()->set_clipboard(fpath);
+ } break;
}
}
void FileSystemDock::_folder_option(int p_option) {
- TreeItem *item = tree->get_selected();
- TreeItem *child = item->get_children();
+ TreeItem *selected = tree->get_selected();
switch (p_option) {
-
case FOLDER_EXPAND_ALL:
- item->set_collapsed(false);
- while (child) {
- child->set_collapsed(false);
- child = child->get_next();
- }
- break;
+ case FOLDER_COLLAPSE_ALL: {
+ bool is_collapsed = (p_option == FOLDER_COLLAPSE_ALL);
+ Vector<TreeItem *> needs_check;
+ needs_check.push_back(selected);
+
+ while (needs_check.size()) {
+ needs_check[0]->set_collapsed(is_collapsed);
+
+ TreeItem *child = needs_check[0]->get_children();
+ while (child) {
+ needs_check.push_back(child);
+ child = child->get_next();
+ }
- case FOLDER_COLLAPSE_ALL:
- while (child) {
- child->set_collapsed(true);
- child = child->get_next();
+ needs_check.remove(0);
}
- break;
- case FOLDER_SHOW_IN_EXPLORER:
- String path = item->get_metadata(tree->get_selected_column());
- String dir = ProjectSettings::get_singleton()->globalize_path(path);
+ } break;
+ case FOLDER_MOVE: {
+ to_move.clear();
+ String fpath = selected->get_metadata(tree->get_selected_column());
+ if (fpath != "res://") {
+ fpath = fpath.ends_with("/") ? fpath.substr(0, fpath.length() - 1) : fpath;
+ to_move.push_back(FileOrFolder(fpath, false));
+ move_dialog->popup_centered_ratio();
+ }
+ } break;
+ case FOLDER_RENAME: {
+ to_rename.path = selected->get_metadata(tree->get_selected_column());
+ to_rename.is_file = false;
+ if (to_rename.path != "res://") {
+ String name = to_rename.path.ends_with("/") ? to_rename.path.substr(0, to_rename.path.length() - 1).get_file() : to_rename.path.get_file();
+ rename_dialog->set_title(TTR("Renaming folder:") + " " + name);
+ rename_dialog_text->set_text(name);
+ rename_dialog_text->select(0, name.length());
+ rename_dialog->popup_centered_minsize(Size2(250, 80) * EDSCALE);
+ rename_dialog_text->grab_focus();
+ }
+ } break;
+ case FOLDER_REMOVE: {
+ Vector<String> remove_folders;
+ Vector<String> remove_files;
+ String fpath = selected->get_metadata(tree->get_selected_column());
+ if (fpath != "res://") {
+ remove_folders.push_back(fpath);
+ remove_dialog->show(remove_folders, remove_files);
+ }
+ } break;
+ case FOLDER_NEW_FOLDER: {
+ make_dir_dialog_text->set_text("new folder");
+ make_dir_dialog_text->select_all();
+ make_dir_dialog->popup_centered_minsize(Size2(250, 80) * EDSCALE);
+ make_dir_dialog_text->grab_focus();
+ } break;
+ case FOLDER_COPY_PATH: {
+ String fpath = selected->get_metadata(tree->get_selected_column());
+ OS::get_singleton()->set_clipboard(fpath);
+ } break;
+ case FOLDER_SHOW_IN_EXPLORER: {
+ String fpath = selected->get_metadata(tree->get_selected_column());
+ String dir = ProjectSettings::get_singleton()->globalize_path(fpath);
OS::get_singleton()->shell_open(String("file://") + dir);
- return;
+ } break;
}
}
-void FileSystemDock::_open_pressed() {
-
- TreeItem *sel = tree->get_selected();
- if (!sel) {
- return;
- }
- path = sel->get_metadata(0);
- /*if (path!="res://" && path.ends_with("/")) {
- path=path.substr(0,path.length()-1);
- }*/
-
- //tree_mode=false;
+void FileSystemDock::_go_to_file_list() {
- if (split_mode) {
+ if (low_height_mode) {
tree->hide();
file_list_vb->show();
button_favorite->hide();
@@ -1115,8 +1119,6 @@ void FileSystemDock::_open_pressed() {
//file_options->show();
_update_files(false);
- current_path->set_text(path);
- _push_to_history();
//emit_signal("open",path);
}
@@ -1128,19 +1130,28 @@ void FileSystemDock::_dir_rmb_pressed(const Vector2 &p_pos) {
folder_options->add_item(TTR("Expand all"), FOLDER_EXPAND_ALL);
folder_options->add_item(TTR("Collapse all"), FOLDER_COLLAPSE_ALL);
- folder_options->add_separator();
- folder_options->add_item(TTR("Show In File Manager"), FOLDER_SHOW_IN_EXPLORER);
-
+ TreeItem *item = tree->get_selected();
+ if (item) {
+ String fpath = item->get_metadata(tree->get_selected_column());
+ folder_options->add_separator();
+ folder_options->add_item(TTR("Copy Path"), FOLDER_COPY_PATH);
+ if (fpath != "res://") {
+ folder_options->add_item(TTR("Rename.."), FOLDER_RENAME);
+ folder_options->add_item(TTR("Move To.."), FOLDER_MOVE);
+ folder_options->add_item(TTR("Delete"), FOLDER_REMOVE);
+ }
+ folder_options->add_separator();
+ folder_options->add_item(TTR("New Folder.."), FOLDER_NEW_FOLDER);
+ folder_options->add_item(TTR("Show In File Manager"), FOLDER_SHOW_IN_EXPLORER);
+ }
folder_options->set_position(tree->get_global_position() + p_pos);
folder_options->popup();
}
void FileSystemDock::_search_changed(const String &p_text) {
- if (!search_box->is_visible_in_tree())
- return; //wtf
-
- _update_files(false);
+ if (file_list_vb->is_visible())
+ _update_files(false);
}
void FileSystemDock::_rescan() {
@@ -1155,7 +1166,7 @@ void FileSystemDock::fix_dependencies(const String &p_for_file) {
void FileSystemDock::focus_on_filter() {
- if (!search_box->is_visible_in_tree()) {
+ if (low_height_mode && tree->is_visible()) {
// Tree mode, switch to files list with search box
tree->hide();
file_list_vb->show();
@@ -1182,13 +1193,13 @@ Variant FileSystemDock::get_drag_data_fw(const Point2 &p_point, Control *p_from)
if (!selected)
return Variant();
- String path = selected->get_metadata(0);
- if (path == String())
+ String fpath = selected->get_metadata(0);
+ if (fpath == String())
return Variant();
- if (!path.ends_with("/"))
- path = path + "/";
+ if (!fpath.ends_with("/"))
+ fpath = fpath + "/";
Vector<String> paths;
- paths.push_back(path);
+ paths.push_back(fpath);
Dictionary d = EditorNode::get_singleton()->drag_files(paths, p_from);
if (selected->get_parent() && tree->get_root()->get_children() == selected->get_parent()) {
@@ -1206,8 +1217,8 @@ Variant FileSystemDock::get_drag_data_fw(const Point2 &p_point, Control *p_from)
for (int i = 0; i < files->get_item_count(); i++) {
if (files->is_selected(i)) {
- String path = files->get_item_metadata(i);
- if (path.ends_with("/"))
+ String fpath = files->get_item_metadata(i);
+ if (fpath.ends_with("/"))
seldirs.push_back(i);
else
selfiles.push_back(i);
@@ -1228,22 +1239,20 @@ Variant FileSystemDock::get_drag_data_fw(const Point2 &p_point, Control *p_from)
}
}*/
- if (selfiles.size() > 0 && seldirs.size() == 0) {
- Vector<String> fnames;
- for (List<int>::Element *E = selfiles.front(); E; E = E->next()) {
- fnames.push_back(files->get_item_metadata(E->get()));
- }
- return EditorNode::get_singleton()->drag_files(fnames, p_from);
- }
-
+ Vector<String> fnames;
if (selfiles.size() > 0 || seldirs.size() > 0) {
- Vector<String> fnames;
- for (List<int>::Element *E = selfiles.front(); E; E = E->next()) {
- fnames.push_back(files->get_item_metadata(E->get()));
+ if (selfiles.size() > 0) {
+ for (List<int>::Element *E = selfiles.front(); E; E = E->next()) {
+ fnames.push_back(files->get_item_metadata(E->get()));
+ }
+ if (seldirs.size() == 0)
+ return EditorNode::get_singleton()->drag_files(fnames, p_from);
}
+
for (List<int>::Element *E = seldirs.front(); E; E = E->next()) {
fnames.push_back(files->get_item_metadata(E->get()));
}
+
return EditorNode::get_singleton()->drag_files_and_dirs(fnames, p_from);
}
}
@@ -1302,9 +1311,9 @@ bool FileSystemDock::can_drop_data_fw(const Point2 &p_point, const Variant &p_da
TreeItem *ti = tree->get_item_at_position(p_point);
if (!ti)
return false;
- String path = ti->get_metadata(0);
- if (path == String())
+ String fpath = ti->get_metadata(0);
+ if (fpath == String())
return false;
return true;
@@ -1378,7 +1387,7 @@ void FileSystemDock::drop_data_fw(const Point2 &p_point, const Variant &p_data,
}
EditorSettings::get_singleton()->set_favorite_dirs(dirs);
- _update_tree();
+ _update_tree(true);
return;
}
@@ -1394,12 +1403,12 @@ void FileSystemDock::drop_data_fw(const Point2 &p_point, const Variant &p_data,
TreeItem *ti = tree->get_item_at_position(p_point);
if (!ti)
return;
- String path = ti->get_metadata(0);
- if (path == String())
+ String fpath = ti->get_metadata(0);
+ if (fpath == String())
return;
- EditorNode::get_singleton()->save_resource_as(res, path);
+ EditorNode::get_singleton()->save_resource_as(res, fpath);
return;
}
@@ -1445,131 +1454,86 @@ void FileSystemDock::drop_data_fw(const Point2 &p_point, const Variant &p_data,
}
Vector<String> fnames = drag_data["files"];
- move_files.clear();
- move_dirs.clear();
-
+ to_move.clear();
for (int i = 0; i < fnames.size(); i++) {
- if (fnames[i].ends_with("/"))
- move_dirs.push_back(fnames[i]);
- else
- move_files.push_back(fnames[i]);
+ to_move.push_back(FileOrFolder(fnames[i], !fnames[i].ends_with("/")));
}
-
- _move_operation(to_dir);
+ _move_operation_confirm(to_dir);
}
}
}
void FileSystemDock::_files_list_rmb_select(int p_item, const Vector2 &p_pos) {
- Vector<String> filenames;
+ //Right clicking ".." should clear current selection
+ if (files->get_item_text(p_item) == "..") {
+ for (int i = 0; i < files->get_item_count(); i++) {
+ files->unselect(i);
+ }
+ }
- bool all_scenes = true;
- bool all_can_reimport = true;
- bool is_dir = false;
- Set<String> types;
+ Vector<String> filenames;
+ Vector<String> foldernames;
+ bool all_files = true;
+ bool all_files_scenes = true;
+ bool all_folders = true;
for (int i = 0; i < files->get_item_count(); i++) {
-
- if (!files->is_selected(i))
+ if (!files->is_selected(i)) {
continue;
-
- String path = files->get_item_metadata(i);
-
- if (files->get_item_text(i) == "..") {
- // no operate on ..
- return;
- }
-
- if (path.ends_with("/")) {
- is_dir = true;
}
- int pos;
-
- EditorFileSystemDirectory *efsd = EditorFileSystem::get_singleton()->find_file(path, &pos);
-
- if (efsd) {
-
+ String fpath = files->get_item_metadata(i);
+ if (fpath.ends_with("/")) {
+ foldernames.push_back(fpath);
+ all_files = false;
} else {
- all_can_reimport = false;
+ filenames.push_back(fpath);
+ all_folders = false;
+ all_files_scenes &= (EditorFileSystem::get_singleton()->get_file_type(fpath) == "PackedScene");
}
-
- filenames.push_back(path);
- if (EditorFileSystem::get_singleton()->get_file_type(path) != "PackedScene")
- all_scenes = false;
}
- if (filenames.size() == 0)
- return;
-
file_options->clear();
file_options->set_size(Size2(1, 1));
+ if (all_files && filenames.size() > 0) {
+ file_options->add_item(TTR("Open"), FILE_OPEN);
+ if (all_files_scenes) {
+ file_options->add_item(TTR("Instance"), FILE_INSTANCE);
+ }
- file_options->add_item(TTR("Open"), FILE_OPEN);
- if (all_scenes) {
- file_options->add_item(TTR("Instance"), FILE_INSTANCE);
+ if (filenames.size() == 1) {
+ file_options->add_separator();
+ file_options->add_item(TTR("Edit Dependencies.."), FILE_DEPENDENCIES);
+ file_options->add_item(TTR("View Owners.."), FILE_OWNERS);
+ }
+ } else if (all_folders && foldernames.size() > 0) {
+ file_options->add_item(TTR("Open"), FILE_OPEN);
}
file_options->add_separator();
- if (filenames.size() == 1 && !is_dir) {
- file_options->add_item(TTR("Edit Dependencies.."), FILE_DEPENDENCIES);
- file_options->add_item(TTR("View Owners.."), FILE_OWNERS);
- file_options->add_separator();
- }
-
- if (!is_dir) {
- if (filenames.size() == 1) {
+ int num_items = filenames.size() + foldernames.size();
+ if (num_items >= 1) {
+ if (num_items == 1) {
file_options->add_item(TTR("Copy Path"), FILE_COPY_PATH);
- file_options->add_item(TTR("Rename or Move.."), FILE_MOVE);
- } else {
- file_options->add_item(TTR("Move To.."), FILE_MOVE);
+ file_options->add_item(TTR("Rename.."), FILE_RENAME);
}
+ file_options->add_item(TTR("Move To.."), FILE_MOVE);
+ file_options->add_item(TTR("Delete"), FILE_REMOVE);
+ file_options->add_separator();
}
- file_options->add_item(TTR("Delete"), FILE_REMOVE);
-
- //file_options->add_item(TTR("Info"),FILE_INFO);
-
- file_options->add_separator();
+ file_options->add_item(TTR("New Folder.."), FILE_NEW_FOLDER);
file_options->add_item(TTR("Show In File Manager"), FILE_SHOW_IN_EXPLORER);
- if (all_can_reimport && types.size() == 1) { //all can reimport and are of the same type
-
- /*
- bool valid=true;
- Ref<EditorImportPlugin> rimp = EditorImportExport::get_singleton()->get_import_plugin_by_name(types.front()->get());
- if (rimp.is_valid()) {
-
- if (filenames.size()>1 && !rimp->can_reimport_multiple_files()) {
- valid=false;
- }
- } else {
- valid=false;
- }
-
- if (valid) {
- file_options->add_separator();
- file_options->add_item(TTR("Re-Import.."),FILE_REIMPORT);
- }
- */
- }
-
file_options->set_position(files->get_global_position() + p_pos);
file_options->popup();
}
void FileSystemDock::select_file(const String &p_file) {
- _go_to_dir(p_file.get_base_dir());
- for (int i = 0; i < files->get_item_count(); i++) {
- if (files->get_item_metadata(i) == p_file) {
- files->select(i);
- files->ensure_current_is_visible();
- break;
- }
- }
+ navigate_to_path(p_file);
}
void FileSystemDock::_file_multi_selected(int p_index, bool p_selected) {
@@ -1587,14 +1551,14 @@ void FileSystemDock::_file_selected() {
if (!files->is_selected(i))
continue;
- String p = files->get_item_metadata(i);
- if (!FileAccess::exists(p + ".import")) {
+ String fpath = files->get_item_metadata(i);
+ if (!FileAccess::exists(fpath + ".import")) {
imports.clear();
break;
}
Ref<ConfigFile> cf;
cf.instance();
- Error err = cf->load(p + ".import");
+ Error err = cf->load(fpath + ".import");
if (err != OK) {
imports.clear();
break;
@@ -1608,7 +1572,7 @@ void FileSystemDock::_file_selected() {
imports.clear();
break;
}
- imports.push_back(p);
+ imports.push_back(fpath);
}
if (imports.size() == 0) {
@@ -1626,13 +1590,13 @@ void FileSystemDock::_bind_methods() {
ClassDB::bind_method(D_METHOD("_rescan"), &FileSystemDock::_rescan);
ClassDB::bind_method(D_METHOD("_favorites_pressed"), &FileSystemDock::_favorites_pressed);
//ClassDB::bind_method(D_METHOD("_instance_pressed"),&ScenesDock::_instance_pressed);
- ClassDB::bind_method(D_METHOD("_open_pressed"), &FileSystemDock::_open_pressed);
+ ClassDB::bind_method(D_METHOD("_go_to_file_list"), &FileSystemDock::_go_to_file_list);
ClassDB::bind_method(D_METHOD("_dir_rmb_pressed"), &FileSystemDock::_dir_rmb_pressed);
ClassDB::bind_method(D_METHOD("_thumbnail_done"), &FileSystemDock::_thumbnail_done);
ClassDB::bind_method(D_METHOD("_select_file"), &FileSystemDock::_select_file);
ClassDB::bind_method(D_METHOD("_go_to_tree"), &FileSystemDock::_go_to_tree);
- ClassDB::bind_method(D_METHOD("_go_to_dir"), &FileSystemDock::_go_to_dir);
+ ClassDB::bind_method(D_METHOD("navigate_to_path"), &FileSystemDock::navigate_to_path);
ClassDB::bind_method(D_METHOD("_change_file_display"), &FileSystemDock::_change_file_display);
ClassDB::bind_method(D_METHOD("_fw_history"), &FileSystemDock::_fw_history);
ClassDB::bind_method(D_METHOD("_bw_history"), &FileSystemDock::_bw_history);
@@ -1640,8 +1604,9 @@ void FileSystemDock::_bind_methods() {
ClassDB::bind_method(D_METHOD("_dir_selected"), &FileSystemDock::_dir_selected);
ClassDB::bind_method(D_METHOD("_file_option"), &FileSystemDock::_file_option);
ClassDB::bind_method(D_METHOD("_folder_option"), &FileSystemDock::_folder_option);
- ClassDB::bind_method(D_METHOD("_move_operation"), &FileSystemDock::_move_operation);
- ClassDB::bind_method(D_METHOD("_rename_operation"), &FileSystemDock::_rename_operation);
+ ClassDB::bind_method(D_METHOD("_make_dir_confirm"), &FileSystemDock::_make_dir_confirm);
+ ClassDB::bind_method(D_METHOD("_move_operation_confirm"), &FileSystemDock::_move_operation_confirm);
+ ClassDB::bind_method(D_METHOD("_rename_operation_confirm"), &FileSystemDock::_rename_operation_confirm);
ClassDB::bind_method(D_METHOD("_search_changed"), &FileSystemDock::_search_changed);
@@ -1661,21 +1626,22 @@ void FileSystemDock::_bind_methods() {
FileSystemDock::FileSystemDock(EditorNode *p_editor) {
editor = p_editor;
+ path = "res://";
HBoxContainer *toolbar_hbc = memnew(HBoxContainer);
add_child(toolbar_hbc);
button_hist_prev = memnew(ToolButton);
- toolbar_hbc->add_child(button_hist_prev);
button_hist_prev->set_disabled(true);
+ button_hist_prev->set_focus_mode(FOCUS_NONE);
button_hist_prev->set_tooltip(TTR("Previous Directory"));
+ toolbar_hbc->add_child(button_hist_prev);
button_hist_next = memnew(ToolButton);
- toolbar_hbc->add_child(button_hist_next);
button_hist_next->set_disabled(true);
- button_hist_prev->set_focus_mode(FOCUS_NONE);
button_hist_next->set_focus_mode(FOCUS_NONE);
button_hist_next->set_tooltip(TTR("Next Directory"));
+ toolbar_hbc->add_child(button_hist_next);
current_path = memnew(LineEdit);
current_path->set_h_size_flags(SIZE_EXPAND_FILL);
@@ -1684,10 +1650,10 @@ FileSystemDock::FileSystemDock(EditorNode *p_editor) {
button_reload = memnew(Button);
button_reload->set_flat(true);
button_reload->connect("pressed", this, "_rescan");
- toolbar_hbc->add_child(button_reload);
button_reload->set_focus_mode(FOCUS_NONE);
button_reload->set_tooltip(TTR("Re-Scan Filesystem"));
button_reload->hide();
+ toolbar_hbc->add_child(button_reload);
//toolbar_hbc->add_spacer();
@@ -1695,17 +1661,16 @@ FileSystemDock::FileSystemDock(EditorNode *p_editor) {
button_favorite->set_flat(true);
button_favorite->set_toggle_mode(true);
button_favorite->connect("pressed", this, "_favorites_pressed");
- toolbar_hbc->add_child(button_favorite);
button_favorite->set_tooltip(TTR("Toggle folder status as Favorite"));
-
button_favorite->set_focus_mode(FOCUS_NONE);
+ toolbar_hbc->add_child(button_favorite);
//Control *spacer = memnew( Control);
/*
button_open = memnew( Button );
button_open->set_flat(true);
- button_open->connect("pressed",this,"_open_pressed");
+ button_open->connect("pressed",this,"_go_to_file_list");
toolbar_hbc->add_child(button_open);
button_open->hide();
button_open->set_focus_mode(FOCUS_NONE);
@@ -1728,62 +1693,63 @@ FileSystemDock::FileSystemDock(EditorNode *p_editor) {
add_child(folder_options);
split_box = memnew(VSplitContainer);
- add_child(split_box);
split_box->set_v_size_flags(SIZE_EXPAND_FILL);
+ add_child(split_box);
tree = memnew(Tree);
tree->set_hide_root(true);
- split_box->add_child(tree);
tree->set_drag_forwarding(this);
tree->set_allow_rmb_select(true);
+ tree->set_custom_minimum_size(Size2(0, 200 * EDSCALE));
+ split_box->add_child(tree);
- //tree->set_v_size_flags(SIZE_EXPAND_FILL);
tree->connect("item_edited", this, "_favorite_toggled");
- tree->connect("item_activated", this, "_open_pressed");
+ tree->connect("item_activated", this, "_go_to_file_list");
tree->connect("cell_selected", this, "_dir_selected");
tree->connect("item_rmb_selected", this, "_dir_rmb_pressed");
- files = memnew(ItemList);
- files->set_v_size_flags(SIZE_EXPAND_FILL);
- files->set_select_mode(ItemList::SELECT_MULTI);
- files->set_drag_forwarding(this);
- files->connect("item_rmb_selected", this, "_files_list_rmb_select");
- files->connect("item_selected", this, "_file_selected");
- files->connect("multi_selected", this, "_file_multi_selected");
- files->set_allow_rmb_select(true);
-
file_list_vb = memnew(VBoxContainer);
- split_box->add_child(file_list_vb);
file_list_vb->set_v_size_flags(SIZE_EXPAND_FILL);
+ split_box->add_child(file_list_vb);
path_hb = memnew(HBoxContainer);
file_list_vb->add_child(path_hb);
- button_back = memnew(ToolButton);
- path_hb->add_child(button_back);
- button_back->hide();
+ button_tree = memnew(ToolButton);
+ button_tree->hide();
+ path_hb->add_child(button_tree);
search_box = memnew(LineEdit);
search_box->set_h_size_flags(SIZE_EXPAND_FILL);
- path_hb->add_child(search_box);
search_box->connect("text_changed", this, "_search_changed");
+ path_hb->add_child(search_box);
button_display_mode = memnew(ToolButton);
- path_hb->add_child(button_display_mode);
button_display_mode->set_toggle_mode(true);
+ path_hb->add_child(button_display_mode);
+ files = memnew(ItemList);
+ files->set_v_size_flags(SIZE_EXPAND_FILL);
+ files->set_select_mode(ItemList::SELECT_MULTI);
+ files->set_drag_forwarding(this);
+ files->connect("item_rmb_selected", this, "_files_list_rmb_select");
+ files->connect("item_selected", this, "_file_selected");
+ files->connect("multi_selected", this, "_file_multi_selected");
+ files->set_allow_rmb_select(true);
file_list_vb->add_child(files);
scanning_vb = memnew(VBoxContainer);
+ scanning_vb->hide();
+ add_child(scanning_vb);
+
Label *slabel = memnew(Label);
slabel->set_text(TTR("Scanning Files,\nPlease Wait.."));
slabel->set_align(Label::ALIGN_CENTER);
scanning_vb->add_child(slabel);
+
scanning_progress = memnew(ProgressBar);
scanning_vb->add_child(scanning_progress);
- add_child(scanning_vb);
- scanning_vb->hide();
deps_editor = memnew(DependencyEditor);
add_child(deps_editor);
@@ -1795,25 +1761,41 @@ FileSystemDock::FileSystemDock(EditorNode *p_editor) {
add_child(remove_dialog);
move_dialog = memnew(EditorDirDialog);
- add_child(move_dialog);
- move_dialog->connect("dir_selected", this, "_move_operation");
move_dialog->get_ok()->set_text(TTR("Move"));
+ add_child(move_dialog);
+ move_dialog->connect("dir_selected", this, "_move_operation_confirm");
+
+ rename_dialog = memnew(ConfirmationDialog);
+ VBoxContainer *rename_dialog_vb = memnew(VBoxContainer);
+ rename_dialog->add_child(rename_dialog_vb);
- rename_dialog = memnew(EditorFileDialog);
- rename_dialog->set_mode(EditorFileDialog::MODE_SAVE_FILE);
- rename_dialog->connect("file_selected", this, "_rename_operation");
+ rename_dialog_text = memnew(LineEdit);
+ rename_dialog_vb->add_margin_child(TTR("Name:"), rename_dialog_text);
+ rename_dialog->get_ok()->set_text(TTR("Rename"));
add_child(rename_dialog);
+ rename_dialog->register_text_enter(rename_dialog_text);
+ rename_dialog->connect("confirmed", this, "_rename_operation_confirm");
+
+ make_dir_dialog = memnew(ConfirmationDialog);
+ make_dir_dialog->set_title(TTR("Create Folder"));
+ VBoxContainer *make_folder_dialog_vb = memnew(VBoxContainer);
+ make_dir_dialog->add_child(make_folder_dialog_vb);
+
+ make_dir_dialog_text = memnew(LineEdit);
+ make_folder_dialog_vb->add_margin_child(TTR("Name:"), make_dir_dialog_text);
+ add_child(make_dir_dialog);
+ make_dir_dialog->register_text_enter(make_dir_dialog_text);
+ make_dir_dialog->connect("confirmed", this, "_make_dir_confirm");
updating_tree = false;
initialized = false;
- history.push_back("res://");
history_pos = 0;
+ history_max_size = 20;
+ history.push_back("res://");
- split_mode = false;
+ low_height_mode = false;
display_mode = DISPLAY_THUMBNAILS;
-
- path = "res://";
}
FileSystemDock::~FileSystemDock() {
diff --git a/editor/filesystem_dock.h b/editor/filesystem_dock.h
index aec049ba43..2cb0573a3d 100644
--- a/editor/filesystem_dock.h
+++ b/editor/filesystem_dock.h
@@ -32,6 +32,7 @@
#include "scene/gui/box_container.h"
#include "scene/gui/control.h"
+#include "scene/gui/dialogs.h"
#include "scene/gui/item_list.h"
#include "scene/gui/label.h"
#include "scene/gui/menu_button.h"
@@ -67,9 +68,11 @@ private:
FILE_DEPENDENCIES,
FILE_OWNERS,
FILE_MOVE,
+ FILE_RENAME,
FILE_REMOVE,
FILE_REIMPORT,
FILE_INFO,
+ FILE_NEW_FOLDER,
FILE_SHOW_IN_EXPLORER,
FILE_COPY_PATH
};
@@ -77,7 +80,12 @@ private:
enum FolderMenu {
FOLDER_EXPAND_ALL,
FOLDER_COLLAPSE_ALL,
- FOLDER_SHOW_IN_EXPLORER
+ FOLDER_MOVE,
+ FOLDER_RENAME,
+ FOLDER_REMOVE,
+ FOLDER_NEW_FOLDER,
+ FOLDER_SHOW_IN_EXPLORER,
+ FOLDER_COPY_PATH
};
VBoxContainer *scanning_vb;
@@ -90,7 +98,7 @@ private:
Button *button_reload;
Button *button_favorite;
- Button *button_back;
+ Button *button_tree;
Button *button_display_mode;
Button *button_hist_next;
Button *button_hist_prev;
@@ -99,7 +107,7 @@ private:
TextureRect *search_icon;
HBoxContainer *path_hb;
- bool split_mode;
+ bool low_height_mode;
DisplayMode display_mode;
PopupMenu *file_options;
@@ -110,13 +118,27 @@ private:
DependencyRemoveDialog *remove_dialog;
EditorDirDialog *move_dialog;
- EditorFileDialog *rename_dialog;
+ ConfirmationDialog *rename_dialog;
+ LineEdit *rename_dialog_text;
+ ConfirmationDialog *make_dir_dialog;
+ LineEdit *make_dir_dialog_text;
- Vector<String> move_dirs;
- Vector<String> move_files;
+ class FileOrFolder {
+ public:
+ String path;
+ bool is_file;
+
+ FileOrFolder()
+ : path(""), is_file(false) {}
+ FileOrFolder(const String &p_path, bool p_is_file)
+ : path(p_path), is_file(p_is_file) {}
+ };
+ FileOrFolder to_rename;
+ Vector<FileOrFolder> to_move;
Vector<String> history;
int history_pos;
+ int history_max_size;
String path;
@@ -126,42 +148,47 @@ private:
Tree *tree; //directories
ItemList *files;
- void _file_multi_selected(int p_index, bool p_selected);
- void _file_selected();
+ bool _create_tree(TreeItem *p_parent, EditorFileSystemDirectory *p_dir, Vector<String> &uncollapsed_paths);
+ void _update_tree(bool keep_collapse_state);
+
+ void _update_files(bool p_keep_selection);
+ void _update_file_display_toggle_button();
+ void _change_file_display();
+ void _fs_changed();
void _go_to_tree();
- void _go_to_dir(const String &p_dir);
+ void _go_to_file_list();
+
void _select_file(int p_idx);
+ void _file_multi_selected(int p_index, bool p_selected);
- bool _create_tree(TreeItem *p_parent, EditorFileSystemDirectory *p_dir);
- void _thumbnail_done(const String &p_path, const Ref<Texture> &p_preview, const Variant &p_udata);
- void _find_inside_move_files(EditorFileSystemDirectory *efsd, Vector<String> &files);
- void _find_remaps(EditorFileSystemDirectory *efsd, Map<String, String> &renames, List<String> &to_remaps);
+ void _file_selected();
+ void _dir_selected();
- void _rename_operation(const String &p_to_path);
- void _move_operation(const String &p_to_path);
+ void _get_all_files_in_dir(EditorFileSystemDirectory *efsd, Vector<String> &files) const;
+ void _find_remaps(EditorFileSystemDirectory *efsd, const Map<String, String> &renames, Vector<String> &to_remaps) const;
+ void _try_move_item(const FileOrFolder &p_item, const String &p_new_path, Map<String, String> &p_renames) const;
+ void _update_dependencies_after_move(const Map<String, String> &p_renames) const;
+
+ void _make_dir_confirm();
+ void _rename_operation_confirm();
+ void _move_operation_confirm(const String &p_to_path);
void _file_option(int p_option);
void _folder_option(int p_option);
- void _update_files(bool p_keep_selection);
- void _update_file_display_toggle_button();
- void _change_file_display();
- void _fs_changed();
void _fw_history();
void _bw_history();
+ void _update_history();
void _push_to_history();
- void _dir_selected();
- void _update_tree();
- void _rescan();
void _set_scanning_mode();
+ void _rescan();
void _favorites_pressed();
- void _open_pressed();
- void _dir_rmb_pressed(const Vector2 &p_pos);
void _search_changed(const String &p_text);
+ void _dir_rmb_pressed(const Vector2 &p_pos);
void _files_list_rmb_select(int p_item, const Vector2 &p_pos);
struct FileInfo {
@@ -184,6 +211,7 @@ private:
void drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from);
void _preview_invalidated(const String &p_path);
+ void _thumbnail_done(const String &p_path, const Ref<Texture> &p_preview, const Variant &p_udata);
protected:
void _notification(int p_what);
diff --git a/editor/icons/icon_GUI_unchecked.svg b/editor/icons/icon_GUI_unchecked.svg
index 4adf3dd61e..59df40954f 100644
--- a/editor/icons/icon_GUI_unchecked.svg
+++ b/editor/icons/icon_GUI_unchecked.svg
@@ -1,5 +1,3 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 15.999999" xmlns="http://www.w3.org/2000/svg">
-<g transform="translate(0 -1036.4)">
-<path transform="translate(0 1036.4)" d="m4 2a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2v-8a2 2 0 0 0 -2 -2h-8zm0.80078 2h6.3984a0.8 0.8 0 0 1 0.80078 0.80078v6.3984a0.8 0.8 0 0 1 -0.80078 0.80078h-6.3984a0.8 0.8 0 0 1 -0.80078 -0.80078v-6.3984a0.8 0.8 0 0 1 0.80078 -0.80078z" fill="#e0e0e0" fill-opacity=".78431"/>
-</g>
+<path d="m4 2a2 2 0 0 0 -2 2v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2v-8a2 2 0 0 0 -2 -2h-8zm0.80078 2h6.3984a0.8 0.8 0 0 1 0.80078 0.80078v6.3984a0.8 0.8 0 0 1 -0.80078 0.80078h-6.3984a0.8 0.8 0 0 1 -0.80078 -0.80078v-6.3984a0.8 0.8 0 0 1 0.80078 -0.80078z" fill="#e0e0e0" fill-opacity=".78431"/>
</svg>
diff --git a/editor/icons/icon_a_r_v_r_anchor.svg b/editor/icons/icon_a_r_v_r_anchor.svg
new file mode 100644
index 0000000000..1a8398a1be
--- /dev/null
+++ b/editor/icons/icon_a_r_v_r_anchor.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path d="m7 1v2h-2v2h2v3.2656l-2.5527-1.2773c-0.15005-0.075253-0.31662-0.11152-0.48438-0.10547-0.36536 0.013648-0.69415 0.2256-0.85742 0.55273-0.24709 0.49403-0.046823 1.0948 0.44727 1.3418l4.4473 2.2227 4.4473-2.2227c0.49409-0.24697 0.69435-0.84777 0.44726-1.3418-0.24697-0.49409-0.84777-0.69435-1.3418-0.44727l-2.5527 1.2773v-3.2656h2v-2h-2v-2zm-3 11v1c0 0.55228 0.44772 1 1 1-0.55228 0-1 0.44772-1 1v1h1v-1h1v1h1v-1c0-0.55228-0.44772-1-1-1 0.55228 0 1-0.44772 1-1v-1h-1v1h-1v-1zm5 0v4h1v-1h1v1h1v-1c-8.34e-4 -0.17579-0.047991-0.34825-0.13672-0.5 0.088728-0.15175 0.13588-0.32421 0.13672-0.5v-1c0-0.55228-0.44772-1-1-1h-1zm1 1h1v1h-1z" fill="#fc9c9c"/>
+</svg>
diff --git a/editor/icons/icon_a_r_v_r_camera.svg b/editor/icons/icon_a_r_v_r_camera.svg
index a02b4d983c..5bf815bcef 100644
--- a/editor/icons/icon_a_r_v_r_camera.svg
+++ b/editor/icons/icon_a_r_v_r_camera.svg
@@ -1,3 +1,3 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<path d="m2 1c-0.55401 0-1 0.446-1 1v7c0 0.554 0.44599 1 1 1h4l1-2c0.24699-0.494 0.44772-1 1-1s0.75301 0.506 1 1l1 2h4c0.55401 0 1-0.446 1-1v-7c0-0.554-0.44599-1-1-1h-12zm2 3a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2zm8 0a2 2 0 0 1 2 2 2 2 0 0 1 -2 2 2 2 0 0 1 -2 -2 2 2 0 0 1 2 -2zm-8 7v4h2c0.502 4e-4 0.9265-0.37144 0.99219-0.86914 0.0059-0.047 0.0085325-0.094025 0.0078125-0.14062v-2.9902h-1v3h-1v-3h-1zm5 0v4h1v-1h1v1h1v-1c-7.73e-4 -0.1811-0.05073-0.35867-0.14453-0.51367 0.08369-0.1462 0.14453-0.30573 0.14453-0.48633v-1c0-0.5523-0.4485-1.0293-1-1h-2zm1 1h1v1h-1v-1z" fill="#fc9c9c"/>
+<path d="m9.5 0a3 3 0 0 0 -2.9883 2.7773 3 3 0 0 0 -2.0117 -0.77734 3 3 0 0 0 -3 3 3 3 0 0 0 2 2.8242v2.1758c0 0.554 0.44599 1 1 1h6c0.55401 0 1-0.446 1-1v-1l3 2v-6l-3 2v-1.7695a3 3 0 0 0 1 -2.2305 3 3 0 0 0 -3 -3zm-5.5 12v1c0 0.55228 0.44772 1 1 1-0.55228 0-1 0.44772-1 1v1h1v-1h1v1h1v-1c0-0.55228-0.44772-1-1-1 0.55228 0 1-0.44772 1-1v-1h-1v1h-1v-1h-1zm5 0v1 3h1v-1h1v1h1v-1c-8.34e-4 -0.17579-0.047991-0.34825-0.13672-0.5 0.088728-0.15175 0.13588-0.32421 0.13672-0.5v-1c0-0.55228-0.44772-1-1-1h-1-1zm1 1h1v1h-1v-1z" fill="#fc9c9c"/>
</svg>
diff --git a/editor/icons/icon_a_r_v_r_controller.svg b/editor/icons/icon_a_r_v_r_controller.svg
new file mode 100644
index 0000000000..a61f99ffdf
--- /dev/null
+++ b/editor/icons/icon_a_r_v_r_controller.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path d="m2 1c-0.554 0-1 0.446-1 1v6c0 0.554 0.446 1 1 1h12c0.554 0 1-0.446 1-1v-6c0-0.554-0.446-1-1-1h-12zm2 1h2v2h2v2h-2v2h-2v-2h-2v-2h2v-2zm9 1c0.55228 0 1 0.44772 1 1s-0.44772 1-1 1-1-0.44772-1-1 0.44772-1 1-1zm-2 2c0.55228 0 1 0.44772 1 1s-0.44772 1-1 1-1-0.44772-1-1 0.44772-1 1-1zm-7 7v1c0 0.55228 0.44772 1 1 1-0.55228 0-1 0.44772-1 1v1h1v-1h1v1h1v-1c0-0.55228-0.44772-1-1-1 0.55228 0 1-0.44772 1-1v-1h-1v1h-1v-1h-1zm5 0v1 3h1v-1h1v1h1v-1c-8.34e-4 -0.17579-0.047991-0.34825-0.13672-0.5 0.088728-0.15175 0.13588-0.32421 0.13672-0.5v-1c0-0.55228-0.44772-1-1-1h-1-1zm1 1h1v1h-1v-1z" fill="#fc9c9c"/>
+</svg>
diff --git a/editor/icons/icon_a_r_v_r_origin.svg b/editor/icons/icon_a_r_v_r_origin.svg
new file mode 100644
index 0000000000..53a149cec6
--- /dev/null
+++ b/editor/icons/icon_a_r_v_r_origin.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path d="m7 1v3h2v-3h-2zm-4 4v2h3v-2h-3zm5 0c-0.55228 0-1 0.44772-1 1s0.44772 1 1 1 1-0.44772 1-1-0.44772-1-1-1zm2 0v2h3v-2h-3zm-3 3v3h2v-3h-2zm-3 4v1c0 0.55228 0.44772 1 1 1-0.55228 0-1 0.44772-1 1v1h1v-1h1v1h1v-1c0-0.55228-0.44772-1-1-1 0.55228 0 1-0.44772 1-1v-1h-1v1h-1v-1h-1zm5 0v1 3h1v-1h1v1h1v-1c-8.34e-4 -0.17579-0.047991-0.34825-0.13672-0.5 0.088728-0.15175 0.13588-0.32421 0.13672-0.5v-1c0-0.55228-0.44772-1-1-1h-1-1zm1 1h1v1h-1v-1z" fill="#fc9c9c"/>
+</svg>
diff --git a/editor/icons/icon_animated_sprite.svg b/editor/icons/icon_animated_sprite.svg
index fe7fde5a39..6fdf8a7a40 100644
--- a/editor/icons/icon_animated_sprite.svg
+++ b/editor/icons/icon_animated_sprite.svg
@@ -1,7 +1,7 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<g transform="translate(0 -1036.4)" fill="#a5b7f3">
-<path transform="translate(0 1036.4)" d="m10.5 0a5.5 5.5 0 0 0 -5.3301 4.1699 5.5 5.5 0 0 1 1.3301 -0.16992 5.5 5.5 0 0 1 5.5 5.5 5.5 5.5 0 0 1 -0.16992 1.3301 5.5 5.5 0 0 0 4.1699 -5.3301 5.5 5.5 0 0 0 -5.5 -5.5z" fill-opacity=".39216"/>
-<path transform="translate(0 1036.4)" d="m8.5 2a5.5 5.5 0 0 0 -4.7559 2.748 5.5 5.5 0 0 1 2.7559 -0.74805 5.5 5.5 0 0 1 5.5 5.5 5.5 5.5 0 0 1 -0.74414 2.752 5.5 5.5 0 0 0 2.7441 -4.752 5.5 5.5 0 0 0 -5.5 -5.5z" fill-opacity=".58824"/>
-<path transform="translate(0 1036.4)" d="m6.5 4a5.5 5.5 0 0 0 -5.5 5.5 5.5 5.5 0 0 0 5.5 5.5 5.5 5.5 0 0 0 5.5 -5.5 5.5 5.5 0 0 0 -5.5 -5.5zm-2.5 4a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm5 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm-5 3h5a2.5 2 0 0 1 -1.25 1.7324 2.5 2 0 0 1 -2.5 0 2.5 2 0 0 1 -1.25 -1.7324z"/>
+<g fill="#a5b7f3">
+<path d="m7 0c-1.108 0-2 0.89199-2 2h7c1.108 0 2 0.89199 2 2v6c1.108 0 2-0.89199 2-2v-6c0-1.108-0.89199-2-2-2z" fill-opacity=".39216"/>
+<path d="m5 2c-1.108 0-2 0.89199-2 2h7c1.108 0 2 0.89199 2 2v7c1.108 0 2-0.89199 2-2v-7c0-1.108-0.89199-2-2-2h-7z" fill-opacity=".58824"/>
+<path d="m3 4c-1.108 0-2 0.89199-2 2v7c0 1.108 0.89199 2 2 2h7c1.108 0 2-0.89199 2-2v-7c0-1.108-0.89199-2-2-2h-7zm0 4c0.554 0 1 0.446 1 1v1c0 0.554-0.446 1-1 1s-1-0.446-1-1v-1c0-0.554 0.446-1 1-1zm7 0c0.554 0 1 0.446 1 1v1c0 0.554-0.446 1-1 1s-1-0.446-1-1v-1c0-0.554 0.446-1 1-1zm-6 4h5a2.5 2 0 0 1 -1.25 1.7324 2.5 2 0 0 1 -2.5 0 2.5 2 0 0 1 -1.25 -1.7324z"/>
</g>
</svg>
diff --git a/editor/icons/icon_animated_sprite_3d.svg b/editor/icons/icon_animated_sprite_3d.svg
index 658ba3e5c2..ccc836832c 100644
--- a/editor/icons/icon_animated_sprite_3d.svg
+++ b/editor/icons/icon_animated_sprite_3d.svg
@@ -1,7 +1,7 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<g transform="translate(0 -1036.4)" fill="#fc9c9c">
-<path transform="translate(0 1036.4)" d="m10.5 0a5.5 5.5 0 0 0 -5.3301 4.1699 5.5 5.5 0 0 1 1.3301 -0.16992 5.5 5.5 0 0 1 5.5 5.5 5.5 5.5 0 0 1 -0.16992 1.3301 5.5 5.5 0 0 0 4.1699 -5.3301 5.5 5.5 0 0 0 -5.5 -5.5z" fill-opacity=".39216"/>
-<path transform="translate(0 1036.4)" d="m8.5 2a5.5 5.5 0 0 0 -4.7559 2.748 5.5 5.5 0 0 1 2.7559 -0.74805 5.5 5.5 0 0 1 5.5 5.5 5.5 5.5 0 0 1 -0.74414 2.752 5.5 5.5 0 0 0 2.7441 -4.752 5.5 5.5 0 0 0 -5.5 -5.5z" fill-opacity=".58824"/>
-<path transform="translate(0 1036.4)" d="m6.5 4a5.5 5.5 0 0 0 -5.5 5.5 5.5 5.5 0 0 0 5.5 5.5 5.5 5.5 0 0 0 5.5 -5.5 5.5 5.5 0 0 0 -5.5 -5.5zm-2.5 4a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm5 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm-5 3h5a2.5 2 0 0 1 -1.25 1.7324 2.5 2 0 0 1 -2.5 0 2.5 2 0 0 1 -1.25 -1.7324z"/>
+<g fill="#fc9c9c">
+<path d="m7 0c-1.108 0-2 0.89199-2 2h7c1.108 0 2 0.89199 2 2v6c1.108 0 2-0.89199 2-2v-6c0-1.108-0.89199-2-2-2z" fill-opacity=".39216"/>
+<path d="m5 2c-1.108 0-2 0.89199-2 2h7c1.108 0 2 0.89199 2 2v7c1.108 0 2-0.89199 2-2v-7c0-1.108-0.89199-2-2-2h-7z" fill-opacity=".58824"/>
+<path d="m3 4c-1.108 0-2 0.89199-2 2v7c0 1.108 0.89199 2 2 2h7c1.108 0 2-0.89199 2-2v-7c0-1.108-0.89199-2-2-2h-7zm0 4c0.554 0 1 0.446 1 1v1c0 0.554-0.446 1-1 1s-1-0.446-1-1v-1c0-0.554 0.446-1 1-1zm7 0c0.554 0 1 0.446 1 1v1c0 0.554-0.446 1-1 1s-1-0.446-1-1v-1c0-0.554 0.446-1 1-1zm-6 4h5a2.5 2 0 0 1 -1.25 1.7324 2.5 2 0 0 1 -2.5 0 2.5 2 0 0 1 -1.25 -1.7324z"/>
</g>
</svg>
diff --git a/editor/icons/icon_center_container.svg b/editor/icons/icon_center_container.svg
index 446e9e0f9c..fc0abc5c28 100644
--- a/editor/icons/icon_center_container.svg
+++ b/editor/icons/icon_center_container.svg
@@ -1,5 +1,3 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<g transform="translate(0 -1036.4)">
-<path transform="translate(0 1036.4)" d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2h-10zm0 2h10v10h-10v-10zm3 1l2 2 2-2h-4zm-2 2v4l2-2-2-2zm8 0l-2 2 2 2v-4zm-4 4l-2 2h4l-2-2z" fill="#a5efac"/>
-</g>
+<path d="m3 1c-1.1046 0-2 0.89543-2 2v10c0 1.1046 0.89543 2 2 2h10c1.1046 0 2-0.89543 2-2v-10c0-1.1046-0.89543-2-2-2h-10zm0 2h10v10h-10v-10zm3 1l2 2 2-2h-4zm-2 2v4l2-2-2-2zm8 0l-2 2 2 2v-4zm-4 4l-2 2h4l-2-2z" fill="#a5efac"/>
</svg>
diff --git a/editor/icons/icon_color_pick.svg b/editor/icons/icon_color_pick.svg
index 893afb4eb4..5c21eeba8b 100644
--- a/editor/icons/icon_color_pick.svg
+++ b/editor/icons/icon_color_pick.svg
@@ -1,5 +1,5 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<g transform="translate(0 -1036.4)">
-<path transform="translate(0 1036.4)" d="m13.051 0.97852a2 2 0 0 0 -1.4434 0.58594l-1.4141 1.4141-1.416-1.4141-1.4141 1.4141 1.4141 1.4141-7.0703 7.0723-0.35352 1.7676-0.35352 1.7676 1.7676-0.35352 1.7676-0.35352 7.0723-7.0703 1.4141 1.4141 1.4141-1.4141-1.4141-1.416 1.4141-1.4141a2 2 0 0 0 0 -2.8281 2 2 0 0 0 -1.3848 -0.58594zm-3.5664 4.1211l1.416 1.416-7.0723 7.0703-0.70703-0.70703-0.70703-0.70703 7.0703-7.0723z" fill="#e0e0e0" fill-opacity=".99608"/>
+<path transform="translate(0 1036.4)" d="m8 1c-1.108 0-2 0.892-2 2v2h-1v2h1v5a2 2 0 0 0 1 1.7285v1.2715h2v-1.2695a2 2 0 0 0 1 -1.7305v-5h1v-2h-1v-2c0-1.108-0.892-2-2-2zm-1 6h2v5a1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1v-5z" fill="#e0e0e0"/>
</g>
</svg>
diff --git a/editor/icons/icon_color_picker.svg b/editor/icons/icon_color_picker.svg
index 272dfeca48..55c55fe205 100644
--- a/editor/icons/icon_color_picker.svg
+++ b/editor/icons/icon_color_picker.svg
@@ -1,5 +1,3 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<g transform="translate(0 -1036.4)">
-<path transform="translate(0 1036.4)" d="m13.051 0.97852a2 2 0 0 0 -1.4434 0.58594l-1.4141 1.4141-1.416-1.4141-1.4141 1.4141 1.4141 1.4141-7.0703 7.0723-0.35352 1.7676-0.35352 1.7676 1.7676-0.35352 1.7676-0.35352 7.0723-7.0703 1.4141 1.4141 1.4141-1.4141-1.4141-1.416 1.4141-1.4141a2 2 0 0 0 0 -2.8281 2 2 0 0 0 -1.3848 -0.58594zm-3.5664 4.1211l1.416 1.416-7.0723 7.0703-0.70703-0.70703-0.70703-0.70703 7.0703-7.0723z" fill="#a5efac"/>
-</g>
+<path d="m8 1c-1.108 0-2 0.892-2 2v2h-1v2h1v5a2 2 0 0 0 1 1.7285v1.2715h2v-1.2695a2 2 0 0 0 1 -1.7305v-5h1v-2h-1v-2c0-1.108-0.892-2-2-2zm-1 6h2v5a1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1v-5z" fill="#a5efac"/>
</svg>
diff --git a/editor/icons/icon_color_picker_button.svg b/editor/icons/icon_color_picker_button.svg
index 5d734a5b20..d8de02b298 100644
--- a/editor/icons/icon_color_picker_button.svg
+++ b/editor/icons/icon_color_picker_button.svg
@@ -1,7 +1,3 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<g transform="translate(0 -1036.4)">
-<path transform="translate(0 1036.4)" d="m13.051 0.97852a2 2 0 0 0 -1.4434 0.58594l-1.4141 1.4141-1.416-1.4141-1.4141 1.4141 1.4141 1.4141-7.0703 7.0723-0.35352 1.7676-0.35352 1.7676 1.7676-0.35352 1.7676-0.35352 7.0723-7.0703 1.4141 1.4141 1.4141-1.4141-1.4141-1.416 1.4141-1.4141a2 2 0 0 0 0 -2.8281 2 2 0 0 0 -1.3848 -0.58594zm-3.5664 4.1211 1.416 1.416-7.0723 7.0703-0.70703-0.70703-0.70703-0.70703 7.0703-7.0723z" fill="#a5efac"/>
-<path transform="translate(0 1036.4)" d="m1 3v6.3438l4.9492-4.9512-1.3926-1.3926h-3.5566zm14 6.4863l-1.5137 1.5137h-0.92969l-0.94922-0.94922-2.9492 2.9492h6.3418v-3.5137z" fill="#a5efac"/>
-<path transform="translate(0 1036.4)" d="m10.658 11l-2 2h6.3418v-2h-1.5137-0.92969-1.8984z" fill-opacity=".078431"/>
-</g>
+<path d="m13 1c-1.108 0-2 0.892-2 2v2h-1v2h1v5a2 2 0 0 0 1 1.7285v1.2715h2v-1.2695a2 2 0 0 0 1 -1.7305v-5h1v-2h-1v-2c0-1.108-0.892-2-2-2zm-9 1v3.1328l-1.4453-0.96484-1.1094 1.6641 3 2c0.3359 0.2239 0.77347 0.2239 1.1094 0l3-2-1.1094-1.6641-1.4453 0.96484v-3.1328h-2zm8 5h2v5a1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1v-5zm-8.5 3c-0.831 0-1.5 0.669-1.5 1.5v0.5 1h-1v2h8v-2h-1v-1-0.5c0-0.831-0.669-1.5-1.5-1.5h-3z" fill="#a5efac"/>
</svg>
diff --git a/editor/icons/icon_connection_and_groups.svg b/editor/icons/icon_connection_and_groups.svg
deleted file mode 100644
index 67a73f02b3..0000000000
--- a/editor/icons/icon_connection_and_groups.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<g transform="translate(0 -1036.4)">
-<path transform="translate(0 1036.4)" d="m2 0v1 5 1h12v-1-6h-11-1zm1 1h10v5h-10v-5zm2.5 1a1.5 1.5 0 0 0 -1.5 1.5 1.5 1.5 0 0 0 1.5 1.5 1.5 1.5 0 0 0 1.5 -1.5 1.5 1.5 0 0 0 -1.5 -1.5zm5 0a1.5 1.5 0 0 0 -1.5 1.5 1.5 1.5 0 0 0 1.5 1.5 1.5 1.5 0 0 0 1.5 -1.5 1.5 1.5 0 0 0 -1.5 -1.5zm-0.5 7a2 2 0 0 0 -2 2v1h-6v1h6v1a2 2 0 0 0 2 2h2v-1h2v-1h-2v-3h2v-1h-2v-1h-2z" fill="#e0e0e0"/>
-</g>
-</svg>
diff --git a/editor/icons/icon_control_layout.svg b/editor/icons/icon_control_layout.svg
new file mode 100644
index 0000000000..4bf60cf751
--- /dev/null
+++ b/editor/icons/icon_control_layout.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path d="m1 1v14h14v-14zm2 2h3v3h-3zm5 0h5v3h-5zm-5 5h3v5h-3zm5 0h5v5h-5z" fill="#a5efac"/>
+</svg>
diff --git a/editor/icons/icon_edit.svg b/editor/icons/icon_edit.svg
index b1bce158c4..1805aab54f 100644
--- a/editor/icons/icon_edit.svg
+++ b/editor/icons/icon_edit.svg
@@ -1,5 +1,5 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<g transform="translate(0 -1036.4)">
-<path d="m1.7071 1047.8-0.70711 3.5356l3.5355-0.7071 7.7782-7.7782-2.8284-2.8284zm9.1924-9.1924 2.8284 2.8285 1.4142-1.4142-2.8284-2.8285z" fill="#e0e0e0"/>
+<path transform="translate(0 1036.4)" d="m7 1c-0.554 0-1 0.446-1 1v2h4v-2c0-0.554-0.446-1-1-1h-2zm-1 4v7l2 3 2-3v-7h-4zm1 1h1v5h-1v-5z" fill="#e0e0e0"/>
</g>
</svg>
diff --git a/editor/icons/icon_edit_key.svg b/editor/icons/icon_edit_key.svg
index 2959900d04..443a9a0455 100644
--- a/editor/icons/icon_edit_key.svg
+++ b/editor/icons/icon_edit_key.svg
@@ -1,6 +1,5 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<g transform="translate(0 -1036.4)" fill="#e0e0e0">
-<path d="m1.7071 1047.8-0.70711 3.5356l3.5355-0.7071 7.7782-7.7782-2.8284-2.8284zm9.1924-9.1924 2.8284 2.8285 1.4142-1.4142-2.8284-2.8285z"/>
-<ellipse cx="3.5" cy="1039.9" rx="2.5" ry="2.5"/>
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m12 1c-0.554 0-1 0.446-1 1v2h4v-2c0-0.554-0.446-1-1-1h-2zm-7 3c-0.195 0-0.38964 0.07519-0.53906 0.22461l-3.2363 3.2363c-0.29884 0.29884-0.29884 0.77929 0 1.0781l3.2363 3.2363c0.29884 0.29884 0.77929 0.29884 1.0781 0l3.2363-3.2363c0.29884-0.29884 0.29884-0.77929 0-1.0781l-3.2363-3.2363c-0.14942-0.14942-0.34406-0.22461-0.53906-0.22461zm6 1v7l2 3 2-3v-7h-4zm1 1h1v5h-1v-5z" fill="#e0e0e0"/>
</g>
</svg>
diff --git a/editor/icons/icon_groups.svg b/editor/icons/icon_groups.svg
index 37e40749b8..55cf3c48eb 100644
--- a/editor/icons/icon_groups.svg
+++ b/editor/icons/icon_groups.svg
@@ -1,7 +1,5 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<g transform="translate(0 -1036.4)">
-<rect x="1" y="1040.4" width="14" height="8" fill="none" stroke="#e0e0e0" stroke-linejoin="round" stroke-width="2"/>
-<ellipse cx="5" cy="1044.4" rx="2" ry="2" fill="#e0e0e0"/>
-<ellipse cx="11" cy="1044.4" rx="2" ry="2" fill="#e0e0e0"/>
+<path transform="translate(0 1036.4)" d="m2 1a1.0001 1.0001 0 0 0 -1 1v12a1.0001 1.0001 0 0 0 1 1h12a1.0001 1.0001 0 0 0 1 -1v-12a1.0001 1.0001 0 0 0 -1 -1h-12zm1 2h10v10h-10v-10zm5 2a3 3 0 0 0 -3 3 3 3 0 0 0 3 3 3 3 0 0 0 3 -3 3 3 0 0 0 -3 -3z" color="#000000" color-rendering="auto" dominant-baseline="auto" fill="#e0e0e0" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
</g>
</svg>
diff --git a/editor/icons/icon_key_move_enabled.svg b/editor/icons/icon_key_position.svg
index 203b697ad2..203b697ad2 100644
--- a/editor/icons/icon_key_move_enabled.svg
+++ b/editor/icons/icon_key_position.svg
diff --git a/editor/icons/icon_key_rotate_enabled.svg b/editor/icons/icon_key_rotation.svg
index 0f975631b2..0f975631b2 100644
--- a/editor/icons/icon_key_rotate_enabled.svg
+++ b/editor/icons/icon_key_rotation.svg
diff --git a/editor/icons/icon_key_scale_enabled.svg b/editor/icons/icon_key_scale.svg
index eaa12fdf0e..eaa12fdf0e 100644
--- a/editor/icons/icon_key_scale_enabled.svg
+++ b/editor/icons/icon_key_scale.svg
diff --git a/editor/icons/icon_kinematic_body.svg b/editor/icons/icon_kinematic_body.svg
index 393e21a529..6f8d69fa53 100644
--- a/editor/icons/icon_kinematic_body.svg
+++ b/editor/icons/icon_kinematic_body.svg
@@ -1,5 +1,5 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<g transform="translate(0 -1036.4)">
-<path transform="translate(0 1036.4)" d="m4 4v1h1v-1h-1zm1 1v1h-1v1h-1v1h-1v1 2h1v-2h1v1 1h1v-1h5v1h1v-2h1v2h1v-2-1h-1v-1h-1v-1h-1v-1h-1v1h-3v-1h-1zm5 0h1v-1h-1v1zm0 6h-2v1h2v-1zm-5 0v1h2v-1h-2zm0-4h1v1h-1v-1zm4 0h1v1h-1v-1z" fill="#fc9c9c" fill-opacity=".99608"/>
+<path transform="translate(0 1036.4)" d="m6 1c-0.55401 0-1 0.44599-1 1v3c0 0.55401 0.44599 1 1 1h1v0.99023a1.0001 1.0001 0 0 0 -0.31641 0.0625l-2.0508 0.68359-0.68359-2.0508a1.0001 1.0001 0 0 0 -0.99023 -0.69727 1.0001 1.0001 0 0 0 -0.9082 1.3281l1 3a1.0001 1.0001 0 0 0 1.2656 0.63281l1.6836-0.56055v0.61133c0 0.040884 0.018715 0.075662 0.023438 0.11523l-4.5781 3.0527a1.0001 1.0001 0 1 0 1.1094 1.6641l5.0566-3.3711 1.4941 2.9863a1.0001 1.0001 0 0 0 1.2109 0.50195l3-1a1.0001 1.0001 0 1 0 -0.63281 -1.8965l-2.1777 0.72461-0.97461-1.9512c0.2759-0.17764 0.46875-0.47227 0.46875-0.82617v-1h1.3828l0.72266 1.4473a1.0001 1.0001 0 1 0 1.7891 -0.89453l-1-2a1.0001 1.0001 0 0 0 -0.89453 -0.55273h-3v-1h1c0.55401 0 1-0.44599 1-1v-3c0-0.55401-0.44599-1-1-1h-4zm0 2h1v2h-1v-2z" fill="#fc9c9c" fill-opacity=".99608"/>
</g>
</svg>
diff --git a/editor/icons/icon_kinematic_body_2d.svg b/editor/icons/icon_kinematic_body_2d.svg
index e269efd12a..51026e5f28 100644
--- a/editor/icons/icon_kinematic_body_2d.svg
+++ b/editor/icons/icon_kinematic_body_2d.svg
@@ -1,5 +1,7 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<g transform="translate(0 -1036.4)">
-<path transform="translate(0 1036.4)" d="m4 4v1h1v-1h-1zm1 1v1h-1v1h-1v1h-1v1 2h1v-2h1v1 1h1v-1h5v1h1v-2h1v2h1v-2-1h-1v-1h-1v-1h-1v-1h-1v1h-3v-1h-1zm5 0h1v-1h-1v1zm0 6h-2v1h2v-1zm-5 0v1h2v-1h-2zm0-4h1v1h-1v-1zm4 0h1v1h-1v-1z" fill="#a5b7f3" fill-opacity=".98824"/>
+<g transform="translate(.49212 -.0044019)" fill="#a5b7f5" fill-opacity=".98824">
+<path transform="translate(0 1036.4)" d="m6 1c-0.55401 0-1 0.44599-1 1v3c0 0.55401 0.44599 1 1 1h1v0.99023a1.0001 1.0001 0 0 0 -0.31641 0.0625l-2.0508 0.68359-0.68359-2.0508a1.0001 1.0001 0 0 0 -0.99023 -0.69727 1.0001 1.0001 0 0 0 -0.9082 1.3281l1 3a1.0001 1.0001 0 0 0 1.2656 0.63281l1.6836-0.56055v0.61133c0 0.04088 0.018715 0.07566 0.023437 0.11523l-4.5781 3.0527a1.0001 1.0001 0 1 0 1.1094 1.6641l5.0566-3.3711 1.4941 2.9863a1.0001 1.0001 0 0 0 1.2109 0.50195l3-1a1.0001 1.0001 0 1 0 -0.63281 -1.8965l-2.1777 0.72461-0.97461-1.9512c0.2759-0.17764 0.46875-0.47227 0.46875-0.82617v-1h1.3828l0.72266 1.4473a1.0001 1.0001 0 1 0 1.7891 -0.89453l-1-2a1.0001 1.0001 0 0 0 -0.89453 -0.55273h-3v-1h1c0.55401 0 1-0.44599 1-1v-3c0-0.55401-0.44599-1-1-1zm0 2h1v2h-1z" fill="#a5b7f5" fill-opacity=".98824"/>
+</g>
</g>
</svg>
diff --git a/editor/icons/icon_multi_edit.svg b/editor/icons/icon_multi_edit.svg
index 36f62006e0..9a1cfe8e16 100644
--- a/editor/icons/icon_multi_edit.svg
+++ b/editor/icons/icon_multi_edit.svg
@@ -1,5 +1,5 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
<g transform="translate(0 -1036.4)">
-<path transform="translate(0 1036.4)" d="m12.314 0.85742l-1.4141 1.4141 2.8281 2.8281 1.4141-1.4141-2.8281-2.8281zm-11.314 0.14258v2h2v-2h-2zm4 0v2h2v-2h-2zm4.4844 2.6855l-7.7773 7.7793-0.70703 3.5352 3.5352-0.70703 7.7793-7.7773-2.8301-2.8301zm-8.4844 1.3145v2h2v-2h-2z" fill="#e0e0e0"/>
+<path transform="translate(0 1036.4)" d="m2 1c-0.554 0-1 0.446-1 1v2h4v-2c0-0.554-0.446-1-1-1h-2zm-1 4v7l2 3 2-3v-7h-4zm1 1h1v5h-1v-5zm8 1v3h-3v2h3v3h2v-3h3v-2h-3v-3h-2z" fill="#e0e0e0"/>
</g>
</svg>
diff --git a/editor/icons/icon_shader.svg b/editor/icons/icon_shader.svg
new file mode 100644
index 0000000000..659d81519a
--- /dev/null
+++ b/editor/icons/icon_shader.svg
@@ -0,0 +1,12 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g>
+<path d="m2 1c-0.55226 1e-4 -0.99994 0.4477-1 1v12c5.52e-5 0.5523 0.44774 0.9999 1 1h12c0.55226-1e-4 0.99994-0.4477 1-1v-8l-5-5zm1 2h6v3c0 0.554 0.44599 1 1 1h3v6h-10z" fill="#e0e0e0"/>
+<path d="m10 11h2v1h-2z" fill="#9f70ff"/>
+<path d="m4 6h2v1h-2z" fill="#ffeb70"/>
+<path d="m8 8h4v1h-4z" fill="#9dff70"/>
+<path d="m7 6h1v1h-1z" fill="#70deff"/>
+<path d="m4 11h5v1h-5z" fill="#ff70ac"/>
+<path d="m4 4h3v1h-3z" fill="#ff7070"/>
+<path d="m4 8h3v1h-3z" fill="#70ffb9"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_connect.svg b/editor/icons/icon_signals.svg
index 97859370b7..97859370b7 100644
--- a/editor/icons/icon_connect.svg
+++ b/editor/icons/icon_signals.svg
diff --git a/editor/icons/icon_signals_and_groups.svg b/editor/icons/icon_signals_and_groups.svg
new file mode 100644
index 0000000000..5dedbaa433
--- /dev/null
+++ b/editor/icons/icon_signals_and_groups.svg
@@ -0,0 +1,5 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g transform="translate(0 -1036.4)">
+<path transform="translate(0 1036.4)" d="m6 0c-0.55228 0-1 0.4477-1 1s0.44772 1 1 1c4.4301 0 8 3.5699 8 8 0 0.5523 0.44772 1 1 1s1-0.4477 1-1c0-5.511-4.489-10-10-10zm0 4c-0.55228 0-1 0.4477-1 1s0.44772 1 1 1c2.221 0 4 1.779 4 4 0 0.5523 0.44772 1 1 1s1-0.4477 1-1c0-3.3018-2.6981-6-6-6zm-5 4a1.0001 1.0001 0 0 0 -1 1v6a1.0001 1.0001 0 0 0 1 1h6a1.0001 1.0001 0 0 0 1 -1v-6a1.0001 1.0001 0 0 0 -1 -1h-6zm1 2h4v4h-4v-4z" fill="#e0e0e0"/>
+</g>
+</svg>
diff --git a/editor/icons/icon_sprite.svg b/editor/icons/icon_sprite.svg
index 4feea4d265..09fc2f0979 100644
--- a/editor/icons/icon_sprite.svg
+++ b/editor/icons/icon_sprite.svg
@@ -1,5 +1,3 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<g transform="translate(0 -1036.4)">
-<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm-4 5a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm8 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm-7 3h6a3 3 0 0 1 -1.5 2.5977 3 3 0 0 1 -3 0 3 3 0 0 1 -1.5 -2.5977z" fill="#a5b7f3"/>
-</g>
+<path d="m5 1c-2.216 0-4 1.784-4 4v6c0 2.216 1.784 4 4 4h6c2.216 0 4-1.784 4-4v-6c0-2.216-1.784-4-4-4h-6zm-1 5c0.554 0 1 0.446 1 1v2c0 0.554-0.446 1-1 1s-1-0.446-1-1v-2c0-0.554 0.446-1 1-1zm8 0c0.554 0 1 0.446 1 1v2c0 0.554-0.446 1-1 1s-1-0.446-1-1v-2c0-0.554 0.446-1 1-1zm-1.8887 5.1074a1.0001 1.0001 0 0 1 0.7168 1.7207c-0.74987 0.74987-1.7676 1.1719-2.8281 1.1719s-2.0783-0.422-2.8281-1.1719a1.0001 1.0001 0 0 1 0.69727 -1.7168 1.0001 1.0001 0 0 1 0.7168 0.30273c0.37534 0.37535 0.88325 0.58594 1.4141 0.58594s1.0387-0.21059 1.4141-0.58594a1.0001 1.0001 0 0 1 0.69727 -0.30664z" fill="#a5b7f6" fill-opacity=".98824"/>
</svg>
diff --git a/editor/icons/icon_sprite_3d.svg b/editor/icons/icon_sprite_3d.svg
index 0d5caae501..eb163e3f43 100644
--- a/editor/icons/icon_sprite_3d.svg
+++ b/editor/icons/icon_sprite_3d.svg
@@ -1,5 +1,5 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<g transform="translate(0 -1036.4)">
-<path transform="translate(0 1036.4)" d="m8 1a7 7 0 0 0 -7 7 7 7 0 0 0 7 7 7 7 0 0 0 7 -7 7 7 0 0 0 -7 -7zm-4 5a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm8 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm-7 3h6a3 3 0 0 1 -1.5 2.5977 3 3 0 0 1 -3 0 3 3 0 0 1 -1.5 -2.5977z" fill="#fc9c9c" fill-opacity=".99608"/>
+<g fill="#fc9c9c">
+<path d="m5 1c-2.216 0-4 1.784-4 4v6c0 2.216 1.784 4 4 4h6c2.216 0 4-1.784 4-4v-6c0-2.216-1.784-4-4-4zm-1 5c0.554 0 1 0.446 1 1v2c0 0.554-0.446 1-1 1s-1-0.446-1-1v-2c0-0.554 0.446-1 1-1zm8 0c0.554 0 1 0.446 1 1v2c0 0.554-0.446 1-1 1s-1-0.446-1-1v-2c0-0.554 0.446-1 1-1zm-1.8887 5.1074a1.0001 1.0001 0 0 1 0.7168 1.7207c-0.74987 0.74987-1.7676 1.1719-2.8281 1.1719s-2.0783-0.422-2.8281-1.1719a1.0001 1.0001 0 0 1 0.69727 -1.7168 1.0001 1.0001 0 0 1 0.7168 0.30273c0.37534 0.37535 0.88325 0.58594 1.4141 0.58594s1.0387-0.21059 1.4141-0.58594a1.0001 1.0001 0 0 1 0.69727 -0.30664z" fill="#fc9c9c"/>
</g>
</svg>
diff --git a/editor/icons/icon_sprite_frames.svg b/editor/icons/icon_sprite_frames.svg
index e797819892..8123cbd6b4 100644
--- a/editor/icons/icon_sprite_frames.svg
+++ b/editor/icons/icon_sprite_frames.svg
@@ -1,5 +1,3 @@
<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<g transform="translate(0 -1036.4)">
-<path transform="translate(0 1036.4)" d="m6 1a5 5 0 0 0 -5 5 5 5 0 0 0 5 5 5 5 0 0 0 5 -5 5 5 0 0 0 -5 -5zm-3 4a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm6 0a1 1 0 0 1 1 1 1 1 0 0 1 -1 1 1 1 0 0 1 -1 -1 1 1 0 0 1 1 -1zm4 2v2h2v-2h-2zm-5.0039 0.49219a0.50005 0.50005 0 0 1 0.35742 0.86133c-0.61785 0.6179-1.4924 0.89648-2.3535 0.89648s-1.7357-0.27858-2.3535-0.89648a0.50005 0.50005 0 0 1 0.34766 -0.85742 0.50005 0.50005 0 0 1 0.35938 0.15039c0.38215 0.3822 1.0076 0.60352 1.6465 0.60352s1.2643-0.22132 1.6465-0.60352a0.50005 0.50005 0 0 1 0.34961 -0.1543zm2.0039 2.5078v2h2v-2h-2zm3 0v2h2v-2h-2zm-6 3v2h2v-2h-2zm3 0v2h2v-2h-2zm3 0v2h2v-2h-2z" fill="#e0e0e0"/>
-</g>
+<path d="m3 1c-1.108 0-2 0.89199-2 2v6c0 1.108 0.89199 2 2 2h6c1.108 0 2-0.89199 2-2v-6c0-1.108-0.89199-2-2-2h-6zm10 0v2h2v-2h-2zm-10 4c0.554 0 1 0.446 1 1v1c0 0.554-0.446 1-1 1s-1-0.446-1-1v-1c0-0.554 0.446-1 1-1zm6 0c0.554 0 1 0.446 1 1v1c0 0.554-0.446 1-1 1s-1-0.446-1-1v-1c0-0.554 0.446-1 1-1zm4 0v2h2v-2h-2zm-9 4h2 2a2 1 0 0 1 -1 0.86523 2 1 0 0 1 -2 0 2 1 0 0 1 -1 -0.86523zm9 0v2h2v-2h-2zm-12 4v2h2v-2h-2zm4 0v2h2v-2h-2zm4 0v2h2v-2h-2zm4 0v2h2v-2h-2z" fill="#e0e0e0"/>
</svg>
diff --git a/editor/icons/icon_viewport_speed.svg b/editor/icons/icon_viewport_speed.svg
new file mode 100644
index 0000000000..e64b5a8059
--- /dev/null
+++ b/editor/icons/icon_viewport_speed.svg
@@ -0,0 +1,4 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 4.2333333 4.2333333" xmlns="http://www.w3.org/2000/svg">
+<path d="m1.5875 0c-0.28858 0-0.52917 0.24059-0.52917 0.52917v0.61132c-0.085589-0.051-0.18113-0.0891-0.28525-0.0853-0.34849 0.0127-0.5952 0.37346-0.48059 0.70278l0.26355 0.79066c0.048664 0.14623 0.15979 0.24805 0.29249 0.30644l-0.60927 0.40669c-0.13121 0.0845-0.22102 0.22389-0.24133 0.3633-0.020312 0.13941 0.017471 0.26985 0.087333 0.37465s0.17614 0.19045 0.31264 0.22532c0.13634 0.0348 0.29946 6e-3 0.42788-0.0827h5.159e-4l1.0852-0.72348 0.26097 0.52192c0.11682 0.23391 0.39274 0.34829 0.64079 0.26561l0.79375-0.26458-0.00775 3e-3c0.15105-0.0454 0.27732-0.15615 0.33486-0.2863 0.057538-0.13015 0.055144-0.26773 0.014986-0.38809-0.03156-0.0946-0.10972-0.1687-0.19275-0.23617 0.069099-0.0546 0.1445-0.10364 0.18035-0.19325 0.051761-0.12941 0.045257-0.29292-0.02377-0.43098l-0.26459-0.52946c-0.089407-0.17933-0.27348-0.29308-0.47335-0.29305h-0.1111c0.052029-0.0817 0.1111-0.16214 0.1111-0.26458v-0.79375c0-0.28858-0.24059-0.52917-0.52917-0.52917z" color="#000000" color-rendering="auto" dominant-baseline="auto" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+<path d="m1.5875 0.26458c-0.14658 0-0.26458 0.118-0.26458 0.26459v0.79375c0 0.14658 0.118 0.26458 0.26458 0.26458h0.26458v0.262a0.26461 0.26461 0 0 0 -0.083716 0.0165l-0.5426 0.18086-0.18087-0.5426a0.26461 0.26461 0 0 0 -0.262 -0.18448 0.26461 0.26461 0 0 0 -0.2403 0.3514l0.26458 0.79375a0.26461 0.26461 0 0 0 0.33486 0.16743l0.44545-0.14831v0.16174c0 0.0108 0.00495 0.02 0.0062 0.0305l-1.2113 0.80771a0.26461 0.26461 0 1 0 0.29352 0.44028l1.3379-0.89194 0.39532 0.79014a0.26461 0.26461 0 0 0 0.32039 0.1328l0.79375-0.26458a0.26461 0.26461 0 1 0 -0.16743 -0.50175l-0.57619 0.19172-0.25787-0.51625c0.072998-0.047 0.12402-0.12495 0.12402-0.21859v-0.26458h0.36587l0.1912 0.38292a0.26461 0.26461 0 1 0 0.47336 -0.23668l-0.26458-0.52916a0.26461 0.26461 0 0 0 -0.23668 -0.14625h-0.79375v-0.26458h0.26458c0.14658 0 0.26458-0.118 0.26458-0.26458v-0.79375c0-0.14659-0.118-0.26459-0.26458-0.26459zm0 0.52917h0.26458v0.52917h-0.26458z" fill="#fff" fill-opacity=".99608"/>
+</svg>
diff --git a/editor/icons/icon_viewport_sprite.svg b/editor/icons/icon_viewport_sprite.svg
deleted file mode 100644
index 4b8bbeaeba..0000000000
--- a/editor/icons/icon_viewport_sprite.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
-<g transform="translate(0 -1036.4)">
-<rect x="20" y="1042.4" width="1" height="1" fill="#fefeff"/>
-<rect x="29" y="1042.4" width="1" height="1" fill="#fefeff"/>
-<path transform="translate(0 1036.4)" d="m3 2c-0.5304 8.01e-5 -1.0391 0.21085-1.4141 0.58594-0.37509 0.37501-0.58586 0.88366-0.58594 1.4141v8c8.03e-5 0.5304 0.21085 1.0391 0.58594 1.4141 0.37501 0.37509 0.88366 0.58586 1.4141 0.58594h10c1.1046 0 2-0.89543 2-2v-8c0-1.1046-0.89543-2-2-2h-10zm0 1h10c0.55228 9.6e-6 0.99999 0.44772 1 1v8c-1e-5 0.55228-0.44772 0.99999-1 1h-10c-0.55228-1e-5 -0.99999-0.44772-1-1v-8c9.6e-6 -0.55228 0.44772-0.99999 1-1zm1 3v2h2v-2h-2zm6 0v2h2v-2h-2zm-6 3v1h8v-1h-8z" fill="#a5b7f3" fill-opacity=".98824"/>
-</g>
-</svg>
diff --git a/editor/icons/icon_viewport_zoom.svg b/editor/icons/icon_viewport_zoom.svg
new file mode 100644
index 0000000000..18d4ec32ce
--- /dev/null
+++ b/editor/icons/icon_viewport_zoom.svg
@@ -0,0 +1,6 @@
+<svg width="16" height="16" version="1.1" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<g>
+<path d="m6 0c-3.3019 0-6 2.6981-6 6s2.6981 6 6 6h0.00195c0.88828 0 1.737-0.2588 2.5332-0.6367l3.8281 3.8281c0.39053 0.3904 1.0235 0.3904 1.4141 0l1.4141-1.4141c0.39033-0.3905 0.39033-1.0235 0-1.414l-3.791-3.791c0.02779-0.058 0.06588-0.1109 0.0918-0.17 0.05554-0.1268 0.08414-0.2638 0.08398-0.4023h1.4238c0.55226-1e-4 0.99994-0.4477 1-1v-1h1c0.55226-1e-4 0.99994-0.4477 1-1v-2c-5.5e-5 -0.5523-0.44774-0.9999-1-1h-1v-1c-5.5e-5 -0.5523-0.44774-0.9999-1-1h-2c-0.55226 1e-4 -0.99994 0.4477-1 1v1h-0.00977c1.44e-4 -0.3151-0.14822-0.6118-0.40039-0.8008-1.0353-0.7764-2.2938-1.1967-3.5879-1.1992h-0.00195z" color="#000000" color-rendering="auto" dominant-baseline="auto" image-rendering="auto" shape-rendering="auto" solid-color="#000000" style="font-feature-settings:normal;font-variant-alternates:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-variant-numeric:normal;font-variant-position:normal;isolation:auto;mix-blend-mode:normal;shape-padding:0;text-decoration-color:#000000;text-decoration-line:none;text-decoration-style:solid;text-indent:0;text-orientation:mixed;text-transform:none;white-space:normal"/>
+<path d="m6 1a5 5 0 0 0 -5 5 5 5 0 0 0 5 5 5 5 0 0 0 2.752 -0.83398l4.3184 4.3184 1.4141-1.4141-4.3184-4.3184a5 5 0 0 0 0.41016 -0.75195h-0.57617v-2h-1a3 3 0 0 1 -3 3 3 3 0 0 1 -3 -3 3 3 0 0 1 3 -3 3 3 0 0 1 2 0.76758v-1.7676h0.99023a5 5 0 0 0 -2.9902 -1zm5 0v2h-2v2h2v2h2v-2h2v-2h-2v-2z" fill="#fff"/>
+</g>
+</svg>
diff --git a/editor/import/editor_import_collada.cpp b/editor/import/editor_import_collada.cpp
index 6ef1758363..4d658438cd 100644
--- a/editor/import/editor_import_collada.cpp
+++ b/editor/import/editor_import_collada.cpp
@@ -1106,7 +1106,6 @@ Error ColladaImport::_create_mesh_surfaces(bool p_optimize, Ref<ArrayMesh> &p_me
for (int mi = 0; mi < p_morph_meshes.size(); mi++) {
- //print_line("want surface "+itos(mi)+" has "+itos(p_morph_meshes[mi]->get_surface_count()));
Array a = p_morph_meshes[mi]->surface_get_arrays(surface);
//add valid weight and bone arrays if they exist, TODO check if they are unique to shape (generally not)
@@ -1187,9 +1186,6 @@ Error ColladaImport::_create_resources(Collada::Node *p_node) {
if (cd.control_vertices.has("TILT") && cd.sources.has(cd.control_vertices["TILT"]))
tilts = &cd.sources[cd.control_vertices["TILT"]];
- if (tilts) {
- print_line("FOUND TILTS!!!");
- }
int pc = vertices.array.size() / 3;
for (int i = 0; i < pc; i++) {
@@ -1237,12 +1233,8 @@ Error ColladaImport::_create_resources(Collada::Node *p_node) {
Vector<int> bone_remap;
Vector<Ref<ArrayMesh> > morphs;
- print_line("mesh: " + String(mi->get_name()));
-
if (ng->controller) {
- print_line("has controller");
-
String ngsource = ng->source;
if (collada.state.skin_controller_data_map.has(ngsource)) {
@@ -1255,9 +1247,6 @@ Error ColladaImport::_create_resources(Collada::Node *p_node) {
ERR_FAIL_COND_V(skeletons.empty(), ERR_INVALID_DATA);
String skname = skeletons[0];
- if (!node_map.has(skname)) {
- print_line("no node for skeleton " + skname);
- }
ERR_FAIL_COND_V(!node_map.has(skname), ERR_INVALID_DATA);
NodeMap nmsk = node_map[skname];
Skeleton *sk = Object::cast_to<Skeleton>(nmsk.node);
@@ -1295,22 +1284,16 @@ Error ColladaImport::_create_resources(Collada::Node *p_node) {
for (int i = 0; i < bone_remap.size(); i++) {
String str = joint_src->sarray[i];
- if (!bone_remap_map.has(str)) {
- print_line("bone not found for remap: " + str);
- print_line("in skeleton: " + skname);
- }
ERR_FAIL_COND_V(!bone_remap_map.has(str), ERR_INVALID_DATA);
bone_remap[i] = bone_remap_map[str];
}
}
if (collada.state.morph_controller_data_map.has(ngsource)) {
- print_line("is morph " + ngsource);
+
//it's a morph!!
morph = &collada.state.morph_controller_data_map[ngsource];
meshid = morph->mesh;
- printf("KKmorph: %p\n", morph);
- print_line("morph mshid: " + meshid);
Vector<String> targets;
diff --git a/editor/node_dock.cpp b/editor/node_dock.cpp
index 7edaf0e5af..20392a67a7 100644
--- a/editor/node_dock.cpp
+++ b/editor/node_dock.cpp
@@ -56,10 +56,10 @@ void NodeDock::_bind_methods() {
void NodeDock::_notification(int p_what) {
if (p_what == NOTIFICATION_ENTER_TREE) {
- connections_button->set_icon(get_icon("Connect", "EditorIcons"));
+ connections_button->set_icon(get_icon("Signals", "EditorIcons"));
groups_button->set_icon(get_icon("Groups", "EditorIcons"));
} else if (p_what == EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) {
- connections_button->set_icon(get_icon("Connect", "EditorIcons"));
+ connections_button->set_icon(get_icon("Signals", "EditorIcons"));
groups_button->set_icon(get_icon("Groups", "EditorIcons"));
}
}
diff --git a/editor/plugins/abstract_polygon_2d_editor.cpp b/editor/plugins/abstract_polygon_2d_editor.cpp
index 2fd74d529e..ffa4e36b5a 100644
--- a/editor/plugins/abstract_polygon_2d_editor.cpp
+++ b/editor/plugins/abstract_polygon_2d_editor.cpp
@@ -195,9 +195,7 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
Transform2D xform = canvas_item_editor->get_canvas_transform() * _get_node()->get_global_transform();
Vector2 gpoint = mb->get_position();
- Vector2 cpoint = canvas_item_editor->get_canvas_transform().affine_inverse().xform(gpoint);
- cpoint = canvas_item_editor->snap_point(cpoint);
- cpoint = _get_node()->get_global_transform().affine_inverse().xform(cpoint);
+ Vector2 cpoint = _get_node()->get_global_transform().affine_inverse().xform(canvas_item_editor->snap_point(canvas_item_editor->get_canvas_transform().affine_inverse().xform(mb->get_position())));
//first check if a point is to be added (segment split)
real_t grab_threshold = EDITOR_DEF("editors/poly_editor/point_grab_radius", 8);
@@ -425,15 +423,14 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
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 = _get_node()->get_global_transform().affine_inverse().xform(cpoint);
+ Vector2 cpoint = _get_node()->get_global_transform().affine_inverse().xform(canvas_item_editor->snap_point(canvas_item_editor->get_canvas_transform().affine_inverse().xform(mm->get_position())));
+ edited_point_pos = cpoint;
if (!wip_active) {
Vector<Vector2> vertices = _get_polygon(edited_polygon);
ERR_FAIL_INDEX_V(edited_point, vertices.size(), false);
- vertices[edited_point] = edited_point_pos - _get_offset(edited_polygon);
+ vertices[edited_point] = cpoint - _get_offset(edited_polygon);
_set_polygon(edited_polygon, vertices);
}
@@ -444,8 +441,7 @@ bool AbstractPolygon2DEditor::forward_gui_input(const Ref<InputEvent> &p_event)
return false;
}
-void AbstractPolygon2DEditor::_canvas_draw() {
-
+void AbstractPolygon2DEditor::forward_draw_over_canvas(Control *p_canvas) {
if (!_get_node())
return;
@@ -527,9 +523,6 @@ void AbstractPolygon2DEditor::edit(Node *p_polygon) {
if (_is_empty())
_menu_option(MODE_CREATE);
- if (!canvas_item_editor->get_viewport_control()->is_connected("draw", this, "_canvas_draw"))
- canvas_item_editor->get_viewport_control()->connect("draw", this, "_canvas_draw");
-
wip.clear();
wip_active = false;
edited_point = -1;
@@ -539,15 +532,11 @@ void AbstractPolygon2DEditor::edit(Node *p_polygon) {
} else {
_set_node(NULL);
-
- if (canvas_item_editor->get_viewport_control()->is_connected("draw", this, "_canvas_draw"))
- canvas_item_editor->get_viewport_control()->disconnect("draw", this, "_canvas_draw");
}
}
void AbstractPolygon2DEditor::_bind_methods() {
- ClassDB::bind_method(D_METHOD("_canvas_draw"), &AbstractPolygon2DEditor::_canvas_draw);
ClassDB::bind_method(D_METHOD("_node_removed"), &AbstractPolygon2DEditor::_node_removed);
ClassDB::bind_method(D_METHOD("_menu_option"), &AbstractPolygon2DEditor::_menu_option);
ClassDB::bind_method(D_METHOD("_create_resource"), &AbstractPolygon2DEditor::_create_resource);
diff --git a/editor/plugins/abstract_polygon_2d_editor.h b/editor/plugins/abstract_polygon_2d_editor.h
index 86e14694da..3e3bff6d0d 100644
--- a/editor/plugins/abstract_polygon_2d_editor.h
+++ b/editor/plugins/abstract_polygon_2d_editor.h
@@ -75,7 +75,6 @@ protected:
virtual void _menu_option(int p_option);
void _wip_close();
- void _canvas_draw();
void _notification(int p_what);
void _node_removed(Node *p_node);
@@ -103,6 +102,8 @@ protected:
public:
bool forward_gui_input(const Ref<InputEvent> &p_event);
+ void forward_draw_over_canvas(Control *p_canvas);
+
void edit(Node *p_polygon);
AbstractPolygon2DEditor(EditorNode *p_editor, bool p_wip_destructive = true);
};
@@ -116,7 +117,8 @@ class AbstractPolygon2DEditorPlugin : public EditorPlugin {
String klass;
public:
- virtual bool forward_canvas_gui_input(const Transform2D &p_canvas_xform, const Ref<InputEvent> &p_event) { return polygon_editor->forward_gui_input(p_event); }
+ virtual bool forward_canvas_gui_input(const Ref<InputEvent> &p_event) { return polygon_editor->forward_gui_input(p_event); }
+ virtual void forward_draw_over_canvas(Control *p_canvas) { polygon_editor->forward_draw_over_canvas(p_canvas); }
bool has_main_screen() const { return false; }
virtual String get_name() const { return klass; }
diff --git a/editor/plugins/animation_player_editor_plugin.cpp b/editor/plugins/animation_player_editor_plugin.cpp
index bdfe380211..2b9c625aa4 100644
--- a/editor/plugins/animation_player_editor_plugin.cpp
+++ b/editor/plugins/animation_player_editor_plugin.cpp
@@ -557,7 +557,7 @@ void AnimationPlayerEditor::_animation_blend() {
String current = animation->get_item_text(animation->get_selected());
- blend_editor.dialog->popup_centered(Size2(400, 400));
+ blend_editor.dialog->popup_centered(Size2(400, 400) * EDSCALE);
blend_editor.tree->set_hide_root(true);
blend_editor.tree->set_column_min_width(0, 10);
diff --git a/editor/plugins/canvas_item_editor_plugin.cpp b/editor/plugins/canvas_item_editor_plugin.cpp
index 4b216d63f5..34c0a3d439 100644
--- a/editor/plugins/canvas_item_editor_plugin.cpp
+++ b/editor/plugins/canvas_item_editor_plugin.cpp
@@ -45,7 +45,7 @@
#include "scene/2d/screen_button.h"
#include "scene/2d/sprite.h"
#include "scene/gui/grid_container.h"
-#include "scene/gui/patch_9_rect.h"
+#include "scene/gui/nine_patch_rect.h"
#include "scene/main/canvas_layer.h"
#include "scene/main/viewport.h"
#include "scene/resources/packed_scene.h"
@@ -222,41 +222,38 @@ void CanvasItemEditor::_edit_set_pivot(const Vector2 &mouse_pos) {
undo_redo->commit_action();
}
-void CanvasItemEditor::_snap_if_closer(Point2 p_value, Point2 p_target_snap, Point2 &r_current_snap, bool (&r_snapped)[2], real_t rotation, float p_radius) {
+void CanvasItemEditor::_snap_if_closer_float(float p_value, float p_target_snap, float &r_current_snap, bool &r_snapped, float p_radius) {
float radius = p_radius / zoom;
- float dist;
+ float dist = Math::abs(p_value - p_target_snap);
+ if (p_radius < 0 || dist < radius && (!r_snapped || dist < Math::abs(r_current_snap - p_value))) {
+ r_current_snap = p_target_snap;
+ r_snapped = true;
+ }
+}
+void CanvasItemEditor::_snap_if_closer_point(Point2 p_value, Point2 p_target_snap, Point2 &r_current_snap, bool (&r_snapped)[2], real_t rotation, float p_radius) {
Transform2D rot_trans = Transform2D(rotation, Point2());
p_value = rot_trans.inverse().xform(p_value);
p_target_snap = rot_trans.inverse().xform(p_target_snap);
r_current_snap = rot_trans.inverse().xform(r_current_snap);
- dist = Math::abs(p_value.x - p_target_snap.x);
- if (p_radius < 0 || dist < radius && (!r_snapped[0] || dist < Math::abs(r_current_snap.x - p_value.x))) {
- r_current_snap.x = p_target_snap.x;
- r_snapped[0] = true;
- }
-
- dist = Math::abs(p_value.y - p_target_snap.y);
- if (p_radius < 0 || dist < radius && (!r_snapped[1] || dist < Math::abs(r_current_snap.y - p_value.y))) {
- r_current_snap.y = p_target_snap.y;
- r_snapped[1] = true;
- }
+ _snap_if_closer_float(p_value.x, p_target_snap.x, r_current_snap.x, r_snapped[0], p_radius);
+ _snap_if_closer_float(p_value.y, p_target_snap.y, r_current_snap.y, r_snapped[1], p_radius);
r_current_snap = rot_trans.xform(r_current_snap);
}
void CanvasItemEditor::_snap_other_nodes(Point2 p_value, Point2 &r_current_snap, bool (&r_snapped)[2], const Node *p_current, const CanvasItem *p_to_snap) {
const CanvasItem *canvas_item = Object::cast_to<CanvasItem>(p_current);
- if (canvas_item && p_current != p_to_snap) {
+ if (canvas_item && (!p_to_snap || p_current != p_to_snap)) {
Transform2D ci_transform = canvas_item->get_global_transform_with_canvas();
- Transform2D to_snap_transform = p_to_snap->get_global_transform_with_canvas();
- if (ci_transform.get_rotation() == to_snap_transform.get_rotation()) {
+ Transform2D to_snap_transform = p_to_snap ? p_to_snap->get_global_transform_with_canvas() : Transform2D();
+ if (fmod(ci_transform.get_rotation() - to_snap_transform.get_rotation(), 360.0) == 0.0) {
Point2 begin = ci_transform.xform(canvas_item->get_item_rect().get_position());
Point2 end = ci_transform.xform(canvas_item->get_item_rect().get_position() + canvas_item->get_item_rect().get_size());
- _snap_if_closer(p_value, begin, r_current_snap, r_snapped, ci_transform.get_rotation());
- _snap_if_closer(p_value, end, r_current_snap, r_snapped, ci_transform.get_rotation());
+ _snap_if_closer_point(p_value, begin, r_current_snap, r_snapped, ci_transform.get_rotation());
+ _snap_if_closer_point(p_value, end, r_current_snap, r_snapped, ci_transform.get_rotation());
}
}
for (int i = 0; i < p_current->get_child_count(); i++) {
@@ -291,9 +288,9 @@ Point2 CanvasItemEditor::snap_point(Point2 p_target, unsigned int p_modes, const
}
if (can_snap) {
- _snap_if_closer(p_target, begin, output, snapped, rotation);
- _snap_if_closer(p_target, (begin + end) / 2.0, output, snapped, rotation);
- _snap_if_closer(p_target, end, output, snapped, rotation);
+ _snap_if_closer_point(p_target, begin, output, snapped, rotation);
+ _snap_if_closer_point(p_target, (begin + end) / 2.0, output, snapped, rotation);
+ _snap_if_closer_point(p_target, end, output, snapped, rotation);
}
}
@@ -302,8 +299,8 @@ Point2 CanvasItemEditor::snap_point(Point2 p_target, unsigned int p_modes, const
if (const Control *c = Object::cast_to<Control>(p_canvas_item)) {
begin = p_canvas_item->get_global_transform_with_canvas().xform(_anchor_to_position(c, Point2(c->get_anchor(MARGIN_LEFT), c->get_anchor(MARGIN_TOP))));
end = p_canvas_item->get_global_transform_with_canvas().xform(_anchor_to_position(c, Point2(c->get_anchor(MARGIN_RIGHT), c->get_anchor(MARGIN_BOTTOM))));
- _snap_if_closer(p_target, begin, output, snapped, rotation);
- _snap_if_closer(p_target, end, output, snapped, rotation);
+ _snap_if_closer_point(p_target, begin, output, snapped, rotation);
+ _snap_if_closer_point(p_target, end, output, snapped, rotation);
}
}
@@ -311,17 +308,34 @@ Point2 CanvasItemEditor::snap_point(Point2 p_target, unsigned int p_modes, const
if ((snap_active && snap_node_sides && (p_modes & SNAP_NODE_SIDES)) || (p_forced_modes & SNAP_NODE_SIDES)) {
begin = p_canvas_item->get_global_transform_with_canvas().xform(p_canvas_item->get_item_rect().get_position());
end = p_canvas_item->get_global_transform_with_canvas().xform(p_canvas_item->get_item_rect().get_position() + p_canvas_item->get_item_rect().get_size());
- _snap_if_closer(p_target, begin, output, snapped, rotation);
- _snap_if_closer(p_target, end, output, snapped, rotation);
+ _snap_if_closer_point(p_target, begin, output, snapped, rotation);
+ _snap_if_closer_point(p_target, end, output, snapped, rotation);
+ }
+ }
+
+ // Other nodes sides
+ if ((snap_active && snap_other_nodes && (p_modes & SNAP_OTHER_NODES)) || (p_forced_modes & SNAP_OTHER_NODES)) {
+ _snap_other_nodes(p_target, output, snapped, get_tree()->get_edited_scene_root(), p_canvas_item);
+ }
+
+ if (((snap_active && snap_guides && (p_modes & SNAP_GUIDES)) || (p_forced_modes & SNAP_GUIDES)) && fmod(rotation, 360.0) == 0.0) {
+ // Guides
+ if (EditorNode::get_singleton()->get_edited_scene() && EditorNode::get_singleton()->get_edited_scene()->has_meta("_edit_vertical_guides_")) {
+ Array vguides = EditorNode::get_singleton()->get_edited_scene()->get_meta("_edit_vertical_guides_");
+ for (int i = 0; i < vguides.size(); i++) {
+ _snap_if_closer_float(p_target.x, vguides[i], output.x, snapped[0]);
+ }
}
- // Other nodes sides
- if ((snap_active && snap_other_nodes && (p_modes & SNAP_OTHER_NODES)) || (p_forced_modes & SNAP_OTHER_NODES)) {
- _snap_other_nodes(p_target, output, snapped, get_tree()->get_edited_scene_root(), p_canvas_item);
+ if (EditorNode::get_singleton()->get_edited_scene() && EditorNode::get_singleton()->get_edited_scene()->has_meta("_edit_horizontal_guides_")) {
+ Array hguides = EditorNode::get_singleton()->get_edited_scene()->get_meta("_edit_horizontal_guides_");
+ for (int i = 0; i < hguides.size(); i++) {
+ _snap_if_closer_float(p_target.y, hguides[i], output.y, snapped[1]);
+ }
}
}
- if (((snap_active && snap_grid && (p_modes & SNAP_GRID)) || (p_forced_modes & SNAP_GRID)) && rotation == 0.0) {
+ if (((snap_active && snap_grid && (p_modes & SNAP_GRID)) || (p_forced_modes & SNAP_GRID)) && fmod(rotation, 360.0) == 0.0) {
// Grid
Point2 offset = grid_offset;
if (snap_relative) {
@@ -335,7 +349,7 @@ Point2 CanvasItemEditor::snap_point(Point2 p_target, unsigned int p_modes, const
Point2 grid_output;
grid_output.x = Math::stepify(p_target.x - offset.x, grid_step.x * Math::pow(2.0, grid_step_multiplier)) + offset.x;
grid_output.y = Math::stepify(p_target.y - offset.y, grid_step.y * Math::pow(2.0, grid_step_multiplier)) + offset.y;
- _snap_if_closer(p_target, grid_output, output, snapped, 0.0, -1.0);
+ _snap_if_closer_point(p_target, grid_output, output, snapped, 0.0, -1.0);
}
if (((snap_pixel && (p_modes & SNAP_PIXEL)) || (p_forced_modes & SNAP_PIXEL)) && rotation == 0.0) {
@@ -429,8 +443,10 @@ Dictionary CanvasItemEditor::get_state() const {
state["snap_node_sides"] = snap_node_sides;
state["snap_other_nodes"] = snap_other_nodes;
state["snap_grid"] = snap_grid;
+ state["snap_guides"] = snap_guides;
state["show_grid"] = show_grid;
state["show_rulers"] = show_rulers;
+ state["show_guides"] = show_guides;
state["show_helpers"] = show_helpers;
state["snap_rotation"] = snap_rotation;
state["snap_relative"] = snap_relative;
@@ -497,6 +513,12 @@ void CanvasItemEditor::set_state(const Dictionary &p_state) {
smartsnap_config_popup->set_item_checked(idx, snap_other_nodes);
}
+ if (state.has("snap_guides")) {
+ snap_guides = state["snap_guides"];
+ int idx = smartsnap_config_popup->get_item_index(SNAP_USE_GUIDES);
+ smartsnap_config_popup->set_item_checked(idx, snap_guides);
+ }
+
if (state.has("snap_grid")) {
snap_grid = state["snap_grid"];
int idx = snap_config_menu->get_popup()->get_item_index(SNAP_USE_GRID);
@@ -515,6 +537,12 @@ void CanvasItemEditor::set_state(const Dictionary &p_state) {
view_menu->get_popup()->set_item_checked(idx, show_rulers);
}
+ if (state.has("show_guides")) {
+ show_guides = state["show_guides"];
+ int idx = view_menu->get_popup()->get_item_index(SHOW_GUIDES);
+ view_menu->get_popup()->set_item_checked(idx, show_guides);
+ }
+
if (state.has("show_helpers")) {
show_helpers = state["show_helpers"];
int idx = view_menu->get_popup()->get_item_index(SHOW_HELPERS);
@@ -1198,14 +1226,215 @@ void CanvasItemEditor::_update_cursor() {
viewport->set_default_cursor_shape(c);
}
-void CanvasItemEditor::_viewport_base_gui_input(const Ref<InputEvent> &p_event) {
+void CanvasItemEditor::_gui_input_viewport_base(const Ref<InputEvent> &p_event) {
+
+ Ref<InputEventMouseButton> b = p_event;
+ if (b.is_valid()) {
+ if (b->get_button_index() == BUTTON_LEFT && b->is_pressed()) {
+ if (show_guides && show_rulers && EditorNode::get_singleton()->get_edited_scene()) {
+ Transform2D xform = viewport_scrollable->get_transform() * transform;
+ // Retreive the guide lists
+ Array vguides;
+ if (EditorNode::get_singleton()->get_edited_scene()->has_meta("_edit_vertical_guides_")) {
+ vguides = EditorNode::get_singleton()->get_edited_scene()->get_meta("_edit_vertical_guides_");
+ }
+ Array hguides;
+ if (EditorNode::get_singleton()->get_edited_scene()->has_meta("_edit_horizontal_guides_")) {
+ hguides = EditorNode::get_singleton()->get_edited_scene()->get_meta("_edit_horizontal_guides_");
+ }
+
+ // Press button
+ if (b->get_position().x < RULER_WIDTH && b->get_position().y < RULER_WIDTH) {
+ // Drag a new double guide
+ drag = DRAG_DOUBLE_GUIDE;
+ edited_guide_index = -1;
+ } else if (b->get_position().x < RULER_WIDTH) {
+ // Check if we drag an existing horizontal guide
+ float minimum = 1e20;
+ edited_guide_index = -1;
+ for (int i = 0; i < hguides.size(); i++) {
+ if (ABS(xform.xform(Point2(0, hguides[i])).y - b->get_position().y) < MIN(minimum, 8)) {
+ edited_guide_index = i;
+ }
+ }
+
+ if (edited_guide_index >= 0) {
+ // Drag an existing horizontal guide
+ drag = DRAG_H_GUIDE;
+ } else {
+ // Drag a new vertical guide
+ drag = DRAG_V_GUIDE;
+ }
+ } else if (b->get_position().y < RULER_WIDTH) {
+ // Check if we drag an existing vertical guide
+ float minimum = 1e20;
+ edited_guide_index = -1;
+ for (int i = 0; i < vguides.size(); i++) {
+ if (ABS(xform.xform(Point2(vguides[i], 0)).x - b->get_position().x) < MIN(minimum, 8)) {
+ edited_guide_index = i;
+ }
+ }
+
+ if (edited_guide_index >= 0) {
+ // Drag an existing vertical guide
+ drag = DRAG_V_GUIDE;
+ } else {
+ // Drag a new vertical guide
+ drag = DRAG_H_GUIDE;
+ }
+ }
+ }
+ }
+
+ if (b->get_button_index() == BUTTON_LEFT && !b->is_pressed()) {
+ // Release button
+ if (show_guides && EditorNode::get_singleton()->get_edited_scene()) {
+ Transform2D xform = viewport_scrollable->get_transform() * transform;
+
+ // Retreive the guide lists
+ Array vguides;
+ if (EditorNode::get_singleton()->get_edited_scene()->has_meta("_edit_vertical_guides_")) {
+ vguides = EditorNode::get_singleton()->get_edited_scene()->get_meta("_edit_vertical_guides_");
+ }
+ Array hguides;
+ if (EditorNode::get_singleton()->get_edited_scene()->has_meta("_edit_horizontal_guides_")) {
+ hguides = EditorNode::get_singleton()->get_edited_scene()->get_meta("_edit_horizontal_guides_");
+ }
+
+ Point2 edited = snap_point(xform.affine_inverse().xform(b->get_position()), SNAP_GRID | SNAP_PIXEL | SNAP_OTHER_NODES);
+ if (drag == DRAG_V_GUIDE) {
+ Array prev_vguides = vguides.duplicate();
+ if (b->get_position().x > RULER_WIDTH) {
+ // Adds a new vertical guide
+ if (edited_guide_index >= 0) {
+ vguides[edited_guide_index] = edited.x;
+ undo_redo->create_action(TTR("Move vertical guide"));
+ undo_redo->add_do_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_vertical_guides_", vguides);
+ undo_redo->add_undo_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_vertical_guides_", prev_vguides);
+ undo_redo->add_undo_method(viewport_base, "update");
+ undo_redo->commit_action();
+ } else {
+ vguides.push_back(edited.x);
+ undo_redo->create_action(TTR("Create new vertical guide"));
+ undo_redo->add_do_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_vertical_guides_", vguides);
+ undo_redo->add_undo_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_vertical_guides_", prev_vguides);
+ undo_redo->add_undo_method(viewport_base, "update");
+ undo_redo->commit_action();
+ }
+ } else {
+ if (edited_guide_index >= 0) {
+ vguides.remove(edited_guide_index);
+ undo_redo->create_action(TTR("Remove vertical guide"));
+ undo_redo->add_do_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_vertical_guides_", vguides);
+ undo_redo->add_undo_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_vertical_guides_", prev_vguides);
+ undo_redo->add_undo_method(viewport_base, "update");
+ undo_redo->commit_action();
+ }
+ }
+ } else if (drag == DRAG_H_GUIDE) {
+ Array prev_hguides = hguides.duplicate();
+ if (b->get_position().y > RULER_WIDTH) {
+ // Adds a new horizontal guide
+ if (edited_guide_index >= 0) {
+ hguides[edited_guide_index] = edited.y;
+ undo_redo->create_action(TTR("Move horizontal guide"));
+ undo_redo->add_do_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_horizontal_guides_", hguides);
+ undo_redo->add_undo_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_horizontal_guides_", prev_hguides);
+ undo_redo->add_undo_method(viewport_base, "update");
+ undo_redo->commit_action();
+ } else {
+ hguides.push_back(edited.y);
+ undo_redo->create_action(TTR("Create new horizontal guide"));
+ undo_redo->add_do_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_horizontal_guides_", hguides);
+ undo_redo->add_undo_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_horizontal_guides_", prev_hguides);
+ undo_redo->add_undo_method(viewport_base, "update");
+ undo_redo->commit_action();
+ }
+ } else {
+ if (edited_guide_index >= 0) {
+ hguides.remove(edited_guide_index);
+ undo_redo->create_action(TTR("Remove horizontal guide"));
+ undo_redo->add_do_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_horizontal_guides_", hguides);
+ undo_redo->add_undo_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_horizontal_guides_", prev_hguides);
+ undo_redo->add_undo_method(viewport_base, "update");
+ undo_redo->commit_action();
+ }
+ }
+ } else if (drag == DRAG_DOUBLE_GUIDE) {
+ Array prev_hguides = hguides.duplicate();
+ Array prev_vguides = vguides.duplicate();
+ if (b->get_position().x > RULER_WIDTH && b->get_position().y > RULER_WIDTH) {
+ // Adds a new horizontal guide a new vertical guide
+ vguides.push_back(edited.x);
+ hguides.push_back(edited.y);
+ undo_redo->create_action(TTR("Create new horizontal and vertical guides"));
+ undo_redo->add_do_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_vertical_guides_", vguides);
+ undo_redo->add_do_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_horizontal_guides_", hguides);
+ undo_redo->add_undo_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_vertical_guides_", prev_vguides);
+ undo_redo->add_undo_method(EditorNode::get_singleton()->get_edited_scene(), "set_meta", "_edit_horizontal_guides_", prev_hguides);
+ undo_redo->add_undo_method(viewport_base, "update");
+ undo_redo->commit_action();
+ }
+ }
+ }
+ if (drag == DRAG_DOUBLE_GUIDE || drag == DRAG_V_GUIDE || drag == DRAG_H_GUIDE) {
+ drag = DRAG_NONE;
+ viewport_base->update();
+ }
+ }
+ }
+
+ Ref<InputEventMouseMotion> m = p_event;
+ if (m.is_valid()) {
+ if (!viewport_base->has_focus() && (!get_focus_owner() || !get_focus_owner()->is_text_field())) {
+ viewport_base->call_deferred("grab_focus");
+ }
+ if (drag == DRAG_DOUBLE_GUIDE || drag == DRAG_H_GUIDE || drag == DRAG_V_GUIDE) {
+ Transform2D xform = viewport_scrollable->get_transform() * transform;
+ Point2 mouse_pos = m->get_position();
+ mouse_pos = xform.affine_inverse().xform(mouse_pos);
+ mouse_pos = xform.xform(snap_point(mouse_pos, SNAP_GRID | SNAP_PIXEL | SNAP_OTHER_NODES));
+
+ edited_guide_pos = mouse_pos;
+ viewport_base->update();
+ }
+ }
+
+ Ref<InputEventKey> k = p_event;
+ if (k.is_valid()) {
+ if (k->is_pressed() && drag == DRAG_NONE) {
+ // Move the object with the arrow keys
+ KeyMoveMODE move_mode = MOVE_VIEW_BASE;
+ if (k->get_alt()) move_mode = MOVE_LOCAL_BASE;
+ if (k->get_control() || k->get_metakey()) move_mode = MOVE_LOCAL_WITH_ROT;
+
+ if (k->get_scancode() == KEY_UP)
+ _key_move(Vector2(0, -1), k->get_shift(), move_mode);
+ else if (k->get_scancode() == KEY_DOWN)
+ _key_move(Vector2(0, 1), k->get_shift(), move_mode);
+ else if (k->get_scancode() == KEY_LEFT)
+ _key_move(Vector2(-1, 0), k->get_shift(), move_mode);
+ else if (k->get_scancode() == KEY_RIGHT)
+ _key_move(Vector2(1, 0), k->get_shift(), move_mode);
+ else if (k->get_scancode() == KEY_ESCAPE) {
+ editor_selection->clear();
+ viewport->update();
+ } else
+ return;
+
+ accept_event();
+ }
+ }
+}
+
+void CanvasItemEditor::_gui_input_viewport(const Ref<InputEvent> &p_event) {
{
EditorNode *en = editor;
EditorPluginList *over_plugin_list = en->get_editor_plugins_over();
if (!over_plugin_list->empty()) {
- bool discard = over_plugin_list->forward_gui_input(transform, p_event);
+ bool discard = over_plugin_list->forward_gui_input(p_event);
if (discard) {
accept_event();
return;
@@ -1224,7 +1453,7 @@ void CanvasItemEditor::_viewport_base_gui_input(const Ref<InputEvent> &p_event)
_update_scroll(0);
viewport->update();
} else {
- _zoom_on_position(zoom * (1 - (0.05 * b->get_factor())), viewport_scrollable->get_transform().affine_inverse().xform(b->get_position()));
+ _zoom_on_position(zoom * (1 - (0.05 * b->get_factor())), b->get_position());
}
return;
@@ -1237,7 +1466,7 @@ void CanvasItemEditor::_viewport_base_gui_input(const Ref<InputEvent> &p_event)
_update_scroll(0);
viewport->update();
} else {
- _zoom_on_position(zoom * ((0.95 + (0.05 * b->get_factor())) / 0.95), viewport_scrollable->get_transform().affine_inverse().xform(b->get_position()));
+ _zoom_on_position(zoom * ((0.95 + (0.05 * b->get_factor())) / 0.95), b->get_position());
}
return;
@@ -1320,7 +1549,7 @@ void CanvasItemEditor::_viewport_base_gui_input(const Ref<InputEvent> &p_event)
if (b->get_button_index() == BUTTON_LEFT && tool == TOOL_EDIT_PIVOT) {
if (b->is_pressed()) {
// Set the pivot point
- Point2 mouse_pos = viewport_scrollable->get_transform().affine_inverse().xform(b->get_position());
+ Point2 mouse_pos = b->get_position();
mouse_pos = transform.affine_inverse().xform(mouse_pos);
mouse_pos = snap_point(mouse_pos, SNAP_DEFAULT, _get_single_item());
_edit_set_pivot(mouse_pos);
@@ -1443,8 +1672,8 @@ void CanvasItemEditor::_viewport_base_gui_input(const Ref<InputEvent> &p_event)
E->get().to
};
- Vector2 p = Geometry::get_closest_point_to_segment_2d(viewport_scrollable->get_transform().affine_inverse().xform(b->get_position()), s);
- float d = p.distance_to(viewport_scrollable->get_transform().affine_inverse().xform(b->get_position()));
+ Vector2 p = Geometry::get_closest_point_to_segment_2d(b->get_position(), s);
+ float d = p.distance_to(b->get_position());
if (d < bone_width && d < closest_dist) {
Cbone = E;
closest_dist = d;
@@ -1506,7 +1735,7 @@ void CanvasItemEditor::_viewport_base_gui_input(const Ref<InputEvent> &p_event)
CanvasItemEditorSelectedItem *se = editor_selection->get_node_editor_data<CanvasItemEditorSelectedItem>(canvas_item);
ERR_FAIL_COND(!se);
- Point2 click = viewport_scrollable->get_transform().affine_inverse().xform(b->get_position());
+ Point2 click = b->get_position();
// Rotation
if ((b->get_control() && tool == TOOL_SELECT) || tool == TOOL_ROTATE) {
@@ -1561,7 +1790,7 @@ void CanvasItemEditor::_viewport_base_gui_input(const Ref<InputEvent> &p_event)
}
// Multiple selected items
- Point2 click = viewport_scrollable->get_transform().affine_inverse().xform(b->get_position());
+ Point2 click = b->get_position();
if ((b->get_alt() || tool == TOOL_MOVE) && get_item_count()) {
// Drag the nodes
@@ -1621,12 +1850,9 @@ void CanvasItemEditor::_viewport_base_gui_input(const Ref<InputEvent> &p_event)
// Mouse motion event
_update_cursor();
- if (!viewport_base->has_focus() && (!get_focus_owner() || !get_focus_owner()->is_text_field()))
- viewport_base->call_deferred("grab_focus");
-
if (box_selecting) {
// Update box selection
- box_selecting_to = transform.affine_inverse().xform(viewport_scrollable->get_transform().affine_inverse().xform(m->get_position()));
+ box_selecting_to = transform.affine_inverse().xform(m->get_position());
viewport->update();
return;
}
@@ -1672,7 +1898,7 @@ void CanvasItemEditor::_viewport_base_gui_input(const Ref<InputEvent> &p_event)
}
Vector2 dfrom = drag_from;
- Vector2 dto = transform.affine_inverse().xform(viewport_scrollable->get_transform().affine_inverse().xform(m->get_position()));
+ Vector2 dto = transform.affine_inverse().xform(m->get_position());
if (canvas_item->has_meta("_edit_lock_"))
continue;
@@ -1735,7 +1961,7 @@ void CanvasItemEditor::_viewport_base_gui_input(const Ref<InputEvent> &p_event)
Vector2 anchor = c_trans_rev.xform(dto - drag_from + drag_point_from);
anchor = _position_to_anchor(control, anchor);
- Vector2 anchor_snapped = c_trans_rev.xform(snap_point(dto - drag_from + drag_point_from, SNAP_GRID | SNAP_OTHER_NODES, _get_single_item(), SNAP_NODE_PARENT | SNAP_NODE_SIDES));
+ Vector2 anchor_snapped = c_trans_rev.xform(snap_point(dto - drag_from + drag_point_from, SNAP_GRID | SNAP_GUIDES | SNAP_OTHER_NODES, _get_single_item(), SNAP_NODE_PARENT | SNAP_NODE_SIDES));
anchor_snapped = _position_to_anchor(control, anchor_snapped).snapped(Vector2(0.00001, 0.00001));
bool use_y = Math::abs(drag_vector.y) > Math::abs(drag_vector.x);
@@ -1771,7 +1997,7 @@ void CanvasItemEditor::_viewport_base_gui_input(const Ref<InputEvent> &p_event)
}
dfrom = drag_point_from;
- dto = snap_point(dto, SNAP_NODE_ANCHORS | SNAP_NODE_PARENT | SNAP_OTHER_NODES | SNAP_GRID | SNAP_PIXEL, _get_single_item());
+ dto = snap_point(dto, SNAP_NODE_ANCHORS | SNAP_NODE_PARENT | SNAP_OTHER_NODES | SNAP_GRID | SNAP_GUIDES | SNAP_PIXEL, _get_single_item());
drag_vector =
canvas_item->get_global_transform_with_canvas().affine_inverse().xform(dto) -
@@ -1995,32 +2221,6 @@ void CanvasItemEditor::_viewport_base_gui_input(const Ref<InputEvent> &p_event)
}
}
}
-
- Ref<InputEventKey> k = p_event;
- if (k.is_valid()) {
- if (k->is_pressed() && drag == DRAG_NONE) {
- // Move the object with the arrow keys
- KeyMoveMODE move_mode = MOVE_VIEW_BASE;
- if (k->get_alt()) move_mode = MOVE_LOCAL_BASE;
- if (k->get_control() || k->get_metakey()) move_mode = MOVE_LOCAL_WITH_ROT;
-
- if (k->get_scancode() == KEY_UP)
- _key_move(Vector2(0, -1), k->get_shift(), move_mode);
- else if (k->get_scancode() == KEY_DOWN)
- _key_move(Vector2(0, 1), k->get_shift(), move_mode);
- else if (k->get_scancode() == KEY_LEFT)
- _key_move(Vector2(-1, 0), k->get_shift(), move_mode);
- else if (k->get_scancode() == KEY_RIGHT)
- _key_move(Vector2(1, 0), k->get_shift(), move_mode);
- else if (k->get_scancode() == KEY_ESCAPE) {
- editor_selection->clear();
- viewport->update();
- } else
- return;
-
- accept_event();
- }
- }
}
void CanvasItemEditor::_draw_text_at_position(Point2 p_position, String p_string, Margin p_side) {
@@ -2059,6 +2259,58 @@ void CanvasItemEditor::_draw_percentage_at_position(float p_value, Point2 p_posi
}
}
+void CanvasItemEditor::_draw_focus() {
+ // Draw the focus around the base viewport
+ if (viewport_base->has_focus()) {
+ get_stylebox("Focus", "EditorStyles")->draw(viewport_base->get_canvas_item(), Rect2(Point2(), viewport_base->get_size()));
+ }
+}
+
+void CanvasItemEditor::_draw_guides() {
+
+ Color guide_color = Color(0.6, 0.0, 0.8);
+ Transform2D xform = viewport_scrollable->get_transform() * transform;
+
+ // Guides already there
+ if (EditorNode::get_singleton()->get_edited_scene() && EditorNode::get_singleton()->get_edited_scene()->has_meta("_edit_vertical_guides_")) {
+ Array vguides = EditorNode::get_singleton()->get_edited_scene()->get_meta("_edit_vertical_guides_");
+ for (int i = 0; i < vguides.size(); i++) {
+ if (drag == DRAG_V_GUIDE && i == edited_guide_index)
+ continue;
+ float x = xform.xform(Point2(vguides[i], 0)).x;
+ viewport_base->draw_line(Point2(x, 0), Point2(x, viewport_base->get_size().y), guide_color);
+ }
+ }
+
+ if (EditorNode::get_singleton()->get_edited_scene() && EditorNode::get_singleton()->get_edited_scene()->has_meta("_edit_horizontal_guides_")) {
+ Array hguides = EditorNode::get_singleton()->get_edited_scene()->get_meta("_edit_horizontal_guides_");
+ for (int i = 0; i < hguides.size(); i++) {
+ if (drag == DRAG_H_GUIDE && i == edited_guide_index)
+ continue;
+ float y = xform.xform(Point2(0, hguides[i])).y;
+ viewport_base->draw_line(Point2(0, y), Point2(viewport_base->get_size().x, y), guide_color);
+ }
+ }
+
+ // Dragged guide
+ Color text_color = get_color("font_color", "Editor");
+ text_color.a = 0.5;
+ if (drag == DRAG_DOUBLE_GUIDE || drag == DRAG_V_GUIDE) {
+ String str = vformat("%d px", xform.affine_inverse().xform(edited_guide_pos).x);
+ Ref<Font> font = get_font("font", "Label");
+ Size2 text_size = font->get_string_size(str);
+ viewport_base->draw_string(font, Point2(edited_guide_pos.x + 10, RULER_WIDTH + text_size.y / 2 + 10), str, text_color);
+ viewport_base->draw_line(Point2(edited_guide_pos.x, 0), Point2(edited_guide_pos.x, viewport_base->get_size().y), guide_color);
+ }
+ if (drag == DRAG_DOUBLE_GUIDE || drag == DRAG_H_GUIDE) {
+ String str = vformat("%d px", xform.affine_inverse().xform(edited_guide_pos).y);
+ Ref<Font> font = get_font("font", "Label");
+ Size2 text_size = font->get_string_size(str);
+ viewport_base->draw_string(font, Point2(RULER_WIDTH + 10, edited_guide_pos.y + text_size.y / 2 + 10), str, text_color);
+ viewport_base->draw_line(Point2(0, edited_guide_pos.y), Point2(viewport_base->get_size().x, edited_guide_pos.y), guide_color);
+ }
+}
+
void CanvasItemEditor::_draw_rulers() {
Color graduation_color = get_color("font_color", "Editor");
graduation_color.a = 0.5;
@@ -2143,12 +2395,6 @@ void CanvasItemEditor::_draw_rulers() {
viewport_base->draw_rect(Rect2(Point2(), Size2(RULER_WIDTH, RULER_WIDTH)), graduation_color);
}
-void CanvasItemEditor::_draw_focus() {
- if (viewport_base->has_focus()) {
- get_stylebox("Focus", "EditorStyles")->draw(viewport_base->get_canvas_item(), Rect2(Point2(), viewport_base->get_size()));
- }
-}
-
void CanvasItemEditor::_draw_grid() {
if (show_grid) {
//Draw the grid
@@ -2159,8 +2405,8 @@ void CanvasItemEditor::_draw_grid() {
Vector2 real_grid_offset;
if (snap_relative && get_item_count() > 0) {
Vector2 topleft = _find_topleftmost_point();
- real_grid_offset.x = fmod(topleft.x, grid_step.x * Math::pow(2.0, grid_step_multiplier));
- real_grid_offset.y = fmod(topleft.y, grid_step.y * Math::pow(2.0, grid_step_multiplier));
+ real_grid_offset.x = fmod(topleft.x, grid_step.x * (real_t)Math::pow(2.0, grid_step_multiplier));
+ real_grid_offset.y = fmod(topleft.y, grid_step.y * (real_t)Math::pow(2.0, grid_step_multiplier));
} else {
real_grid_offset = grid_offset;
}
@@ -2634,6 +2880,8 @@ void CanvasItemEditor::_get_encompassing_rect(Node *p_node, Rect2 &r_rect, const
void CanvasItemEditor::_draw_viewport_base() {
if (show_rulers)
_draw_rulers();
+ if (show_guides)
+ _draw_guides();
_draw_focus();
}
@@ -2681,9 +2929,8 @@ void CanvasItemEditor::_draw_viewport() {
EditorPluginList *over_plugin_list = editor->get_editor_plugins_over();
if (!over_plugin_list->empty()) {
- over_plugin_list->forward_draw_over_canvas(transform, viewport);
+ over_plugin_list->forward_draw_over_canvas(viewport);
}
- _draw_focus();
_draw_bones();
}
@@ -2806,12 +3053,16 @@ void CanvasItemEditor::_notification(int p_what) {
unlock_button->set_icon(get_icon("Unlock", "EditorIcons"));
group_button->set_icon(get_icon("Group", "EditorIcons"));
ungroup_button->set_icon(get_icon("Ungroup", "EditorIcons"));
+ key_loc_button->set_icon(get_icon("KeyPosition", "EditorIcons"));
+ key_rot_button->set_icon(get_icon("KeyRotation", "EditorIcons"));
+ key_scale_button->set_icon(get_icon("KeyScale", "EditorIcons"));
key_insert_button->set_icon(get_icon("Key", "EditorIcons"));
zoom_minus->set_icon(get_icon("ZoomLess", "EditorIcons"));
zoom_reset->set_icon(get_icon("ZoomReset", "EditorIcons"));
zoom_plus->set_icon(get_icon("ZoomMore", "EditorIcons"));
+ presets_menu->set_icon(get_icon("ControlLayout", "EditorIcons"));
PopupMenu *p = presets_menu->get_popup();
p->clear();
@@ -3117,6 +3368,11 @@ void CanvasItemEditor::_popup_callback(int p_op) {
int idx = smartsnap_config_popup->get_item_index(SNAP_USE_OTHER_NODES);
smartsnap_config_popup->set_item_checked(idx, snap_other_nodes);
} break;
+ case SNAP_USE_GUIDES: {
+ snap_guides = !snap_guides;
+ int idx = smartsnap_config_popup->get_item_index(SNAP_USE_GUIDES);
+ smartsnap_config_popup->set_item_checked(idx, snap_guides);
+ } break;
case SNAP_USE_GRID: {
snap_grid = !snap_grid;
int idx = snap_config_menu->get_popup()->get_item_index(SNAP_USE_GRID);
@@ -3162,6 +3418,13 @@ void CanvasItemEditor::_popup_callback(int p_op) {
viewport->update();
viewport_base->update();
} break;
+ case SHOW_GUIDES: {
+ show_guides = !show_guides;
+ int idx = view_menu->get_popup()->get_item_index(SHOW_GUIDES);
+ view_menu->get_popup()->set_item_checked(idx, show_guides);
+ viewport->update();
+ viewport_base->update();
+ } break;
case LOCK_SELECTED: {
@@ -3429,7 +3692,6 @@ void CanvasItemEditor::_popup_callback(int p_op) {
case ANIM_INSERT_POS_SCALE:
case ANIM_INSERT_ROT_SCALE:
case ANIM_INSERT_POS_ROT_SCALE: {
-
static const bool key_toggles[7][3]={
{true,false,false},
{false,true,false},
@@ -3442,12 +3704,10 @@ void CanvasItemEditor::_popup_callback(int p_op) {
key_pos=key_toggles[p_op-ANIM_INSERT_POS][0];
key_rot=key_toggles[p_op-ANIM_INSERT_POS][1];
key_scale=key_toggles[p_op-ANIM_INSERT_POS][2];
-
for(int i=ANIM_INSERT_POS;i<=ANIM_INSERT_POS_ROT_SCALE;i++) {
int idx = animation_menu->get_popup()->get_item_index(i);
animation_menu->get_popup()->set_item_checked(idx,i==p_op);
}
-
} break;*/
case ANIM_COPY_POSE: {
@@ -3690,7 +3950,8 @@ void CanvasItemEditor::_bind_methods() {
ClassDB::bind_method("_unhandled_key_input", &CanvasItemEditor::_unhandled_key_input);
ClassDB::bind_method("_draw_viewport", &CanvasItemEditor::_draw_viewport);
ClassDB::bind_method("_draw_viewport_base", &CanvasItemEditor::_draw_viewport_base);
- ClassDB::bind_method("_viewport_base_gui_input", &CanvasItemEditor::_viewport_base_gui_input);
+ ClassDB::bind_method("_gui_input_viewport", &CanvasItemEditor::_gui_input_viewport);
+ ClassDB::bind_method("_gui_input_viewport_base", &CanvasItemEditor::_gui_input_viewport_base);
ClassDB::bind_method("_snap_changed", &CanvasItemEditor::_snap_changed);
ClassDB::bind_method(D_METHOD("_selection_result_pressed"), &CanvasItemEditor::_selection_result_pressed);
ClassDB::bind_method(D_METHOD("_selection_menu_hide"), &CanvasItemEditor::_selection_menu_hide);
@@ -3743,7 +4004,7 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
palette_split->add_child(viewport_base);
viewport_base->set_clip_contents(true);
viewport_base->connect("draw", this, "_draw_viewport_base");
- viewport_base->connect("gui_input", this, "_viewport_base_gui_input");
+ viewport_base->connect("gui_input", this, "_gui_input_viewport_base");
viewport_base->set_focus_mode(FOCUS_ALL);
viewport_base->set_v_size_flags(SIZE_EXPAND_FILL);
viewport_base->set_h_size_flags(SIZE_EXPAND_FILL);
@@ -3767,6 +4028,7 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
viewport->set_anchors_and_margins_preset(Control::PRESET_WIDE);
viewport->set_clip_contents(true);
viewport->connect("draw", this, "_draw_viewport");
+ viewport->connect("gui_input", this, "_gui_input_viewport");
h_scroll = memnew(HScrollBar);
viewport->add_child(h_scroll);
@@ -3876,6 +4138,7 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
smartsnap_config_popup->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/snap_node_anchors", TTR("Snap to node anchor")), SNAP_USE_NODE_ANCHORS);
smartsnap_config_popup->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/snap_node_sides", TTR("Snap to node sides")), SNAP_USE_NODE_SIDES);
smartsnap_config_popup->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/snap_other_nodes", TTR("Snap to other nodes")), SNAP_USE_OTHER_NODES);
+ smartsnap_config_popup->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/snap_guides", TTR("Snap to guides")), SNAP_USE_GUIDES);
hb->add_child(memnew(VSeparator));
@@ -3927,6 +4190,7 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
p->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/show_grid", TTR("Show Grid"), KEY_G), SHOW_GRID);
p->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/show_helpers", TTR("Show helpers"), KEY_H), SHOW_HELPERS);
p->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/show_rulers", TTR("Show rulers"), KEY_R), SHOW_RULERS);
+ p->add_check_shortcut(ED_SHORTCUT("canvas_item_editor/show_guides", TTR("Show guides"), KEY_Y), SHOW_GUIDES);
p->add_separator();
p->add_shortcut(ED_SHORTCUT("canvas_item_editor/center_selection", TTR("Center Selection"), KEY_F), VIEW_CENTER_TO_SELECTION);
p->add_shortcut(ED_SHORTCUT("canvas_item_editor/frame_selection", TTR("Frame Selection"), KEY_MASK_SHIFT | KEY_F), VIEW_FRAME_TO_SELECTION);
@@ -3949,30 +4213,24 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
animation_hb->add_child(memnew(VSeparator));
animation_hb->hide();
- key_loc_button = memnew(Button("loc"));
+ key_loc_button = memnew(Button);
key_loc_button->set_toggle_mode(true);
key_loc_button->set_flat(true);
key_loc_button->set_pressed(true);
key_loc_button->set_focus_mode(FOCUS_NONE);
- key_loc_button->add_color_override("font_color", Color(1, 0.6, 0.6));
- key_loc_button->add_color_override("font_color_pressed", Color(0.6, 1, 0.6));
key_loc_button->connect("pressed", this, "_popup_callback", varray(ANIM_INSERT_POS));
animation_hb->add_child(key_loc_button);
- key_rot_button = memnew(Button("rot"));
+ key_rot_button = memnew(Button);
key_rot_button->set_toggle_mode(true);
key_rot_button->set_flat(true);
key_rot_button->set_pressed(true);
key_rot_button->set_focus_mode(FOCUS_NONE);
- key_rot_button->add_color_override("font_color", Color(1, 0.6, 0.6));
- key_rot_button->add_color_override("font_color_pressed", Color(0.6, 1, 0.6));
key_rot_button->connect("pressed", this, "_popup_callback", varray(ANIM_INSERT_ROT));
animation_hb->add_child(key_rot_button);
- key_scale_button = memnew(Button("scl"));
+ key_scale_button = memnew(Button);
key_scale_button->set_toggle_mode(true);
key_scale_button->set_flat(true);
key_scale_button->set_focus_mode(FOCUS_NONE);
- key_scale_button->add_color_override("font_color", Color(1, 0.6, 0.6));
- key_scale_button->add_color_override("font_color_pressed", Color(0.6, 1, 0.6));
key_scale_button->connect("pressed", this, "_popup_callback", varray(ANIM_INSERT_SCALE));
animation_hb->add_child(key_scale_button);
key_insert_button = memnew(Button);
@@ -4020,9 +4278,13 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
key_rot = true;
key_scale = false;
+ edited_guide_pos = Point2();
+ edited_guide_index = -1;
+
show_grid = false;
show_helpers = false;
show_rulers = false;
+ show_guides = true;
zoom = 1;
grid_offset = Point2();
grid_step = Point2(10, 10);
@@ -4035,6 +4297,7 @@ CanvasItemEditor::CanvasItemEditor(EditorNode *p_editor) {
snap_node_sides = true;
snap_other_nodes = true;
snap_grid = true;
+ snap_guides = true;
snap_rotation = false;
snap_pixel = false;
skeleton_show_bones = true;
diff --git a/editor/plugins/canvas_item_editor_plugin.h b/editor/plugins/canvas_item_editor_plugin.h
index 69dc25d180..97e3b03569 100644
--- a/editor/plugins/canvas_item_editor_plugin.h
+++ b/editor/plugins/canvas_item_editor_plugin.h
@@ -87,6 +87,7 @@ class CanvasItemEditor : public VBoxContainer {
SNAP_USE_NODE_SIDES,
SNAP_USE_OTHER_NODES,
SNAP_USE_GRID,
+ SNAP_USE_GUIDES,
SNAP_USE_ROTATION,
SNAP_RELATIVE,
SNAP_CONFIGURE,
@@ -94,6 +95,7 @@ class CanvasItemEditor : public VBoxContainer {
SHOW_GRID,
SHOW_HELPERS,
SHOW_RULERS,
+ SHOW_GUIDES,
LOCK_SELECTED,
UNLOCK_SELECTED,
GROUP_SELECTED,
@@ -183,6 +185,9 @@ class CanvasItemEditor : public VBoxContainer {
DRAG_ROTATE,
DRAG_PIVOT,
DRAG_NODE_2D,
+ DRAG_V_GUIDE,
+ DRAG_H_GUIDE,
+ DRAG_DOUBLE_GUIDE,
};
enum KeyMoveMODE {
@@ -213,6 +218,7 @@ class CanvasItemEditor : public VBoxContainer {
Transform2D transform;
bool show_grid;
bool show_rulers;
+ bool show_guides;
bool show_helpers;
float zoom;
@@ -228,6 +234,7 @@ class CanvasItemEditor : public VBoxContainer {
bool snap_node_sides;
bool snap_other_nodes;
bool snap_grid;
+ bool snap_guides;
bool snap_rotation;
bool snap_relative;
bool snap_pixel;
@@ -333,6 +340,9 @@ class CanvasItemEditor : public VBoxContainer {
Point2 display_rotate_from;
Point2 display_rotate_to;
+ int edited_guide_index;
+ Point2 edited_guide_pos;
+
Ref<StyleBoxTexture> select_sb;
Ref<Texture> select_handle;
Ref<Texture> anchor_handle;
@@ -402,6 +412,7 @@ class CanvasItemEditor : public VBoxContainer {
void _draw_percentage_at_position(float p_value, Point2 p_position, Margin p_side);
void _draw_rulers();
+ void _draw_guides();
void _draw_focus();
void _draw_grid();
void _draw_selection();
@@ -410,14 +421,16 @@ class CanvasItemEditor : public VBoxContainer {
void _draw_locks_and_groups(Node *p_node, const Transform2D &p_xform);
void _draw_viewport();
-
- void _viewport_base_gui_input(const Ref<InputEvent> &p_event);
void _draw_viewport_base();
+ void _gui_input_viewport(const Ref<InputEvent> &p_event);
+ void _gui_input_viewport_base(const Ref<InputEvent> &p_event);
+
void _focus_selection(int p_op);
- void _snap_if_closer(Point2 p_value, Point2 p_target_snap, Point2 &r_current_snap, bool (&r_snapped)[2], real_t rotation = 0.0, float p_radius = 10.0);
- void _snap_other_nodes(Point2 p_value, Point2 &r_current_snap, bool (&r_snapped)[2], const Node *p_current, const CanvasItem *p_to_snap);
+ void _snap_if_closer_float(float p_value, float p_target_snap, float &r_current_snap, bool &r_snapped, float p_radius = 10.0);
+ void _snap_if_closer_point(Point2 p_value, Point2 p_target_snap, Point2 &r_current_snap, bool (&r_snapped)[2], real_t rotation = 0.0, float p_radius = 10.0);
+ void _snap_other_nodes(Point2 p_value, Point2 &r_current_snap, bool (&r_snapped)[2], const Node *p_current, const CanvasItem *p_to_snap = NULL);
void _set_anchors_preset(Control::LayoutPreset p_preset);
void _set_margins_preset(Control::LayoutPreset p_preset);
@@ -475,13 +488,14 @@ protected:
public:
enum SnapMode {
SNAP_GRID = 1 << 0,
- SNAP_PIXEL = 1 << 1,
- SNAP_NODE_PARENT = 1 << 2,
- SNAP_NODE_ANCHORS = 1 << 3,
- SNAP_NODE_SIDES = 1 << 4,
- SNAP_OTHER_NODES = 1 << 5,
-
- SNAP_DEFAULT = 0x03,
+ SNAP_GUIDES = 1 << 1,
+ SNAP_PIXEL = 1 << 2,
+ SNAP_NODE_PARENT = 1 << 3,
+ SNAP_NODE_ANCHORS = 1 << 4,
+ SNAP_NODE_SIDES = 1 << 5,
+ SNAP_OTHER_NODES = 1 << 6,
+
+ SNAP_DEFAULT = 0x07,
};
Point2 snap_point(Point2 p_target, unsigned int p_modes = SNAP_DEFAULT, const CanvasItem *p_canvas_item = NULL, unsigned int p_forced_modes = 0);
diff --git a/editor/plugins/collision_polygon_2d_editor_plugin.cpp b/editor/plugins/collision_polygon_2d_editor_plugin.cpp
index 00e6d617a1..00e6d617a1 100755..100644
--- a/editor/plugins/collision_polygon_2d_editor_plugin.cpp
+++ b/editor/plugins/collision_polygon_2d_editor_plugin.cpp
diff --git a/editor/plugins/collision_polygon_2d_editor_plugin.h b/editor/plugins/collision_polygon_2d_editor_plugin.h
index edf3bbcc08..edf3bbcc08 100755..100644
--- a/editor/plugins/collision_polygon_2d_editor_plugin.h
+++ b/editor/plugins/collision_polygon_2d_editor_plugin.h
diff --git a/editor/plugins/collision_shape_2d_editor_plugin.cpp b/editor/plugins/collision_shape_2d_editor_plugin.cpp
index 3e6165e552..005de096cd 100644
--- a/editor/plugins/collision_shape_2d_editor_plugin.cpp
+++ b/editor/plugins/collision_shape_2d_editor_plugin.cpp
@@ -302,7 +302,7 @@ void CollisionShape2DEditor::commit_handle(int idx, Variant &p_org) {
undo_redo->commit_action();
}
-bool CollisionShape2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
+bool CollisionShape2DEditor::forward_canvas_gui_input(const Ref<InputEvent> &p_event) {
if (!node) {
return false;
@@ -317,17 +317,17 @@ bool CollisionShape2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
}
Ref<InputEventMouseButton> mb = p_event;
+ Transform2D xform = canvas_item_editor->get_canvas_transform() * node->get_global_transform();
if (mb.is_valid()) {
- Transform2D gt = canvas_item_editor->get_canvas_transform() * node->get_global_transform();
-
- Point2 gpoint(mb->get_position().x, mb->get_position().y);
+ 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())));
if (mb->get_button_index() == BUTTON_LEFT) {
if (mb->is_pressed()) {
for (int i = 0; i < handles.size(); i++) {
- if (gt.xform(handles[i]).distance_to(gpoint) < 8) {
+ if (xform.xform(handles[i]).distance_to(gpoint) < 8) {
edit_handle = i;
break;
@@ -368,9 +368,7 @@ bool CollisionShape2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
return false;
}
- Point2 gpoint = mm->get_position();
- Point2 cpoint = canvas_item_editor->get_canvas_transform().affine_inverse().xform(gpoint);
- cpoint = canvas_item_editor->snap_point(cpoint);
+ Vector2 cpoint = canvas_item_editor->snap_point(canvas_item_editor->get_canvas_transform().affine_inverse().xform(mm->get_position()));
cpoint = node->get_global_transform().affine_inverse().xform(cpoint);
set_handle(edit_handle, cpoint);
@@ -416,7 +414,7 @@ void CollisionShape2DEditor::_get_current_shape_type() {
canvas_item_editor->get_viewport_control()->update();
}
-void CollisionShape2DEditor::_canvas_draw() {
+void CollisionShape2DEditor::forward_draw_over_canvas(Control *p_canvas) {
if (!node) {
return;
@@ -432,7 +430,6 @@ void CollisionShape2DEditor::_canvas_draw() {
return;
}
- Control *c = canvas_item_editor->get_viewport_control();
Transform2D gt = canvas_item_editor->get_canvas_transform() * node->get_global_transform();
Ref<Texture> h = get_icon("EditorHandle", "EditorIcons");
@@ -451,8 +448,8 @@ void CollisionShape2DEditor::_canvas_draw() {
handles[0] = Point2(radius, -height);
handles[1] = Point2(0, -(height + radius));
- c->draw_texture(h, gt.xform(handles[0]) - size);
- c->draw_texture(h, gt.xform(handles[1]) - size);
+ p_canvas->draw_texture(h, gt.xform(handles[0]) - size);
+ p_canvas->draw_texture(h, gt.xform(handles[1]) - size);
} break;
@@ -462,7 +459,7 @@ void CollisionShape2DEditor::_canvas_draw() {
handles.resize(1);
handles[0] = Point2(shape->get_radius(), 0);
- c->draw_texture(h, gt.xform(handles[0]) - size);
+ p_canvas->draw_texture(h, gt.xform(handles[0]) - size);
} break;
@@ -481,8 +478,8 @@ void CollisionShape2DEditor::_canvas_draw() {
handles[0] = shape->get_normal() * shape->get_d();
handles[1] = shape->get_normal() * (shape->get_d() + 30.0);
- c->draw_texture(h, gt.xform(handles[0]) - size);
- c->draw_texture(h, gt.xform(handles[1]) - size);
+ p_canvas->draw_texture(h, gt.xform(handles[0]) - size);
+ p_canvas->draw_texture(h, gt.xform(handles[1]) - size);
} break;
@@ -492,7 +489,7 @@ void CollisionShape2DEditor::_canvas_draw() {
handles.resize(1);
handles[0] = Point2(0, shape->get_length());
- c->draw_texture(h, gt.xform(handles[0]) - size);
+ p_canvas->draw_texture(h, gt.xform(handles[0]) - size);
} break;
@@ -504,8 +501,8 @@ void CollisionShape2DEditor::_canvas_draw() {
handles[0] = Point2(ext.x, 0);
handles[1] = Point2(0, -ext.y);
- c->draw_texture(h, gt.xform(handles[0]) - size);
- c->draw_texture(h, gt.xform(handles[1]) - size);
+ p_canvas->draw_texture(h, gt.xform(handles[0]) - size);
+ p_canvas->draw_texture(h, gt.xform(handles[1]) - size);
} break;
@@ -516,8 +513,8 @@ void CollisionShape2DEditor::_canvas_draw() {
handles[0] = shape->get_a();
handles[1] = shape->get_b();
- c->draw_texture(h, gt.xform(handles[0]) - size);
- c->draw_texture(h, gt.xform(handles[1]) - size);
+ p_canvas->draw_texture(h, gt.xform(handles[0]) - size);
+ p_canvas->draw_texture(h, gt.xform(handles[1]) - size);
} break;
}
@@ -532,18 +529,12 @@ void CollisionShape2DEditor::edit(Node *p_node) {
if (p_node) {
node = Object::cast_to<CollisionShape2D>(p_node);
- if (!canvas_item_editor->get_viewport_control()->is_connected("draw", this, "_canvas_draw"))
- canvas_item_editor->get_viewport_control()->connect("draw", this, "_canvas_draw");
-
_get_current_shape_type();
} else {
edit_handle = -1;
shape_type = -1;
- if (canvas_item_editor->get_viewport_control()->is_connected("draw", this, "_canvas_draw"))
- canvas_item_editor->get_viewport_control()->disconnect("draw", this, "_canvas_draw");
-
node = NULL;
}
@@ -552,7 +543,6 @@ void CollisionShape2DEditor::edit(Node *p_node) {
void CollisionShape2DEditor::_bind_methods() {
- ClassDB::bind_method("_canvas_draw", &CollisionShape2DEditor::_canvas_draw);
ClassDB::bind_method("_get_current_shape_type", &CollisionShape2DEditor::_get_current_shape_type);
}
diff --git a/editor/plugins/collision_shape_2d_editor_plugin.h b/editor/plugins/collision_shape_2d_editor_plugin.h
index ffa91952e0..d4fbe87fb3 100644
--- a/editor/plugins/collision_shape_2d_editor_plugin.h
+++ b/editor/plugins/collision_shape_2d_editor_plugin.h
@@ -68,13 +68,13 @@ class CollisionShape2DEditor : public Control {
void commit_handle(int idx, Variant &p_org);
void _get_current_shape_type();
- void _canvas_draw();
protected:
static void _bind_methods();
public:
- bool forward_gui_input(const Ref<InputEvent> &p_event);
+ bool forward_canvas_gui_input(const Ref<InputEvent> &p_event);
+ void forward_draw_over_canvas(Control *p_canvas);
void edit(Node *p_node);
CollisionShape2DEditor(EditorNode *p_editor);
@@ -87,7 +87,8 @@ class CollisionShape2DEditorPlugin : public EditorPlugin {
EditorNode *editor;
public:
- virtual bool forward_canvas_gui_input(const Transform2D &p_canvas_xform, const Ref<InputEvent> &p_event) { return collision_shape_2d_editor->forward_gui_input(p_event); }
+ virtual bool forward_canvas_gui_input(const Ref<InputEvent> &p_event) { return collision_shape_2d_editor->forward_canvas_gui_input(p_event); }
+ virtual void forward_draw_over_canvas(Control *p_canvas) { return collision_shape_2d_editor->forward_draw_over_canvas(p_canvas); }
virtual String get_name() const { return "CollisionShape2D"; }
bool has_main_screen() const { return false; }
diff --git a/editor/plugins/gi_probe_editor_plugin.cpp b/editor/plugins/gi_probe_editor_plugin.cpp
index fcbf282758..443cd2e41f 100644
--- a/editor/plugins/gi_probe_editor_plugin.cpp
+++ b/editor/plugins/gi_probe_editor_plugin.cpp
@@ -60,6 +60,27 @@ void GIProbeEditorPlugin::make_visible(bool p_visible) {
}
}
+EditorProgress *GIProbeEditorPlugin::tmp_progress = NULL;
+
+void GIProbeEditorPlugin::bake_func_begin(int p_steps) {
+
+ ERR_FAIL_COND(tmp_progress != NULL);
+
+ tmp_progress = memnew(EditorProgress("bake_gi", TTR("Bake GI Probe"), p_steps));
+}
+
+void GIProbeEditorPlugin::bake_func_step(int p_step, const String &p_description) {
+
+ ERR_FAIL_COND(tmp_progress == NULL);
+ tmp_progress->step(p_description, p_step);
+}
+
+void GIProbeEditorPlugin::bake_func_end() {
+ ERR_FAIL_COND(tmp_progress == NULL);
+ memdelete(tmp_progress);
+ tmp_progress = NULL;
+}
+
void GIProbeEditorPlugin::_bind_methods() {
ClassDB::bind_method("_bake", &GIProbeEditorPlugin::_bake);
@@ -70,10 +91,15 @@ GIProbeEditorPlugin::GIProbeEditorPlugin(EditorNode *p_node) {
editor = p_node;
bake = memnew(Button);
bake->set_icon(editor->get_gui_base()->get_icon("BakedLight", "EditorIcons"));
+ bake->set_text(TTR("Bake GI Probe"));
bake->hide();
bake->connect("pressed", this, "_bake");
add_control_to_container(CONTAINER_SPATIAL_EDITOR_MENU, bake);
gi_probe = NULL;
+
+ GIProbe::bake_begin_function = bake_func_begin;
+ GIProbe::bake_step_function = bake_func_step;
+ GIProbe::bake_end_function = bake_func_end;
}
GIProbeEditorPlugin::~GIProbeEditorPlugin() {
diff --git a/editor/plugins/gi_probe_editor_plugin.h b/editor/plugins/gi_probe_editor_plugin.h
index a1fecd2911..527f420510 100644
--- a/editor/plugins/gi_probe_editor_plugin.h
+++ b/editor/plugins/gi_probe_editor_plugin.h
@@ -44,6 +44,11 @@ class GIProbeEditorPlugin : public EditorPlugin {
Button *bake;
EditorNode *editor;
+ static EditorProgress *tmp_progress;
+ static void bake_func_begin(int p_steps);
+ static void bake_func_step(int p_step, const String &p_description);
+ static void bake_func_end();
+
void _bake();
protected:
diff --git a/editor/plugins/light_occluder_2d_editor_plugin.cpp b/editor/plugins/light_occluder_2d_editor_plugin.cpp
index ed0bc60d2f..485657d2c9 100644
--- a/editor/plugins/light_occluder_2d_editor_plugin.cpp
+++ b/editor/plugins/light_occluder_2d_editor_plugin.cpp
@@ -119,9 +119,7 @@ bool LightOccluder2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
Transform2D xform = canvas_item_editor->get_canvas_transform() * node->get_global_transform();
Vector2 gpoint = mb->get_position();
- Vector2 cpoint = canvas_item_editor->get_canvas_transform().affine_inverse().xform(gpoint);
- cpoint = canvas_item_editor->snap_point(cpoint);
- cpoint = node->get_global_transform().affine_inverse().xform(cpoint);
+ 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());
@@ -319,7 +317,8 @@ bool LightOccluder2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
return false;
}
-void LightOccluder2DEditor::_canvas_draw() {
+
+void LightOccluder2DEditor::forward_draw_over_canvas(Control *p_canvas) {
if (!node || !node->get_occluder_polygon().is_valid())
return;
@@ -368,17 +367,12 @@ void LightOccluder2DEditor::edit(Node *p_collision_polygon) {
if (p_collision_polygon) {
node = Object::cast_to<LightOccluder2D>(p_collision_polygon);
- if (!canvas_item_editor->get_viewport_control()->is_connected("draw", this, "_canvas_draw"))
- canvas_item_editor->get_viewport_control()->connect("draw", this, "_canvas_draw");
wip.clear();
wip_active = false;
edited_point = -1;
canvas_item_editor->get_viewport_control()->update();
} else {
node = NULL;
-
- if (canvas_item_editor->get_viewport_control()->is_connected("draw", this, "_canvas_draw"))
- canvas_item_editor->get_viewport_control()->disconnect("draw", this, "_canvas_draw");
}
}
@@ -395,7 +389,6 @@ void LightOccluder2DEditor::_create_poly() {
void LightOccluder2DEditor::_bind_methods() {
ClassDB::bind_method(D_METHOD("_menu_option"), &LightOccluder2DEditor::_menu_option);
- ClassDB::bind_method(D_METHOD("_canvas_draw"), &LightOccluder2DEditor::_canvas_draw);
ClassDB::bind_method(D_METHOD("_node_removed"), &LightOccluder2DEditor::_node_removed);
ClassDB::bind_method(D_METHOD("_create_poly"), &LightOccluder2DEditor::_create_poly);
}
@@ -430,7 +423,7 @@ LightOccluder2DEditor::LightOccluder2DEditor(EditorNode *p_editor) {
void LightOccluder2DEditorPlugin::edit(Object *p_object) {
- collision_polygon_editor->edit(Object::cast_to<Node>(p_object));
+ light_occluder_editor->edit(Object::cast_to<Node>(p_object));
}
bool LightOccluder2DEditorPlugin::handles(Object *p_object) const {
@@ -441,21 +434,21 @@ bool LightOccluder2DEditorPlugin::handles(Object *p_object) const {
void LightOccluder2DEditorPlugin::make_visible(bool p_visible) {
if (p_visible) {
- collision_polygon_editor->show();
+ light_occluder_editor->show();
} else {
- collision_polygon_editor->hide();
- collision_polygon_editor->edit(NULL);
+ light_occluder_editor->hide();
+ light_occluder_editor->edit(NULL);
}
}
LightOccluder2DEditorPlugin::LightOccluder2DEditorPlugin(EditorNode *p_node) {
editor = p_node;
- collision_polygon_editor = memnew(LightOccluder2DEditor(p_node));
- CanvasItemEditor::get_singleton()->add_control_to_menu_panel(collision_polygon_editor);
+ light_occluder_editor = memnew(LightOccluder2DEditor(p_node));
+ CanvasItemEditor::get_singleton()->add_control_to_menu_panel(light_occluder_editor);
- collision_polygon_editor->hide();
+ light_occluder_editor->hide();
}
LightOccluder2DEditorPlugin::~LightOccluder2DEditorPlugin() {
diff --git a/editor/plugins/light_occluder_2d_editor_plugin.h b/editor/plugins/light_occluder_2d_editor_plugin.h
index b270dcb6e5..068832d8ed 100644
--- a/editor/plugins/light_occluder_2d_editor_plugin.h
+++ b/editor/plugins/light_occluder_2d_editor_plugin.h
@@ -72,7 +72,6 @@ class LightOccluder2DEditor : public HBoxContainer {
ConfirmationDialog *create_poly;
void _wip_close(bool p_closed);
- void _canvas_draw();
void _menu_option(int p_option);
void _create_poly();
@@ -83,6 +82,7 @@ protected:
public:
Vector2 snap_point(const Vector2 &p_point) const;
+ void forward_draw_over_canvas(Control *p_canvas);
bool forward_gui_input(const Ref<InputEvent> &p_event);
void edit(Node *p_collision_polygon);
LightOccluder2DEditor(EditorNode *p_editor);
@@ -92,11 +92,12 @@ class LightOccluder2DEditorPlugin : public EditorPlugin {
GDCLASS(LightOccluder2DEditorPlugin, EditorPlugin);
- LightOccluder2DEditor *collision_polygon_editor;
+ LightOccluder2DEditor *light_occluder_editor;
EditorNode *editor;
public:
- virtual bool forward_canvas_gui_input(const Transform2D &p_canvas_xform, const Ref<InputEvent> &p_event) { return collision_polygon_editor->forward_gui_input(p_event); }
+ virtual bool forward_canvas_gui_input(const Ref<InputEvent> &p_event) { return light_occluder_editor->forward_gui_input(p_event); }
+ virtual void forward_draw_over_canvas(Control *p_canvas) { return light_occluder_editor->forward_draw_over_canvas(p_canvas); }
virtual String get_name() const { return "LightOccluder2D"; }
bool has_main_screen() const { return false; }
diff --git a/editor/plugins/line_2d_editor_plugin.cpp b/editor/plugins/line_2d_editor_plugin.cpp
index ef3ee6a78f..0533aaa9c0 100644
--- a/editor/plugins/line_2d_editor_plugin.cpp
+++ b/editor/plugins/line_2d_editor_plugin.cpp
@@ -54,16 +54,10 @@ void Line2DEditor::_notification(int p_what) {
}
}
-Vector2 Line2DEditor::mouse_to_local_pos(Vector2 gpos, bool alt) {
- Transform2D xform = canvas_item_editor->get_canvas_transform() * node->get_global_transform();
- return !alt ? canvas_item_editor->snap_point(xform.affine_inverse().xform(gpos)) : node->get_global_transform().affine_inverse().xform(canvas_item_editor->snap_point(canvas_item_editor->get_canvas_transform().affine_inverse().xform(gpos)));
-}
-
-int Line2DEditor::get_point_index_at(Vector2 gpos) {
+int Line2DEditor::get_point_index_at(const Transform2D &xform, Vector2 gpos) {
ERR_FAIL_COND_V(node == 0, -1);
real_t grab_threshold = EDITOR_DEF("editors/poly_editor/point_grab_radius", 8);
- Transform2D xform = canvas_item_editor->get_canvas_transform() * node->get_global_transform();
for (int i = 0; i < node->get_point_count(); ++i) {
Point2 p = xform.xform(node->get_point_position(i));
@@ -75,7 +69,7 @@ int Line2DEditor::get_point_index_at(Vector2 gpos) {
return -1;
}
-bool Line2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
+bool Line2DEditor::forward_canvas_gui_input(const Ref<InputEvent> &p_event) {
if (!node)
return false;
@@ -88,10 +82,10 @@ bool Line2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
if (mb.is_valid()) {
Vector2 gpoint = mb->get_position();
- Vector2 cpoint = mouse_to_local_pos(gpoint, mb->get_alt());
+ 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())));
if (mb->is_pressed() && _dragging == false) {
- int i = get_point_index_at(gpoint);
+ int i = get_point_index_at(canvas_item_editor->get_canvas_transform() * node->get_global_transform(), gpoint);
if (i != -1) {
if (mb->get_button_index() == BUTTON_LEFT && !mb->get_shift() && mode == MODE_EDIT) {
_dragging = true;
@@ -146,7 +140,8 @@ bool Line2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
if (mm.is_valid()) {
if (_dragging) {
- Vector2 cpoint = mouse_to_local_pos(mm->get_position(), mm->get_alt());
+ Vector2 gpoint = mm->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(mm->get_position())));
node->set_point_position(action_point, cpoint);
canvas_item_editor->get_viewport_control()->update();
return true;
@@ -156,7 +151,7 @@ bool Line2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
return false;
}
-void Line2DEditor::_canvas_draw() {
+void Line2DEditor::forward_draw_over_canvas(Control *p_canvas) {
if (!node)
return;
@@ -190,13 +185,9 @@ void Line2DEditor::edit(Node *p_line2d) {
if (p_line2d) {
node = Object::cast_to<Line2D>(p_line2d);
- if (!canvas_item_editor->get_viewport_control()->is_connected("draw", this, "_canvas_draw"))
- canvas_item_editor->get_viewport_control()->connect("draw", this, "_canvas_draw");
if (!node->is_connected("visibility_changed", this, "_node_visibility_changed"))
node->connect("visibility_changed", this, "_node_visibility_changed");
} else {
- if (canvas_item_editor->get_viewport_control()->is_connected("draw", this, "_canvas_draw"))
- canvas_item_editor->get_viewport_control()->disconnect("draw", this, "_canvas_draw");
// node may have been deleted at this point
if (node && node->is_connected("visibility_changed", this, "_node_visibility_changed"))
node->disconnect("visibility_changed", this, "_node_visibility_changed");
@@ -205,7 +196,6 @@ void Line2DEditor::edit(Node *p_line2d) {
}
void Line2DEditor::_bind_methods() {
- ClassDB::bind_method(D_METHOD("_canvas_draw"), &Line2DEditor::_canvas_draw);
ClassDB::bind_method(D_METHOD("_node_visibility_changed"), &Line2DEditor::_node_visibility_changed);
ClassDB::bind_method(D_METHOD("_mode_selected"), &Line2DEditor::_mode_selected);
}
diff --git a/editor/plugins/line_2d_editor_plugin.h b/editor/plugins/line_2d_editor_plugin.h
index dea0433084..6858680aed 100644
--- a/editor/plugins/line_2d_editor_plugin.h
+++ b/editor/plugins/line_2d_editor_plugin.h
@@ -40,27 +40,11 @@ class CanvasItemEditor;
class Line2DEditor : public HBoxContainer {
GDCLASS(Line2DEditor, HBoxContainer)
-
-public:
- bool forward_gui_input(const Ref<InputEvent> &p_event);
- void edit(Node *p_line2d);
- Line2DEditor(EditorNode *p_editor);
-
-protected:
- void _node_removed(Node *p_node);
- void _notification(int p_what);
-
- Vector2 mouse_to_local_pos(Vector2 mpos);
-
- static void _bind_methods();
-
private:
void _mode_selected(int p_mode);
- void _canvas_draw();
void _node_visibility_changed();
- int get_point_index_at(Vector2 gpos);
- Vector2 mouse_to_local_pos(Vector2 gpos, bool alt);
+ int get_point_index_at(const Transform2D &xform, Vector2 gpos);
UndoRedo *undo_redo;
@@ -86,17 +70,26 @@ private:
int action_point;
Point2 moving_from;
Point2 moving_screen_from;
+
+protected:
+ void _node_removed(Node *p_node);
+ void _notification(int p_what);
+
+ static void _bind_methods();
+
+public:
+ bool forward_canvas_gui_input(const Ref<InputEvent> &p_event);
+ void forward_draw_over_canvas(Control *p_canvas);
+ void edit(Node *p_line2d);
+ Line2DEditor(EditorNode *p_editor);
};
class Line2DEditorPlugin : public EditorPlugin {
GDCLASS(Line2DEditorPlugin, EditorPlugin)
public:
- virtual bool forward_canvas_gui_input(
- const Transform2D &p_canvas_xform,
- const Ref<InputEvent> &p_event) {
- return line2d_editor->forward_gui_input(p_event);
- }
+ virtual bool forward_canvas_gui_input(const Ref<InputEvent> &p_event) { return line2d_editor->forward_canvas_gui_input(p_event); }
+ virtual void forward_draw_over_canvas(Control *p_canvas) { return line2d_editor->forward_draw_over_canvas(p_canvas); }
virtual String get_name() const { return "Line2D"; }
bool has_main_screen() const { return false; }
diff --git a/editor/plugins/material_editor_plugin.cpp b/editor/plugins/material_editor_plugin.cpp
index 6b613c1bcc..bd4891ccb7 100644
--- a/editor/plugins/material_editor_plugin.cpp
+++ b/editor/plugins/material_editor_plugin.cpp
@@ -32,6 +32,7 @@
// Waiting for PropertyEditor rewrite (planned for 3.1) to be refactored.
#include "material_editor_plugin.h"
+#include "scene/3d/particles.h"
#if 0
@@ -449,6 +450,52 @@ Ref<Resource> SpatialMaterialConversionPlugin::convert(const Ref<Resource> &p_re
VS::get_singleton()->shader_get_param_list(mat->get_shader_rid(), &params);
for (List<PropertyInfo>::Element *E = params.front(); E; E = E->next()) {
+
+ // Texture parameter has to be treated specially since SpatialMaterial saved it
+ // as RID but ShaderMaterial needs Texture itself
+ Ref<Texture> texture = mat->get_texture_by_name(E->get().name);
+ if (texture.is_valid()) {
+ smat->set_shader_param(E->get().name, texture);
+ } else {
+ Variant value = VS::get_singleton()->material_get_param(mat->get_rid(), E->get().name);
+ smat->set_shader_param(E->get().name, value);
+ }
+ }
+
+ smat->set_render_priority(mat->get_render_priority());
+ return smat;
+}
+
+String ParticlesMaterialConversionPlugin::converts_to() const {
+
+ return "ShaderMaterial";
+}
+bool ParticlesMaterialConversionPlugin::handles(const Ref<Resource> &p_resource) const {
+
+ Ref<ParticlesMaterial> mat = p_resource;
+ return mat.is_valid();
+}
+Ref<Resource> ParticlesMaterialConversionPlugin::convert(const Ref<Resource> &p_resource) {
+
+ Ref<ParticlesMaterial> mat = p_resource;
+ ERR_FAIL_COND_V(!mat.is_valid(), Ref<Resource>());
+
+ Ref<ShaderMaterial> smat;
+ smat.instance();
+
+ Ref<Shader> shader;
+ shader.instance();
+
+ String code = VS::get_singleton()->shader_get_code(mat->get_shader_rid());
+
+ shader->set_code(code);
+
+ smat->set_shader(shader);
+
+ List<PropertyInfo> params;
+ VS::get_singleton()->shader_get_param_list(mat->get_shader_rid(), &params);
+
+ for (List<PropertyInfo>::Element *E = params.front(); E; E = E->next()) {
Variant value = VS::get_singleton()->material_get_param(mat->get_rid(), E->get().name);
smat->set_shader_param(E->get().name, value);
}
diff --git a/editor/plugins/material_editor_plugin.h b/editor/plugins/material_editor_plugin.h
index af9602f944..52c73cb7d8 100644
--- a/editor/plugins/material_editor_plugin.h
+++ b/editor/plugins/material_editor_plugin.h
@@ -111,4 +111,12 @@ public:
virtual Ref<Resource> convert(const Ref<Resource> &p_resource);
};
+class ParticlesMaterialConversionPlugin : public EditorResourceConversionPlugin {
+ GDCLASS(ParticlesMaterialConversionPlugin, EditorResourceConversionPlugin)
+public:
+ virtual String converts_to() const;
+ virtual bool handles(const Ref<Resource> &p_resource) const;
+ virtual Ref<Resource> convert(const Ref<Resource> &p_resource);
+};
+
#endif // MATERIAL_EDITOR_PLUGIN_H
diff --git a/editor/plugins/navigation_mesh_generator.cpp b/editor/plugins/navigation_mesh_generator.cpp
index 86dc5c3663..5d50e9c855 100644
--- a/editor/plugins/navigation_mesh_generator.cpp
+++ b/editor/plugins/navigation_mesh_generator.cpp
@@ -215,7 +215,7 @@ void NavigationMeshGenerator::_build_recast_navigation_mesh(Ref<NavigationMesh>
ep->step(TTR("Eroding walkable area..."), 6);
ERR_FAIL_COND(!rcErodeWalkableArea(&ctx, cfg.walkableRadius, *chf));
- ep->step(TTR("Partioning..."), 7);
+ ep->step(TTR("Partitioning..."), 7);
if (p_nav_mesh->get_sample_partition_type() == NavigationMesh::SAMPLE_PARTITION_WATERSHED) {
ERR_FAIL_COND(!rcBuildDistanceField(&ctx, *chf));
ERR_FAIL_COND(!rcBuildRegions(&ctx, *chf, 0, cfg.minRegionArea, cfg.mergeRegionArea));
diff --git a/editor/plugins/navigation_polygon_editor_plugin.cpp b/editor/plugins/navigation_polygon_editor_plugin.cpp
index 6560a8dac7..6560a8dac7 100755..100644
--- a/editor/plugins/navigation_polygon_editor_plugin.cpp
+++ b/editor/plugins/navigation_polygon_editor_plugin.cpp
diff --git a/editor/plugins/navigation_polygon_editor_plugin.h b/editor/plugins/navigation_polygon_editor_plugin.h
index 54cc347a8c..54cc347a8c 100755..100644
--- a/editor/plugins/navigation_polygon_editor_plugin.h
+++ b/editor/plugins/navigation_polygon_editor_plugin.h
diff --git a/editor/plugins/path_2d_editor_plugin.cpp b/editor/plugins/path_2d_editor_plugin.cpp
index df10ac8929..2174f08e23 100644
--- a/editor/plugins/path_2d_editor_plugin.cpp
+++ b/editor/plugins/path_2d_editor_plugin.cpp
@@ -76,10 +76,7 @@ bool Path2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
Transform2D xform = canvas_item_editor->get_canvas_transform() * node->get_global_transform();
Vector2 gpoint = mb->get_position();
- Vector2 cpoint =
- !mb->get_alt() ?
- canvas_item_editor->snap_point(xform.affine_inverse().xform(gpoint)) :
- node->get_global_transform().affine_inverse().xform(canvas_item_editor->snap_point(canvas_item_editor->get_canvas_transform().affine_inverse().xform(gpoint)));
+ 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())));
real_t grab_threshold = EDITOR_DEF("editors/poly_editor/point_grab_radius", 8);
@@ -239,10 +236,7 @@ bool Path2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
// Handle point/control movement.
Transform2D xform = canvas_item_editor->get_canvas_transform() * node->get_global_transform();
Vector2 gpoint = mm->get_position();
- Vector2 cpoint =
- !mm->get_alt() ?
- canvas_item_editor->snap_point(xform.affine_inverse().xform(gpoint)) :
- node->get_global_transform().affine_inverse().xform(canvas_item_editor->snap_point(canvas_item_editor->get_canvas_transform().affine_inverse().xform(gpoint)));
+ Vector2 cpoint = node->get_global_transform().affine_inverse().xform(canvas_item_editor->snap_point(canvas_item_editor->get_canvas_transform().affine_inverse().xform(mm->get_position())));
Ref<Curve2D> curve = node->get_curve();
@@ -274,7 +268,8 @@ bool Path2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
return false;
}
-void Path2DEditor::_canvas_draw() {
+
+void Path2DEditor::forward_draw_over_canvas(Control *p_canvas) {
if (!node)
return;
@@ -329,16 +324,11 @@ void Path2DEditor::edit(Node *p_path2d) {
if (p_path2d) {
node = Object::cast_to<Path2D>(p_path2d);
- if (!canvas_item_editor->get_viewport_control()->is_connected("draw", this, "_canvas_draw"))
- canvas_item_editor->get_viewport_control()->connect("draw", this, "_canvas_draw");
if (!node->is_connected("visibility_changed", this, "_node_visibility_changed"))
node->connect("visibility_changed", this, "_node_visibility_changed");
} else {
- if (canvas_item_editor->get_viewport_control()->is_connected("draw", this, "_canvas_draw"))
- canvas_item_editor->get_viewport_control()->disconnect("draw", this, "_canvas_draw");
-
// node may have been deleted at this point
if (node && node->is_connected("visibility_changed", this, "_node_visibility_changed"))
node->disconnect("visibility_changed", this, "_node_visibility_changed");
@@ -349,7 +339,6 @@ void Path2DEditor::edit(Node *p_path2d) {
void Path2DEditor::_bind_methods() {
//ClassDB::bind_method(D_METHOD("_menu_option"),&Path2DEditor::_menu_option);
- ClassDB::bind_method(D_METHOD("_canvas_draw"), &Path2DEditor::_canvas_draw);
ClassDB::bind_method(D_METHOD("_node_visibility_changed"), &Path2DEditor::_node_visibility_changed);
ClassDB::bind_method(D_METHOD("_mode_selected"), &Path2DEditor::_mode_selected);
}
diff --git a/editor/plugins/path_2d_editor_plugin.h b/editor/plugins/path_2d_editor_plugin.h
index f0f5d4d637..516e48c471 100644
--- a/editor/plugins/path_2d_editor_plugin.h
+++ b/editor/plugins/path_2d_editor_plugin.h
@@ -84,7 +84,6 @@ class Path2DEditor : public HBoxContainer {
void _mode_selected(int p_mode);
- void _canvas_draw();
void _node_visibility_changed();
friend class Path2DEditorPlugin;
@@ -95,6 +94,7 @@ protected:
public:
bool forward_gui_input(const Ref<InputEvent> &p_event);
+ void forward_draw_over_canvas(Control *p_canvas);
void edit(Node *p_path2d);
Path2DEditor(EditorNode *p_editor);
};
@@ -107,7 +107,8 @@ class Path2DEditorPlugin : public EditorPlugin {
EditorNode *editor;
public:
- virtual bool forward_canvas_gui_input(const Transform2D &p_canvas_xform, const Ref<InputEvent> &p_event) { return path2d_editor->forward_gui_input(p_event); }
+ virtual bool forward_canvas_gui_input(const Ref<InputEvent> &p_event) { return path2d_editor->forward_gui_input(p_event); }
+ virtual void forward_draw_over_canvas(Control *p_canvas) { return path2d_editor->forward_draw_over_canvas(p_canvas); }
virtual String get_name() const { return "Path2D"; }
bool has_main_screen() const { return false; }
diff --git a/editor/plugins/polygon_2d_editor_plugin.cpp b/editor/plugins/polygon_2d_editor_plugin.cpp
index 0e8c13b067..a525983c75 100755..100644
--- a/editor/plugins/polygon_2d_editor_plugin.cpp
+++ b/editor/plugins/polygon_2d_editor_plugin.cpp
@@ -437,14 +437,10 @@ void Polygon2DEditor::_bind_methods() {
ClassDB::bind_method(D_METHOD("_set_snap_step_y"), &Polygon2DEditor::_set_snap_step_y);
}
-inline float _snap_scalar(float p_offset, float p_step, float p_target) {
- return p_step != 0 ? Math::stepify(p_target - p_offset, p_step) + p_offset : p_target;
-}
-
Vector2 Polygon2DEditor::snap_point(Vector2 p_target) const {
if (use_snap) {
- p_target.x = _snap_scalar(snap_offset.x * uv_draw_zoom - uv_draw_ofs.x, snap_step.x * uv_draw_zoom, p_target.x);
- p_target.y = _snap_scalar(snap_offset.y * uv_draw_zoom - uv_draw_ofs.y, snap_step.y * uv_draw_zoom, p_target.y);
+ p_target.x = Math::snap_scalar(snap_offset.x * uv_draw_zoom - uv_draw_ofs.x, snap_step.x * uv_draw_zoom, p_target.x);
+ p_target.y = Math::snap_scalar(snap_offset.y * uv_draw_zoom - uv_draw_ofs.y, snap_step.y * uv_draw_zoom, p_target.y);
}
return p_target;
diff --git a/editor/plugins/polygon_2d_editor_plugin.h b/editor/plugins/polygon_2d_editor_plugin.h
index 90da3e61c1..90da3e61c1 100755..100644
--- a/editor/plugins/polygon_2d_editor_plugin.h
+++ b/editor/plugins/polygon_2d_editor_plugin.h
diff --git a/editor/plugins/script_editor_plugin.cpp b/editor/plugins/script_editor_plugin.cpp
index 477d440f28..a1183307fb 100644
--- a/editor/plugins/script_editor_plugin.cpp
+++ b/editor/plugins/script_editor_plugin.cpp
@@ -467,6 +467,8 @@ void ScriptEditor::_update_recent_scripts() {
recent_scripts->add_separator();
recent_scripts->add_shortcut(ED_SHORTCUT("script_editor/clear_recent", TTR("Clear Recent Files")));
+
+ recent_scripts->set_as_minsize();
}
void ScriptEditor::_open_recent_script(int p_idx) {
@@ -474,7 +476,7 @@ void ScriptEditor::_open_recent_script(int p_idx) {
// clear button
if (p_idx == recent_scripts->get_item_count() - 1) {
previous_scripts.clear();
- _update_recent_scripts();
+ call_deferred("_update_recent_scripts");
return;
}
@@ -1167,6 +1169,8 @@ void ScriptEditor::_notification(int p_what) {
script_forward->set_icon(get_icon("Forward", "EditorIcons"));
script_back->set_icon(get_icon("Back", "EditorIcons"));
+
+ recent_scripts->set_as_minsize();
} break;
default:
@@ -1407,8 +1411,10 @@ void ScriptEditor::_update_members_overview() {
void ScriptEditor::_update_help_overview_visibility() {
int selected = tab_container->get_current_tab();
- if (selected < 0 || selected >= tab_container->get_child_count())
+ if (selected < 0 || selected >= tab_container->get_child_count()) {
+ help_overview->set_visible(false);
return;
+ }
Node *current = tab_container->get_child(tab_container->get_current_tab());
EditorHelp *se = Object::cast_to<EditorHelp>(current);
@@ -1425,6 +1431,7 @@ void ScriptEditor::_update_help_overview_visibility() {
}
void ScriptEditor::_update_help_overview() {
+ help_overview->clear();
int selected = tab_container->get_current_tab();
if (selected < 0 || selected >= tab_container->get_child_count())
@@ -1436,8 +1443,6 @@ void ScriptEditor::_update_help_overview() {
return;
}
- help_overview->clear();
-
Vector<Pair<String, int> > sections = se->get_sections();
for (int i = 0; i < sections.size(); i++) {
help_overview->add_item(sections[i].first);
@@ -1445,9 +1450,6 @@ void ScriptEditor::_update_help_overview() {
}
}
-void _help_overview_selected(int p_idx) {
-}
-
void ScriptEditor::_update_script_colors() {
bool script_temperature_enabled = EditorSettings::get_singleton()->get("text_editor/open_scripts/script_temperature_enabled");
@@ -1593,6 +1595,8 @@ void ScriptEditor::_update_script_names() {
_update_members_overview();
_update_help_overview();
+ _update_members_overview_visibility();
+ _update_help_overview_visibility();
_update_script_colors();
}
@@ -2240,6 +2244,7 @@ void ScriptEditor::_bind_methods() {
ClassDB::bind_method("_live_auto_reload_running_scripts", &ScriptEditor::_live_auto_reload_running_scripts);
ClassDB::bind_method("_unhandled_input", &ScriptEditor::_unhandled_input);
ClassDB::bind_method("_script_changed", &ScriptEditor::_script_changed);
+ ClassDB::bind_method("_update_recent_scripts", &ScriptEditor::_update_recent_scripts);
ClassDB::bind_method(D_METHOD("get_current_script"), &ScriptEditor::_get_current_script);
ClassDB::bind_method(D_METHOD("get_open_scripts"), &ScriptEditor::_get_open_scripts);
@@ -2355,7 +2360,7 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) {
debug_menu->get_popup()->add_shortcut(ED_SHORTCUT("debugger/step_into", TTR("Step Into"), KEY_F11), DEBUG_STEP);
debug_menu->get_popup()->add_separator();
debug_menu->get_popup()->add_shortcut(ED_SHORTCUT("debugger/break", TTR("Break")), DEBUG_BREAK);
- debug_menu->get_popup()->add_shortcut(ED_SHORTCUT("debugger/continue", TTR("Continue")), DEBUG_CONTINUE);
+ debug_menu->get_popup()->add_shortcut(ED_SHORTCUT("debugger/continue", TTR("Continue"), KEY_F12), DEBUG_CONTINUE);
debug_menu->get_popup()->add_separator();
//debug_menu->get_popup()->add_check_item("Show Debugger",DEBUG_SHOW);
debug_menu->get_popup()->add_check_shortcut(ED_SHORTCUT("debugger/keep_debugger_open", TTR("Keep Debugger Open")), DEBUG_SHOW_KEEP_OPEN);
diff --git a/editor/plugins/shader_editor_plugin.cpp b/editor/plugins/shader_editor_plugin.cpp
index b0ee1a32ca..f7dcc4b52d 100644
--- a/editor/plugins/shader_editor_plugin.cpp
+++ b/editor/plugins/shader_editor_plugin.cpp
@@ -348,6 +348,7 @@ void ShaderEditor::_editor_settings_changed() {
shader_editor->get_text_edit()->set_show_line_numbers(EditorSettings::get_singleton()->get("text_editor/line_numbers/show_line_numbers"));
shader_editor->get_text_edit()->set_syntax_coloring(EditorSettings::get_singleton()->get("text_editor/highlighting/syntax_highlighting"));
shader_editor->get_text_edit()->set_highlight_all_occurrences(EditorSettings::get_singleton()->get("text_editor/highlighting/highlight_all_occurrences"));
+ shader_editor->get_text_edit()->set_highlight_current_line(EditorSettings::get_singleton()->get("text_editor/highlighting/highlight_current_line"));
shader_editor->get_text_edit()->cursor_set_blink_enabled(EditorSettings::get_singleton()->get("text_editor/cursor/caret_blink"));
shader_editor->get_text_edit()->cursor_set_blink_speed(EditorSettings::get_singleton()->get("text_editor/cursor/caret_blink_speed"));
shader_editor->get_text_edit()->add_constant_override("line_spacing", EditorSettings::get_singleton()->get("text_editor/theme/line_spacing"));
diff --git a/editor/plugins/spatial_editor_plugin.cpp b/editor/plugins/spatial_editor_plugin.cpp
index 32973db6ec..25ca2d731e 100644
--- a/editor/plugins/spatial_editor_plugin.cpp
+++ b/editor/plugins/spatial_editor_plugin.cpp
@@ -63,7 +63,8 @@
#define ZOOM_MULTIPLIER 1.08
#define ZOOM_INDICATOR_DELAY_S 1.5
-#define FREELOOK_MIN_SPEED 0.1
+#define FREELOOK_MIN_SPEED 0.01
+#define FREELOOK_SPEED_MULTIPLIER 1.08
#define MIN_Z 0.01
#define MAX_Z 10000
@@ -75,34 +76,66 @@ void SpatialEditorViewport::_update_camera(float p_interp_delta) {
bool is_orthogonal = camera->get_projection() == Camera::PROJECTION_ORTHOGONAL;
- //when not being manipulated, move softly
- float free_orbit_inertia = EDITOR_GET("editors/3d/navigation_feel/orbit_inertia");
- float free_translation_inertia = EDITOR_GET("editors/3d/navigation_feel/translation_inertia");
- //when being manipulated, move more quickly
- float manip_orbit_inertia = EDITOR_GET("editors/3d/navigation_feel/manipulation_orbit_inertia");
- float manip_translation_inertia = EDITOR_GET("editors/3d/navigation_feel/manipulation_translation_inertia");
+ Cursor old_camera_cursor = camera_cursor;
+ camera_cursor = cursor;
- float zoom_inertia = EDITOR_GET("editors/3d/navigation_feel/zoom_inertia");
+ if (p_interp_delta > 0) {
- //determine if being manipulated
- bool manipulated = (Input::get_singleton()->get_mouse_button_mask() & (2 | 4)) || Input::get_singleton()->is_key_pressed(KEY_SHIFT) || Input::get_singleton()->is_key_pressed(KEY_ALT) || Input::get_singleton()->is_key_pressed(KEY_CONTROL);
+ //-------
+ // Perform smoothing
- float orbit_inertia = MAX(0.00001, manipulated ? manip_orbit_inertia : free_orbit_inertia);
- float translation_inertia = MAX(0.0001, manipulated ? manip_translation_inertia : free_translation_inertia);
+ if (is_freelook_active()) {
- Cursor old_camera_cursor = camera_cursor;
- camera_cursor = cursor;
+ // Higher inertia should increase "lag" (lerp with factor between 0 and 1)
+ // Inertia of zero should produce instant movement (lerp with factor of 1) in this case it returns a really high value and gets clamped to 1.
+ real_t inertia = EDITOR_GET("editors/3d/freelook/freelook_inertia");
+ inertia = MAX(0.001, inertia);
+ real_t factor = (1.0 / inertia) * p_interp_delta;
+
+ // We interpolate a different point here, because in freelook mode the focus point (cursor.pos) orbits around eye_pos
+ camera_cursor.eye_pos = old_camera_cursor.eye_pos.linear_interpolate(cursor.eye_pos, CLAMP(factor, 0, 1));
+ //camera_cursor.pos = camera_cursor.eye_pos + (cursor.pos - cursor.eye_pos);
+
+ float orbit_inertia = EDITOR_GET("editors/3d/navigation_feel/orbit_inertia");
+ orbit_inertia = MAX(0.0001, orbit_inertia);
+ camera_cursor.x_rot = Math::lerp(old_camera_cursor.x_rot, cursor.x_rot, MIN(1.f, p_interp_delta * (1 / orbit_inertia)));
+ camera_cursor.y_rot = Math::lerp(old_camera_cursor.y_rot, cursor.y_rot, MIN(1.f, p_interp_delta * (1 / orbit_inertia)));
+
+ Vector3 forward = to_camera_transform(camera_cursor).basis.xform(Vector3(0, 0, -1));
+ camera_cursor.pos = camera_cursor.eye_pos + forward * camera_cursor.distance;
+
+ } else {
+
+ //when not being manipulated, move softly
+ float free_orbit_inertia = EDITOR_GET("editors/3d/navigation_feel/orbit_inertia");
+ float free_translation_inertia = EDITOR_GET("editors/3d/navigation_feel/translation_inertia");
+ //when being manipulated, move more quickly
+ float manip_orbit_inertia = EDITOR_GET("editors/3d/navigation_feel/manipulation_orbit_inertia");
+ float manip_translation_inertia = EDITOR_GET("editors/3d/navigation_feel/manipulation_translation_inertia");
- camera_cursor.x_rot = Math::lerp(old_camera_cursor.x_rot, cursor.x_rot, MIN(1.f, p_interp_delta * (1 / orbit_inertia)));
- camera_cursor.y_rot = Math::lerp(old_camera_cursor.y_rot, cursor.y_rot, MIN(1.f, p_interp_delta * (1 / orbit_inertia)));
+ float zoom_inertia = EDITOR_GET("editors/3d/navigation_feel/zoom_inertia");
- camera_cursor.pos = old_camera_cursor.pos.linear_interpolate(cursor.pos, MIN(1.f, p_interp_delta * (1 / translation_inertia)));
- camera_cursor.distance = Math::lerp(old_camera_cursor.distance, cursor.distance, MIN(1.f, p_interp_delta * (1 / zoom_inertia)));
+ //determine if being manipulated
+ bool manipulated = Input::get_singleton()->get_mouse_button_mask() & (2 | 4);
+ manipulated |= Input::get_singleton()->is_key_pressed(KEY_SHIFT);
+ manipulated |= Input::get_singleton()->is_key_pressed(KEY_ALT);
+ manipulated |= Input::get_singleton()->is_key_pressed(KEY_CONTROL);
- if (p_interp_delta == 0 || is_freelook_active()) {
- camera_cursor = cursor;
+ float orbit_inertia = MAX(0.00001, manipulated ? manip_orbit_inertia : free_orbit_inertia);
+ float translation_inertia = MAX(0.0001, manipulated ? manip_translation_inertia : free_translation_inertia);
+ zoom_inertia = MAX(0.0001, zoom_inertia);
+
+ camera_cursor.x_rot = Math::lerp(old_camera_cursor.x_rot, cursor.x_rot, MIN(1.f, p_interp_delta * (1 / orbit_inertia)));
+ camera_cursor.y_rot = Math::lerp(old_camera_cursor.y_rot, cursor.y_rot, MIN(1.f, p_interp_delta * (1 / orbit_inertia)));
+
+ camera_cursor.pos = old_camera_cursor.pos.linear_interpolate(cursor.pos, MIN(1.f, p_interp_delta * (1 / translation_inertia)));
+ camera_cursor.distance = Math::lerp(old_camera_cursor.distance, cursor.distance, MIN(1.f, p_interp_delta * (1 / zoom_inertia)));
+ }
}
+ //-------
+ // Apply camera transform
+
float tolerance = 0.001;
bool equal = true;
if (Math::abs(old_camera_cursor.x_rot - camera_cursor.x_rot) > tolerance || Math::abs(old_camera_cursor.y_rot - camera_cursor.y_rot) > tolerance) {
@@ -234,12 +267,12 @@ Vector3 SpatialEditorViewport::_get_camera_position() const {
Point2 SpatialEditorViewport::_point_to_screen(const Vector3 &p_point) {
- return camera->unproject_position(p_point);
+ return camera->unproject_position(p_point) * viewport_container->get_stretch_shrink();
}
Vector3 SpatialEditorViewport::_get_ray_pos(const Vector2 &p_pos) const {
- return camera->project_ray_origin(p_pos);
+ return camera->project_ray_origin(p_pos / viewport_container->get_stretch_shrink());
}
Vector3 SpatialEditorViewport::_get_camera_normal() const {
@@ -249,7 +282,7 @@ Vector3 SpatialEditorViewport::_get_camera_normal() const {
Vector3 SpatialEditorViewport::_get_ray(const Vector2 &p_pos) const {
- return camera->project_ray_normal(p_pos);
+ return camera->project_ray_normal(p_pos / viewport_container->get_stretch_shrink());
}
/*
void SpatialEditorViewport::_clear_id(Spatial *p_node) {
@@ -814,6 +847,7 @@ void SpatialEditorViewport::_list_select(Ref<InputEventMouseButton> b) {
selection_menu->set_invalidate_click_until_motion();
}
}
+
void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
if (previewing)
@@ -845,11 +879,17 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
switch (b->get_button_index()) {
case BUTTON_WHEEL_UP: {
- scale_cursor_distance(is_freelook_active() ? zoom_factor : 1.0 / zoom_factor);
+ if (is_freelook_active())
+ scale_freelook_speed(zoom_factor);
+ else
+ scale_cursor_distance(1.0 / zoom_factor);
} break;
case BUTTON_WHEEL_DOWN: {
- scale_cursor_distance(is_freelook_active() ? 1.0 / zoom_factor : zoom_factor);
+ if (is_freelook_active())
+ scale_freelook_speed(1.0 / zoom_factor);
+ else
+ scale_cursor_distance(zoom_factor);
} break;
case BUTTON_RIGHT: {
@@ -901,10 +941,10 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
if (b->is_pressed()) {
int mod = _get_key_modifier(b);
if (mod == _get_key_modifier_setting("editors/3d/freelook/freelook_activation_modifier")) {
- freelook_active = true;
+ set_freelook_active(true);
}
} else {
- freelook_active = false;
+ set_freelook_active(false);
}
if (freelook_active && !surface->has_focus()) {
@@ -1537,7 +1577,7 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
}
}
- } else if (m->get_button_mask() & BUTTON_MASK_RIGHT) {
+ } else if ((m->get_button_mask() & BUTTON_MASK_RIGHT) || freelook_active) {
if (nav_scheme == NAVIGATION_MAYA && m->get_alt()) {
nav_mode = NAVIGATION_ZOOM;
@@ -1645,6 +1685,9 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
real_t degrees_per_pixel = EditorSettings::get_singleton()->get("editors/3d/navigation_feel/orbit_sensitivity");
real_t radians_per_pixel = Math::deg2rad(degrees_per_pixel);
+ // Note: do NOT assume the camera has the "current" transform, because it is interpolated and may have "lag".
+ Transform prev_camera_transform = to_camera_transform(cursor);
+
cursor.x_rot += relative.y * radians_per_pixel;
cursor.y_rot += relative.x * radians_per_pixel;
if (cursor.x_rot > Math_PI / 2.0)
@@ -1652,12 +1695,12 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
if (cursor.x_rot < -Math_PI / 2.0)
cursor.x_rot = -Math_PI / 2.0;
- // Look is like Orbit, except the cursor translates, not the camera
+ // Look is like the opposite of Orbit: the focus point rotates around the camera
Transform camera_transform = to_camera_transform(cursor);
Vector3 pos = camera_transform.xform(Vector3(0, 0, 0));
- Vector3 diff = camera->get_translation() - pos;
+ Vector3 prev_pos = prev_camera_transform.xform(Vector3(0, 0, 0));
+ Vector3 diff = prev_pos - pos;
cursor.pos += diff;
- freelook_target_position += diff;
name = "";
_update_name();
@@ -1749,29 +1792,76 @@ void SpatialEditorViewport::_sinput(const Ref<InputEvent> &p_event) {
set_message(TTR("Animation Key Inserted."));
}
+ if (ED_IS_SHORTCUT("spatial_editor/freelook_toggle", p_event)) {
+ set_freelook_active(!is_freelook_active());
+
+ } else if (k->get_scancode() == KEY_ESCAPE) {
+ set_freelook_active(false);
+ }
+
if (k->get_scancode() == KEY_SPACE) {
if (!k->is_pressed()) emit_signal("toggle_maximize_view", this);
}
}
}
+void SpatialEditorViewport::set_freelook_active(bool active_now) {
+
+ if (!freelook_active && active_now) {
+ // Sync camera cursor to cursor to "cut" interpolation jumps due to changing referential
+ cursor = camera_cursor;
+
+ // Make sure eye_pos is synced, because freelook referential is eye pos rather than orbit pos
+ Vector3 forward = to_camera_transform(cursor).basis.xform(Vector3(0, 0, -1));
+ cursor.eye_pos = cursor.pos - cursor.distance * forward;
+ // Also sync the camera cursor, otherwise switching to freelook will be trippy if inertia is active
+ camera_cursor.eye_pos = cursor.eye_pos;
+
+ if (EditorSettings::get_singleton()->get("editors/3d/freelook/freelook_speed_zoom_link")) {
+ // Re-adjust freelook speed from the current zoom level
+ real_t base_speed = EditorSettings::get_singleton()->get("editors/3d/freelook/freelook_base_speed");
+ freelook_speed = base_speed * cursor.distance;
+ }
+
+ // Hide mouse like in an FPS (warping doesn't work)
+ OS::get_singleton()->set_mouse_mode(OS::MOUSE_MODE_CAPTURED);
+
+ } else if (freelook_active && !active_now) {
+ // Sync camera cursor to cursor to "cut" interpolation jumps due to changing referential
+ cursor = camera_cursor;
+
+ // Restore mouse
+ OS::get_singleton()->set_mouse_mode(OS::MOUSE_MODE_VISIBLE);
+ }
+
+ freelook_active = active_now;
+}
+
void SpatialEditorViewport::scale_cursor_distance(real_t scale) {
// Prevents zero distance which would short-circuit any scaling
if (cursor.distance < ZOOM_MIN_DISTANCE)
cursor.distance = ZOOM_MIN_DISTANCE;
- real_t prev_distance = cursor.distance;
cursor.distance *= scale;
if (cursor.distance < ZOOM_MIN_DISTANCE)
cursor.distance = ZOOM_MIN_DISTANCE;
- if (is_freelook_active()) {
- // In freelook mode, cursor reference is reversed so it needs to be adjusted
- Vector3 forward = camera->get_transform().basis.xform(Vector3(0, 0, -1));
- cursor.pos += (cursor.distance - prev_distance) * forward;
- }
+ zoom_indicator_delay = ZOOM_INDICATOR_DELAY_S;
+ surface->update();
+}
+
+void SpatialEditorViewport::scale_freelook_speed(real_t scale) {
+
+ // Prevents zero distance which would short-circuit any scaling
+ if (freelook_speed < FREELOOK_MIN_SPEED)
+ freelook_speed = FREELOOK_MIN_SPEED;
+
+ freelook_speed *= scale;
+
+ if (freelook_speed < FREELOOK_MIN_SPEED)
+ freelook_speed = FREELOOK_MIN_SPEED;
zoom_indicator_delay = ZOOM_INDICATOR_DELAY_S;
surface->update();
@@ -1790,7 +1880,6 @@ Point2i SpatialEditorViewport::_get_warped_mouse_motion(const Ref<InputEventMous
void SpatialEditorViewport::_update_freelook(real_t delta) {
if (!is_freelook_active()) {
- freelook_target_position = cursor.pos;
return;
}
@@ -1833,21 +1922,15 @@ void SpatialEditorViewport::_update_freelook(real_t delta) {
speed_modifier = true;
}
- real_t inertia = EDITOR_DEF("editors/3d/freelook/freelook_inertia", 0.1);
- inertia = MAX(0, inertia);
- const real_t base_speed = EDITOR_DEF("editors/3d/freelook/freelook_base_speed", 0.5);
- const real_t modifier_speed_factor = EDITOR_DEF("editors/3d/freelook/freelook_modifier_speed_factor", 3);
-
- real_t speed = base_speed * cursor.distance;
- if (speed_modifier)
+ real_t speed = freelook_speed;
+ if (speed_modifier) {
+ real_t modifier_speed_factor = EditorSettings::get_singleton()->get("editors/3d/freelook/freelook_modifier_speed_factor");
speed *= modifier_speed_factor;
+ }
- // Higher inertia should increase "lag" (lerp with factor between 0 and 1)
- // Inertia of zero should produce instant movement (lerp with factor of 1) in this case it returns a really high value and gets clamped to 1.
-
- freelook_target_position += direction * speed;
- real_t factor = (1.0 / (inertia + 0.001)) * delta;
- cursor.pos = cursor.pos.linear_interpolate(freelook_target_position, CLAMP(factor, 0, 1));
+ Vector3 motion = direction * speed * delta;
+ cursor.pos += motion;
+ cursor.eye_pos += motion;
}
void SpatialEditorViewport::set_message(String p_message, float p_time) {
@@ -1886,7 +1969,7 @@ void SpatialEditorViewport::_notification(int p_what) {
}
*/
- real_t delta = get_tree()->get_idle_process_time();
+ real_t delta = get_process_delta_time();
if (zoom_indicator_delay > 0) {
zoom_indicator_delay -= delta;
@@ -1897,7 +1980,7 @@ void SpatialEditorViewport::_notification(int p_what) {
_update_freelook(delta);
- _update_camera(get_process_delta_time());
+ _update_camera(delta);
Map<Node *, Object *> &selection = editor_selection->get_selection();
@@ -1967,6 +2050,12 @@ void SpatialEditorViewport::_notification(int p_what) {
viewport->set_shadow_atlas_quadrant_subdiv(2, Viewport::ShadowAtlasQuadrantSubdiv(atlas_q2));
viewport->set_shadow_atlas_quadrant_subdiv(3, Viewport::ShadowAtlasQuadrantSubdiv(atlas_q3));
+ bool shrink = view_menu->get_popup()->is_item_checked(view_menu->get_popup()->get_item_index(VIEW_HALF_RESOLUTION));
+
+ if (shrink != viewport_container->get_stretch_shrink() > 1) {
+ viewport_container->set_stretch_shrink(shrink ? 2 : 1);
+ }
+
//update msaa if changed
int msaa_mode = ProjectSettings::get_singleton()->get("rendering/quality/filters/msaa");
@@ -2026,7 +2115,7 @@ void SpatialEditorViewport::_notification(int p_what) {
}
// TODO That should be part of the drawing API...
-static void stroke_rect(CanvasItem *ci, Rect2 rect, Color color, real_t width = 1.0) {
+static void stroke_rect(CanvasItem &ci, Rect2 rect, Color color, real_t width = 1.0) {
// a---b
// | |
@@ -2036,10 +2125,31 @@ static void stroke_rect(CanvasItem *ci, Rect2 rect, Color color, real_t width =
Vector2 c(rect.position.x, rect.position.y + rect.size.y);
Vector2 d(rect.position + rect.size);
- ci->draw_line(a, b, color, width);
- ci->draw_line(b, d, color, width);
- ci->draw_line(d, c, color, width);
- ci->draw_line(c, a, color, width);
+ ci.draw_line(a, b, color, width);
+ ci.draw_line(b, d, color, width);
+ ci.draw_line(d, c, color, width);
+ ci.draw_line(c, a, color, width);
+}
+
+static void draw_indicator_bar(Control &surface, real_t fill, Ref<Texture> icon) {
+
+ // Adjust bar size from control height
+ Vector2 surface_size = surface.get_size();
+ real_t h = surface_size.y / 2.0;
+ real_t y = (surface_size.y - h) / 2.0;
+
+ Rect2 r(10, y, 6, h);
+ real_t sy = r.size.y * fill;
+
+ // Note: because this bar appears over the viewport, it has to stay readable for any background color
+ // Draw both neutral dark and bright colors to account this
+ surface.draw_rect(r, Color(1, 1, 1, 0.2));
+ surface.draw_rect(Rect2(r.position.x, r.position.y + r.size.y - sy, r.size.x, sy), Color(1, 1, 1, 0.6));
+ stroke_rect(surface, r.grow(1), Color(0, 0, 0, 0.7));
+
+ Vector2 icon_size = icon->get_size();
+ Vector2 icon_pos = Vector2(r.position.x - (icon_size.x - r.size.x) / 2, r.position.y + r.size.y + 2);
+ surface.draw_texture(icon, icon_pos);
}
void SpatialEditorViewport::_draw() {
@@ -2098,35 +2208,47 @@ void SpatialEditorViewport::_draw() {
draw_rect = Rect2(Vector2(), s).clip(draw_rect);
- stroke_rect(surface, draw_rect, Color(0.6, 0.6, 0.1, 0.5), 2.0);
+ stroke_rect(*surface, draw_rect, Color(0.6, 0.6, 0.1, 0.5), 2.0);
} else {
if (zoom_indicator_delay > 0.0) {
- // Show indicative zoom factor
- real_t min_distance = ZOOM_MIN_DISTANCE; // TODO Why not pick znear to limit zoom?
- real_t max_distance = camera->get_zfar();
- real_t scale_length = (max_distance - min_distance);
+ if (is_freelook_active()) {
+ // Show speed
+
+ real_t min_speed = FREELOOK_MIN_SPEED;
+ real_t max_speed = camera->get_zfar();
+ real_t scale_length = (max_speed - min_speed);
- if (Math::abs(scale_length) > CMP_EPSILON) {
- real_t logscale_t = 1.0 - Math::log(1 + cursor.distance - min_distance) / Math::log(1 + scale_length);
+ if (Math::abs(scale_length) > CMP_EPSILON) {
+ real_t logscale_t = 1.0 - Math::log(1 + freelook_speed - min_speed) / Math::log(1 + scale_length);
- // There is no real maximum distance so that factor can become negative,
- // Let's make it look asymptotic instead (will decrease slower and slower).
- if (logscale_t < 0.25)
- logscale_t = 0.25 * Math::exp(4.0 * logscale_t - 1.0);
+ // There is no real maximum speed so that factor can become negative,
+ // Let's make it look asymptotic instead (will decrease slower and slower).
+ if (logscale_t < 0.25)
+ logscale_t = 0.25 * Math::exp(4.0 * logscale_t - 1.0);
- Vector2 surface_size = surface->get_size();
- real_t h = surface_size.y / 2.0;
- real_t y = (surface_size.y - h) / 2.0;
+ draw_indicator_bar(*surface, 1.0 - logscale_t, get_icon("ViewportSpeed", "EditorIcons"));
+ }
- Rect2 r(10, y, 6, h);
- real_t sy = r.size.y * logscale_t;
+ } else {
+ // Show zoom
- surface->draw_rect(r, Color(1, 1, 1, 0.2));
- surface->draw_rect(Rect2(r.position.x, r.position.y + r.size.y - sy, r.size.x, sy), Color(1, 1, 1, 0.6));
- stroke_rect(surface, r.grow(1), Color(0, 0, 0, 0.7));
+ real_t min_distance = ZOOM_MIN_DISTANCE; // TODO Why not pick znear to limit zoom?
+ real_t max_distance = camera->get_zfar();
+ real_t scale_length = (max_distance - min_distance);
+
+ if (Math::abs(scale_length) > CMP_EPSILON) {
+ real_t logscale_t = 1.0 - Math::log(1 + cursor.distance - min_distance) / Math::log(1 + scale_length);
+
+ // There is no real maximum distance so that factor can become negative,
+ // Let's make it look asymptotic instead (will decrease slower and slower).
+ if (logscale_t < 0.25)
+ logscale_t = 0.25 * Math::exp(4.0 * logscale_t - 1.0);
+
+ draw_indicator_bar(*surface, logscale_t, get_icon("ViewportZoom", "EditorIcons"));
+ }
}
}
}
@@ -2285,6 +2407,13 @@ void SpatialEditorViewport::_menu_option(int p_option) {
view_menu->get_popup()->set_item_checked(idx, current);
} break;
+ case VIEW_HALF_RESOLUTION: {
+
+ int idx = view_menu->get_popup()->get_item_index(VIEW_HALF_RESOLUTION);
+ bool current = view_menu->get_popup()->is_item_checked(idx);
+ current = !current;
+ view_menu->get_popup()->set_item_checked(idx, current);
+ } break;
case VIEW_INFORMATION: {
int idx = view_menu->get_popup()->get_item_index(VIEW_INFORMATION);
@@ -2514,6 +2643,12 @@ void SpatialEditorViewport::set_state(const Dictionary &p_state) {
camera->set_doppler_tracking(doppler ? Camera::DOPPLER_TRACKING_IDLE_STEP : Camera::DOPPLER_TRACKING_DISABLED);
view_menu->get_popup()->set_item_checked(idx, doppler);
}
+ if (p_state.has("half_res")) {
+ bool half_res = p_state["half_res"];
+
+ int idx = view_menu->get_popup()->get_item_index(VIEW_HALF_RESOLUTION);
+ view_menu->get_popup()->set_item_checked(idx, half_res);
+ }
if (p_state.has("previewing")) {
Node *pv = EditorNode::get_singleton()->get_edited_scene()->get_node(p_state["previewing"]);
@@ -2539,6 +2674,7 @@ Dictionary SpatialEditorViewport::get_state() const {
d["use_environment"] = camera->get_environment().is_valid();
d["use_orthogonal"] = camera->get_projection() == Camera::PROJECTION_ORTHOGONAL;
d["listener"] = viewport->is_audio_listener();
+ d["half_res"] = viewport_container->get_stretch_shrink() > 1;
if (previewing) {
d["previewing"] = EditorNode::get_singleton()->get_edited_scene()->get_path_to(previewing);
}
@@ -2576,6 +2712,7 @@ void SpatialEditorViewport::reset() {
cursor.y_rot = 0.5;
cursor.distance = 4;
cursor.region_select = false;
+ cursor.pos = Vector3();
_update_name();
}
@@ -2662,8 +2799,14 @@ Vector3 SpatialEditorViewport::_get_instance_position(const Point2 &p_pos) const
normal = hit_normal;
}
}
- Vector3 center = preview_bounds->get_size() * 0.5;
- return point + (center * normal);
+ Vector3 offset = Vector3();
+ for (int i = 0; i < 3; i++) {
+ if (normal[i] > 0.0)
+ offset[i] = (preview_bounds->get_size()[i] - (preview_bounds->get_size()[i] + preview_bounds->get_position()[i]));
+ else if (normal[i] < 0.0)
+ offset[i] = -(preview_bounds->get_size()[i] + preview_bounds->get_position()[i]);
+ }
+ return point + offset;
}
Rect3 SpatialEditorViewport::_calculate_spatial_bounds(const Spatial *p_parent, const Rect3 p_bounds) {
@@ -2785,7 +2928,7 @@ bool SpatialEditorViewport::_create_instance(Node *parent, String &path, const P
if (parent_spatial)
global_transform = parent_spatial->get_global_transform();
- global_transform.origin = _get_instance_position(p_point);
+ global_transform.origin = spatial_editor->snap_point(_get_instance_position(p_point));
editor_data->get_undo_redo().add_do_method(instanced_scene, "set_global_transform", global_transform);
@@ -2949,6 +3092,7 @@ SpatialEditorViewport::SpatialEditorViewport(SpatialEditor *p_spatial_editor, Ed
spatial_editor = p_spatial_editor;
ViewportContainer *c = memnew(ViewportContainer);
+ viewport_container = c;
c->set_stretch(true);
add_child(c);
c->set_anchors_and_margins_preset(Control::PRESET_WIDE);
@@ -2995,6 +3139,8 @@ SpatialEditorViewport::SpatialEditorViewport(SpatialEditor *p_spatial_editor, Ed
view_menu->get_popup()->add_check_shortcut(ED_SHORTCUT("spatial_editor/view_information", TTR("View Information")), VIEW_INFORMATION);
view_menu->get_popup()->set_item_checked(view_menu->get_popup()->get_item_index(VIEW_ENVIRONMENT), true);
view_menu->get_popup()->add_separator();
+ view_menu->get_popup()->add_check_shortcut(ED_SHORTCUT("spatial_editor/view_half_resolution", TTR("Half Resolution")), VIEW_HALF_RESOLUTION);
+ view_menu->get_popup()->add_separator();
view_menu->get_popup()->add_check_shortcut(ED_SHORTCUT("spatial_editor/view_audio_listener", TTR("Audio Listener")), VIEW_AUDIO_LISTENER);
view_menu->get_popup()->add_check_shortcut(ED_SHORTCUT("spatial_editor/view_audio_doppler", TTR("Doppler Enable")), VIEW_AUDIO_DOPPLER);
view_menu->get_popup()->set_item_checked(view_menu->get_popup()->get_item_index(VIEW_GIZMOS), true);
@@ -3036,6 +3182,7 @@ SpatialEditorViewport::SpatialEditorViewport(SpatialEditor *p_spatial_editor, Ed
accept = NULL;
freelook_active = false;
+ freelook_speed = EditorSettings::get_singleton()->get("editors/3d/freelook/freelook_base_speed");
selection_menu = memnew(PopupMenu);
add_child(selection_menu);
@@ -4485,6 +4632,8 @@ SpatialEditor::SpatialEditor(EditorNode *p_editor) {
ED_SHORTCUT("spatial_editor/display_wireframe", TTR("Display Wireframe"), KEY_Z);
+ ED_SHORTCUT("spatial_editor/freelook_toggle", TTR("Toggle Freelook"), KEY_MASK_SHIFT + KEY_F);
+
PopupMenu *p;
transform_menu = memnew(MenuButton);
@@ -4724,6 +4873,15 @@ void SpatialEditor::snap_cursor_to_plane(const Plane &p_plane) {
//cursor.pos=p_plane.project(cursor.pos);
}
+Vector3 SpatialEditor::snap_point(Vector3 p_target, Vector3 p_start) const {
+ if (is_snap_enabled()) {
+ p_target.x = Math::snap_scalar(0.0, get_translate_snap(), p_target.x);
+ p_target.y = Math::snap_scalar(0.0, get_translate_snap(), p_target.y);
+ p_target.z = Math::snap_scalar(0.0, get_translate_snap(), p_target.z);
+ }
+ return p_target;
+}
+
void SpatialEditorPlugin::_bind_methods() {
ClassDB::bind_method("snap_cursor_to_plane", &SpatialEditorPlugin::snap_cursor_to_plane);
diff --git a/editor/plugins/spatial_editor_plugin.h b/editor/plugins/spatial_editor_plugin.h
index 4f4c540048..c2b698068f 100644
--- a/editor/plugins/spatial_editor_plugin.h
+++ b/editor/plugins/spatial_editor_plugin.h
@@ -83,6 +83,7 @@ class SpatialEditorViewport : public Control {
VIEW_PERSPECTIVE,
VIEW_ENVIRONMENT,
VIEW_ORTHOGONAL,
+ VIEW_HALF_RESOLUTION,
VIEW_AUDIO_LISTENER,
VIEW_AUDIO_DOPPLER,
VIEW_GIZMOS,
@@ -120,6 +121,7 @@ private:
UndoRedo *undo_redo;
Button *preview_camera;
+ ViewportContainer *viewport_container;
MenuButton *view_menu;
@@ -131,7 +133,7 @@ private:
float gizmo_scale;
bool freelook_active;
- Vector3 freelook_target_position;
+ real_t freelook_speed;
PanelContainer *info;
Label *info_label;
@@ -231,6 +233,7 @@ private:
Vector3 pos;
float x_rot, y_rot, distance;
+ Vector3 eye_pos; // Used in freelook mode
bool region_select;
Point2 region_begin, region_end;
@@ -239,10 +242,17 @@ private:
distance = 4;
region_select = false;
}
- } cursor, camera_cursor;
+ };
+ // Viewport camera supports movement smoothing,
+ // so one cursor is the real cursor, while the other can be an interpolated version.
+ Cursor cursor; // Immediate cursor
+ Cursor camera_cursor; // That one may be interpolated (don't modify this one except for smoothing purposes)
void scale_cursor_distance(real_t scale);
+ void set_freelook_active(bool active_now);
+ void scale_freelook_speed(real_t scale);
+
real_t zoom_indicator_delay;
RID move_gizmo_instance[3], move_plane_gizmo_instance[3], rotate_gizmo_instance[3], scale_gizmo_instance[3];
@@ -540,6 +550,8 @@ public:
static SpatialEditor *get_singleton() { return singleton; }
void snap_cursor_to_plane(const Plane &p_plane);
+ Vector3 snap_point(Vector3 p_target, Vector3 p_start = Vector3(0, 0, 0)) const;
+
float get_znear() const { return settings_znear->get_value(); }
float get_zfar() const { return settings_zfar->get_value(); }
float get_fov() const { return settings_fov->get_value(); }
diff --git a/editor/plugins/sprite_frames_editor_plugin.cpp b/editor/plugins/sprite_frames_editor_plugin.cpp
index 3b6eeb61d6..b8274122f8 100644
--- a/editor/plugins/sprite_frames_editor_plugin.cpp
+++ b/editor/plugins/sprite_frames_editor_plugin.cpp
@@ -43,10 +43,10 @@ void SpriteFramesEditor::_notification(int p_what) {
}
if (p_what == NOTIFICATION_ENTER_TREE) {
- load->set_icon(get_icon("Folder", "EditorIcons"));
- _delete->set_icon(get_icon("Del", "EditorIcons"));
+ load->set_icon(get_icon("Load", "EditorIcons"));
+ _delete->set_icon(get_icon("Remove", "EditorIcons"));
new_anim->set_icon(get_icon("New", "EditorIcons"));
- remove_anim->set_icon(get_icon("Del", "EditorIcons"));
+ remove_anim->set_icon(get_icon("Remove", "EditorIcons"));
}
if (p_what == NOTIFICATION_READY) {
@@ -142,6 +142,19 @@ void SpriteFramesEditor::_paste_pressed() {
undo_redo->commit_action();
}
+void SpriteFramesEditor::_copy_pressed() {
+ ERR_FAIL_COND(!frames->has_animation(edited_anim));
+
+ if (tree->get_current() < 0)
+ return;
+ Ref<Texture> r = frames->get_frame(edited_anim, tree->get_current());
+ if (!r.is_valid()) {
+ return;
+ }
+
+ EditorSettings::get_singleton()->set_resource_clipboard(r);
+}
+
void SpriteFramesEditor::_empty_pressed() {
ERR_FAIL_COND(!frames->has_animation(edited_anim));
@@ -642,6 +655,7 @@ void SpriteFramesEditor::_bind_methods() {
ClassDB::bind_method(D_METHOD("_empty_pressed"), &SpriteFramesEditor::_empty_pressed);
ClassDB::bind_method(D_METHOD("_empty2_pressed"), &SpriteFramesEditor::_empty2_pressed);
ClassDB::bind_method(D_METHOD("_delete_pressed"), &SpriteFramesEditor::_delete_pressed);
+ ClassDB::bind_method(D_METHOD("_copy_pressed"), &SpriteFramesEditor::_copy_pressed);
ClassDB::bind_method(D_METHOD("_paste_pressed"), &SpriteFramesEditor::_paste_pressed);
ClassDB::bind_method(D_METHOD("_file_load_request", "files", "at_position"), &SpriteFramesEditor::_file_load_request, DEFVAL(-1));
ClassDB::bind_method(D_METHOD("_update_library", "skipsel"), &SpriteFramesEditor::_update_library, DEFVAL(false));
@@ -667,7 +681,7 @@ SpriteFramesEditor::SpriteFramesEditor() {
VBoxContainer *vbc_animlist = memnew(VBoxContainer);
split->add_child(vbc_animlist);
- vbc_animlist->set_custom_minimum_size(Size2(150, 0));
+ vbc_animlist->set_custom_minimum_size(Size2(150, 0) * EDSCALE);
//vbc_animlist->set_v_size_flags(SIZE_EXPAND_FILL);
VBoxContainer *sub_vb = memnew(VBoxContainer);
@@ -678,12 +692,13 @@ SpriteFramesEditor::SpriteFramesEditor() {
sub_vb->add_child(hbc_animlist);
new_anim = memnew(Button);
+ new_anim->set_flat(true);
hbc_animlist->add_child(new_anim);
+ new_anim->set_h_size_flags(SIZE_EXPAND_FILL);
new_anim->connect("pressed", this, "_animation_add");
- hbc_animlist->add_spacer();
-
remove_anim = memnew(Button);
+ remove_anim->set_flat(true);
hbc_animlist->add_child(remove_anim);
remove_anim->connect("pressed", this, "_animation_remove");
@@ -720,9 +735,14 @@ SpriteFramesEditor::SpriteFramesEditor() {
//animations = memnew( ItemList );
load = memnew(Button);
+ load->set_flat(true);
load->set_tooltip(TTR("Load Resource"));
hbc->add_child(load);
+ copy = memnew(Button);
+ copy->set_text(TTR("Copy"));
+ hbc->add_child(copy);
+
paste = memnew(Button);
paste->set_text(TTR("Paste"));
hbc->add_child(paste);
@@ -736,14 +756,15 @@ SpriteFramesEditor::SpriteFramesEditor() {
hbc->add_child(empty2);
move_up = memnew(Button);
- move_up->set_text(TTR("Up"));
+ move_up->set_text(TTR("Move (Before)"));
hbc->add_child(move_up);
move_down = memnew(Button);
- move_down->set_text(TTR("Down"));
+ move_down->set_text(TTR("Move (After)"));
hbc->add_child(move_down);
_delete = memnew(Button);
+ _delete->set_flat(true);
hbc->add_child(_delete);
file = memnew(EditorFileDialog);
@@ -769,6 +790,7 @@ SpriteFramesEditor::SpriteFramesEditor() {
load->connect("pressed", this, "_load_pressed");
_delete->connect("pressed", this, "_delete_pressed");
+ copy->connect("pressed", this, "_copy_pressed");
paste->connect("pressed", this, "_paste_pressed");
empty->connect("pressed", this, "_empty_pressed");
empty2->connect("pressed", this, "_empty2_pressed");
@@ -818,7 +840,7 @@ SpriteFramesEditorPlugin::SpriteFramesEditorPlugin(EditorNode *p_node) {
editor = p_node;
frames_editor = memnew(SpriteFramesEditor);
- frames_editor->set_custom_minimum_size(Size2(0, 300));
+ frames_editor->set_custom_minimum_size(Size2(0, 300) * EDSCALE);
button = editor->add_bottom_panel_item("SpriteFrames", frames_editor);
button->hide();
}
diff --git a/editor/plugins/sprite_frames_editor_plugin.h b/editor/plugins/sprite_frames_editor_plugin.h
index 0d1ab9fd8c..9fdab37f0e 100644
--- a/editor/plugins/sprite_frames_editor_plugin.h
+++ b/editor/plugins/sprite_frames_editor_plugin.h
@@ -44,6 +44,7 @@ class SpriteFramesEditor : public PanelContainer {
Button *load;
Button *_delete;
+ Button *copy;
Button *paste;
Button *empty;
Button *empty2;
@@ -72,6 +73,7 @@ class SpriteFramesEditor : public PanelContainer {
void _load_pressed();
void _load_scene_pressed();
void _file_load_request(const PoolVector<String> &p_path, int p_at_pos = -1);
+ void _copy_pressed();
void _paste_pressed();
void _empty_pressed();
void _empty2_pressed();
diff --git a/editor/plugins/texture_region_editor_plugin.cpp b/editor/plugins/texture_region_editor_plugin.cpp
index 0a7f3ff8f9..8870166dba 100644
--- a/editor/plugins/texture_region_editor_plugin.cpp
+++ b/editor/plugins/texture_region_editor_plugin.cpp
@@ -48,8 +48,8 @@ void TextureRegionEditor::_region_draw() {
Ref<Texture> base_tex = NULL;
if (node_sprite)
base_tex = node_sprite->get_texture();
- else if (node_patch9)
- base_tex = node_patch9->get_texture();
+ else if (node_ninepatch)
+ base_tex = node_ninepatch->get_texture();
else if (obj_styleBox.is_valid())
base_tex = obj_styleBox->get_texture();
else if (atlas_tex.is_valid())
@@ -177,12 +177,12 @@ void TextureRegionEditor::_region_draw() {
updating_scroll = false;
float margins[4];
- if (node_patch9 || obj_styleBox.is_valid()) {
- if (node_patch9) {
- margins[0] = node_patch9->get_patch_margin(MARGIN_TOP);
- margins[1] = node_patch9->get_patch_margin(MARGIN_BOTTOM);
- margins[2] = node_patch9->get_patch_margin(MARGIN_LEFT);
- margins[3] = node_patch9->get_patch_margin(MARGIN_RIGHT);
+ if (node_ninepatch || obj_styleBox.is_valid()) {
+ if (node_ninepatch) {
+ margins[0] = node_ninepatch->get_patch_margin(MARGIN_TOP);
+ margins[1] = node_ninepatch->get_patch_margin(MARGIN_BOTTOM);
+ margins[2] = node_ninepatch->get_patch_margin(MARGIN_LEFT);
+ margins[3] = node_ninepatch->get_patch_margin(MARGIN_RIGHT);
} else if (obj_styleBox.is_valid()) {
margins[0] = obj_styleBox->get_margin_size(MARGIN_TOP);
margins[1] = obj_styleBox->get_margin_size(MARGIN_BOTTOM);
@@ -225,14 +225,14 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) {
if (mb->get_button_index() == BUTTON_LEFT) {
if (mb->is_pressed()) {
- if (node_patch9 || obj_styleBox.is_valid()) {
+ if (node_ninepatch || obj_styleBox.is_valid()) {
edited_margin = -1;
float margins[4];
- if (node_patch9) {
- margins[0] = node_patch9->get_patch_margin(MARGIN_TOP);
- margins[1] = node_patch9->get_patch_margin(MARGIN_BOTTOM);
- margins[2] = node_patch9->get_patch_margin(MARGIN_LEFT);
- margins[3] = node_patch9->get_patch_margin(MARGIN_RIGHT);
+ if (node_ninepatch) {
+ margins[0] = node_ninepatch->get_patch_margin(MARGIN_TOP);
+ margins[1] = node_ninepatch->get_patch_margin(MARGIN_BOTTOM);
+ margins[2] = node_ninepatch->get_patch_margin(MARGIN_LEFT);
+ margins[3] = node_ninepatch->get_patch_margin(MARGIN_RIGHT);
} else if (obj_styleBox.is_valid()) {
margins[0] = obj_styleBox->get_margin_size(MARGIN_TOP);
margins[1] = obj_styleBox->get_margin_size(MARGIN_BOTTOM);
@@ -272,8 +272,8 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) {
Rect2 r;
if (node_sprite)
r = node_sprite->get_region_rect();
- else if (node_patch9)
- r = node_patch9->get_region_rect();
+ else if (node_ninepatch)
+ r = node_ninepatch->get_region_rect();
else if (obj_styleBox.is_valid())
r = obj_styleBox->get_region_rect();
else if (atlas_tex.is_valid())
@@ -285,9 +285,9 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) {
if (node_sprite) {
undo_redo->add_do_method(node_sprite, "set_region_rect", rect);
undo_redo->add_undo_method(node_sprite, "set_region_rect", node_sprite->get_region_rect());
- } else if (node_patch9) {
- undo_redo->add_do_method(node_patch9, "set_region_rect", rect);
- undo_redo->add_undo_method(node_patch9, "set_region_rect", node_patch9->get_region_rect());
+ } else if (node_ninepatch) {
+ undo_redo->add_do_method(node_ninepatch, "set_region_rect", rect);
+ undo_redo->add_undo_method(node_ninepatch, "set_region_rect", node_ninepatch->get_region_rect());
} else if (obj_styleBox.is_valid()) {
undo_redo->add_do_method(obj_styleBox.ptr(), "set_region_rect", rect);
undo_redo->add_undo_method(obj_styleBox.ptr(), "set_region_rect", obj_styleBox->get_region_rect());
@@ -310,8 +310,8 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) {
drag = true;
if (node_sprite)
rect_prev = node_sprite->get_region_rect();
- else if (node_patch9)
- rect_prev = node_patch9->get_region_rect();
+ else if (node_ninepatch)
+ rect_prev = node_ninepatch->get_region_rect();
else if (obj_styleBox.is_valid())
rect_prev = obj_styleBox->get_region_rect();
else if (atlas_tex.is_valid())
@@ -334,9 +334,9 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) {
if (edited_margin >= 0) {
undo_redo->create_action("Set Margin");
static Margin m[4] = { MARGIN_TOP, MARGIN_BOTTOM, MARGIN_LEFT, MARGIN_RIGHT };
- if (node_patch9) {
- undo_redo->add_do_method(node_patch9, "set_patch_margin", m[edited_margin], node_patch9->get_patch_margin(m[edited_margin]));
- undo_redo->add_undo_method(node_patch9, "set_patch_margin", m[edited_margin], prev_margin);
+ if (node_ninepatch) {
+ undo_redo->add_do_method(node_ninepatch, "set_patch_margin", m[edited_margin], node_ninepatch->get_patch_margin(m[edited_margin]));
+ undo_redo->add_undo_method(node_ninepatch, "set_patch_margin", m[edited_margin], prev_margin);
} else if (obj_styleBox.is_valid()) {
undo_redo->add_do_method(obj_styleBox.ptr(), "set_margin_size", m[edited_margin], obj_styleBox->get_margin_size(m[edited_margin]));
undo_redo->add_undo_method(obj_styleBox.ptr(), "set_margin_size", m[edited_margin], prev_margin);
@@ -351,11 +351,11 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) {
} else if (atlas_tex.is_valid()) {
undo_redo->add_do_method(atlas_tex.ptr(), "set_region", atlas_tex->get_region());
undo_redo->add_undo_method(atlas_tex.ptr(), "set_region", rect_prev);
- } else if (node_patch9) {
+ } else if (node_ninepatch) {
// FIXME: Is this intentional?
- } else if (node_patch9) {
- undo_redo->add_do_method(node_patch9, "set_region_rect", node_patch9->get_region_rect());
- undo_redo->add_undo_method(node_patch9, "set_region_rect", rect_prev);
+ } else if (node_ninepatch) {
+ undo_redo->add_do_method(node_ninepatch, "set_region_rect", node_ninepatch->get_region_rect());
+ undo_redo->add_undo_method(node_ninepatch, "set_region_rect", rect_prev);
} else if (obj_styleBox.is_valid()) {
undo_redo->add_do_method(obj_styleBox.ptr(), "set_region_rect", obj_styleBox->get_region_rect());
undo_redo->add_undo_method(obj_styleBox.ptr(), "set_region_rect", rect_prev);
@@ -375,8 +375,8 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) {
drag = false;
if (edited_margin >= 0) {
static Margin m[4] = { MARGIN_TOP, MARGIN_BOTTOM, MARGIN_LEFT, MARGIN_RIGHT };
- if (node_patch9)
- node_patch9->set_patch_margin(m[edited_margin], prev_margin);
+ if (node_ninepatch)
+ node_ninepatch->set_patch_margin(m[edited_margin], prev_margin);
if (obj_styleBox.is_valid())
obj_styleBox->set_margin_size(m[edited_margin], prev_margin);
edited_margin = -1;
@@ -422,8 +422,8 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) {
if (new_margin < 0)
new_margin = 0;
static Margin m[4] = { MARGIN_TOP, MARGIN_BOTTOM, MARGIN_LEFT, MARGIN_RIGHT };
- if (node_patch9)
- node_patch9->set_patch_margin(m[edited_margin], new_margin);
+ if (node_ninepatch)
+ node_ninepatch->set_patch_margin(m[edited_margin], new_margin);
if (obj_styleBox.is_valid())
obj_styleBox->set_margin_size(m[edited_margin], new_margin);
} else {
@@ -573,8 +573,8 @@ void TextureRegionEditor::_zoom_out() {
void TextureRegionEditor::apply_rect(const Rect2 &rect) {
if (node_sprite)
node_sprite->set_region_rect(rect);
- else if (node_patch9)
- node_patch9->set_region_rect(rect);
+ else if (node_ninepatch)
+ node_ninepatch->set_region_rect(rect);
else if (obj_styleBox.is_valid())
obj_styleBox->set_region_rect(rect);
else if (atlas_tex.is_valid())
@@ -593,8 +593,8 @@ void TextureRegionEditor::_notification(int p_what) {
}
void TextureRegionEditor::_node_removed(Object *p_obj) {
- if (p_obj == node_sprite || p_obj == node_patch9 || p_obj == obj_styleBox.ptr() || p_obj == atlas_tex.ptr()) {
- node_patch9 = NULL;
+ if (p_obj == node_sprite || p_obj == node_ninepatch || p_obj == obj_styleBox.ptr() || p_obj == atlas_tex.ptr()) {
+ node_ninepatch = NULL;
node_sprite = NULL;
obj_styleBox = Ref<StyleBox>(NULL);
atlas_tex = Ref<AtlasTexture>(NULL);
@@ -623,15 +623,15 @@ void TextureRegionEditor::_bind_methods() {
void TextureRegionEditor::edit(Object *p_obj) {
if (node_sprite)
node_sprite->remove_change_receptor(this);
- if (node_patch9)
- node_patch9->remove_change_receptor(this);
+ if (node_ninepatch)
+ node_ninepatch->remove_change_receptor(this);
if (obj_styleBox.is_valid())
obj_styleBox->remove_change_receptor(this);
if (atlas_tex.is_valid())
atlas_tex->remove_change_receptor(this);
if (p_obj) {
node_sprite = Object::cast_to<Sprite>(p_obj);
- node_patch9 = Object::cast_to<NinePatchRect>(p_obj);
+ node_ninepatch = Object::cast_to<NinePatchRect>(p_obj);
if (Object::cast_to<StyleBoxTexture>(p_obj))
obj_styleBox = Ref<StyleBoxTexture>(Object::cast_to<StyleBoxTexture>(p_obj));
if (Object::cast_to<AtlasTexture>(p_obj))
@@ -640,7 +640,7 @@ void TextureRegionEditor::edit(Object *p_obj) {
_edit_region();
} else {
node_sprite = NULL;
- node_patch9 = NULL;
+ node_ninepatch = NULL;
obj_styleBox = Ref<StyleBoxTexture>(NULL);
atlas_tex = Ref<AtlasTexture>(NULL);
}
@@ -659,8 +659,8 @@ void TextureRegionEditor::_edit_region() {
Ref<Texture> texture = NULL;
if (node_sprite)
texture = node_sprite->get_texture();
- else if (node_patch9)
- texture = node_patch9->get_texture();
+ else if (node_ninepatch)
+ texture = node_ninepatch->get_texture();
else if (obj_styleBox.is_valid())
texture = obj_styleBox->get_texture();
else if (atlas_tex.is_valid())
@@ -726,8 +726,8 @@ void TextureRegionEditor::_edit_region() {
if (node_sprite)
rect = node_sprite->get_region_rect();
- else if (node_patch9)
- rect = node_patch9->get_region_rect();
+ else if (node_ninepatch)
+ rect = node_ninepatch->get_region_rect();
else if (obj_styleBox.is_valid())
rect = obj_styleBox->get_region_rect();
else if (atlas_tex.is_valid())
@@ -736,23 +736,10 @@ void TextureRegionEditor::_edit_region() {
edit_draw->update();
}
-inline float _snap_scalar(float p_offset, float p_step, float separation, float p_target) {
- if (p_step != 0) {
- float a = Math::stepify(p_target - p_offset, p_step + separation) + p_offset;
- float b = a;
- if (p_target >= 0)
- b -= separation;
- else
- b += p_step;
- return (Math::abs(p_target - a) < Math::abs(p_target - b)) ? a : b;
- }
- return p_target;
-}
-
Vector2 TextureRegionEditor::snap_point(Vector2 p_target) const {
if (snap_mode == SNAP_GRID) {
- p_target.x = _snap_scalar(snap_offset.x, snap_step.x, snap_separation.x, p_target.x);
- p_target.y = _snap_scalar(snap_offset.y, snap_step.y, snap_separation.y, p_target.y);
+ p_target.x = Math::snap_scalar_seperation(snap_offset.x, snap_step.x, p_target.x, snap_separation.x);
+ p_target.y = Math::snap_scalar_seperation(snap_offset.y, snap_step.y, p_target.y, snap_separation.y);
}
return p_target;
@@ -760,7 +747,7 @@ Vector2 TextureRegionEditor::snap_point(Vector2 p_target) const {
TextureRegionEditor::TextureRegionEditor(EditorNode *p_editor) {
node_sprite = NULL;
- node_patch9 = NULL;
+ node_ninepatch = NULL;
obj_styleBox = Ref<StyleBoxTexture>(NULL);
atlas_tex = Ref<AtlasTexture>(NULL);
editor = p_editor;
diff --git a/editor/plugins/texture_region_editor_plugin.h b/editor/plugins/texture_region_editor_plugin.h
index 0789dde1c1..2058dad791 100644
--- a/editor/plugins/texture_region_editor_plugin.h
+++ b/editor/plugins/texture_region_editor_plugin.h
@@ -37,7 +37,7 @@
#include "editor/editor_node.h"
#include "editor/editor_plugin.h"
#include "scene/2d/sprite.h"
-#include "scene/gui/patch_9_rect.h"
+#include "scene/gui/nine_patch_rect.h"
#include "scene/resources/style_box.h"
#include "scene/resources/texture.h"
@@ -82,7 +82,7 @@ class TextureRegionEditor : public Control {
Vector2 snap_step;
Vector2 snap_separation;
- NinePatchRect *node_patch9;
+ NinePatchRect *node_ninepatch;
Sprite *node_sprite;
Ref<StyleBoxTexture> obj_styleBox;
Ref<AtlasTexture> atlas_tex;
diff --git a/editor/plugins/theme_editor_plugin.cpp b/editor/plugins/theme_editor_plugin.cpp
index e500dec0ef..02ead3aee8 100644
--- a/editor/plugins/theme_editor_plugin.cpp
+++ b/editor/plugins/theme_editor_plugin.cpp
@@ -588,6 +588,8 @@ void ThemeEditor::_notification(int p_what) {
time_left = 1.5;
_refresh_interval();
}
+ } else if (p_what == NOTIFICATION_THEME_CHANGED) {
+ theme_menu->set_icon(get_icon("Theme", "EditorIcons"));
}
}
@@ -627,7 +629,9 @@ ThemeEditor::ThemeEditor() {
main_vb->add_child(hb_menu);
theme_menu = memnew(MenuButton);
- theme_menu->set_text(TTR("Theme"));
+ theme_menu->set_text(TTR("Edit theme.."));
+ theme_menu->set_flat(false);
+ theme_menu->set_tooltip(TTR("Theme editing menu."));
theme_menu->get_popup()->add_item(TTR("Add Item"), POPUP_ADD);
theme_menu->get_popup()->add_item(TTR("Add Class Items"), POPUP_CLASS_ADD);
theme_menu->get_popup()->add_item(TTR("Remove Item"), POPUP_REMOVE);
diff --git a/editor/plugins/tile_map_editor_plugin.cpp b/editor/plugins/tile_map_editor_plugin.cpp
index 2f2ed7bdf0..9235dafaa6 100644
--- a/editor/plugins/tile_map_editor_plugin.cpp
+++ b/editor/plugins/tile_map_editor_plugin.cpp
@@ -229,7 +229,7 @@ struct _PaletteEntry {
return name < p_rhs.name;
}
};
-}
+} // namespace
void TileMapEditor::_update_palette() {
@@ -945,6 +945,7 @@ bool TileMapEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
if (mm.is_valid()) {
Point2i new_over_tile = node->world_to_map(xform_inv.xform(mm->get_position()));
+ Point2i old_over_tile = over_tile;
if (new_over_tile != over_tile) {
@@ -963,17 +964,43 @@ bool TileMapEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
if (tool == TOOL_PAINTING) {
+ // Paint using bresenham line to prevent holes in painting if the user moves fast
+
+ Vector<Point2i> points = line(old_over_tile.x, over_tile.x, old_over_tile.y, over_tile.y);
int id = get_selected_tile();
- if (id != TileMap::INVALID_CELL) {
+
+ for (int i = 0; i < points.size(); ++i) {
+
+ Point2i pos = points[i];
if (!paint_undo.has(over_tile)) {
- paint_undo[over_tile] = _get_op_from_cell(over_tile);
+ paint_undo[pos] = _get_op_from_cell(pos);
}
- _set_cell(over_tile, id, flip_h, flip_v, transpose);
+ _set_cell(pos, id, flip_h, flip_v, transpose);
+ }
- return true;
+ return true;
+ }
+
+ if (tool == TOOL_ERASING) {
+
+ // erase using bresenham line to prevent holes in painting if the user moves fast
+
+ Vector<Point2i> points = line(old_over_tile.x, over_tile.x, old_over_tile.y, over_tile.y);
+
+ for (int i = 0; i < points.size(); ++i) {
+
+ Point2i pos = points[i];
+
+ if (!paint_undo.has(over_tile)) {
+ paint_undo[pos] = _get_op_from_cell(pos);
+ }
+
+ _set_cell(pos, TileMap::INVALID_CELL);
}
+
+ return true;
}
if (tool == TOOL_SELECTING) {
@@ -1044,16 +1071,6 @@ bool TileMapEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
return true;
}
- if (tool == TOOL_ERASING) {
-
- if (!paint_undo.has(over_tile)) {
- paint_undo[over_tile] = _get_op_from_cell(over_tile);
- }
-
- _set_cell(over_tile, TileMap::INVALID_CELL);
-
- return true;
- }
if (tool == TOOL_PICKING && Input::get_singleton()->is_mouse_button_pressed(BUTTON_LEFT)) {
_pick_tile(over_tile);
@@ -1152,7 +1169,7 @@ bool TileMapEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
return false;
}
-void TileMapEditor::_canvas_draw() {
+void TileMapEditor::forward_draw_over_canvas(Control *p_canvas) {
if (!node)
return;
@@ -1379,8 +1396,6 @@ void TileMapEditor::edit(Node *p_tile_map) {
if (p_tile_map) {
node = Object::cast_to<TileMap>(p_tile_map);
- if (!canvas_item_editor->is_connected("draw", this, "_canvas_draw"))
- canvas_item_editor->connect("draw", this, "_canvas_draw");
if (!canvas_item_editor->is_connected("mouse_entered", this, "_canvas_mouse_enter"))
canvas_item_editor->connect("mouse_entered", this, "_canvas_mouse_enter");
if (!canvas_item_editor->is_connected("mouse_exited", this, "_canvas_mouse_exit"))
@@ -1391,8 +1406,6 @@ void TileMapEditor::edit(Node *p_tile_map) {
} else {
node = NULL;
- if (canvas_item_editor->is_connected("draw", this, "_canvas_draw"))
- canvas_item_editor->disconnect("draw", this, "_canvas_draw");
if (canvas_item_editor->is_connected("mouse_entered", this, "_canvas_mouse_enter"))
canvas_item_editor->disconnect("mouse_entered", this, "_canvas_mouse_enter");
if (canvas_item_editor->is_connected("mouse_exited", this, "_canvas_mouse_exit"))
@@ -1428,7 +1441,6 @@ void TileMapEditor::_bind_methods() {
ClassDB::bind_method(D_METHOD("_text_changed"), &TileMapEditor::_text_changed);
ClassDB::bind_method(D_METHOD("_sbox_input"), &TileMapEditor::_sbox_input);
ClassDB::bind_method(D_METHOD("_menu_option"), &TileMapEditor::_menu_option);
- ClassDB::bind_method(D_METHOD("_canvas_draw"), &TileMapEditor::_canvas_draw);
ClassDB::bind_method(D_METHOD("_canvas_mouse_enter"), &TileMapEditor::_canvas_mouse_enter);
ClassDB::bind_method(D_METHOD("_canvas_mouse_exit"), &TileMapEditor::_canvas_mouse_exit);
ClassDB::bind_method(D_METHOD("_tileset_settings_changed"), &TileMapEditor::_tileset_settings_changed);
diff --git a/editor/plugins/tile_map_editor_plugin.h b/editor/plugins/tile_map_editor_plugin.h
index c8f29dfb7b..73474a3f3d 100644
--- a/editor/plugins/tile_map_editor_plugin.h
+++ b/editor/plugins/tile_map_editor_plugin.h
@@ -163,7 +163,6 @@ class TileMapEditor : public VBoxContainer {
void _text_changed(const String &p_text);
void _sbox_input(const Ref<InputEvent> &p_ie);
void _update_palette();
- void _canvas_draw();
void _menu_option(int p_option);
void _set_cell(const Point2i &p_pos, int p_value, bool p_flip_h = false, bool p_flip_v = false, bool p_transpose = false, bool p_with_undo = false);
@@ -183,6 +182,8 @@ public:
HBoxContainer *get_toolbar() const { return toolbar; }
bool forward_gui_input(const Ref<InputEvent> &p_event);
+ void forward_draw_over_canvas(Control *p_canvas);
+
void edit(Node *p_tile_map);
TileMapEditor(EditorNode *p_editor);
@@ -196,7 +197,8 @@ class TileMapEditorPlugin : public EditorPlugin {
TileMapEditor *tile_map_editor;
public:
- virtual bool forward_canvas_gui_input(const Transform2D &p_canvas_xform, const Ref<InputEvent> &p_event) { return tile_map_editor->forward_gui_input(p_event); }
+ virtual bool forward_canvas_gui_input(const Ref<InputEvent> &p_event) { return tile_map_editor->forward_gui_input(p_event); }
+ virtual void forward_draw_over_canvas(Control *p_canvas) { tile_map_editor->forward_draw_over_canvas(p_canvas); }
virtual String get_name() const { return "TileMap"; }
bool has_main_screen() const { return false; }
diff --git a/editor/project_export.cpp b/editor/project_export.cpp
index e5b6f8e406..eac5720b43 100644
--- a/editor/project_export.cpp
+++ b/editor/project_export.cpp
@@ -733,8 +733,12 @@ void ProjectExportDialog::_export_project_to_path(const String &p_path) {
ERR_FAIL_COND(platform.is_null());
Error err = platform->export_project(current, export_debug->is_pressed(), p_path, 0);
- if (err != OK)
+ if (err != OK) {
+ error_dialog->set_text(TTR("Export templates for this platform are missing/corrupted: ") + platform->get_name());
+ error_dialog->show();
+ error_dialog->popup_centered_minsize(Size2(300, 80));
ERR_PRINT("Failed to export project");
+ }
}
void ProjectExportDialog::_bind_methods() {
@@ -915,6 +919,7 @@ ProjectExportDialog::ProjectExportDialog() {
updating = false;
+ get_cancel()->set_text(TTR("Close"));
get_ok()->set_text(TTR("Export PCK/Zip"));
export_button = add_button(TTR("Export Project"), !OS::get_singleton()->get_swap_ok_cancel(), "export");
@@ -940,6 +945,12 @@ ProjectExportDialog::ProjectExportDialog() {
export_error2->add_color_override("font_color", get_color("error_color", "Editor"));
export_error2->set_text(" - " + TTR("Export templates for this platform are missing:") + " ");
+ error_dialog = memnew(AcceptDialog);
+ error_dialog->set_title("Error");
+ error_dialog->set_text(TTR("Export templates for this platform are missing/corrupted:") + " ");
+ main_vb->add_child(error_dialog);
+ error_dialog->hide();
+
LinkButton *download_templates = memnew(LinkButton);
download_templates->set_text(TTR("Manage Export Templates"));
export_templates_error->add_child(download_templates);
diff --git a/editor/project_export.h b/editor/project_export.h
index 61de0f739a..288b0c290f 100644
--- a/editor/project_export.h
+++ b/editor/project_export.h
@@ -72,6 +72,7 @@ private:
Button *button_export;
bool updating;
+ AcceptDialog *error_dialog;
ConfirmationDialog *delete_confirm;
OptionButton *export_filter;
diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp
index 9f23df5c03..18416868ec 100644
--- a/editor/project_manager.cpp
+++ b/editor/project_manager.cpp
@@ -48,6 +48,7 @@
#include "scene/gui/separator.h"
#include "scene/gui/texture_rect.h"
#include "scene/gui/tool_button.h"
+#include "translation.h"
#include "version.h"
#include "version_hash.gen.h"
@@ -124,7 +125,7 @@ private:
}
if (valid_path == "") {
- set_message(TTR("The path does not exists."), MESSAGE_ERROR);
+ set_message(TTR("The path does not exist."), MESSAGE_ERROR);
memdelete(d);
return "";
}
@@ -750,6 +751,9 @@ void ProjectManager::_unhandled_input(const Ref<InputEvent> &p_ev) {
if (!k->is_pressed())
return;
+ if (tabs->get_current_tab() != 0)
+ return;
+
bool scancode_handled = true;
switch (k->get_scancode()) {
@@ -1322,6 +1326,28 @@ void ProjectManager::_erase_project() {
erase_ask->popup_centered_minsize();
}
+void ProjectManager::_language_selected(int p_id) {
+
+ String lang = language_btn->get_item_metadata(p_id);
+ EditorSettings::get_singleton()->set("interface/editor/editor_language", lang);
+ language_btn->set_text(lang);
+ language_btn->set_icon(get_icon("Environment", "EditorIcons"));
+
+ language_restart_ask->set_text(TTR("Language changed.\nThe UI will update next time the editor or project manager starts."));
+ language_restart_ask->popup_centered();
+}
+
+void ProjectManager::_restart_confirm() {
+
+ List<String> args = OS::get_singleton()->get_cmdline_args();
+ String exec = OS::get_singleton()->get_executable_path();
+ OS::ProcessID pid = 0;
+ Error err = OS::get_singleton()->execute(exec, args, false, &pid);
+ ERR_FAIL_COND(err);
+
+ get_tree()->quit();
+}
+
void ProjectManager::_exit_dialog() {
get_tree()->quit();
@@ -1395,6 +1421,8 @@ void ProjectManager::_bind_methods() {
ClassDB::bind_method("_rename_project", &ProjectManager::_rename_project);
ClassDB::bind_method("_erase_project", &ProjectManager::_erase_project);
ClassDB::bind_method("_erase_project_confirm", &ProjectManager::_erase_project_confirm);
+ ClassDB::bind_method("_language_selected", &ProjectManager::_language_selected);
+ ClassDB::bind_method("_restart_confirm", &ProjectManager::_restart_confirm);
ClassDB::bind_method("_exit_dialog", &ProjectManager::_exit_dialog);
ClassDB::bind_method("_load_recent_projects", &ProjectManager::_load_recent_projects);
ClassDB::bind_method("_on_project_renamed", &ProjectManager::_on_project_renamed);
@@ -1479,9 +1507,13 @@ ProjectManager::ProjectManager() {
//vb->add_child(memnew(HSeparator));
//vb->add_margin_child("\n",memnew(Control));
+ Control *center_box = memnew(Control);
+ center_box->set_v_size_flags(SIZE_EXPAND_FILL);
+ vb->add_child(center_box);
+
tabs = memnew(TabContainer);
- vb->add_child(tabs);
- tabs->set_v_size_flags(SIZE_EXPAND_FILL);
+ center_box->add_child(tabs);
+ tabs->set_anchors_and_margins_preset(Control::PRESET_WIDE);
HBoxContainer *tree_hb = memnew(HBoxContainer);
projects_hb = tree_hb;
@@ -1582,6 +1614,40 @@ ProjectManager::ProjectManager() {
WARN_PRINT("Asset Library not available, as it requires SSL to work.");
}
+ HBoxContainer *settings_hb = memnew(HBoxContainer);
+ settings_hb->set_alignment(BoxContainer::ALIGN_END);
+ settings_hb->set_h_grow_direction(Control::GROW_DIRECTION_BEGIN);
+
+ language_btn = memnew(OptionButton);
+
+ Vector<String> editor_languages;
+ List<PropertyInfo> editor_settings_properties;
+ EditorSettings::get_singleton()->get_property_list(&editor_settings_properties);
+ for (List<PropertyInfo>::Element *E = editor_settings_properties.front(); E; E = E->next()) {
+ PropertyInfo &pi = E->get();
+ if (pi.name == "interface/editor/editor_language") {
+ editor_languages = pi.hint_string.split(",");
+ }
+ }
+ String current_lang = EditorSettings::get_singleton()->get("interface/editor/editor_language");
+ for (int i = 0; i < editor_languages.size(); i++) {
+ String lang = editor_languages[i];
+ String lang_name = TranslationServer::get_singleton()->get_locale_name(lang);
+ language_btn->add_item(lang_name + " [" + lang + "]", i);
+ language_btn->set_item_metadata(i, lang);
+ if (current_lang == lang) {
+ language_btn->select(i);
+ language_btn->set_text(lang);
+ }
+ }
+ language_btn->set_icon(get_icon("Environment", "EditorIcons"));
+
+ settings_hb->add_child(language_btn);
+ language_btn->connect("item_selected", this, "_language_selected");
+
+ center_box->add_child(settings_hb);
+ settings_hb->set_anchors_and_margins_preset(Control::PRESET_TOP_RIGHT);
+
CenterContainer *cc = memnew(CenterContainer);
Button *cancel = memnew(Button);
cancel->set_text(TTR("Exit"));
@@ -1592,6 +1658,13 @@ ProjectManager::ProjectManager() {
//
+ language_restart_ask = memnew(ConfirmationDialog);
+ language_restart_ask->get_ok()->set_text(TTR("Restart Now"));
+ language_restart_ask->get_ok()->connect("pressed", this, "_restart_confirm");
+ language_restart_ask->get_cancel()->set_text(TTR("Continue"));
+
+ gui_base->add_child(language_restart_ask);
+
erase_ask = memnew(ConfirmationDialog);
erase_ask->get_ok()->set_text(TTR("Remove"));
erase_ask->get_ok()->connect("pressed", this, "_erase_project_confirm");
diff --git a/editor/project_manager.h b/editor/project_manager.h
index bfae0b2297..656bd2d19c 100644
--- a/editor/project_manager.h
+++ b/editor/project_manager.h
@@ -54,6 +54,7 @@ class ProjectManager : public Control {
ProjectListFilter *project_filter;
+ ConfirmationDialog *language_restart_ask;
ConfirmationDialog *erase_ask;
ConfirmationDialog *multi_open_ask;
ConfirmationDialog *multi_run_ask;
@@ -71,6 +72,8 @@ class ProjectManager : public Control {
TabContainer *tabs;
+ OptionButton *language_btn;
+
Control *gui_base;
void _scan_projects();
@@ -84,6 +87,8 @@ class ProjectManager : public Control {
void _erase_project();
void _erase_project_confirm();
void _update_project_buttons();
+ void _language_selected(int p_id);
+ void _restart_confirm();
void _exit_dialog();
void _scan_begin(const String &p_base);
diff --git a/editor/project_settings_editor.cpp b/editor/project_settings_editor.cpp
index 91ef9e36f3..3f79d00f80 100644
--- a/editor/project_settings_editor.cpp
+++ b/editor/project_settings_editor.cpp
@@ -81,6 +81,8 @@ void ProjectSettingsEditor::_notification(int p_what) {
search_button->set_icon(get_icon("Search", "EditorIcons"));
clear_button->set_icon(get_icon("Close", "EditorIcons"));
+ action_add_error->add_color_override("font_color", get_color("error_color", "Editor"));
+
translation_list->connect("button_pressed", this, "_translation_delete");
_update_actions();
popup_add->add_icon_item(get_icon("Keyboard", "EditorIcons"), TTR("Key "), INPUT_KEY); //"Key " - because the word 'key' has already been used as a key animation
@@ -819,12 +821,16 @@ void ProjectSettingsEditor::_action_check(String p_action) {
} else {
if (p_action.find("/") != -1 || p_action.find(":") != -1) {
- action_add->set_text(TTR("Can't contain '/' or ':'"));
+
+ action_add_error->set_text(TTR("Can't contain '/' or ':'"));
+ action_add_error->show();
action_add->set_disabled(true);
return;
}
if (ProjectSettings::get_singleton()->has_setting("input/" + p_action)) {
- action_add->set_text(TTR("Already existing"));
+
+ action_add_error->set_text(TTR("Already existing"));
+ action_add_error->show();
action_add->set_disabled(true);
return;
}
@@ -832,7 +838,7 @@ void ProjectSettingsEditor::_action_check(String p_action) {
action_add->set_disabled(false);
}
- action_add->set_text(TTR("Add"));
+ action_add_error->hide();
}
void ProjectSettingsEditor::_action_adds(String) {
@@ -869,7 +875,7 @@ void ProjectSettingsEditor::_action_add() {
return;
r->select(0);
input_editor->ensure_cursor_is_visible();
- action_add->set_text(TTR("Add"));
+ action_add_error->hide();
}
void ProjectSettingsEditor::_item_checked(const String &p_item, bool p_check) {
@@ -1127,7 +1133,11 @@ void ProjectSettingsEditor::_translation_res_option_changed() {
ERR_FAIL_COND(!remaps.has(key));
PoolStringArray r = remaps[key];
ERR_FAIL_INDEX(idx, r.size());
- r.set(idx, path + ":" + langs[which]);
+ if (translation_locales_idxs_remap.size() > 0) {
+ r.set(idx, path + ":" + langs[translation_locales_idxs_remap[which]]);
+ } else {
+ r.set(idx, path + ":" + langs[which]);
+ }
remaps[key] = r;
updating_translations = true;
@@ -1189,7 +1199,7 @@ void ProjectSettingsEditor::_translation_res_option_delete(Object *p_item, int p
ERR_FAIL_COND(!remaps.has(key));
PoolStringArray r = remaps[key];
- ERR_FAIL_INDEX(idx, remaps.size());
+ ERR_FAIL_INDEX(idx, r.size());
r.remove(idx);
remaps[key] = r;
@@ -1203,6 +1213,88 @@ void ProjectSettingsEditor::_translation_res_option_delete(Object *p_item, int p
undo_redo->commit_action();
}
+void ProjectSettingsEditor::_translation_filter_option_changed() {
+
+ int sel_id = translation_locale_filter_mode->get_selected_id();
+ TreeItem *t = translation_filter->get_selected();
+ String locale = t->get_tooltip(0);
+ bool checked = t->is_checked(0);
+
+ Variant prev;
+ Array f_locales_all;
+
+ if (ProjectSettings::get_singleton()->has_setting("locale/locale_filter")) {
+ f_locales_all = ProjectSettings::get_singleton()->get("locale/locale_filter");
+ prev = f_locales_all;
+
+ if (f_locales_all.size() != 2) {
+ f_locales_all.clear();
+ f_locales_all.append(sel_id);
+ f_locales_all.append(Array());
+ }
+ } else {
+ f_locales_all.append(sel_id);
+ f_locales_all.append(Array());
+ }
+
+ Array f_locales = f_locales_all[1];
+ int l_idx = f_locales.find(locale);
+
+ if (checked) {
+ if (l_idx == -1) {
+ f_locales.append(locale);
+ }
+ } else {
+ if (l_idx != -1) {
+ f_locales.remove(l_idx);
+ }
+ }
+
+ f_locales = f_locales.sort();
+
+ undo_redo->create_action(TTR("Changed Locale Filter"));
+ undo_redo->add_do_property(ProjectSettings::get_singleton(), "locale/locale_filter", f_locales_all);
+ undo_redo->add_undo_property(ProjectSettings::get_singleton(), "locale/locale_filter", prev);
+ undo_redo->add_do_method(this, "_update_translations");
+ undo_redo->add_undo_method(this, "_update_translations");
+ undo_redo->add_do_method(this, "_settings_changed");
+ undo_redo->add_undo_method(this, "_settings_changed");
+ undo_redo->commit_action();
+}
+
+void ProjectSettingsEditor::_translation_filter_mode_changed(int p_mode) {
+
+ int sel_id = translation_locale_filter_mode->get_selected_id();
+
+ Variant prev;
+ Array f_locales_all;
+
+ if (ProjectSettings::get_singleton()->has_setting("locale/locale_filter")) {
+ f_locales_all = ProjectSettings::get_singleton()->get("locale/locale_filter");
+ prev = f_locales_all;
+
+ if (f_locales_all.size() != 2) {
+ f_locales_all.clear();
+ f_locales_all.append(sel_id);
+ f_locales_all.append(Array());
+ } else {
+ f_locales_all[0] = sel_id;
+ }
+ } else {
+ f_locales_all.append(sel_id);
+ f_locales_all.append(Array());
+ }
+
+ undo_redo->create_action(TTR("Changed Locale Filter Mode"));
+ undo_redo->add_do_property(ProjectSettings::get_singleton(), "locale/locale_filter", f_locales_all);
+ undo_redo->add_undo_property(ProjectSettings::get_singleton(), "locale/locale_filter", prev);
+ undo_redo->add_do_method(this, "_update_translations");
+ undo_redo->add_undo_method(this, "_update_translations");
+ undo_redo->add_do_method(this, "_settings_changed");
+ undo_redo->add_undo_method(this, "_settings_changed");
+ undo_redo->commit_action();
+}
+
void ProjectSettingsEditor::_update_translations() {
//update translations
@@ -1229,6 +1321,61 @@ void ProjectSettingsEditor::_update_translations() {
}
}
+ Vector<String> langs = TranslationServer::get_all_locales();
+ Vector<String> names = TranslationServer::get_all_locale_names();
+
+ //update filter tab
+ Array l_filter_all;
+
+ bool is_arr_empty = true;
+ if (ProjectSettings::get_singleton()->has_setting("locale/locale_filter")) {
+
+ l_filter_all = ProjectSettings::get_singleton()->get("locale/locale_filter");
+
+ if (l_filter_all.size() == 2) {
+
+ translation_locale_filter_mode->select(l_filter_all[0]);
+ is_arr_empty = false;
+ }
+ }
+ if (is_arr_empty) {
+
+ l_filter_all.append(0);
+ l_filter_all.append(Array());
+ translation_locale_filter_mode->select(0);
+ }
+
+ int filter_mode = l_filter_all[0];
+ Array l_filter = l_filter_all[1];
+
+ int s = names.size();
+ if (!translation_locales_list_created) {
+
+ translation_locales_list_created = true;
+ translation_filter->clear();
+ root = translation_filter->create_item(NULL);
+ translation_filter->set_hide_root(true);
+ translation_filter_treeitems.resize(s);
+
+ for (int i = 0; i < s; i++) {
+ String n = names[i];
+ String l = langs[i];
+ TreeItem *t = translation_filter->create_item(root);
+ t->set_cell_mode(0, TreeItem::CELL_MODE_CHECK);
+ t->set_text(0, n);
+ t->set_editable(0, true);
+ t->set_tooltip(0, l);
+ t->set_checked(0, l_filter.has(l));
+ translation_filter_treeitems[i] = t;
+ }
+ } else {
+ for (int i = 0; i < s; i++) {
+
+ TreeItem *t = translation_filter_treeitems[i];
+ t->set_checked(0, l_filter.has(t->get_tooltip(0)));
+ }
+ }
+
//update translation remaps
String remap_selected;
@@ -1244,13 +1391,30 @@ void ProjectSettingsEditor::_update_translations() {
translation_remap_options->set_hide_root(true);
translation_res_option_add_button->set_disabled(true);
- Vector<String> langs = TranslationServer::get_all_locales();
- Vector<String> names = TranslationServer::get_all_locale_names();
- String langnames;
+ translation_locales_idxs_remap.clear();
+ translation_locales_idxs_remap.resize(l_filter.size());
+ int fl_idx_count = translation_locales_idxs_remap.size();
+
+ String langnames = "";
+ int l_idx = 0;
for (int i = 0; i < names.size(); i++) {
- if (i > 0)
- langnames += ",";
- langnames += names[i];
+
+ if (filter_mode == SHOW_ONLY_SELECTED_LOCALES && fl_idx_count != 0) {
+ if (l_filter.size() > 0) {
+
+ if (l_filter.find(langs[i]) != -1) {
+ if (langnames.length() > 0)
+ langnames += ",";
+ langnames += names[i];
+ translation_locales_idxs_remap[l_idx] = i;
+ l_idx++;
+ }
+ }
+ } else {
+ if (i > 0)
+ langnames += ",";
+ langnames += names[i];
+ }
}
if (ProjectSettings::get_singleton()->has_setting("locale/translation_remaps")) {
@@ -1295,11 +1459,18 @@ void ProjectSettingsEditor::_update_translations() {
t2->set_editable(1, true);
t2->set_metadata(1, path);
int idx = langs.find(locale);
- print_line("find " + locale + " at " + itos(idx));
+ //print_line("find " + locale + " at " + itos(idx));
if (idx < 0)
idx = 0;
- t2->set_range(1, idx);
+ int f_idx = translation_locales_idxs_remap.find(idx);
+ if (f_idx != -1 && fl_idx_count > 0 && filter_mode == SHOW_ONLY_SELECTED_LOCALES) {
+
+ t2->set_range(1, f_idx);
+ } else {
+
+ t2->set_range(1, idx);
+ }
}
}
}
@@ -1381,6 +1552,9 @@ void ProjectSettingsEditor::_bind_methods() {
ClassDB::bind_method(D_METHOD("_translation_res_delete"), &ProjectSettingsEditor::_translation_res_delete);
ClassDB::bind_method(D_METHOD("_translation_res_option_delete"), &ProjectSettingsEditor::_translation_res_option_delete);
+ ClassDB::bind_method(D_METHOD("_translation_filter_option_changed"), &ProjectSettingsEditor::_translation_filter_option_changed);
+ ClassDB::bind_method(D_METHOD("_translation_filter_mode_changed"), &ProjectSettingsEditor::_translation_filter_mode_changed);
+
ClassDB::bind_method(D_METHOD("_clear_search_box"), &ProjectSettingsEditor::_clear_search_box);
ClassDB::bind_method(D_METHOD("_toggle_search_bar"), &ProjectSettingsEditor::_toggle_search_bar);
@@ -1528,6 +1702,10 @@ ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) {
action_name->connect("text_entered", this, "_action_adds");
action_name->connect("text_changed", this, "_action_check");
+ action_add_error = memnew(Label);
+ hbc->add_child(action_add_error);
+ action_add_error->hide();
+
add = memnew(Button);
hbc->add_child(add);
add->set_custom_minimum_size(Size2(150, 0) * EDSCALE);
@@ -1601,6 +1779,8 @@ ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) {
translations->set_tab_align(TabContainer::ALIGN_LEFT);
translations->set_name(TTR("Localization"));
tab_container->add_child(translations);
+ //remap for properly select language in popup
+ translation_locales_idxs_remap = Vector<int>();
{
@@ -1684,6 +1864,29 @@ ProjectSettingsEditor::ProjectSettingsEditor(EditorData *p_data) {
}
{
+ VBoxContainer *tvb = memnew(VBoxContainer);
+ translations->add_child(tvb);
+ tvb->set_name(TTR("Locales Filter"));
+ VBoxContainer *tmc = memnew(VBoxContainer);
+ tmc->set_v_size_flags(SIZE_EXPAND_FILL);
+ tvb->add_child(tmc);
+
+ translation_locale_filter_mode = memnew(OptionButton);
+ translation_locale_filter_mode->add_item(TTR("Show all locales"), SHOW_ALL_LOCALES);
+ translation_locale_filter_mode->add_item(TTR("Show only selected locales"), SHOW_ONLY_SELECTED_LOCALES);
+ translation_locale_filter_mode->select(0);
+ tmc->add_margin_child(TTR("Filter mode:"), translation_locale_filter_mode);
+ translation_locale_filter_mode->connect("item_selected", this, "_translation_filter_mode_changed");
+
+ translation_filter = memnew(Tree);
+ translation_filter->set_v_size_flags(SIZE_EXPAND_FILL);
+ translation_filter->set_columns(1);
+ tmc->add_child(memnew(Label(TTR("Locales:"))));
+ tmc->add_child(translation_filter);
+ translation_filter->connect("item_edited", this, "_translation_filter_option_changed");
+ }
+
+ {
autoload_settings = memnew(EditorAutoloadSettings);
autoload_settings->set_name(TTR("AutoLoad"));
tab_container->add_child(autoload_settings);
diff --git a/editor/project_settings_editor.h b/editor/project_settings_editor.h
index 7f9b18a968..dbca158133 100644
--- a/editor/project_settings_editor.h
+++ b/editor/project_settings_editor.h
@@ -49,6 +49,11 @@ class ProjectSettingsEditor : public AcceptDialog {
INPUT_MOUSE_BUTTON
};
+ enum LocaleFilter {
+ SHOW_ALL_LOCALES,
+ SHOW_ONLY_SELECTED_LOCALES,
+ };
+
TabContainer *tab_container;
Timer *timer;
@@ -81,6 +86,7 @@ class ProjectSettingsEditor : public AcceptDialog {
LineEdit *action_name;
Button *action_add;
+ Label *action_add_error;
Tree *input_editor;
bool setting;
bool updating_translations;
@@ -95,6 +101,11 @@ class ProjectSettingsEditor : public AcceptDialog {
EditorFileDialog *translation_res_option_file_open;
Tree *translation_remap;
Tree *translation_remap_options;
+ Tree *translation_filter;
+ bool translation_locales_list_created;
+ OptionButton *translation_locale_filter_mode;
+ Vector<TreeItem *> translation_filter_treeitems;
+ Vector<int> translation_locales_idxs_remap;
EditorAutoloadSettings *autoload_settings;
@@ -142,6 +153,9 @@ class ProjectSettingsEditor : public AcceptDialog {
void _translation_res_option_changed();
void _translation_res_option_delete(Object *p_item, int p_column, int p_button);
+ void _translation_filter_option_changed();
+ void _translation_filter_mode_changed(int p_mode);
+
void _toggle_search_bar(bool p_pressed);
void _clear_search_box();
diff --git a/editor/property_editor.cpp b/editor/property_editor.cpp
index 658f67d6a4..f4d5530faa 100644
--- a/editor/property_editor.cpp
+++ b/editor/property_editor.cpp
@@ -376,7 +376,7 @@ bool CustomPropertyEditor::edit(Object *p_owner, const String &p_name, Variant::
if (hint == PROPERTY_HINT_RANGE) {
int c = hint_text.get_slice_count(",");
- float min = 0, max = 100, step = 1;
+ float min = 0, max = 100, step = type == Variant::REAL ? .01 : 1;
if (c >= 1) {
if (!hint_text.get_slice(",", 0).empty())
@@ -1766,19 +1766,19 @@ void CustomPropertyEditor::_focus_exit() {
void CustomPropertyEditor::config_action_buttons(const List<String> &p_strings) {
- int w = 100;
- int h = 18;
- int m = 5;
+ int cell_width = 60;
+ int cell_height = 25;
+ int cell_margin = 5;
- set_size(Size2(w, m * 2 + (h + m) * p_strings.size()));
+ set_size(Size2(cell_margin + (cell_width + cell_margin) * p_strings.size(), (cell_margin * 2) + cell_height) * EDSCALE);
for (int i = 0; i < MAX_ACTION_BUTTONS; i++) {
if (i < p_strings.size()) {
action_buttons[i]->show();
action_buttons[i]->set_text(p_strings[i]);
- action_buttons[i]->set_position(Point2(m, m + i * (h + m)));
- action_buttons[i]->set_size(Size2(w - m * 2, h));
+ action_buttons[i]->set_position(Point2(cell_margin + (cell_width + cell_margin) * i, cell_margin) * EDSCALE);
+ action_buttons[i]->set_size(Size2(cell_width, cell_height - cell_margin * 2) * EDSCALE);
action_buttons[i]->set_flat(true);
} else {
action_buttons[i]->hide();
@@ -1788,13 +1788,14 @@ void CustomPropertyEditor::config_action_buttons(const List<String> &p_strings)
void CustomPropertyEditor::config_value_editors(int p_amount, int p_columns, int p_label_w, const List<String> &p_strings) {
- int w = 80;
- int h = 20;
- int m = 10;
+ int cell_width = 95;
+ int cell_height = 25;
+ int cell_margin = 5;
+ int hor_spacing = 5; // Spacing between labels and their values
int rows = ((p_amount - 1) / p_columns) + 1;
- set_size(Size2(m * (1 + p_columns) + (w + p_label_w) * p_columns, m * (1 + rows) + h * rows));
+ set_size(Size2(cell_margin + p_label_w + (cell_width + cell_margin + p_label_w) * p_columns, cell_margin + (cell_height + cell_margin) * rows) * EDSCALE);
for (int i = 0; i < MAX_VALUE_EDITORS; i++) {
@@ -1805,9 +1806,9 @@ void CustomPropertyEditor::config_value_editors(int p_amount, int p_columns, int
value_editor[i]->show();
value_label[i]->show();
value_label[i]->set_text(i < p_strings.size() ? p_strings[i] : String(""));
- value_editor[i]->set_position(Point2(m + p_label_w + c * (w + m + p_label_w), m + r * (h + m)));
- value_editor[i]->set_size(Size2(w, h));
- value_label[i]->set_position(Point2(m + c * (w + m + p_label_w), m + r * (h + m)));
+ value_editor[i]->set_position(Point2(cell_margin + p_label_w + hor_spacing + (cell_width + cell_margin + p_label_w + hor_spacing) * c, cell_margin + (cell_height + cell_margin) * r) * EDSCALE);
+ value_editor[i]->set_size(Size2(cell_width, cell_height));
+ value_label[i]->set_position(Point2(cell_margin + (cell_width + cell_margin + p_label_w + hor_spacing) * c, cell_margin + (cell_height + cell_margin) * r) * EDSCALE);
value_editor[i]->set_editable(!read_only);
} else {
value_editor[i]->hide();
@@ -3032,7 +3033,7 @@ void PropertyEditor::update_tree() {
if (p.hint == PROPERTY_HINT_SPRITE_FRAME || p.hint == PROPERTY_HINT_RANGE || p.hint == PROPERTY_HINT_EXP_RANGE) {
int c = p.hint_string.get_slice_count(",");
- float min = 0, max = 100, step = 1;
+ float min = 0, max = 100, step = p.type == Variant::REAL ? .01 : 1;
if (c >= 1) {
min = p.hint_string.get_slice(",", 0).to_double();
diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp
index f3e59932c4..7438c7671e 100644
--- a/editor/scene_tree_dock.cpp
+++ b/editor/scene_tree_dock.cpp
@@ -319,6 +319,14 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
editor->push_item(existing.ptr());
else {
String path = selected->get_filename();
+ if (path == "") {
+ String root_path = editor_data->get_edited_scene_root()->get_filename();
+ if (root_path == "") {
+ path = "res://" + selected->get_name();
+ } else {
+ path = root_path.get_base_dir() + "/" + selected->get_name();
+ }
+ }
script_create_dialog->config(selected->get_class(), path);
script_create_dialog->popup_centered();
}
diff --git a/editor/scene_tree_editor.cpp b/editor/scene_tree_editor.cpp
index 6dcd5e54ec..a6e0af05b2 100644
--- a/editor/scene_tree_editor.cpp
+++ b/editor/scene_tree_editor.cpp
@@ -215,9 +215,9 @@ bool SceneTreeEditor::_add_nodes(Node *p_node, TreeItem *p_parent) {
bool has_groups = p_node->has_persistent_groups();
if (has_connections && has_groups) {
- item->add_button(0, get_icon("ConnectionAndGroups", "EditorIcons"), BUTTON_SIGNALS, false, TTR("Node has connection(s) and group(s)\nClick to show signals dock."));
+ item->add_button(0, get_icon("SignalsAndGroups", "EditorIcons"), BUTTON_SIGNALS, false, TTR("Node has connection(s) and group(s)\nClick to show signals dock."));
} else if (has_connections) {
- item->add_button(0, get_icon("Connect", "EditorIcons"), BUTTON_SIGNALS, false, TTR("Node has connections.\nClick to show signals dock."));
+ item->add_button(0, get_icon("Signals", "EditorIcons"), BUTTON_SIGNALS, false, TTR("Node has connections.\nClick to show signals dock."));
} else if (has_groups) {
item->add_button(0, get_icon("Groups", "EditorIcons"), BUTTON_GROUPS, false, TTR("Node is in group(s).\nClick to show groups dock."));
}
diff --git a/editor/script_create_dialog.cpp b/editor/script_create_dialog.cpp
index 089c054b59..c19b80e649 100644
--- a/editor/script_create_dialog.cpp
+++ b/editor/script_create_dialog.cpp
@@ -88,7 +88,7 @@ bool ScriptCreateDialog::_validate(const String &p_string) {
continue;
}
- bool valid_char = (p_string[i] >= '0' && p_string[i] <= '9') || (p_string[i] >= 'a' && p_string[i] <= 'z') || (p_string[i] >= 'A' && p_string[i] <= 'Z') || p_string[i] == '_' || (is_val_path && (p_string[i] == '/' || p_string[i] == '.'));
+ bool valid_char = (p_string[i] >= '0' && p_string[i] <= '9') || (p_string[i] >= 'a' && p_string[i] <= 'z') || (p_string[i] >= 'A' && p_string[i] <= 'Z') || p_string[i] == '_' || p_string[i] == '-' || (is_val_path && (p_string[i] == '/' || p_string[i] == '.'));
if (!valid_char)
return false;
@@ -145,9 +145,13 @@ void ScriptCreateDialog::ok_pressed() {
void ScriptCreateDialog::_create_new() {
- String cname;
- if (has_named_classes)
- cname = class_name->get_text();
+ String cname_param;
+
+ if (has_named_classes) {
+ cname_param = class_name->get_text();
+ } else {
+ cname_param = ProjectSettings::get_singleton()->localize_path(file_path->get_text()).get_file().get_basename();
+ }
Ref<Script> scr;
if (script_template != "") {
@@ -159,13 +163,16 @@ void ScriptCreateDialog::_create_new() {
return;
}
scr = scr->duplicate();
- ScriptServer::get_language(language_menu->get_selected())->make_template(cname, parent_name->get_text(), scr);
+ ScriptServer::get_language(language_menu->get_selected())->make_template(cname_param, parent_name->get_text(), scr);
} else {
- scr = ScriptServer::get_language(language_menu->get_selected())->get_template(cname, parent_name->get_text());
+ scr = ScriptServer::get_language(language_menu->get_selected())->get_template(cname_param, parent_name->get_text());
}
- if (cname != "")
- scr->set_name(cname);
+ if (has_named_classes) {
+ String cname = class_name->get_text();
+ if (cname.length())
+ scr->set_name(cname);
+ }
if (!is_built_in) {
String lpath = ProjectSettings::get_singleton()->localize_path(file_path->get_text());
@@ -201,12 +208,20 @@ void ScriptCreateDialog::_lang_changed(int l) {
l = language_menu->get_selected();
ScriptLanguage *language = ScriptServer::get_language(l);
+
if (language->has_named_classes()) {
has_named_classes = true;
} else {
has_named_classes = false;
}
+ if (language->supports_builtin_mode()) {
+ supports_built_in = true;
+ } else {
+ supports_built_in = false;
+ is_built_in = false;
+ }
+
if (ScriptServer::get_language(l)->can_inherit_from_file()) {
can_inherit_from_file = true;
} else {
@@ -496,6 +511,9 @@ void ScriptCreateDialog::_update_dialog() {
}
}
+ if (!supports_built_in)
+ internal->set_pressed(false);
+
/* Is Script created or loaded from existing file */
if (is_new_script_created) {
@@ -503,7 +521,7 @@ void ScriptCreateDialog::_update_dialog() {
get_ok()->set_text(TTR("Create"));
parent_name->set_editable(true);
parent_browse_button->set_disabled(false);
- internal->set_disabled(false);
+ internal->set_disabled(!supports_built_in);
if (is_built_in) {
_msg_path_valid(true, TTR("Built-in script (into scene file)"));
} else {
@@ -734,6 +752,7 @@ ScriptCreateDialog::ScriptCreateDialog() {
is_path_valid = false;
has_named_classes = false;
+ supports_built_in = false;
can_inherit_from_file = false;
is_built_in = false;
diff --git a/editor/script_create_dialog.h b/editor/script_create_dialog.h
index d16c523f0a..c7bbc82d47 100644
--- a/editor/script_create_dialog.h
+++ b/editor/script_create_dialog.h
@@ -62,6 +62,7 @@ class ScriptCreateDialog : public ConfirmationDialog {
bool is_new_script_created;
bool is_path_valid;
bool has_named_classes;
+ bool supports_built_in;
bool can_inherit_from_file;
bool is_parent_name_valid;
bool is_class_name_valid;
diff --git a/editor/script_editor_debugger.cpp b/editor/script_editor_debugger.cpp
index 5ad4674f7f..bc2423fffd 100644
--- a/editor/script_editor_debugger.cpp
+++ b/editor/script_editor_debugger.cpp
@@ -574,7 +574,38 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
for (int i = 0; i < arr.size(); i++) {
p[i] = arr[i];
if (i < perf_items.size()) {
- perf_items[i]->set_text(1, rtos(p[i]));
+
+ float v = p[i];
+ String vs = rtos(v);
+ String tt = vs;
+ switch (Performance::MonitorType((int)perf_items[i]->get_metadata(1))) {
+ case Performance::MONITOR_TYPE_MEMORY: {
+ // for the time being, going above GBs is a bad sign.
+ String unit = "B";
+ if ((int)v > 1073741824) {
+ unit = "GB";
+ v /= 1073741824.0;
+ } else if ((int)v > 1048576) {
+ unit = "MB";
+ v /= 1048576.0;
+ } else if ((int)v > 1024) {
+ unit = "KB";
+ v /= 1024.0;
+ }
+ tt += " bytes";
+ vs = rtos(v) + " " + unit;
+ } break;
+ case Performance::MONITOR_TYPE_TIME: {
+ tt += " seconds";
+ vs += " s";
+ } break;
+ default: {
+ tt += " " + perf_items[i]->get_text(0);
+ } break;
+ }
+
+ perf_items[i]->set_text(1, vs);
+ perf_items[i]->set_tooltip(1, tt);
if (p[i] > perf_max[i])
perf_max[i] = p[i];
}
@@ -663,7 +694,7 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
EditorProfiler::Metric::Category::Item item;
item.calls = 1;
item.line = 0;
- item.name = "Fixed Time";
+ item.name = "Physics Time";
item.total = metric.physics_time;
item.self = item.total;
item.signature = "physics_time";
@@ -677,7 +708,7 @@ void ScriptEditorDebugger::_parse_message(const String &p_msg, const Array &p_da
frame_time.items.push_back(item);
- item.name = "Fixed Frame Time";
+ item.name = "Physics Frame Time";
item.total = metric.physics_frame_time;
item.self = item.total;
item.signature = "physics_frame_time";
@@ -775,7 +806,7 @@ void ScriptEditorDebugger::_set_reason_text(const String &p_reason, MessageType
reason->set_tooltip(p_reason);
}
-void ScriptEditorDebugger::_performance_select(Object *, int, bool) {
+void ScriptEditorDebugger::_performance_select() {
perf_draw->update();
}
@@ -785,7 +816,7 @@ void ScriptEditorDebugger::_performance_draw() {
Vector<int> which;
for (int i = 0; i < perf_items.size(); i++) {
- if (perf_items[i]->is_selected(0))
+ if (perf_items[i]->is_checked(0))
which.push_back(i);
}
@@ -816,14 +847,14 @@ void ScriptEditorDebugger::_performance_draw() {
r.position += graph_sb->get_offset();
r.size -= graph_sb->get_minimum_size();
int pi = which[i];
- Color c = get_color("success_color", "Editor");
- c.set_hsv(Math::fmod(c.get_h() + pi * 0.7654, 1), c.get_s(), c.get_v());
- //c = c.linear_interpolate(get_color("base_color", "Editor"), 0.9);
+ Color c = get_color("accent_color", "Editor");
+ float h = (float)which[i] / (float)(perf_items.size());
+ c.set_hsv(Math::fmod(h + 0.4, 0.9), c.get_s() * 0.9, c.get_v() * 1.4);
- c.a = 0.8;
- perf_draw->draw_string(graph_font, r.position + Point2(0, graph_font->get_ascent()), perf_items[pi]->get_text(0), c, r.size.x);
c.a = 0.6;
- perf_draw->draw_string(graph_font, r.position + Point2(graph_font->get_char_size('X').width, graph_font->get_ascent() + graph_font->get_height()), perf_items[pi]->get_text(1), c, r.size.y);
+ perf_draw->draw_string(graph_font, r.position + Point2(0, graph_font->get_ascent()), perf_items[pi]->get_text(0), c, r.size.x);
+ c.a = 0.9;
+ perf_draw->draw_string(graph_font, r.position + Point2(0, graph_font->get_ascent() + graph_font->get_height()), perf_items[pi]->get_text(1), c, r.size.y);
float spacing = point_sep / float(cols);
float from = r.size.width;
@@ -1785,13 +1816,12 @@ ScriptEditorDebugger::ScriptEditorDebugger(EditorNode *p_editor) {
perf_monitors->set_column_title(1, TTR("Value"));
perf_monitors->set_column_titles_visible(true);
hsp->add_child(perf_monitors);
- perf_monitors->set_select_mode(Tree::SELECT_MULTI);
- perf_monitors->connect("multi_selected", this, "_performance_select");
+ perf_monitors->connect("item_edited", this, "_performance_select");
perf_draw = memnew(Control);
perf_draw->connect("draw", this, "_performance_draw");
hsp->add_child(perf_draw);
hsp->set_name(TTR("Monitors"));
- hsp->set_split_offset(300);
+ hsp->set_split_offset(340 * EDSCALE);
tabs->add_child(hsp);
perf_max.resize(Performance::MONITOR_MAX);
@@ -1801,6 +1831,7 @@ ScriptEditorDebugger::ScriptEditorDebugger(EditorNode *p_editor) {
for (int i = 0; i < Performance::MONITOR_MAX; i++) {
String n = Performance::get_singleton()->get_monitor_name(Performance::Monitor(i));
+ Performance::MonitorType mtype = Performance::get_singleton()->get_monitor_type(Performance::Monitor(i));
String base = n.get_slice("/", 0);
String name = n.get_slice("/", 1);
if (!bases.has(base)) {
@@ -1808,12 +1839,16 @@ ScriptEditorDebugger::ScriptEditorDebugger(EditorNode *p_editor) {
b->set_text(0, base.capitalize());
b->set_editable(0, false);
b->set_selectable(0, false);
+ b->set_expand_right(0, true);
bases[base] = b;
}
TreeItem *it = perf_monitors->create_item(bases[base]);
- it->set_editable(0, false);
- it->set_selectable(0, true);
+ it->set_metadata(1, mtype);
+ it->set_cell_mode(0, TreeItem::CELL_MODE_CHECK);
+ it->set_editable(0, true);
+ it->set_selectable(0, false);
+ it->set_selectable(1, false);
it->set_text(0, name.capitalize());
perf_items.push_back(it);
perf_max[i] = 0;
diff --git a/editor/script_editor_debugger.h b/editor/script_editor_debugger.h
index 64ac2535a9..d18a625eef 100644
--- a/editor/script_editor_debugger.h
+++ b/editor/script_editor_debugger.h
@@ -142,7 +142,7 @@ class ScriptEditorDebugger : public Control {
bool live_debug;
void _performance_draw();
- void _performance_select(Object *, int, bool);
+ void _performance_select();
void _stack_dump_frame_selected();
void _output_clear();
@@ -166,9 +166,6 @@ class ScriptEditorDebugger : public Control {
void _method_changed(Object *p_base, const StringName &p_name, VARIANT_ARG_DECLARE);
void _property_changed(Object *p_base, const StringName &p_property, const Variant &p_value);
- static void _method_changeds(void *p_ud, Object *p_base, const StringName &p_name, VARIANT_ARG_DECLARE);
- static void _property_changeds(void *p_ud, Object *p_base, const StringName &p_property, const Variant &p_value);
-
void _error_selected(int p_idx);
void _error_stack_selected(int p_idx);
@@ -196,6 +193,9 @@ public:
void set_live_debugging(bool p_enable);
+ static void _method_changeds(void *p_ud, Object *p_base, const StringName &p_name, VARIANT_ARG_DECLARE);
+ static void _property_changeds(void *p_ud, Object *p_base, const StringName &p_property, const Variant &p_value);
+
void live_debug_create_node(const NodePath &p_parent, const String &p_type, const String &p_name);
void live_debug_instance_node(const NodePath &p_parent, const String &p_path, const String &p_name);
void live_debug_remove_node(const NodePath &p_at);
diff --git a/editor/settings_config_dialog.cpp b/editor/settings_config_dialog.cpp
index 86979a1174..c052845be9 100644
--- a/editor/settings_config_dialog.cpp
+++ b/editor/settings_config_dialog.cpp
@@ -35,6 +35,7 @@
#include "os/keyboard.h"
#include "project_settings.h"
#include "scene/gui/margin_container.h"
+#include "script_editor_debugger.h"
void EditorSettingsDialog::ok_pressed() {
@@ -91,6 +92,7 @@ void EditorSettingsDialog::popup_edit_settings() {
search_box->grab_focus();
_update_shortcuts();
+ 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")) {
@@ -121,19 +123,62 @@ void EditorSettingsDialog::_filter_shortcuts(const String &p_filter) {
_update_shortcuts();
}
+void EditorSettingsDialog::_undo_redo_callback(void *p_self, const String &p_name) {
+ EditorNode::get_log()->add_message(p_name);
+}
+
void EditorSettingsDialog::_notification(int p_what) {
switch (p_what) {
+ case NOTIFICATION_READY: {
+ ScriptEditorDebugger *sed = ScriptEditor::get_singleton()->get_debugger();
+ undo_redo->set_method_notify_callback(sed->_method_changeds, sed);
+ undo_redo->set_property_notify_callback(sed->_property_changeds, sed);
+ undo_redo->set_commit_notify_callback(_undo_redo_callback, this);
+ } break;
case NOTIFICATION_ENTER_TREE: {
clear_button->set_icon(get_icon("Close", "EditorIcons"));
shortcut_clear_button->set_icon(get_icon("Close", "EditorIcons"));
} break;
case NOTIFICATION_POPUP_HIDE: {
EditorSettings::get_singleton()->set("interface/dialogs/editor_settings_bounds", get_rect());
+ set_process_unhandled_input(false);
} break;
}
}
+void EditorSettingsDialog::_unhandled_input(const Ref<InputEvent> &p_event) {
+
+ Ref<InputEventKey> k = p_event;
+
+ if (k.is_valid() && is_window_modal_on_top()) {
+
+ if (k->is_pressed()) {
+
+ bool handled = false;
+
+ if (ED_IS_SHORTCUT("editor/undo", p_event)) {
+ String action = undo_redo->get_current_action_name();
+ if (action != "")
+ EditorNode::get_log()->add_message("UNDO: " + action);
+ undo_redo->undo();
+ handled = true;
+ }
+ if (ED_IS_SHORTCUT("editor/redo", p_event)) {
+ undo_redo->redo();
+ String action = undo_redo->get_current_action_name();
+ if (action != "")
+ EditorNode::get_log()->add_message("REDO: " + action);
+ handled = true;
+ }
+
+ if (handled) {
+ accept_event();
+ }
+ }
+ }
+}
+
void EditorSettingsDialog::_update_shortcuts() {
shortcuts->clear();
@@ -212,30 +257,28 @@ void EditorSettingsDialog::_shortcut_button_pressed(Object *p_item, int p_column
if (!sc.is_valid())
return; //pointless, there is nothing
- UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo();
- ur->create_action("Erase Shortcut");
- ur->add_do_method(sc.ptr(), "set_shortcut", Ref<InputEvent>());
- ur->add_undo_method(sc.ptr(), "set_shortcut", sc->get_shortcut());
- ur->add_do_method(this, "_update_shortcuts");
- ur->add_undo_method(this, "_update_shortcuts");
- ur->add_do_method(this, "_settings_changed");
- ur->add_undo_method(this, "_settings_changed");
- ur->commit_action();
+ undo_redo->create_action("Erase Shortcut");
+ undo_redo->add_do_method(sc.ptr(), "set_shortcut", Ref<InputEvent>());
+ undo_redo->add_undo_method(sc.ptr(), "set_shortcut", sc->get_shortcut());
+ undo_redo->add_do_method(this, "_update_shortcuts");
+ undo_redo->add_undo_method(this, "_update_shortcuts");
+ undo_redo->add_do_method(this, "_settings_changed");
+ undo_redo->add_undo_method(this, "_settings_changed");
+ undo_redo->commit_action();
} else if (p_idx == 2) { //revert to original
if (!sc.is_valid())
return; //pointless, there is nothing
Ref<InputEvent> original = sc->get_meta("original");
- UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo();
- ur->create_action("Restore Shortcut");
- ur->add_do_method(sc.ptr(), "set_shortcut", original);
- ur->add_undo_method(sc.ptr(), "set_shortcut", sc->get_shortcut());
- ur->add_do_method(this, "_update_shortcuts");
- ur->add_undo_method(this, "_update_shortcuts");
- ur->add_do_method(this, "_settings_changed");
- ur->add_undo_method(this, "_settings_changed");
- ur->commit_action();
+ undo_redo->create_action("Restore Shortcut");
+ undo_redo->add_do_method(sc.ptr(), "set_shortcut", original);
+ undo_redo->add_undo_method(sc.ptr(), "set_shortcut", sc->get_shortcut());
+ undo_redo->add_do_method(this, "_update_shortcuts");
+ undo_redo->add_undo_method(this, "_update_shortcuts");
+ undo_redo->add_do_method(this, "_settings_changed");
+ undo_redo->add_undo_method(this, "_settings_changed");
+ undo_redo->commit_action();
}
}
@@ -276,19 +319,19 @@ void EditorSettingsDialog::_press_a_key_confirm() {
Ref<ShortCut> sc = EditorSettings::get_singleton()->get_shortcut(shortcut_configured);
- UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo();
- ur->create_action("Change Shortcut '" + shortcut_configured + "'");
- ur->add_do_method(sc.ptr(), "set_shortcut", ie);
- ur->add_undo_method(sc.ptr(), "set_shortcut", sc->get_shortcut());
- ur->add_do_method(this, "_update_shortcuts");
- ur->add_undo_method(this, "_update_shortcuts");
- ur->add_do_method(this, "_settings_changed");
- ur->add_undo_method(this, "_settings_changed");
- ur->commit_action();
+ undo_redo->create_action("Change Shortcut '" + shortcut_configured + "'");
+ undo_redo->add_do_method(sc.ptr(), "set_shortcut", ie);
+ undo_redo->add_undo_method(sc.ptr(), "set_shortcut", sc->get_shortcut());
+ undo_redo->add_do_method(this, "_update_shortcuts");
+ undo_redo->add_undo_method(this, "_update_shortcuts");
+ undo_redo->add_do_method(this, "_settings_changed");
+ undo_redo->add_undo_method(this, "_settings_changed");
+ undo_redo->commit_action();
}
void EditorSettingsDialog::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("_unhandled_input"), &EditorSettingsDialog::_unhandled_input);
ClassDB::bind_method(D_METHOD("_settings_save"), &EditorSettingsDialog::_settings_save);
ClassDB::bind_method(D_METHOD("_settings_changed"), &EditorSettingsDialog::_settings_changed);
ClassDB::bind_method(D_METHOD("_settings_property_edited"), &EditorSettingsDialog::_settings_property_edited);
@@ -305,6 +348,7 @@ EditorSettingsDialog::EditorSettingsDialog() {
set_title(TTR("Editor Settings"));
set_resizable(true);
+ undo_redo = memnew(UndoRedo);
tabs = memnew(TabContainer);
tabs->set_tab_align(TabContainer::ALIGN_LEFT);
@@ -336,7 +380,7 @@ EditorSettingsDialog::EditorSettingsDialog() {
property_editor->get_property_editor()->set_use_filter(true);
property_editor->register_search_box(search_box);
property_editor->set_v_size_flags(Control::SIZE_EXPAND_FILL);
- property_editor->get_property_editor()->set_undo_redo(EditorNode::get_singleton()->get_undo_redo());
+ property_editor->get_property_editor()->set_undo_redo(undo_redo);
vbc->add_child(property_editor);
property_editor->get_property_editor()->connect("property_edited", this, "_settings_property_edited");
@@ -400,3 +444,7 @@ EditorSettingsDialog::EditorSettingsDialog() {
updating = false;
}
+
+EditorSettingsDialog::~EditorSettingsDialog() {
+ memdelete(undo_redo);
+}
diff --git a/editor/settings_config_dialog.h b/editor/settings_config_dialog.h
index 8a66d5098c..a03b15c06d 100644
--- a/editor/settings_config_dialog.h
+++ b/editor/settings_config_dialog.h
@@ -50,6 +50,7 @@ class EditorSettingsDialog : public AcceptDialog {
Timer *timer;
+ UndoRedo *undo_redo;
Tree *shortcuts;
ConfirmationDialog *press_a_key;
@@ -65,6 +66,7 @@ class EditorSettingsDialog : public AcceptDialog {
void _settings_property_edited(const String &p_name);
void _settings_save();
+ void _unhandled_input(const Ref<InputEvent> &p_event);
void _notification(int p_what);
void _press_a_key_confirm();
@@ -78,6 +80,8 @@ class EditorSettingsDialog : public AcceptDialog {
void _update_shortcuts();
void _shortcut_button_pressed(Object *p_item, int p_column, int p_idx);
+ static void _undo_redo_callback(void *p_self, const String &p_name);
+
protected:
static void _bind_methods();
@@ -85,6 +89,7 @@ public:
void popup_edit_settings();
EditorSettingsDialog();
+ ~EditorSettingsDialog();
};
#endif // SETTINGS_CONFIG_DIALOG_H
diff --git a/editor/spatial_editor_gizmos.cpp b/editor/spatial_editor_gizmos.cpp
index 3c1889e829..3f8d93d976 100644
--- a/editor/spatial_editor_gizmos.cpp
+++ b/editor/spatial_editor_gizmos.cpp
@@ -298,11 +298,11 @@ void EditorSpatialGizmo::add_handles(const Vector<Vector3> &p_handles, bool p_bi
}
}
-void EditorSpatialGizmo::add_solid_box(Ref<Material> &p_material, Vector3 size) {
+void EditorSpatialGizmo::add_solid_box(Ref<Material> &p_material, Vector3 p_size) {
ERR_FAIL_COND(!spatial_node);
CubeMesh cubem;
- cubem.set_size(size);
+ cubem.set_size(p_size);
Ref<ArrayMesh> m = memnew(ArrayMesh);
m->add_surface_from_arrays(cubem.surface_get_primitive_type(0), cubem.surface_get_arrays(0));
m->surface_set_material(0, p_material);
diff --git a/editor/translations/ar.po b/editor/translations/ar.po
index f98fa91e30..0309680da9 100644
--- a/editor/translations/ar.po
+++ b/editor/translations/ar.po
@@ -1,16 +1,20 @@
# Arabic translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# athomield <athomield@hotmail.com>, 2017.
+# Basil Al-Khateeb <basil.y.alkhateeb@gmail.com>, 2017.
# Mohammmad Khashashneh <mohammad.rasmi@gmail.com>, 2016.
+# omar anwar aglan <omar.aglan91@yahoo.com>, 2017.
# OWs Tetra <owstetra@gmail.com>, 2017.
+# Wajdi Feki <wajdi.feki@gmail.com>, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-03-29 16:30+0000\n"
-"Last-Translator: OWs Tetra <owstetra@gmail.com>\n"
+"PO-Revision-Date: 2017-10-25 20:58+0000\n"
+"Last-Translator: Wajdi Feki <wajdi.feki@gmail.com>\n"
"Language-Team: Arabic <https://hosted.weblate.org/projects/godot-engine/"
"godot/ar/>\n"
"Language: ar\n"
@@ -18,752 +22,520 @@ msgstr ""
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n"
-"X-Generator: Weblate 2.13-dev\n"
+"X-Generator: Weblate 2.17\n"
#: editor/animation_editor.cpp
msgid "Disabled"
-msgstr ""
+msgstr "معطّل"
#: editor/animation_editor.cpp
msgid "All Selection"
-msgstr ""
+msgstr "ÙƒÙÙ„ الإختيار"
#: editor/animation_editor.cpp
msgid "Move Add Key"
-msgstr ""
+msgstr "Ù…ÙØªØ§Ø­ Ø¥Ø¶Ø§ÙØ© الحركة"
#: editor/animation_editor.cpp
msgid "Anim Change Transition"
-msgstr ""
+msgstr "إنتقالية تغيير التحريك"
#: editor/animation_editor.cpp
msgid "Anim Change Transform"
-msgstr ""
+msgstr "تحويل تغيير التحريك"
#: editor/animation_editor.cpp
msgid "Anim Change Value"
-msgstr ""
+msgstr "قيمة تغيير التحريك"
#: editor/animation_editor.cpp
msgid "Anim Change Call"
-msgstr ""
+msgstr "نداء تغيير التحريك"
#: editor/animation_editor.cpp
msgid "Anim Add Track"
-msgstr ""
+msgstr "مسار Ø¥Ø¶Ø§ÙØ© التحريك"
#: editor/animation_editor.cpp
msgid "Anim Duplicate Keys"
-msgstr ""
+msgstr "Ù…ÙØ§ØªÙŠØ­ نسخ التحريك"
#: editor/animation_editor.cpp
msgid "Move Anim Track Up"
-msgstr ""
+msgstr "Ø±ÙØ¹ مسار التحريك"
#: editor/animation_editor.cpp
msgid "Move Anim Track Down"
-msgstr ""
+msgstr "إنزال مسار التحريك"
#: editor/animation_editor.cpp
msgid "Remove Anim Track"
-msgstr ""
+msgstr "حذ٠مسار التحريك"
#: editor/animation_editor.cpp
msgid "Set Transitions to:"
-msgstr ""
+msgstr "تحديد التحولات ل:"
#: editor/animation_editor.cpp
msgid "Anim Track Rename"
-msgstr ""
+msgstr "تغيير إسم مسار التحريك"
#: editor/animation_editor.cpp
msgid "Anim Track Change Interpolation"
-msgstr ""
+msgstr "تغيير إقحام مسار التحريك"
#: editor/animation_editor.cpp
msgid "Anim Track Change Value Mode"
-msgstr ""
+msgstr "تغيير صيغة القيمة لمسار التحريك"
#: editor/animation_editor.cpp
msgid "Anim Track Change Wrap Mode"
-msgstr ""
+msgstr "تغيير صيغة الغلا٠لمسار التحريك"
#: editor/animation_editor.cpp
msgid "Edit Node Curve"
-msgstr ""
+msgstr "تحرير منحى العقدة"
#: editor/animation_editor.cpp
msgid "Edit Selection Curve"
-msgstr ""
+msgstr "تحرير منحى الإختيار"
#: editor/animation_editor.cpp
msgid "Anim Delete Keys"
-msgstr "حذ٠الأطر الرئيسة"
+msgstr "Ù…ÙØ§ØªÙŠØ­ حذ٠التحريك"
#: editor/animation_editor.cpp editor/plugins/tile_map_editor_plugin.cpp
msgid "Duplicate Selection"
-msgstr ""
+msgstr "إختيار النسخ"
#: editor/animation_editor.cpp
msgid "Duplicate Transposed"
-msgstr ""
+msgstr "نسخ محمّل"
#: editor/animation_editor.cpp
msgid "Remove Selection"
-msgstr ""
+msgstr "حذ٠الإختيار"
#: editor/animation_editor.cpp
msgid "Continuous"
-msgstr ""
+msgstr "متواصل"
#: editor/animation_editor.cpp
msgid "Discrete"
-msgstr ""
+msgstr "متقطع"
#: editor/animation_editor.cpp
msgid "Trigger"
-msgstr ""
+msgstr "Ù…ÙØ·Ù„Ù‚"
#: editor/animation_editor.cpp
msgid "Anim Add Key"
-msgstr ""
+msgstr "Ù…ÙØªØ§Ø­ Ø¥Ø¶Ø§ÙØ© تحريك"
#: editor/animation_editor.cpp
msgid "Anim Move Keys"
-msgstr ""
+msgstr "Ù…ÙØªØ§Ø­ حركة التحريك"
#: editor/animation_editor.cpp
msgid "Scale Selection"
-msgstr ""
+msgstr "تكبير المحدد"
#: editor/animation_editor.cpp
msgid "Scale From Cursor"
-msgstr ""
+msgstr "تكبير من المؤشر"
#: editor/animation_editor.cpp
msgid "Goto Next Step"
-msgstr ""
+msgstr "إذهب إلي الخطوة التالية"
#: editor/animation_editor.cpp
msgid "Goto Prev Step"
-msgstr ""
+msgstr "إذهب إلي الخطوة السابقة"
#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
#: editor/property_editor.cpp
msgid "Linear"
-msgstr ""
+msgstr "خطي"
#: editor/animation_editor.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constant"
-msgstr ""
+msgstr "ثابت"
#: editor/animation_editor.cpp
msgid "In"
-msgstr ""
+msgstr "داخل"
#: editor/animation_editor.cpp
msgid "Out"
-msgstr ""
+msgstr "خارج"
#: editor/animation_editor.cpp
msgid "In-Out"
-msgstr ""
+msgstr "داخل-خارج"
#: editor/animation_editor.cpp
msgid "Out-In"
-msgstr ""
+msgstr "خارج-داخل"
#: editor/animation_editor.cpp
msgid "Transitions"
-msgstr ""
+msgstr "تحولات"
#: editor/animation_editor.cpp
msgid "Optimize Animation"
-msgstr ""
+msgstr "تحسين الحركة"
#: editor/animation_editor.cpp
msgid "Clean-Up Animation"
-msgstr ""
+msgstr "تنظي٠الحركة"
#: editor/animation_editor.cpp
msgid "Create NEW track for %s and insert key?"
-msgstr ""
+msgstr "أنشئ مسار جديد لـ %s Ùˆ أدخل Ù…ÙØªØ§Ø­ØŸ"
#: editor/animation_editor.cpp
msgid "Create %d NEW tracks and insert keys?"
-msgstr ""
+msgstr "أنشئ %d مسارات جديدة Ùˆ أدخل Ù…ÙØ§ØªÙŠØ­ØŸ"
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
-msgstr ""
+msgstr "أنشئ"
#: editor/animation_editor.cpp
msgid "Anim Create & Insert"
-msgstr ""
+msgstr "أنشي حركة وأدخلها"
#: editor/animation_editor.cpp
msgid "Anim Insert Track & Key"
-msgstr ""
+msgstr "أنشي مسار حركة Ùˆ Ù…ÙØªØ§Ø­"
#: editor/animation_editor.cpp
msgid "Anim Insert Key"
-msgstr ""
+msgstr "Ø£Ø¶Ù Ù…ÙØªØ§Ø­ حركة"
#: editor/animation_editor.cpp
msgid "Change Anim Len"
-msgstr ""
+msgstr "تغيير خط الحركة"
#: editor/animation_editor.cpp
msgid "Change Anim Loop"
-msgstr ""
+msgstr "تغيير تكرير الحركة"
#: editor/animation_editor.cpp
msgid "Anim Create Typed Value Key"
-msgstr ""
+msgstr "أنشي Ù…ÙØªØ§Ø­ حركة ذا قيمة مكتوبة"
#: editor/animation_editor.cpp
msgid "Anim Insert"
-msgstr ""
+msgstr "إدخال حركة"
#: editor/animation_editor.cpp
msgid "Anim Scale Keys"
-msgstr ""
+msgstr "Ù…ÙØªØ§Ø­ تكبير حركة"
#: editor/animation_editor.cpp
msgid "Anim Add Call Track"
-msgstr ""
+msgstr "أض٠خانة مسار حركة"
#: editor/animation_editor.cpp
msgid "Animation zoom."
-msgstr ""
+msgstr "تكبير الحركة."
#: editor/animation_editor.cpp
msgid "Length (s):"
-msgstr ""
+msgstr "الطول (ثانية):"
#: editor/animation_editor.cpp
msgid "Animation length (in seconds)."
-msgstr ""
+msgstr "طول الأنميشين (بالثواني)."
#: editor/animation_editor.cpp
msgid "Step (s):"
-msgstr ""
+msgstr "خطوة (ثانية):"
#: editor/animation_editor.cpp
msgid "Cursor step snap (in seconds)."
-msgstr ""
+msgstr "المؤشر خطوة خطوة (بالثواني)."
#: editor/animation_editor.cpp
msgid "Enable/Disable looping in animation."
-msgstr ""
+msgstr "تمكين/تعطيل التكرار ÙÙŠ الحركة."
#: editor/animation_editor.cpp
msgid "Add new tracks."
-msgstr ""
+msgstr "أض٠مسارات جديدة."
#: editor/animation_editor.cpp
msgid "Move current track up."
-msgstr ""
+msgstr "تحريك المسار الحالي للأعلى."
#: editor/animation_editor.cpp
msgid "Move current track down."
-msgstr ""
+msgstr "تحريك المسار الحالي للاسÙÙ„."
#: editor/animation_editor.cpp
msgid "Remove selected track."
-msgstr ""
+msgstr "ازالة المسار المحدد."
#: editor/animation_editor.cpp
msgid "Track tools"
-msgstr ""
+msgstr "أدوات المسار"
#: editor/animation_editor.cpp
msgid "Enable editing of individual keys by clicking them."
-msgstr ""
+msgstr "السماح بتعديل ازرار Ù…Ù†ÙØµÙ„Ø© بالضغط عليها."
#: editor/animation_editor.cpp
msgid "Anim. Optimizer"
-msgstr ""
+msgstr "Ù…ÙØ­Ø³Ù† الحركة"
#: editor/animation_editor.cpp
msgid "Max. Linear Error:"
-msgstr ""
+msgstr "أقصي أخطاء خطية:"
#: editor/animation_editor.cpp
msgid "Max. Angular Error:"
-msgstr ""
+msgstr "أقصي أخطاء زواية:"
#: editor/animation_editor.cpp
msgid "Max Optimizable Angle:"
-msgstr ""
+msgstr "أقصي زواية تحسين:"
#: editor/animation_editor.cpp
msgid "Optimize"
-msgstr ""
+msgstr "تحسين"
#: editor/animation_editor.cpp
msgid "Select an AnimationPlayer from the Scene Tree to edit animations."
-msgstr ""
+msgstr "خدد مشغل حركة من شجرة المشهد لكي تعدل الحركة."
#: editor/animation_editor.cpp
msgid "Key"
-msgstr ""
+msgstr "Ù…ÙØªØ§Ø­"
#: editor/animation_editor.cpp
msgid "Transition"
-msgstr ""
+msgstr "تحول"
#: editor/animation_editor.cpp
msgid "Scale Ratio:"
-msgstr ""
+msgstr "نسبة التكبير:"
#: editor/animation_editor.cpp
msgid "Call Functions in Which Node?"
-msgstr ""
+msgstr "إستدعاء وظائ٠ÙÙŠ أي عقدة؟"
#: editor/animation_editor.cpp
msgid "Remove invalid keys"
-msgstr ""
+msgstr "إمسح Ø§Ù„Ù…ÙØ§ØªÙŠØ­ Ø§Ù„ÙØ§Ø³Ø¯Ø©"
#: editor/animation_editor.cpp
msgid "Remove unresolved and empty tracks"
-msgstr ""
+msgstr "إمسح المسارات Ø§Ù„ÙØ§Ø±ØºØ© أو الغير محلولة"
#: editor/animation_editor.cpp
msgid "Clean-up all animations"
-msgstr ""
+msgstr "تنظي٠جميع الحركات"
#: editor/animation_editor.cpp
msgid "Clean-Up Animation(s) (NO UNDO!)"
-msgstr ""
+msgstr "تنظي٠الحركة(ات) (بلا عودة)"
#: editor/animation_editor.cpp
msgid "Clean-Up"
-msgstr ""
+msgstr "تنظيÙ"
#: editor/array_property_edit.cpp
msgid "Resize Array"
-msgstr ""
+msgstr "تغيير حجم المصÙÙˆÙØ©"
#: editor/array_property_edit.cpp
msgid "Change Array Value Type"
-msgstr ""
+msgstr "تغيير نوع القيم ÙÙŠ المصÙÙˆÙØ©"
#: editor/array_property_edit.cpp
msgid "Change Array Value"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connecting.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Requesting.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Error making request"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "الموقع:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "مجتمع"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr "مل٠اصول مضغوطة"
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr ""
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "نداء"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr ""
+msgstr "تغيير قيمة ÙÙŠ المصÙÙˆÙØ©"
#: editor/code_editor.cpp
msgid "Go to Line"
-msgstr ""
+msgstr "إذهب إلي الخط"
#: editor/code_editor.cpp
msgid "Line Number:"
-msgstr ""
+msgstr "رقم الخط:"
#: editor/code_editor.cpp
msgid "No Matches"
-msgstr ""
+msgstr "لا مطابقة"
#: editor/code_editor.cpp
msgid "Replaced %d occurrence(s)."
-msgstr ""
+msgstr "Ø¥Ø³ØªØ¨ÙØ¯Ù„ %d حادثة(حوادث)."
#: editor/code_editor.cpp
msgid "Replace"
-msgstr ""
+msgstr "إستبدال"
#: editor/code_editor.cpp
msgid "Replace All"
-msgstr ""
+msgstr "إستبدال الكل"
#: editor/code_editor.cpp
msgid "Match Case"
-msgstr ""
+msgstr "قضية تشابه"
#: editor/code_editor.cpp
msgid "Whole Words"
-msgstr ""
+msgstr "كل الكلمات"
#: editor/code_editor.cpp
msgid "Selection Only"
-msgstr ""
+msgstr "المحدد Ùقط"
+
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "بحث"
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
-msgstr ""
+msgstr "جد"
#: editor/code_editor.cpp
msgid "Next"
-msgstr ""
+msgstr "التالي"
#: editor/code_editor.cpp
msgid "Not found!"
-msgstr ""
+msgstr "لم يوجد!"
#: editor/code_editor.cpp
msgid "Replace By"
-msgstr ""
+msgstr "إستبدلت بـ"
#: editor/code_editor.cpp
msgid "Case Sensitive"
-msgstr ""
+msgstr "حساسة لحالة الأحرÙ"
#: editor/code_editor.cpp
msgid "Backwards"
-msgstr ""
+msgstr "إلي الخلÙ"
#: editor/code_editor.cpp
msgid "Prompt On Replace"
-msgstr ""
+msgstr "تأكيد عند الإستبدال"
#: editor/code_editor.cpp
msgid "Skip"
-msgstr ""
+msgstr "تخطي"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
-msgstr ""
+msgstr "تقريب"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
-msgstr ""
+msgstr "إبعاد"
#: editor/code_editor.cpp
msgid "Reset Zoom"
-msgstr ""
+msgstr "إرجاع التكبير"
#: editor/code_editor.cpp editor/script_editor_debugger.cpp
msgid "Line:"
-msgstr ""
+msgstr "الخط:"
#: editor/code_editor.cpp
msgid "Col:"
-msgstr ""
+msgstr "العمود:"
#: editor/connections_dialog.cpp
msgid "Method in target Node must be specified!"
-msgstr ""
+msgstr "الطريقة ÙÙŠ العقدة Ø§Ù„Ù…Ø³ØªÙ‡Ø¯ÙØ© يجب أن تكون محدّدة!"
#: editor/connections_dialog.cpp
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:"
-msgstr ""
+msgstr "صلها بالعقدة:"
#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
msgid "Add"
-msgstr ""
+msgstr "أضÙ"
#: editor/connections_dialog.cpp editor/dependency_editor.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
#: editor/project_settings_editor.cpp
msgid "Remove"
-msgstr ""
+msgstr "إمسح"
#: editor/connections_dialog.cpp
msgid "Add Extra Call Argument:"
-msgstr ""
+msgstr "Ø¥Ø¶Ø§ÙØ© وسيطة إستدعاء إضاÙية"
#: editor/connections_dialog.cpp
msgid "Extra Call Arguments:"
-msgstr ""
+msgstr "وسائط إستدعاء إضاÙية :"
#: editor/connections_dialog.cpp
msgid "Path to Node:"
-msgstr ""
+msgstr "مسار العقدة:"
#: editor/connections_dialog.cpp
msgid "Make Function"
-msgstr ""
+msgstr "إصنع دالة"
#: editor/connections_dialog.cpp
msgid "Deferred"
-msgstr ""
+msgstr "مؤجل"
#: editor/connections_dialog.cpp
msgid "Oneshot"
-msgstr ""
+msgstr "لقطة واحدة"
+
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "اغلاق"
#: editor/connections_dialog.cpp
msgid "Connect"
-msgstr ""
+msgstr "وصل"
#: editor/connections_dialog.cpp
msgid "Connect '%s' to '%s'"
-msgstr ""
+msgstr "وصل '%s' إلي '%s'"
#: editor/connections_dialog.cpp
msgid "Connecting Signal:"
-msgstr ""
+msgstr "يوصل الإشارة:"
#: editor/connections_dialog.cpp
msgid "Create Subscription"
@@ -771,89 +543,110 @@ msgstr "عمل اشتراك"
#: editor/connections_dialog.cpp
msgid "Connect.."
-msgstr ""
+msgstr "يتصل..."
#: editor/connections_dialog.cpp
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Disconnect"
-msgstr ""
+msgstr "قطع الاتصال"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
-msgstr ""
+msgstr "الإشارات"
#: editor/create_dialog.cpp
msgid "Create New"
-msgstr ""
+msgstr "إصنع جديد"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
#: editor/filesystem_dock.cpp
msgid "Favorites:"
-msgstr ""
+msgstr "Ø§Ù„Ù…ÙØ¶Ù„Ø©:"
#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
msgid "Recent:"
-msgstr ""
+msgstr "الحالي:"
+
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "بحث:"
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
-msgstr ""
+msgstr "يطابق:"
+
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "الوصÙ:"
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
-msgstr ""
+msgstr "البحث عن بديل لـ:"
#: editor/dependency_editor.cpp
msgid "Dependencies For:"
-msgstr ""
+msgstr "تابعة لـ:"
#: editor/dependency_editor.cpp
msgid ""
"Scene '%s' is currently being edited.\n"
"Changes will not take effect unless reloaded."
msgstr ""
+"المشهد '%s' هو حالياً جاري تعديله.\n"
+"التغييرات لن تحصل حتي يتم إعادة التشغيل."
#: editor/dependency_editor.cpp
msgid ""
"Resource '%s' is in use.\n"
"Changes will take effect when reloaded."
msgstr ""
+"المورد '%s' قيد الإستخدام.\n"
+"التغييرات ستظهر بعد إعادة التشغيل."
#: editor/dependency_editor.cpp
msgid "Dependencies"
-msgstr ""
+msgstr "التبعيات"
#: editor/dependency_editor.cpp
msgid "Resource"
-msgstr ""
+msgstr "مورد"
#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
#: editor/project_manager.cpp editor/project_settings_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Path"
-msgstr ""
+msgstr "مسار"
#: editor/dependency_editor.cpp
msgid "Dependencies:"
-msgstr ""
+msgstr "التبعيات:"
#: editor/dependency_editor.cpp
msgid "Fix Broken"
-msgstr ""
+msgstr "أصلح المعطوب"
#: editor/dependency_editor.cpp
msgid "Dependency Editor"
-msgstr ""
+msgstr "محرر التبعيات"
#: editor/dependency_editor.cpp
msgid "Search Replacement Resource:"
-msgstr ""
+msgstr "البحث عن مورد بديل:"
#: editor/dependency_editor.cpp
msgid "Owners Of:"
-msgstr ""
+msgstr "ملاك:"
+
+#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr "إمسح Ø§Ù„Ù…Ù„ÙØ§Øª المحددة من المشروع؟ (لا رجعة)"
#: editor/dependency_editor.cpp
msgid ""
@@ -861,101 +654,132 @@ msgid ""
"work.\n"
"Remove them anyway? (no undo)"
msgstr ""
+"المل٠الذي يمسح مطلوب من موارد أخري لكل تعمل جيداً.\n"
+"إمسح علي أية حال؟ (لا رجعة)"
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
-msgstr ""
+#, fuzzy
+msgid "Cannot remove:\n"
+msgstr "لا يمكن الحل."
#: editor/dependency_editor.cpp
msgid "Error loading:"
-msgstr ""
+msgstr "خطآ ÙÙŠ التحميل:"
#: editor/dependency_editor.cpp
msgid "Scene failed to load due to missing dependencies:"
-msgstr ""
+msgstr "ÙØ´Ù„ ÙÙŠ تحميل المشهد بسبب وجود Ù…Ù„ÙØ§Øª Ù…Ùقودة يعتمد المشهد عليها:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
msgid "Open Anyway"
-msgstr ""
+msgstr "Ø¥ÙØªØ­ علي أية حال"
#: editor/dependency_editor.cpp
msgid "Which action should be taken?"
-msgstr ""
+msgstr "ماذا يجب أن ÙŠÙÙØ¹Ù„ØŸ"
#: editor/dependency_editor.cpp
msgid "Fix Dependencies"
-msgstr ""
+msgstr "أصلح التبعيات"
#: editor/dependency_editor.cpp
msgid "Errors loading!"
-msgstr ""
+msgstr "اخطاء ÙÙŠ التحميل!"
#: editor/dependency_editor.cpp
msgid "Permanently delete %d item(s)? (No undo!)"
-msgstr ""
+msgstr "إمسح نهائيا %d عنصر(عناصر)؟ (بلا رجعة!)"
#: editor/dependency_editor.cpp
msgid "Owns"
-msgstr ""
+msgstr "يملك"
#: editor/dependency_editor.cpp
msgid "Resources Without Explicit Ownership:"
-msgstr ""
+msgstr "موارد من غير مالك صريح:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
msgid "Orphan Resource Explorer"
-msgstr ""
+msgstr "Ù…ØªØµÙØ­ الموارد Ø£ÙˆØ±ÙØ§Ù†"
#: editor/dependency_editor.cpp
msgid "Delete selected files?"
-msgstr ""
+msgstr "إمسح Ø§Ù„Ù…Ù„ÙØ§Øª المحددة؟"
#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
#: editor/editor_node.cpp editor/filesystem_dock.cpp
#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
msgid "Delete"
-msgstr ""
+msgstr "مسح"
#: editor/editor_about.cpp
msgid "Thanks from the Godot community!"
-msgstr ""
+msgstr "شكراً من مجتمع Godot!"
#: editor/editor_about.cpp
msgid "Thanks!"
-msgstr ""
+msgstr "شكراً!"
#: editor/editor_about.cpp
msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Authors"
-msgstr ""
+msgstr "المسهامين ÙÙŠ محرك Godot"
#: editor/editor_about.cpp
msgid "Project Founders"
-msgstr ""
+msgstr "مؤسسون المشروع"
#: editor/editor_about.cpp
msgid "Lead Developer"
-msgstr ""
+msgstr "قائد المطوريين"
#: editor/editor_about.cpp editor/project_manager.cpp
msgid "Project Manager"
-msgstr ""
+msgstr "مدير المشروع"
#: editor/editor_about.cpp
msgid "Developers"
-msgstr ""
+msgstr "المطورون"
+
+#: editor/editor_about.cpp
+msgid "Authors"
+msgstr "المالكون"
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr "الرعاة البلاتينيين"
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr "الرعاة الذهبيين"
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr "الرعاة الصغار"
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr "المانحين الذهبيين"
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr "المانحين Ø§Ù„ÙØ¶ÙŠÙŠÙ†"
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr "المانحين البرنزيين"
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr "مانحين"
#: editor/editor_about.cpp
msgid "License"
-msgstr ""
+msgstr "الترخيص"
#: editor/editor_about.cpp
msgid "Thirdparty License"
-msgstr ""
+msgstr "ترخيص الطر٠الثالث"
#: editor/editor_about.cpp
msgid ""
@@ -964,344 +788,343 @@ msgid ""
"is an exhaustive list of all such thirdparty components with their "
"respective copyright statements and license terms."
msgstr ""
+"محرك \"Godot\" يعتمد على عدد من المكتبات و المكونات البرمجية لملاك اخرين و "
+"لكنها مجانية Ùˆ Ù…ÙØªÙˆØ­Ø© المصدر، Ùˆ كلها متÙقة مع شروط الاستخدام لرخصة \"MIT\". "
+"ÙÙŠ ما يلي قائمة تحوي جميع هذه المكونات Ø§Ø¶Ø§ÙØ© الى حقوق النشر Ùˆ شروط الاستخدام "
+"الخاصة بها."
#: editor/editor_about.cpp
msgid "All Components"
-msgstr ""
+msgstr "كل المكونات"
#: editor/editor_about.cpp
msgid "Components"
-msgstr ""
+msgstr "مكونات"
#: editor/editor_about.cpp
msgid "Licenses"
-msgstr ""
+msgstr "تراخيص"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Error opening package file, not in zip format."
-msgstr ""
+msgstr "خطأ Ø¹Ù†Ø¯ÙØªØ­ مل٠الحزمة بسبب أن المل٠ليس ÙÙŠ صيغة \"ZIP\"."
#: editor/editor_asset_installer.cpp
msgid "Uncompressing Assets"
-msgstr ""
+msgstr "ÙŠÙكك الضغط عن الأصول"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Package Installed Successfully!"
-msgstr ""
+msgstr "الحزمة تم تثبيتها بنجاح!"
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr "تم بنجاح!"
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr "تثبيت"
#: editor/editor_asset_installer.cpp
msgid "Package Installer"
-msgstr ""
+msgstr "مثبت الحزم"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
-msgstr ""
+msgstr "مكبرات الصوت"
#: editor/editor_audio_buses.cpp
msgid "Add Effect"
-msgstr ""
+msgstr "أض٠تأثير"
#: editor/editor_audio_buses.cpp
msgid "Rename Audio Bus"
-msgstr ""
+msgstr "إعادة تسمية بيوس الصوت"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Solo"
-msgstr ""
+msgstr "تبديل بيوس الصوت إلي ÙØ±Ø¯ÙŠ"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Mute"
-msgstr ""
+msgstr "تبديل بيوس الصوت إلي صامت"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Bypass Effects"
-msgstr ""
+msgstr "تبديل بيوس الصوت إلي موثرات التبديل"
#: editor/editor_audio_buses.cpp
msgid "Select Audio Bus Send"
-msgstr ""
+msgstr "حدد بيوس الصوت للإرسال"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus Effect"
-msgstr ""
+msgstr "أض٠موثرات إلي بيوس الصوت"
#: editor/editor_audio_buses.cpp
msgid "Move Bus Effect"
-msgstr ""
+msgstr "حرك مؤثر البيوس"
#: editor/editor_audio_buses.cpp
msgid "Delete Bus Effect"
-msgstr ""
+msgstr "مسح تأثير البيوس"
#: editor/editor_audio_buses.cpp
msgid "Audio Bus, Drag and Drop to rearrange."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
+msgstr "بيوس الصوت، سحب وإسقاط لإعادة الترتيب."
#: editor/editor_audio_buses.cpp
msgid "Solo"
-msgstr ""
+msgstr "ÙØ±Ø¯ÙŠ"
#: editor/editor_audio_buses.cpp
msgid "Mute"
-msgstr ""
+msgstr "صامت"
#: editor/editor_audio_buses.cpp
msgid "Bypass"
-msgstr ""
+msgstr "تخطي"
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr "إعدادات البيوس"
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
msgid "Duplicate"
-msgstr ""
+msgstr "تكرير"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Reset Volume"
+msgstr "إرجاع التكبير"
#: editor/editor_audio_buses.cpp
msgid "Delete Effect"
-msgstr ""
+msgstr "إمسح التأثير"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus"
-msgstr ""
+msgstr "أض٠بيوس الصوت"
#: editor/editor_audio_buses.cpp
msgid "Master bus can't be deleted!"
-msgstr ""
+msgstr "البيوس الأساسي لا يمكن مسحة!"
#: editor/editor_audio_buses.cpp
msgid "Delete Audio Bus"
-msgstr ""
+msgstr "إمسح بيوس الصوت"
#: editor/editor_audio_buses.cpp
msgid "Duplicate Audio Bus"
-msgstr ""
+msgstr "تكرير بيوس الصوت"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Bus Volume"
+msgstr "إرجاع التكبير"
+
+#: editor/editor_audio_buses.cpp
msgid "Move Audio Bus"
-msgstr "عملية تحريك"
+msgstr "تحريك بيوس الصوت"
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
-msgstr ""
+msgstr "Ø¥Ø­ÙØ¸ نسق بيوس الصوت كـ..."
#: editor/editor_audio_buses.cpp
msgid "Location for New Layout.."
-msgstr ""
+msgstr "المكان للنسق الجديد..."
#: editor/editor_audio_buses.cpp
msgid "Open Audio Bus Layout"
-msgstr ""
+msgstr "Ø¥ÙØªØ­ نسق بيوس الصوت"
#: editor/editor_audio_buses.cpp
msgid "There is no 'res://default_bus_layout.tres' file."
-msgstr ""
+msgstr "ليس هناك مل٠'res://default_bus_layout.tres'."
#: editor/editor_audio_buses.cpp
msgid "Invalid file, not an audio bus layout."
-msgstr ""
+msgstr "مل٠خطأ، ليس مل٠نسق بيوس الصوت."
#: editor/editor_audio_buses.cpp
msgid "Add Bus"
-msgstr ""
+msgstr "أض٠بيوس"
#: editor/editor_audio_buses.cpp
msgid "Create a new Bus Layout."
-msgstr ""
+msgstr "إصنع نسق بيوس جديد."
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
-msgstr ""
+msgstr "تحميل"
#: editor/editor_audio_buses.cpp
msgid "Load an existing Bus Layout."
-msgstr ""
+msgstr "تحميل نسق بيوس موجود مسبقاً."
#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Save As"
-msgstr ""
+msgstr "Ø­ÙØ¸ بأسم"
#: editor/editor_audio_buses.cpp
msgid "Save this Bus Layout to a file."
-msgstr ""
+msgstr "Ø¥Ø­ÙØ¸ نسق البيوس هذا إلي ملÙ."
#: editor/editor_audio_buses.cpp editor/import_dock.cpp
msgid "Load Default"
-msgstr ""
+msgstr "تحميل Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠ"
#: editor/editor_audio_buses.cpp
msgid "Load the default Bus Layout."
-msgstr ""
+msgstr "تحميل نسق البيوس Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠ."
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
-msgstr ""
+msgstr "اسم غير صالح."
#: editor/editor_autoload_settings.cpp
msgid "Valid characters:"
-msgstr ""
+msgstr "الأحر٠الصالحة:"
#: editor/editor_autoload_settings.cpp
msgid "Invalid name. Must not collide with an existing engine class name."
-msgstr ""
+msgstr "إسم غير صالح، يجب أن لا يتصادم مع أسم ÙØµÙ„ خاص بالمحرك."
#: editor/editor_autoload_settings.cpp
msgid "Invalid name. Must not collide with an existing buit-in type name."
-msgstr ""
+msgstr "إسم غير صالح، يجب أن لا يتصادم مع الأسماء المبنية تلقائياً الموجودة."
#: editor/editor_autoload_settings.cpp
msgid "Invalid name. Must not collide with an existing global constant name."
-msgstr ""
+msgstr "إسم غير صالح، ييجب ألاّ يتصادم مع إسم موجود لثابت عمومي."
#: editor/editor_autoload_settings.cpp
msgid "Invalid Path."
-msgstr ""
+msgstr "مسار غير صالح."
#: editor/editor_autoload_settings.cpp
msgid "File does not exist."
-msgstr ""
+msgstr "المل٠غير موجود."
#: editor/editor_autoload_settings.cpp
msgid "Not in resource path."
-msgstr ""
+msgstr "ليس ÙÙŠ مسار الموارد."
#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
-msgstr ""
+msgstr "Ø¥Ø¶Ø§ÙØ© للتحميل التلقائي"
#: editor/editor_autoload_settings.cpp
msgid "Autoload '%s' already exists!"
-msgstr ""
+msgstr "التحميل التلقائي '%s' موجود اصلا!"
#: editor/editor_autoload_settings.cpp
msgid "Rename Autoload"
-msgstr ""
+msgstr "اعادة تسمية التحميل التلقائي"
#: editor/editor_autoload_settings.cpp
msgid "Toggle AutoLoad Globals"
-msgstr ""
+msgstr "تبديل التحميل التلقائي العام"
#: editor/editor_autoload_settings.cpp
msgid "Move Autoload"
-msgstr ""
+msgstr "نقل التحميل التلقائي"
#: editor/editor_autoload_settings.cpp
msgid "Remove Autoload"
-msgstr ""
+msgstr "ازالة التحميل التلقائي"
#: editor/editor_autoload_settings.cpp
msgid "Enable"
-msgstr ""
+msgstr "تمكين"
#: editor/editor_autoload_settings.cpp
msgid "Rearrange Autoloads"
-msgstr ""
+msgstr "اعادة ترتيب التحميلات التلقائية"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
-msgstr ""
+msgstr "المسار:"
#: editor/editor_autoload_settings.cpp
msgid "Node Name:"
-msgstr ""
+msgstr "إسم العقدة:"
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
-msgstr ""
+msgstr "الأسم"
#: editor/editor_autoload_settings.cpp
msgid "Singleton"
-msgstr ""
+msgstr "Ø§Ù„ÙØ±Ø¯ÙŠØ©"
#: editor/editor_autoload_settings.cpp
msgid "List:"
-msgstr ""
+msgstr "القائمة:"
#: editor/editor_data.cpp
msgid "Updating Scene"
-msgstr ""
+msgstr "ÙŠÙØ­Ø¯Ø« المشهد"
#: editor/editor_data.cpp
msgid "Storing local changes.."
-msgstr ""
+msgstr "جاري تخزين التعديلات المحلية.."
#: editor/editor_data.cpp
msgid "Updating scene.."
-msgstr ""
+msgstr "ÙŠÙØ­Ø¯Ø« المشهد..."
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
-msgstr ""
+msgstr "من ÙØ¶Ù„Ùƒ حدد الوجهة الأساسية أولاً"
#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
-msgstr ""
+msgstr "حدد الوجهة"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
-msgstr ""
+msgstr "أنشئ مجلد"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
-msgstr ""
+msgstr "الأسم:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
-msgstr ""
+msgstr "لا يمكن إنشاء المجلد."
#: editor/editor_dir_dialog.cpp
msgid "Choose"
-msgstr ""
+msgstr "إختر"
#: editor/editor_export.cpp
msgid "Storing File:"
-msgstr ""
+msgstr "تخزين الملÙ:"
#: editor/editor_export.cpp
msgid "Packing"
-msgstr ""
+msgstr "يَحزم\"ينتج المل٠المضغوط\""
#: editor/editor_export.cpp platform/javascript/export/export.cpp
msgid "Template file not found:\n"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr ""
+msgstr "مل٠النموذج غير موجود:\n"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
-msgstr ""
+msgstr "المل٠موجود، إستبدال؟"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "All Recognized"
@@ -1309,305 +1132,411 @@ msgstr "جميع الأنواع المعتمدة"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "All Files (*)"
-msgstr ""
+msgstr "كل Ø§Ù„Ù…Ù„ÙØ§Øª (*)"
#: editor/editor_file_dialog.cpp editor/editor_help.cpp editor/editor_node.cpp
#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
#: editor/property_selector.cpp editor/quick_open.cpp scene/gui/file_dialog.cpp
msgid "Open"
-msgstr ""
+msgstr "Ø¥ÙØªØ­"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Open a File"
-msgstr ""
+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"
-msgstr ""
+msgstr "Ø¥ÙØªØ­ وجهة"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Open a File or Directory"
-msgstr ""
+msgstr "Ø¥ÙØªØ­ مل٠أو وجهة"
#: editor/editor_file_dialog.cpp editor/editor_node.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
msgid "Save"
-msgstr ""
+msgstr "Ø­ÙØ¸"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Save a File"
-msgstr ""
+msgstr "Ø­ÙØ¸ ملÙ"
#: editor/editor_file_dialog.cpp
msgid "Go Back"
-msgstr ""
+msgstr "إرجع للخلÙ"
#: editor/editor_file_dialog.cpp
msgid "Go Forward"
-msgstr ""
+msgstr "إذهب للأمام"
#: editor/editor_file_dialog.cpp
msgid "Go Up"
-msgstr ""
+msgstr "إذهب للأعلي"
#: editor/editor_file_dialog.cpp
msgid "Refresh"
-msgstr ""
+msgstr "تحديث"
#: editor/editor_file_dialog.cpp
msgid "Toggle Hidden Files"
-msgstr ""
+msgstr "أظهر Ø§Ù„Ù…Ù„ÙØ§Øª المخÙية"
#: editor/editor_file_dialog.cpp
msgid "Toggle Favorite"
-msgstr ""
+msgstr "أظهر المÙÙØ¶Ù„Ø©"
#: editor/editor_file_dialog.cpp
msgid "Toggle Mode"
-msgstr ""
+msgstr "أظهر المود"
#: editor/editor_file_dialog.cpp
msgid "Focus Path"
-msgstr ""
+msgstr "مسار التركيز"
#: editor/editor_file_dialog.cpp
msgid "Move Favorite Up"
-msgstr ""
+msgstr "حرك المÙÙØ¶Ù„Ø© للأعلي"
#: editor/editor_file_dialog.cpp
msgid "Move Favorite Down"
-msgstr ""
+msgstr "حرك المÙÙØ¶Ù„Ø© للأسÙÙ„"
+
+#: editor/editor_file_dialog.cpp
+#, fuzzy
+msgid "Go to parent folder"
+msgstr "لا يمكن إنشاء المجلد."
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
-msgstr ""
+msgstr "الوجهات ÙˆØ§Ù„Ù…Ù„ÙØ§Øª:"
#: editor/editor_file_dialog.cpp
msgid "Preview:"
-msgstr ""
+msgstr "إستعراض:"
#: editor/editor_file_dialog.cpp editor/script_editor_debugger.cpp
#: scene/gui/file_dialog.cpp
msgid "File:"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr ""
+msgstr "الملÙ:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
-msgstr ""
+msgstr "يجب أن يستخدم صيغة صحيحة."
#: editor/editor_file_system.cpp
msgid "ScanSources"
-msgstr ""
+msgstr "ÙØ­Øµ المصادر"
#: editor/editor_file_system.cpp
msgid "(Re)Importing Assets"
-msgstr ""
+msgstr "إعادة إستيراد الأصول"
#: editor/editor_help.cpp editor/editor_node.cpp
#: editor/plugins/script_editor_plugin.cpp
msgid "Search Help"
-msgstr ""
+msgstr "إبحث ÙÙŠ المساعدة"
#: editor/editor_help.cpp
msgid "Class List:"
-msgstr ""
+msgstr "قائمة الأصناÙ:"
#: editor/editor_help.cpp
msgid "Search Classes"
-msgstr ""
+msgstr "إبحث ÙÙŠ الأصناÙ"
+
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr "Ùوق"
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
-msgstr ""
+msgstr "صنÙ:"
#: editor/editor_help.cpp editor/scene_tree_editor.cpp
msgid "Inherits:"
-msgstr ""
+msgstr "يرث:"
#: editor/editor_help.cpp
msgid "Inherited by:"
-msgstr ""
+msgstr "مورث بواسطة:"
#: editor/editor_help.cpp
msgid "Brief Description:"
-msgstr ""
+msgstr "وص٠مختصر:"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Members"
+msgstr "الأعضاء:"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
-msgstr ""
+msgstr "الأعضاء:"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Public Methods"
+msgstr "الطرق العامة:"
#: editor/editor_help.cpp
msgid "Public Methods:"
-msgstr ""
+msgstr "الطرق العامة:"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "GUI Theme Items"
+msgstr "عناصر ثيم واجهة المستخدم:"
#: editor/editor_help.cpp
msgid "GUI Theme Items:"
-msgstr ""
+msgstr "عناصر ثيم واجهة المستخدم:"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Signals:"
-msgstr ""
+msgstr "الإشارات:"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations"
+msgstr "التعدادات:"
#: editor/editor_help.cpp
msgid "Enumerations:"
-msgstr ""
+msgstr "التعدادات:"
#: editor/editor_help.cpp
msgid "enum "
-msgstr ""
+msgstr "التعداد "
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Constants"
+msgstr "الثوابت:"
#: editor/editor_help.cpp
msgid "Constants:"
-msgstr ""
+msgstr "الثوابت:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Description"
+msgstr "الوصÙ:"
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr "خصائص"
+
+#: editor/editor_help.cpp
msgid "Property Description:"
-msgstr "عمل اشتراك"
+msgstr "وص٠الملكية:"
+
+#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"لا يوجد حاليا وص٠لهذه الخاصية. الرجاء المساعدة من خلال [url][/color/] "
+"المساهمة واحد [color=$color][url=$url]!"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Methods"
+msgstr "قائمة الطرق:"
#: editor/editor_help.cpp
msgid "Method Description:"
+msgstr "وص٠الطريقة:"
+
+#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
msgstr ""
+"لا يوجد حاليا وص٠لهذه الطريقة. الرجاء المساعدة من خلال [color=$color][url="
+"$url]المساهمة واحد[/url][/color] !"
#: editor/editor_help.cpp
msgid "Search Text"
-msgstr ""
+msgstr "إبحث عن كتابة"
#: editor/editor_log.cpp
msgid "Output:"
-msgstr ""
+msgstr "الخرج:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
-msgstr ""
+msgstr "خالي"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
-msgstr ""
+msgstr "خطأ ÙÙŠ Ø­ÙØ¸ المورد!"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
-msgstr ""
+msgstr "Ø­ÙØ¸ المورد باسم..."
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
-msgstr ""
+msgstr "أنا أري.."
#: editor/editor_node.cpp
msgid "Can't open file for writing:"
-msgstr ""
+msgstr "لا يمكن ÙØªØ­ المل٠للكتابة:"
#: editor/editor_node.cpp
msgid "Requested file format unknown:"
-msgstr ""
+msgstr "صيغة المل٠المطلوب غير Ù…Ø¹Ø±ÙˆÙØ©:"
#: editor/editor_node.cpp
msgid "Error while saving."
+msgstr "خطأ خلال Ø§Ù„Ø­ÙØ¸."
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Can't open '%s'."
+msgstr "لا يمكن الحل."
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while parsing '%s'."
+msgstr "خطأ خلال Ø§Ù„Ø­ÙØ¸."
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr "نهاية مل٠غير مرتقبة 's%'."
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while loading '%s'."
+msgstr "خطأ خلال Ø§Ù„Ø­ÙØ¸."
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
-msgstr ""
+msgstr "Ø­ÙØ¸ المشهد"
#: editor/editor_node.cpp
msgid "Analyzing"
-msgstr ""
+msgstr "يحلل"
#: editor/editor_node.cpp
msgid "Creating Thumbnail"
-msgstr ""
+msgstr "ينشئ الصورة المصغرة"
#: editor/editor_node.cpp
msgid "This operation can't be done without a tree root."
-msgstr ""
+msgstr "هذه العملية لا يمكنها الإكتمال من غير جزر الشجرة."
#: editor/editor_node.cpp
msgid ""
"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
-msgstr ""
+msgstr "لا يمكن Ø­ÙØ¸ المشهد. على الأرجح لا يمكن Ø¥Ø³ØªÙŠÙØ§Ø¡ التبعيات (مجسّدات)."
#: editor/editor_node.cpp
msgid "Failed to load resource."
-msgstr ""
+msgstr "ÙØ´Ù„ تحميل المورد."
#: editor/editor_node.cpp
msgid "Can't load MeshLibrary for merging!"
-msgstr ""
+msgstr "لا يمكن تحميل مكتبة الميش من أجل الدمج!"
#: editor/editor_node.cpp
msgid "Error saving MeshLibrary!"
-msgstr ""
+msgstr "خطأ ÙÙŠ Ø­ÙØ¸ مكتبة الميش!"
#: editor/editor_node.cpp
msgid "Can't load TileSet for merging!"
-msgstr ""
+msgstr "لا يمكن تحميل مجموعة البلاط من أجل الدمج!"
#: editor/editor_node.cpp
msgid "Error saving TileSet!"
-msgstr ""
+msgstr "خطأ ÙÙŠ Ø­ÙØ¸ مجموعة البلاط!"
#: editor/editor_node.cpp
msgid "Error trying to save layout!"
-msgstr ""
+msgstr "خطآ ÙÙŠ محاولة Ø­ÙØ¸ النسق!"
#: editor/editor_node.cpp
msgid "Default editor layout overridden."
-msgstr ""
+msgstr "تخطي نسق Ø§Ù„Ù…ÙØ­Ø±Ø± Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠ."
#: editor/editor_node.cpp
msgid "Layout name not found!"
-msgstr ""
+msgstr "إسم النسق غير موجود!"
#: editor/editor_node.cpp
msgid "Restored default layout to base settings."
+msgstr "إسترجاع النسق Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠ Ø¥Ù„ÙŠ الإعدادات الأساسية."
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
msgstr ""
#: editor/editor_node.cpp
-msgid "Copy Params"
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
msgstr ""
#: editor/editor_node.cpp
-msgid "Paste Params"
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
msgstr ""
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Copy Params"
+msgstr "إنسخ Ø§Ù„Ù…ÙØ¹Ø§Ù…Ù„"
+
+#: editor/editor_node.cpp
+msgid "Paste Params"
+msgstr "لصق Ø§Ù„Ù…ÙØ¹Ø§Ù…Ù„"
+
#: editor/editor_node.cpp editor/plugins/resource_preloader_editor_plugin.cpp
msgid "Paste Resource"
-msgstr ""
+msgstr "لصق الموارد"
#: editor/editor_node.cpp
msgid "Copy Resource"
-msgstr ""
+msgstr "نسخ الموارد"
#: editor/editor_node.cpp
msgid "Make Built-In"
-msgstr ""
+msgstr "إجعله Ù…ÙØ¯Ù…ج"
#: editor/editor_node.cpp
msgid "Make Sub-Resources Unique"
-msgstr ""
+msgstr "إجعل الموارد الجانبية مميزة"
#: editor/editor_node.cpp
msgid "Open in Help"
-msgstr ""
+msgstr "Ø¥ÙØªØ­ ÙÙŠ المساعدة"
#: editor/editor_node.cpp
msgid "There is no defined scene to run."
-msgstr ""
+msgstr "ليس هناك مشهد محدد ليتم تشغيله."
#: editor/editor_node.cpp
msgid ""
@@ -1615,6 +1544,8 @@ msgid ""
"You can change it later in \"Project Settings\" under the 'application' "
"category."
msgstr ""
+"لا مشهد أساسي تم تحديده، حدد واحد؟\n"
+"يمكنك تغييره لاحقاً ÙÙŠ \"إعدادات المشروع\" تحت قسم 'التطبيق'."
#: editor/editor_node.cpp
msgid ""
@@ -1622,6 +1553,8 @@ msgid ""
"You can change it later in \"Project Settings\" under the 'application' "
"category."
msgstr ""
+"المشهد Ø§Ù„Ù…ÙØ­Ø¯Ø¯ '%s' غير موجود، حدد مشهد صالح؟\n"
+"يمكنك تغييره لاحقاً ÙÙŠ \"إعدادات المشروع\" تحت قسم 'التطبيق'."
#: editor/editor_node.cpp
msgid ""
@@ -1632,7 +1565,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
+msgstr "المشهد الحالي لم يتم Ø­ÙØ¸Ù‡. الرجاء Ø­ÙØ¸ المشهد قبل تشغيله Ùˆ اختباره."
#: editor/editor_node.cpp
msgid "Could not start subprocess!"
@@ -1656,15 +1589,15 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Save & Close"
-msgstr ""
+msgstr "Ø­ÙØ¸ Ùˆ اغلاق"
#: editor/editor_node.cpp
msgid "Save changes to '%s' before closing?"
-msgstr ""
+msgstr "هل تريد Ø­ÙØ¸ التغييرات Ù„'%s' قبل الاغلاق؟"
#: editor/editor_node.cpp
msgid "Save Scene As.."
-msgstr ""
+msgstr "Ø­ÙØ¸ المشهد Ùƒ.."
#: editor/editor_node.cpp
msgid "No"
@@ -1676,7 +1609,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
-msgstr ""
+msgstr "هذا المشهد لم يتم Ø­ÙØ¸Ù‡. هل تود Ø­ÙØ¸Ù‡ قبل تشغيله؟"
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "This operation can't be done without a scene."
@@ -1696,11 +1629,11 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
-msgstr ""
+msgstr "لم يتم Ø­ÙØ¸ المشهد الحالي. استمر Ø¨Ø§Ù„ÙØªØ­ على اية حال؟"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
-msgstr ""
+msgstr "لا يمكن اعادة تحميل مشهد لم يتم Ø­ÙØ¸Ù‡ من قبل."
#: editor/editor_node.cpp
msgid "Revert"
@@ -1728,34 +1661,47 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Save & Quit"
-msgstr ""
+msgstr "Ø­ÙØ¸ Ùˆ خروج"
#: editor/editor_node.cpp
msgid "Save changes to the following scene(s) before quitting?"
-msgstr ""
+msgstr "هل تريد Ø­ÙØ¸ التغييرات للمشاهد التالية قبل الخروج؟"
#: editor/editor_node.cpp
msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
+"هل تود Ø­ÙØ¸ التغييرات التي اجريت على المشاهد الحالية قبل ÙØªØ­ Ù†Ø§ÙØ°Ø© ادارة "
+"المشروع؟"
+
+#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgid "Unable to load addon script from path: '%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -1765,7 +1711,7 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr ""
@@ -1774,18 +1720,20 @@ msgid ""
"Error loading scene, it must be inside the project path. Use 'Import' to "
"open the scene, then save it inside the project path."
msgstr ""
+"خطا ÙÙŠ تحميل المشهد، يجب ان يكون المشهد ÙÙŠ Ù†ÙØ³ المل٠الخاص بالمشروع. يمكنك "
+"استخدام Ù†Ø§ÙØ°Ø© \"الاستيراد\" Ù„ÙØªØ­ المشهد٫ ثم Ø§Ø­ÙØ¸Ù‡ ÙÙŠ مل٠المشروع."
#: editor/editor_node.cpp
-msgid "Error loading scene."
+msgid "Scene '%s' has broken dependencies:"
msgstr ""
#: editor/editor_node.cpp
-msgid "Scene '%s' has broken dependencies:"
+msgid "Clear Recent Scenes"
msgstr ""
#: editor/editor_node.cpp
msgid "Save Layout"
-msgstr ""
+msgstr "Ø­ÙØ¸ التخطيط"
#: editor/editor_node.cpp
msgid "Delete Layout"
@@ -1816,7 +1764,7 @@ msgstr ""
msgid "Toggle distraction-free mode."
msgstr ""
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr ""
@@ -1854,11 +1802,11 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Save Scene"
-msgstr ""
+msgstr "Ø­ÙØ¸ المشهد"
#: editor/editor_node.cpp
msgid "Save all Scenes"
-msgstr ""
+msgstr "Ø­ÙØ¸ جميع المشاهد"
#: editor/editor_node.cpp
msgid "Close Scene"
@@ -2021,7 +1969,7 @@ msgstr ""
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Classes"
-msgstr ""
+msgstr "أصناÙ"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Online Docs"
@@ -2035,6 +1983,10 @@ msgstr ""
msgid "Issue Tracker"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "مجتمع"
+
#: editor/editor_node.cpp
msgid "About"
msgstr ""
@@ -2043,7 +1995,7 @@ msgstr ""
msgid "Play the project."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr ""
@@ -2059,7 +2011,7 @@ msgstr ""
msgid "Stop the scene."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr ""
@@ -2109,11 +2061,11 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Save the currently edited resource."
-msgstr ""
+msgstr "Ø­ÙØ¸ المورد الذي يتم تعديله حاليا."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Save As.."
-msgstr ""
+msgstr "Ø­ÙØ¸ باسم..."
#: editor/editor_node.cpp
msgid "Go to the previous edited object in history."
@@ -2132,6 +2084,15 @@ msgid "Object properties."
msgstr ""
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr "إستيراد"
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr ""
@@ -2145,15 +2106,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Don't Save"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr ""
+msgstr "لا تقم Ø¨Ø§Ù„Ø­ÙØ¸"
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
@@ -2215,11 +2168,28 @@ msgstr ""
msgid "Open the previous Editor"
msgstr ""
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr ""
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr ""
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "الاصدار:"
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr ""
@@ -2252,7 +2222,7 @@ msgid "Frame %"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+msgid "Physics Frame %"
msgstr ""
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2271,26 +2241,6 @@ msgstr ""
msgid "Frame #:"
msgstr ""
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr ""
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2303,7 +2253,7 @@ msgstr ""
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
-msgstr ""
+msgstr "أكتب منطقك ÙÙŠ الطريقة ()run_"
#: editor/editor_run_script.cpp
msgid "There is an edited scene already."
@@ -2323,7 +2273,7 @@ msgstr ""
#: editor/editor_run_script.cpp
msgid "Did you forget the '_run' method?"
-msgstr ""
+msgstr "هل نسيت الطريقة '_run' ؟"
#: editor/editor_settings.cpp
msgid "Default (Same as Editor)"
@@ -2400,10 +2350,6 @@ msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr ""
@@ -2436,9 +2382,17 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
+"Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2448,87 +2402,91 @@ msgid ""
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
+msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
+msgid "Cannot move a folder into itself.\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
-msgstr ""
+#, fuzzy
+msgid "Error moving:\n"
+msgstr "خطآ ÙÙŠ التحميل:"
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
-msgstr ""
+#, fuzzy
+msgid "Unable to update dependencies:\n"
+msgstr "ÙØ´Ù„ ÙÙŠ تحميل المشهد بسبب وجود Ù…Ù„ÙØ§Øª Ù…Ùقودة يعتمد المشهد عليها:"
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "No name provided"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving file:\n"
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving dir:\n"
+msgid "No name provided."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
-msgstr ""
+#, fuzzy
+msgid "Name contains invalid characters."
+msgstr "الأحر٠الصالحة:"
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
+msgid "A file or folder with this name already exists."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
+msgid "Renaming file:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Expand all"
+msgid "Renaming folder:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Collapse all"
+msgid "Expand all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
+msgid "Collapse all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Instance"
+msgid "Copy Path"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
+msgid "Rename.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
+msgid "Move To.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr ""
+#, fuzzy
+msgid "New Folder.."
+msgstr "أنشئ مجلد"
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
+msgid "Show In File Manager"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move To.."
+msgid "Instance"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Info"
+msgid "Edit Dependencies.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
+msgid "View Owners.."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2561,6 +2519,11 @@ msgstr ""
msgid "Move"
msgstr ""
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr ""
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr ""
@@ -2574,6 +2537,10 @@ msgid "Import as Single Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -2586,6 +2553,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
msgstr ""
@@ -2594,38 +2573,31 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr ""
@@ -2653,579 +2625,54 @@ msgstr ""
msgid "Reimport"
msgstr ""
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr "أبجد هوز حطي كلمن ØµØ¹ÙØµ قرشت ثخذ ضظغ."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
+#: editor/node_dock.cpp
+msgid "Groups"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr ""
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Select a Node to edit Signals and Groups."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -3309,7 +2756,7 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Play selected animation backwards from current pos. (A)"
-msgstr ""
+msgstr "تشغيل الحركة المختارة بشكل عكسي من الموقع الحالي. (زر A)"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Play selected animation backwards from end. (Shift+A)"
@@ -3325,7 +2772,7 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Play selected animation from current pos. (D)"
-msgstr ""
+msgstr "تشغيل الحركة المختارة من الموقع الحالي. (زر D)"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Animation position (in seconds)."
@@ -3381,7 +2828,6 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3491,10 +2937,6 @@ msgid "Delete Input"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr ""
@@ -3550,64 +2992,181 @@ msgstr ""
msgid "Filters.."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
-msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr "مجاني/ÙØ§Ø±Øº"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
-msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
+msgstr "المحتويات:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
-msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
+msgstr "إظهار Ø§Ù„Ù…Ù„ÙØ§Øª"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
-msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
+msgstr "لا يمكن حل أسم Ø§Ù„Ù…ÙØ¶ÙŠÙ:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
-msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
+msgstr "لا يمكن الحل."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
-msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
+msgstr "خطأ ÙÙŠ الإتصال، من ÙØ¶Ù„Ùƒ حاول مجدداً."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
-msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "لا يمكن إتمام الاتصال."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
-msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
+msgstr "لا يمكن الإتصال Ø¨Ø§Ù„Ù…ÙØ¶ÙŠÙ:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
-msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
+msgstr "لا ردّ من Ø§Ù„Ù…ÙØ¶ÙŠÙ:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
-msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "لا يوجد إستجابة."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
-msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
+msgstr "ÙØ´Ù„ إتمام الطلب٫ الرمز الذي تم إرجاعه:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
-msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
+msgstr "ÙØ´Ù„ الطلب."
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
-msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
+msgstr "ÙØ´Ù„ الطلب٫ السبب هو اعادة التحويل مرات اكثر من اللازم"
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
-msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
+msgstr "اعادة توجيه حلقة التكرار."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "ÙØ´Ù„:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr "تجزئة تحميل سيئة، من المتوقع أن يكون المل٠قد تم العبث به."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr "ما كان متوقعاً:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr "ما تم الحصول عليه:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr "ÙØ´Ù„ التاكد من ترميز sha256"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr "خطأ ÙÙŠ تنزيل الأصول:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr "يجلب:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr "جاري الحل..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting.."
+msgstr "جاري الاتصال..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr "جار الطلب..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
+msgstr "خطأ ÙÙŠ إنشاء الطلب"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr "عاطل"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr "إعادة المحاولة"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr "خطأ ÙÙŠ التحميل"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr "تحميل هذه الأصول قيد التنÙيذ أصلاً!"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr "الأول"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr "السابق"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr "التالي"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr "الأخير"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "الكل"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr "Ø¥Ø¶Ø§ÙØ§Øª"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "ترتيب:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr "عكس"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "Ø§Ù„ÙØ¦Ø©:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "الموقع:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr "الدعم..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "رسمياً"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr "تجربة"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr "مل٠أصول مضغوط"
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3650,11 +3209,15 @@ msgid "Edit CanvasItem"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+msgid "Anchors only"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
+msgid "Change Anchors and Margins"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3706,59 +3269,72 @@ msgid "Pan Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
+msgid "Toggles snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
+msgid "Snapping options"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
+msgid "Snap to grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
+msgid "Use Rotation Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Configure Snap..."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
+msgid "Snap Relative"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
+msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
+msgid "Smart snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
+msgid "Snap to parent"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
+msgid "Snap to node anchor"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to node sides"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3787,11 +3363,16 @@ msgid "View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show helpers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
+msgid "Show rulers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3803,8 +3384,9 @@ msgid "Frame Selection"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
-msgstr ""
+#, fuzzy
+msgid "Layout"
+msgstr "Ø­ÙØ¸ التخطيط"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Keys"
@@ -3827,11 +3409,20 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
+msgid "Drag pivot from mouse position"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "عملية تحريك"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
+msgid "Divide grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3842,23 +3433,28 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr ""
@@ -3872,45 +3468,6 @@ msgid ""
"Drag & drop + Alt : Change node type"
msgstr ""
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3920,14 +3477,6 @@ msgid "Set Handle"
msgstr ""
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr ""
@@ -3950,6 +3499,26 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease in"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
msgstr ""
@@ -4027,22 +3596,18 @@ msgid "Create Occluder Polygon"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr ""
@@ -4143,6 +3708,10 @@ msgid "Create Outline"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr ""
@@ -4270,12 +3839,73 @@ msgstr ""
msgid "Populate"
msgstr ""
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create Navigation Polygon"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Marking walkable triangles..."
+msgstr "جاري تخزين التعديلات المحلية.."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Partitioning..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
msgstr ""
#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
+msgid "Create Navigation Polygon"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -4449,16 +4079,19 @@ msgid "Curve Point #"
msgstr ""
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
-msgstr ""
+msgstr "عملية تحريك"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
-msgstr ""
+msgstr "عملية تحريك"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
-msgstr ""
+msgstr "عملية تحريك"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4518,6 +4151,14 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr ""
@@ -4572,63 +4213,10 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr ""
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr ""
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr ""
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
@@ -4665,7 +4253,7 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
msgid " Class Reference"
-msgstr ""
+msgstr " مرجع الصنÙ"
#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
@@ -4719,6 +4307,10 @@ msgstr ""
msgid "Close All"
msgstr ""
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
msgstr ""
@@ -4747,7 +4339,8 @@ msgstr ""
msgid "Break"
msgstr ""
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr ""
@@ -4760,24 +4353,12 @@ msgid "Debug with external editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
msgid "Search the class hierarchy."
-msgstr ""
+msgstr "إبحث ÙÙŠ هرمية الأصناÙ."
#: editor/plugins/script_editor_plugin.cpp
msgid "Search the reference documentation."
@@ -4853,8 +4434,9 @@ msgid "Cut"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr ""
@@ -5117,10 +4699,6 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr ""
@@ -5137,10 +4715,6 @@ msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr ""
@@ -5368,6 +4942,10 @@ msgid "Transform"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr ""
@@ -5513,6 +5091,10 @@ msgid "Speed (FPS):"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr ""
@@ -5525,12 +5107,14 @@ msgid "Insert Empty (After)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr ""
+#, fuzzy
+msgid "Move (Before)"
+msgstr "عملية تحريك"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
-msgstr ""
+#, fuzzy
+msgid "Move (After)"
+msgstr "عملية تحريك"
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
@@ -5607,16 +5191,20 @@ msgid "Remove All"
msgstr "عملية تحريك"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
+msgid "Edit theme.."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Add Class Items"
+msgid "Theme editing menu."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Class Items"
+msgstr "Ø¥Ø¶Ø§ÙØ© بنود للصنÙ"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Remove Class Items"
-msgstr ""
+msgstr "حذ٠بنود من الصنÙ"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Create Empty Template"
@@ -5692,6 +5280,10 @@ msgid "Style"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr ""
@@ -5740,7 +5332,7 @@ msgid "Mirror Y"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
+msgid "Paint Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5804,6 +5396,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr ""
@@ -5874,19 +5470,30 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
+#, fuzzy
+msgid "The path does not exist."
+msgstr "المل٠غير موجود."
+
+#: editor/project_manager.cpp
+msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
+msgid "Please choose a folder that does not contain a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
@@ -5894,10 +5501,26 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't edit project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr ""
@@ -5906,23 +5529,23 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Import Existing Project"
+msgid "Rename Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
+msgid "Couldn't get project.godot in the project path."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Name:"
+msgid "New Game Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Create New Project"
+msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path:"
+msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
@@ -5930,11 +5553,20 @@ msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Browse"
+msgid "Project Name:"
msgstr ""
#: editor/project_manager.cpp
-msgid "New Game Project"
+#, fuzzy
+msgid "Create folder"
+msgstr "أنشئ مجلد"
+
+#: editor/project_manager.cpp
+msgid "Project Path:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
@@ -5946,6 +5578,11 @@ msgid "Unnamed Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't open project"
+msgstr "لا يمكن إتمام الاتصال."
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr ""
@@ -5972,16 +5609,18 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
-"You are about the scan %s folders for existing Godot projects. Do you "
-"confirm?"
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project List"
+msgid ""
+"You are about the scan %s folders for existing Godot projects. Do you "
+"confirm?"
msgstr ""
#: editor/project_manager.cpp
-msgid "Run"
+msgid "Project List"
msgstr ""
#: editor/project_manager.cpp
@@ -6005,6 +5644,10 @@ msgid "Exit"
msgstr ""
#: editor/project_manager.cpp
+msgid "Restart Now"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -6041,17 +5684,14 @@ msgid "Add Input Action Event"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
@@ -6112,7 +5752,7 @@ msgstr ""
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr ""
@@ -6132,31 +5772,31 @@ msgstr ""
msgid "Add Event"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr ""
@@ -6165,7 +5805,7 @@ msgid "Add Global Property"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6181,6 +5821,15 @@ msgid "Delete Item"
msgstr ""
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Can't contain '/' or ':'"
+msgstr "لا يمكن الإتصال Ø¨Ø§Ù„Ù…ÙØ¶ÙŠÙ:"
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
@@ -6221,6 +5870,14 @@ msgid "Remove Resource Remap Option"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
@@ -6281,6 +5938,27 @@ msgid "Locale"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Locales Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show all locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "Ø§Ù„Ù…ÙØµÙÙŠ:"
+
+#: editor/project_settings_editor.cpp
+msgid "Locales:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -6329,10 +6007,20 @@ msgid "New Script"
msgstr ""
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Make Unique"
+msgstr "إجعل الموارد الجانبية مميزة"
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr ""
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Convert To %s"
+msgstr "صلها بالعقدة:"
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr ""
@@ -6369,8 +6057,12 @@ msgid "Select Property"
msgstr ""
#: editor/property_selector.cpp
+msgid "Select Virtual Method"
+msgstr "إختر طريقة Ø¥ÙØªØ±Ø§Ø¶ÙŠØ©"
+
+#: editor/property_selector.cpp
msgid "Select Method"
-msgstr ""
+msgstr "إختر طريقة"
#: editor/pvrtc_compress.cpp
msgid "Could not execute PVRTC tool:"
@@ -6396,26 +6088,6 @@ msgstr ""
msgid "Reparent"
msgstr ""
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr ""
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr ""
@@ -6542,14 +6214,6 @@ msgid "Sub-Resources:"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr ""
@@ -6732,6 +6396,15 @@ msgid "Invalid base path"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "File exists, will be reused"
+msgstr "المل٠موجود، إستبدال؟"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr ""
@@ -6745,7 +6418,7 @@ msgstr ""
#: editor/script_create_dialog.cpp
msgid "Invalid class name"
-msgstr ""
+msgstr "إسم صن٠غير صالح"
#: editor/script_create_dialog.cpp
msgid "Invalid inherited parent name or path"
@@ -6773,12 +6446,16 @@ msgid "Load existing script file"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Inherits"
msgstr ""
#: editor/script_create_dialog.cpp
msgid "Class Name"
-msgstr ""
+msgstr "إسم صنÙ"
#: editor/script_create_dialog.cpp
msgid "Template"
@@ -6813,6 +6490,10 @@ msgid "Function:"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr ""
@@ -6893,6 +6574,10 @@ msgid "Type"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr ""
@@ -6968,6 +6653,22 @@ msgstr ""
msgid "Change Probe Extents"
msgstr ""
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Library"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Status"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
#, fuzzy
@@ -6976,7 +6677,7 @@ msgstr ""
"صن٠إحدى المتغيرات المدخلة (arguments) غير صحيح ÙÙŠ ()convert . إستعمل ثابتة "
"_*TYPE"
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
#, fuzzy
msgid "Not enough bytes for decoding bytes, or invalid format."
@@ -7020,9 +6721,7 @@ msgstr ""
#: modules/gdscript/gd_functions.cpp
msgid "Invalid instance dictionary (invalid subclasses)"
-msgstr ""
-"instance dictionary نموذج القاموس غير صالح - subclasses Ø§Ù„ÙØ¦Ø© Ø§Ù„ÙØ±Ø¹ÙŠØ© غير "
-"صالحة"
+msgstr "مجسّد القاموس غير صالح (Ø£ØµÙ†Ø§Ù ÙØ±Ø¹ÙŠØ© غير صالحة)"
#: modules/gdscript/gd_functions.cpp
msgid "Object can't provide a length."
@@ -7037,10 +6736,6 @@ msgid "GridMap Duplicate Selection"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Snap View"
msgstr ""
@@ -7132,12 +6827,8 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Tiles"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7328,10 +7019,18 @@ msgid "Return"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr "نداء"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
msgstr ""
@@ -7462,7 +7161,7 @@ msgstr ""
#: modules/visual_script/visual_script_nodes.cpp
msgid "Custom node has no _step() method, can't process graph."
-msgstr ""
+msgstr "العقدة المخصصة لا تحتوي طريقة ()step_ ، لا يمكن معالجة المخطوط."
#: modules/visual_script/visual_script_nodes.cpp
msgid ""
@@ -7472,23 +7171,23 @@ msgstr ""
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
-msgstr ""
+msgstr "تشغيل ÙÙŠ Ø§Ù„Ù…ØªØµÙØ­"
#: platform/javascript/export/export.cpp
msgid "Run exported HTML in the system's default browser."
-msgstr ""
+msgstr "شغل مل٠HTML Ø§Ù„Ù…ÙØµØ¯Ø± ÙÙŠ Ø§Ù„Ù…ØªØµÙØ­ Ø§Ù„Ø¥ÙØªØ±Ø§Ø¶ÙŠ Ù„Ù„Ù†Ø¸Ø§Ù…."
#: platform/javascript/export/export.cpp
msgid "Could not write file:\n"
-msgstr ""
+msgstr "لا يمكن كتابة الملÙ:\n"
#: platform/javascript/export/export.cpp
msgid "Could not read file:\n"
-msgstr ""
+msgstr "لا يمكن قرأة الملÙ:\n"
#: platform/javascript/export/export.cpp
msgid "Could not open template for export:\n"
-msgstr ""
+msgstr "لا يمكن ÙØªØ­ القالب من أجل التصدير.\n"
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -7690,6 +7389,12 @@ msgid ""
"order for AnimatedSprite3D to display frames."
msgstr ""
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -7699,16 +7404,16 @@ msgid "Add current color as a preset"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Alert!"
+msgid "Cancel"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Please Confirm..."
-msgstr ""
+msgid "Alert!"
+msgstr "تنبيه!"
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr ""
+#: scene/gui/dialogs.cpp
+msgid "Please Confirm..."
+msgstr "يرجى التاكيد..."
#: scene/gui/popup.cpp
msgid ""
@@ -7738,5 +7443,51 @@ msgid ""
"texture to some node for display."
msgstr ""
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr ""
+
+#~ msgid "Method List For '%s':"
+#~ msgstr "قائمة الطرق لـ '%s':"
+
+#~ msgid "Arguments:"
+#~ msgstr "البراهين:"
+
+#~ msgid "Return:"
+#~ msgstr "العودة:"
+
+#~ msgid "Added:"
+#~ msgstr "تم Ø¥Ø¶Ø§ÙØªÙ‡:"
+
+#~ msgid "Removed:"
+#~ msgstr "Ù…ÙØ³ÙØ­:"
+
+#~ msgid "Error saving atlas:"
+#~ msgstr "خطأ ÙÙŠ Ø­ÙØ¸ الأطلس:"
+
+#~ msgid "Could not save atlas subtexture:"
+#~ msgstr "لا يمكن Ø­ÙØ¸ النسيج Ø§Ù„ÙØ±Ø¹ÙŠ Ù„Ù„Ø£Ø·Ù„Ø³:"
+
+#~ msgid "Exporting for %s"
+#~ msgstr "التصدير كـ %s"
+
+#~ msgid "Setting Up.."
+#~ msgstr "جاري الإعداد.."
+
+#~ msgid "The quick brown fox jumps over the lazy dog."
+#~ msgstr "أبجد هوز حطي كلمن ØµØ¹ÙØµ قرشت ثخذ ضظغ."
+
#~ msgid "Samples"
#~ msgstr "عينات (صوتية)"
diff --git a/editor/translations/bg.po b/editor/translations/bg.po
index 4e119a5fad..21e2b4f27d 100644
--- a/editor/translations/bg.po
+++ b/editor/translations/bg.po
@@ -1,5 +1,6 @@
# Bulgarian translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# Bojidar Marinov <bojidar.marinov.bg@gmail.com>, 2016.
@@ -192,10 +193,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr ""
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -357,262 +357,6 @@ msgstr ""
msgid "Change Array Value"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr "ВерÑиÑ:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr "Съдържание:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr "Преглед на файловете"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr "ОпиÑание:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr "ИнÑталиране"
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "ЗатварÑне"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr "Готово!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr "ИзтеглÑне:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connecting.."
-msgstr "Свързване.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Requesting.."
-msgstr "Запитване.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Error making request"
-msgstr "Имаше грешка при зареждане на Ñцената."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "Ð’Ñички"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "ТърÑене:"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "ТърÑене"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr "ВнаÑÑне"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr "ПриÑтавки"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "Подреждане:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "КатегориÑ:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "МÑÑто:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr "Поддръжка"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr ""
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr ""
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr ""
@@ -649,6 +393,14 @@ msgstr ""
msgid "Selection Only"
msgstr ""
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "ТърÑене"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr ""
@@ -681,11 +433,11 @@ msgstr ""
msgid "Skip"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr ""
@@ -752,6 +504,20 @@ msgstr ""
msgid "Oneshot"
msgstr ""
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "ЗатварÑне"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr ""
@@ -777,7 +543,7 @@ msgstr ""
msgid "Disconnect"
msgstr ""
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr ""
@@ -794,12 +560,25 @@ msgstr "Любими:"
msgid "Recent:"
msgstr ""
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "ТърÑене:"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr ""
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "ОпиÑание:"
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr ""
@@ -855,6 +634,10 @@ msgid "Owners Of:"
msgstr ""
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr ""
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -862,7 +645,7 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
+msgid "Cannot remove:\n"
msgstr ""
#: editor/dependency_editor.cpp
@@ -929,10 +712,6 @@ msgid "Godot Engine contributors"
msgstr ""
#: editor/editor_about.cpp
-msgid "Authors"
-msgstr ""
-
-#: editor/editor_about.cpp
#, fuzzy
msgid "Project Founders"
msgstr "ДиÑпечер на проектите"
@@ -950,6 +729,38 @@ msgid "Developers"
msgstr ""
#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
msgid "License"
msgstr ""
@@ -993,6 +804,16 @@ msgid "Package Installed Successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr "Готово!"
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr "ИнÑталиране"
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
msgstr ""
@@ -1041,11 +862,6 @@ msgid "Audio Bus, Drag and Drop to rearrange."
msgstr ""
#: editor/editor_audio_buses.cpp
-#, fuzzy
-msgid "Bus options"
-msgstr "ÐаÑтройки за отÑтранÑване на грешки"
-
-#: editor/editor_audio_buses.cpp
msgid "Solo"
msgstr ""
@@ -1057,12 +873,21 @@ msgstr ""
msgid "Bypass"
msgstr ""
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "ÐаÑтройки за отÑтранÑване на грешки"
+
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Reset Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Delete Effect"
msgstr ""
@@ -1084,6 +909,10 @@ msgid "Duplicate Audio Bus"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Reset Bus Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Move Audio Bus"
msgstr ""
@@ -1115,7 +944,8 @@ msgstr ""
msgid "Create a new Bus Layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
@@ -1206,7 +1036,7 @@ msgid "Rearrange Autoloads"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "Път:"
@@ -1214,9 +1044,7 @@ msgstr "Път:"
msgid "Node Name:"
msgstr ""
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr ""
@@ -1250,18 +1078,19 @@ msgid "Choose a Directory"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "Създаване на папка"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "Име:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "ÐеуÑпешно Ñъздаване на папка."
@@ -1281,30 +1110,6 @@ msgstr ""
msgid "Template file not found:\n"
msgstr ""
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr "ИзнаÑÑне за %s"
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr ""
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "Файлът ÑъщеÑтвува. ИÑкате ли да го презапишете?"
@@ -1389,6 +1194,11 @@ msgstr ""
msgid "Move Favorite Down"
msgstr ""
+#: editor/editor_file_dialog.cpp
+#, fuzzy
+msgid "Go to parent folder"
+msgstr "ÐеуÑпешно Ñъздаване на папка."
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "Папки и файлове:"
@@ -1403,10 +1213,6 @@ msgid "File:"
msgstr "Файл:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "ТрÑбва да Ñе използва правилно разширение."
@@ -1431,6 +1237,10 @@ msgstr ""
msgid "Search Classes"
msgstr ""
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr ""
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr ""
@@ -1447,15 +1257,28 @@ msgstr ""
msgid "Brief Description:"
msgstr ""
+#: editor/editor_help.cpp
+msgid "Members"
+msgstr ""
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr ""
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Public Methods"
+msgstr "Изберете метод"
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr ""
#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr ""
@@ -1464,6 +1287,11 @@ msgid "Signals:"
msgstr ""
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Enumerations"
+msgstr "Преходи"
+
+#: editor/editor_help.cpp
msgid "Enumerations:"
msgstr ""
@@ -1472,18 +1300,49 @@ msgid "enum "
msgstr ""
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Constants"
+msgstr "ПоÑтоÑнно"
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Description"
+msgstr "ОпиÑание:"
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Property Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Methods"
+msgstr "Изберете метод"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr ""
@@ -1492,24 +1351,21 @@ msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "ИзчиÑтване"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr ""
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1526,6 +1382,29 @@ msgid "Error while saving."
msgstr ""
#: editor/editor_node.cpp
+msgid "Can't open '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while parsing '%s'."
+msgstr "Имаше грешка при внаÑÑнето на Ñцената."
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Missing '%s' or its dependencies."
+msgstr "Сцената '%s' има нарушени завиÑимоÑти:"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while loading '%s'."
+msgstr "Имаше грешка при зареждане на Ñцената."
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr "Запазване на Ñцената"
@@ -1583,6 +1462,33 @@ msgid "Restored default layout to base settings."
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr ""
@@ -1748,23 +1654,35 @@ msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Изберете главна Ñцена"
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "Грешка при зареждането на шрифта."
+
+#: editor/editor_node.cpp
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -1774,7 +1692,7 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr ""
@@ -1785,14 +1703,15 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp
-msgid "Error loading scene."
-msgstr "Имаше грешка при зареждане на Ñцената."
-
-#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
msgstr "Сцената '%s' има нарушени завиÑимоÑти:"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Clear Recent Scenes"
+msgstr "ЗатварÑне на Ñцената"
+
+#: editor/editor_node.cpp
msgid "Save Layout"
msgstr ""
@@ -1825,7 +1744,7 @@ msgstr ""
msgid "Toggle distraction-free mode."
msgstr ""
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr "Сцена"
@@ -2044,6 +1963,10 @@ msgstr ""
msgid "Issue Tracker"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "About"
msgstr "ОтноÑно"
@@ -2052,7 +1975,7 @@ msgstr "ОтноÑно"
msgid "Play the project."
msgstr "Възпроизвеждане на проекта."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr ""
@@ -2068,7 +1991,7 @@ msgstr "ПреуÑтановÑване на Ñцената"
msgid "Stop the scene."
msgstr "Спиране на Ñцената."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr ""
@@ -2141,6 +2064,15 @@ msgid "Object properties."
msgstr ""
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr "ВнаÑÑне"
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr ""
@@ -2156,14 +2088,6 @@ msgstr ""
msgid "Don't Save"
msgstr ""
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr "Повторно внаÑÑне"
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr ""
-
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "ВнаÑÑне на шаблони от архив във формат ZIP"
@@ -2225,11 +2149,28 @@ msgstr ""
msgid "Open the previous Editor"
msgstr ""
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr ""
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr "ИнÑталирани приÑтавки:"
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "ВерÑиÑ:"
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr ""
@@ -2262,7 +2203,7 @@ msgid "Frame %"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+msgid "Physics Frame %"
msgstr ""
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2281,27 +2222,6 @@ msgstr ""
msgid "Frame #:"
msgstr ""
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr ""
-"За да Ñе извърши повторното внаÑÑне, текущата Ñцена трÑбва да бъде запазена."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr "Запазване и повторно внаÑÑне"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr "Извършва Ñе повторно внаÑÑне"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr ""
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2413,10 +2333,6 @@ msgid "Importing:"
msgstr "ВнаÑÑне:"
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr ""
@@ -2451,82 +2367,78 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid ""
-"\n"
-"Status: Needs Re-Import"
-msgstr "Запазване и повторно внаÑÑне"
-
-#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Source: "
+msgid "View items as a grid of thumbnails"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
+msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
+msgid ""
+"\n"
+"Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
+msgid ""
+"\n"
+"Source: "
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
+msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "Cannot move a folder into itself.\n"
msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving file:\n"
+msgid "Error moving:\n"
msgstr "Имаше грешка при внаÑÑнето:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "Имаше грешка при внаÑÑнето:"
+msgid "Unable to update dependencies:\n"
+msgstr "Сцената '%s' има нарушени завиÑимоÑти:"
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
+msgid "No name provided"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
+msgid "No name provided."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Expand all"
+msgid "Name contains invalid characters."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Collapse all"
+msgid "A file or folder with this name already exists."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
-msgstr ""
+#, fuzzy
+msgid "Renaming file:"
+msgstr "Имаше грешка при внаÑÑнето:"
#: editor/filesystem_dock.cpp
-msgid "Instance"
+msgid "Renaming folder:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
+msgid "Expand all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
+msgid "Collapse all"
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2534,7 +2446,7 @@ msgid "Copy Path"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
+msgid "Rename.."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2542,12 +2454,25 @@ msgid "Move To.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Info"
+#, fuzzy
+msgid "New Folder.."
+msgstr "Създаване на папка"
+
+#: editor/filesystem_dock.cpp
+msgid "Show In File Manager"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
-msgstr "Повторно внаÑÑне.."
+msgid "Instance"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Edit Dependencies.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View Owners.."
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2579,6 +2504,11 @@ msgstr ""
msgid "Move"
msgstr ""
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr ""
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr ""
@@ -2593,6 +2523,11 @@ msgid "Import as Single Scene"
msgstr "ВнаÑÑне на Ñцената.."
#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Animations"
+msgstr "ВнаÑÑне на анимации.."
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -2605,6 +2540,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
#, fuzzy
msgid "Import as Multiple Scenes"
msgstr "ВнаÑÑне на триизмерна Ñцена"
@@ -2614,38 +2561,31 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr "ВнаÑÑне на Ñцена"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr "ВнаÑÑне на Ñцената.."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr ""
@@ -2674,579 +2614,54 @@ msgstr ""
msgid "Reimport"
msgstr "Повторно внаÑÑне"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr "ВнаÑÑне на шрифт"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "Ðепознат формат за шрифтове."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "Грешка при зареждането на шрифта."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr "Имаше грешка при внаÑÑнето на Ñцената."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr "ВнаÑÑне на триизмерна Ñцена"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr "ВнаÑÑне въпреки това"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Отказ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr "ВнаÑÑне и отварÑне"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr "ВнаÑÑне на изображение:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr "Имаше грешка при внаÑÑнето:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr "ВнаÑÑне на текÑтури за ÐÑ‚Ð»Ð°Ñ (двуизмерно)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
+#: editor/node_dock.cpp
+msgid "Groups"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr "ВнаÑÑне на големи текÑтури (двуизмерно)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
-msgstr "ВнаÑÑне на текÑтури"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
-msgstr "Двуизмерна текÑтура"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
-msgstr "Триизмерна текÑтура"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr "ВнаÑÑне на голÑма текÑтура"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr "ÐÑма артикули за внаÑÑне!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr "ВнаÑÑне на преводи"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr "ÐеуÑпешно внаÑÑне!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr "ВнаÑÑне на превода"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr "ВнаÑÑне на езици:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr ""
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Select a Node to edit Signals and Groups."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -3402,7 +2817,6 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3513,10 +2927,6 @@ msgid "Delete Input"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr ""
@@ -3572,64 +2982,182 @@ msgstr ""
msgid "Filters.."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
+msgstr "Съдържание:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
+msgstr "Преглед на файловете"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr "ИзтеглÑне:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting.."
+msgstr "Свързване.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr "Запитване.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Error making request"
+msgstr "Имаше грешка при зареждане на Ñцената."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "Ð’Ñички"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr "ПриÑтавки"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "Подреждане:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "КатегориÑ:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "МÑÑто:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr "Поддръжка"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3672,11 +3200,15 @@ msgid "Edit CanvasItem"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+msgid "Anchors only"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
+msgid "Change Anchors and Margins"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3728,59 +3260,72 @@ msgid "Pan Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
+msgid "Toggles snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
+msgid "Snapping options"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
+msgid "Snap to grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
+msgid "Use Rotation Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Configure Snap..."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
+msgid "Snap Relative"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
+msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
+msgid "Smart snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
+msgid "Snap to parent"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
+msgid "Snap to node anchor"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3809,11 +3354,16 @@ msgid "View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
+msgid "Show helpers"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show rulers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3825,7 +3375,7 @@ msgid "Frame Selection"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
+msgid "Layout"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3849,11 +3399,19 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
+msgid "Drag pivot from mouse position"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Set pivot at mouse position"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
+msgid "Multiply grid step by 2"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Divide grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3864,23 +3422,28 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr ""
@@ -3894,45 +3457,6 @@ msgid ""
"Drag & drop + Alt : Change node type"
msgstr ""
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3942,14 +3466,6 @@ msgid "Set Handle"
msgstr ""
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr ""
@@ -3972,6 +3488,26 @@ msgid "Update from Scene"
msgstr "ОбновÑване от Ñцена"
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease in"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
msgstr ""
@@ -4048,22 +3584,18 @@ msgid "Create Occluder Polygon"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr ""
@@ -4164,6 +3696,10 @@ msgid "Create Outline"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr ""
@@ -4291,12 +3827,72 @@ msgstr ""
msgid "Populate"
msgstr ""
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create Navigation Polygon"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Marking walkable triangles..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Partitioning..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
msgstr ""
#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
+msgid "Create Navigation Polygon"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -4538,6 +4134,14 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr ""
@@ -4592,63 +4196,10 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "ПоÑтавÑне"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr ""
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr ""
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
@@ -4739,6 +4290,10 @@ msgstr ""
msgid "Close All"
msgstr "ЗатварÑне на вÑичко"
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr "ПуÑкане"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
msgstr ""
@@ -4767,7 +4322,8 @@ msgstr ""
msgid "Break"
msgstr ""
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr ""
@@ -4780,18 +4336,6 @@ msgid "Debug with external editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
msgstr ""
@@ -4873,8 +4417,9 @@ msgid "Cut"
msgstr "ИзрÑзване"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "Копиране"
@@ -5138,10 +4683,6 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr ""
@@ -5158,10 +4699,6 @@ msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr ""
@@ -5391,6 +4928,10 @@ msgid "Transform"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr ""
@@ -5536,6 +5077,10 @@ msgid "Speed (FPS):"
msgstr "СкороÑÑ‚ (кадри в Ñекунда):"
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr ""
@@ -5548,11 +5093,12 @@ msgid "Insert Empty (After)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr ""
+#, fuzzy
+msgid "Move (Before)"
+msgstr "ПоÑтавÑне на възелите"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
+msgid "Move (After)"
msgstr ""
#: editor/plugins/style_box_editor_plugin.cpp
@@ -5630,7 +5176,11 @@ msgid "Remove All"
msgstr "ЗатварÑне на вÑичко"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
@@ -5715,6 +5265,10 @@ msgid "Style"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr ""
@@ -5764,7 +5318,7 @@ msgid "Mirror Y"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
+msgid "Paint Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5828,6 +5382,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr ""
@@ -5899,19 +5457,30 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
-msgstr "ÐедейÑтвителен път. ПътÑÑ‚ трÑбва да ÑъщеÑтвува!"
+msgid "The path does not exist."
+msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
+#, fuzzy
+msgid "Please choose a 'project.godot' file."
+msgstr "МолÑ, изнеÑете извън папката на проекта!"
+
+#: editor/project_manager.cpp
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
+msgid "Please choose a folder that does not contain a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
@@ -5919,10 +5488,26 @@ msgid "Imported Project"
msgstr "ВнеÑен проект"
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't edit project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr ""
@@ -5931,11 +5516,28 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Rename Project"
+msgstr "Ðов проект"
+
+#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in the project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "New Game Project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "ВнаÑÑне на ÑъщеÑтвуващ проект"
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
+msgid "Create New Project"
+msgstr "Създаване на нов проект"
+
+#: editor/project_manager.cpp
+msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
@@ -5943,26 +5545,19 @@ msgid "Project Name:"
msgstr "Име:"
#: editor/project_manager.cpp
-msgid "Create New Project"
-msgstr "Създаване на нов проект"
+#, fuzzy
+msgid "Create folder"
+msgstr "Създаване на папка"
#: editor/project_manager.cpp
msgid "Project Path:"
msgstr "Път:"
#: editor/project_manager.cpp
-msgid "Install Project:"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Browse"
msgstr "Разглеждане"
#: editor/project_manager.cpp
-msgid "New Game Project"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "That's a BINGO!"
msgstr ""
@@ -5971,6 +5566,11 @@ msgid "Unnamed Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't open project"
+msgstr "Създаване на нов проект"
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr ""
@@ -5997,6 +5597,12 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
"You are about the scan %s folders for existing Godot projects. Do you "
"confirm?"
msgstr ""
@@ -6006,10 +5612,6 @@ msgid "Project List"
msgstr "СпиÑък Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð¸"
#: editor/project_manager.cpp
-msgid "Run"
-msgstr "ПуÑкане"
-
-#: editor/project_manager.cpp
msgid "Scan"
msgstr "Сканиране"
@@ -6030,6 +5632,10 @@ msgid "Exit"
msgstr "Изход"
#: editor/project_manager.cpp
+msgid "Restart Now"
+msgstr ""
+
+#: editor/project_manager.cpp
#, fuzzy
msgid "Can't run project"
msgstr "Създаване на нов проект"
@@ -6067,17 +5673,14 @@ msgid "Add Input Action Event"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
@@ -6138,7 +5741,7 @@ msgstr ""
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "ОÑ"
@@ -6158,31 +5761,31 @@ msgstr ""
msgid "Add Event"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "УÑтройÑтво"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "Копче"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "ЛÑво копче."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "ДÑÑно копче."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "Средно копче."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr "Колелцето нагоре."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr "Колелцето надолу."
@@ -6191,7 +5794,7 @@ msgid "Add Global Property"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6208,6 +5811,14 @@ msgid "Delete Item"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Can't contain '/' or ':'"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
@@ -6248,6 +5859,14 @@ msgid "Remove Resource Remap Option"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr "ÐаÑтройки на проекта"
@@ -6308,6 +5927,27 @@ msgid "Locale"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Locales Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show all locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "ПоÑтавÑне на възелите"
+
+#: editor/project_settings_editor.cpp
+msgid "Locales:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -6357,10 +5997,18 @@ msgid "New Script"
msgstr "Ðов Ñкрипт"
#: editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr ""
#: editor/property_editor.cpp
+msgid "Convert To %s"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr ""
@@ -6398,6 +6046,11 @@ msgid "Select Property"
msgstr "Изберете ÑвойÑтво"
#: editor/property_selector.cpp
+#, fuzzy
+msgid "Select Virtual Method"
+msgstr "Изберете метод"
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr "Изберете метод"
@@ -6425,26 +6078,6 @@ msgstr ""
msgid "Reparent"
msgstr ""
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr ""
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr ""
@@ -6571,14 +6204,6 @@ msgid "Sub-Resources:"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr ""
@@ -6767,6 +6392,15 @@ msgid "Invalid base path"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "File exists, will be reused"
+msgstr "Файлът ÑъщеÑтвува. ИÑкате ли да го презапишете?"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr ""
@@ -6807,6 +6441,10 @@ msgid "Load existing script file"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Inherits"
msgstr ""
@@ -6848,6 +6486,10 @@ msgid "Function:"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr "Грешки"
@@ -6928,6 +6570,10 @@ msgid "Type"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr ""
@@ -7003,6 +6649,23 @@ msgstr ""
msgid "Change Probe Extents"
msgstr ""
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Library"
+msgstr "ИзнаÑÑне на библиотеката"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Status"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
@@ -7010,7 +6673,7 @@ msgstr ""
"Ðевалиден агрумент тип на convert(), използвайте конÑтантите започващи Ñ "
"TYPE_*."
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "ÐедоÑтатъчно байтове за разкодиране или недейÑтвителен формат."
@@ -7068,10 +6731,6 @@ msgid "GridMap Duplicate Selection"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Snap View"
msgstr ""
@@ -7167,13 +6826,8 @@ msgstr "ÐаÑтройки"
msgid "Pick Distance:"
msgstr ""
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr "Файл:"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7365,10 +7019,18 @@ msgid "Return"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
msgstr ""
@@ -7756,6 +7418,12 @@ msgid ""
"order for AnimatedSprite3D to display frames."
msgstr ""
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -7765,6 +7433,10 @@ msgid "Add current color as a preset"
msgstr ""
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Отказ"
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr "Тревога!"
@@ -7772,10 +7444,6 @@ msgstr "Тревога!"
msgid "Please Confirm..."
msgstr "МолÑ, потвърдете..."
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr ""
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -7804,6 +7472,106 @@ msgid ""
"texture to some node for display."
msgstr ""
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "Ðепознат формат за шрифтове."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "Грешка при зареждането на шрифта."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr ""
+
+#~ msgid "Exporting for %s"
+#~ msgstr "ИзнаÑÑне за %s"
+
+#~ msgid "Re-Import"
+#~ msgstr "Повторно внаÑÑне"
+
+#~ msgid "Current scene must be saved to re-import."
+#~ msgstr ""
+#~ "За да Ñе извърши повторното внаÑÑне, текущата Ñцена трÑбва да бъде "
+#~ "запазена."
+
+#~ msgid "Save & Re-Import"
+#~ msgstr "Запазване и повторно внаÑÑне"
+
+#~ msgid "Re-Importing"
+#~ msgstr "Извършва Ñе повторно внаÑÑне"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Status: Needs Re-Import"
+#~ msgstr "Запазване и повторно внаÑÑне"
+
+#~ msgid "Re-Import.."
+#~ msgstr "Повторно внаÑÑне.."
+
+#~ msgid "Font Import"
+#~ msgstr "ВнаÑÑне на шрифт"
+
+#~ msgid "Import 3D Scene"
+#~ msgstr "ВнаÑÑне на триизмерна Ñцена"
+
+#~ msgid "Import Anyway"
+#~ msgstr "ВнаÑÑне въпреки това"
+
+#~ msgid "Import & Open"
+#~ msgstr "ВнаÑÑне и отварÑне"
+
+#~ msgid "Import Image:"
+#~ msgstr "ВнаÑÑне на изображение:"
+
+#~ msgid "Error importing:"
+#~ msgstr "Имаше грешка при внаÑÑнето:"
+
+#~ msgid "Import Textures for Atlas (2D)"
+#~ msgstr "ВнаÑÑне на текÑтури за ÐÑ‚Ð»Ð°Ñ (двуизмерно)"
+
+#~ msgid "Import Large Textures (2D)"
+#~ msgstr "ВнаÑÑне на големи текÑтури (двуизмерно)"
+
+#~ msgid "Import Textures"
+#~ msgstr "ВнаÑÑне на текÑтури"
+
+#~ msgid "2D Texture"
+#~ msgstr "Двуизмерна текÑтура"
+
+#~ msgid "3D Texture"
+#~ msgstr "Триизмерна текÑтура"
+
+#~ msgid "Import Large Texture"
+#~ msgstr "ВнаÑÑне на голÑма текÑтура"
+
+#~ msgid "No items to import!"
+#~ msgstr "ÐÑма артикули за внаÑÑне!"
+
+#~ msgid "Import Translations"
+#~ msgstr "ВнаÑÑне на преводи"
+
+#~ msgid "Couldn't import!"
+#~ msgstr "ÐеуÑпешно внаÑÑне!"
+
+#~ msgid "Import Translation"
+#~ msgstr "ВнаÑÑне на превода"
+
+#~ msgid "Import Languages:"
+#~ msgstr "ВнаÑÑне на езици:"
+
+#~ msgid "Invalid project path, the path must exist!"
+#~ msgstr "ÐедейÑтвителен път. ПътÑÑ‚ трÑбва да ÑъщеÑтвува!"
+
+#, fuzzy
+#~ msgid "Tiles"
+#~ msgstr "Файл:"
+
#~ msgid "Close scene? (Unsaved changes will be lost)"
#~ msgstr "Да Ñе затвори ли Ñцената? (незаразените промени ще Ñе загубÑÑ‚)"
@@ -7829,9 +7597,6 @@ msgstr ""
#~ "За да изпълнÑва звук, SamplePlayer трÑбва да има един SampleLibrary "
#~ "реÑÑƒÑ€Ñ Ð² параметъра 'samples'."
-#~ msgid "Please export outside the project folder!"
-#~ msgstr "МолÑ, изнеÑете извън папката на проекта!"
-
#~ msgid "Error exporting project!"
#~ msgstr "Имаше грешка при изнаÑÑне на проекта!"
diff --git a/editor/translations/bn.po b/editor/translations/bn.po
index 7be067aedd..3e93381dcd 100644
--- a/editor/translations/bn.po
+++ b/editor/translations/bn.po
@@ -1,5 +1,6 @@
# Bengali translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# Abu Md. Maruf Sarker <maruf.webdev@gmail.com>, 2016-2017.
@@ -193,10 +194,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr "%d à¦à¦° জনà§à¦¯ নতà§à¦¨ টà§à¦°à§à¦¯à¦¾à¦•/পথ-সমূহ তৈরি করতে à¦à¦¬à¦‚ চাবিসমূহ পà§à¦°à¦¬à§‡à¦¶ করাতে চান?"
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -359,271 +359,6 @@ msgstr "শà§à¦°à§‡à¦£à§€à¦¬à¦¿à¦¨à§à¦¯à¦¾à¦¸/সারির মানের
msgid "Change Array Value"
msgstr "শà§à¦°à§‡à¦£à§€à¦¬à¦¿à¦¨à§à¦¯à¦¾à¦¸/সারির মান পরিবরà§à¦¤à¦¨ করà§à¦¨"
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr "সংসà§à¦•রণ:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Contents:"
-msgstr "ধà§à¦°à§à¦¬à¦•সমূহ:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "View Files"
-msgstr "ফাইল"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr "বরà§à¦£à¦¨à¦¾:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr "ইনà§à¦¸à¦Ÿà¦²"
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "বনà§à¦§ করà§à¦¨"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect."
-msgstr "সংযোগ.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect to host:"
-msgstr "নোডের সাথে সংযà§à¦•à§à¦¤ করà§à¦¨:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Request failed, return code:"
-msgstr "আবেদনকৃত ফাইল ফরমà§à¦¯à¦¾à¦Ÿ/ধরণ অজানা:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Resolving.."
-msgstr "সংরকà§à¦·à¦¿à¦¤ হচà§à¦›à§‡.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Connecting.."
-msgstr "সংযোগ.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Requesting.."
-msgstr "পরীকà§à¦·à¦¾à¦®à§‚লক উৎস"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Error making request"
-msgstr "রিসোরà§à¦¸ সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Download Error"
-msgstr "নীচে"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "সকল"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨:"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr "পà§à¦²à¦¾à¦—ইন-সমূহ"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "সাজান:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr "উলà§à¦Ÿà¦¾à¦¨/বিপরীত দিকে ফিরান"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "বিভাগ:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "ওয়েবসাইট:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr "সমরà§à¦¥à¦¨.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr "অফিসিয়াল/পà§à¦°à¦¾à¦¥à¦®à¦¿à¦• উৎস"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "কমিউনিটি/যৌথ-সামাজিক উৎস"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr "পরীকà§à¦·à¦¾à¦®à§‚লক উৎস"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr "পà§à¦°à¦¯à¦¼à§‡à¦¾à¦œà¦¨à§€à¦¯à¦¼ উপকরণসমূহের ZIP ফাইল"
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr "'%s' à¦à¦° জনà§à¦¯ মেথডের তালিকা:"
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "ডাকà§à¦¨ (Call)"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr "মেথডের তালিকা:"
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr "মান/আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ-সমূহ:"
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr "পà§à¦°à¦¤à§à¦¯à¦¾à¦¬à¦°à§à¦¤à¦¨:"
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr "লাইন-ঠযান"
@@ -661,6 +396,14 @@ msgstr "সমà§à¦ªà§‚রà§à¦£ শবà§à¦¦"
msgid "Selection Only"
msgstr "শà§à¦§à§à¦®à¦¾à¦¤à§à¦° নিরà§à¦¬à¦¾à¦šà¦¿à¦¤à¦¸à¦®à§‚হ"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr "সনà§à¦§à¦¾à¦¨ করà§à¦¨"
@@ -693,11 +436,11 @@ msgstr "পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨à§‡ অবহিত করà§à¦¨"
msgid "Skip"
msgstr "অতিকà§à¦°à¦® করে যান"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "সমà§à¦ªà§à¦°à¦¸à¦¾à¦°à¦¿à¦¤ করà§à¦¨ (জà§à¦®à§ ইন)"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr "সংকà§à¦šà¦¿à¦¤ করà§à¦¨ (জà§à¦®à§ আউট)"
@@ -766,6 +509,20 @@ msgstr "বিলমà§à¦¬à¦¿à¦¤"
msgid "Oneshot"
msgstr "ওয়ান-শট"
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "বনà§à¦§ করà§à¦¨"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr "সংযোগ"
@@ -791,7 +548,7 @@ msgstr "সংযোগ.."
msgid "Disconnect"
msgstr "সংযোগ বিচà§à¦›à¦¿à¦¨à§à¦¨ করà§à¦¨"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr "সংকেতসমূহ"
@@ -808,12 +565,25 @@ msgstr "ফেবরিট/পà§à¦°à¦¿à¦¯à¦¼-সমূহ:"
msgid "Recent:"
msgstr "সামà§à¦ªà§à¦°à¦¤à¦¿à¦•:"
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨:"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr "মিলসমূহ:"
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "বরà§à¦£à¦¨à¦¾:"
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr "à¦à¦° জনà§à¦¯ পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦•ের অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨:"
@@ -873,6 +643,10 @@ msgid "Owners Of:"
msgstr "সà§à¦¬à¦¤à§à¦¬à¦¾à¦§à¦¿à¦•ারীসমূহ:"
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ফাইলসমূহ পà§à¦°à¦•লà§à¦ª হতে অপসারণ করবেন? (অফেরৎযোগà§à¦¯)"
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -883,8 +657,8 @@ msgstr ""
"তবà§à¦“ তাদের অপসারণ করবেন? (অফেরৎযোগà§à¦¯)"
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
-msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ফাইলসমূহ পà§à¦°à¦•লà§à¦ª হতে অপসারণ করবেন? (অফেরৎযোগà§à¦¯)"
+msgid "Cannot remove:\n"
+msgstr ""
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -951,11 +725,6 @@ msgstr ""
#: editor/editor_about.cpp
#, fuzzy
-msgid "Authors"
-msgstr "লেখক:"
-
-#: editor/editor_about.cpp
-#, fuzzy
msgid "Project Founders"
msgstr "পà§à¦°à¦•লà§à¦ª মà§à¦¯à¦¾à¦¨à§‡à¦œà¦¾à¦°"
@@ -972,6 +741,40 @@ msgid "Developers"
msgstr ""
#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "লেখক:"
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Bronze Donors"
+msgstr "কà§à¦²à§‹à¦¨ করে নীচে নিন"
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
msgid "License"
msgstr ""
@@ -1015,6 +818,16 @@ msgid "Package Installed Successfully!"
msgstr "পà§à¦¯à¦¾à¦•েজ ইনà§à¦¸à¦Ÿà¦² সফল হয়েছে!"
#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr "ইনà§à¦¸à¦Ÿà¦²"
+
+#: editor/editor_asset_installer.cpp
#, fuzzy
msgid "Package Installer"
msgstr "পà§à¦¯à¦¾à¦•েজ ইনà§à¦¸à¦Ÿà¦² সফল হয়েছে!"
@@ -1068,11 +881,6 @@ msgid "Audio Bus, Drag and Drop to rearrange."
msgstr ""
#: editor/editor_audio_buses.cpp
-#, fuzzy
-msgid "Bus options"
-msgstr "ডিবাগের সিদà§à¦§à¦¾à¦¨à§à¦¤à¦¸à¦®à§‚হ"
-
-#: editor/editor_audio_buses.cpp
msgid "Solo"
msgstr ""
@@ -1084,6 +892,11 @@ msgstr ""
msgid "Bypass"
msgstr ""
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "ডিবাগের সিদà§à¦§à¦¾à¦¨à§à¦¤à¦¸à¦®à§‚হ"
+
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
msgid "Duplicate"
@@ -1091,6 +904,11 @@ msgstr "পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Volume"
+msgstr "সমà§à¦ªà§à¦°à¦¸à¦¾à¦°à¦¨/সংকোচন অপসারণ করà§à¦¨ (রিসেট জà§à¦®à§)"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Delete Effect"
msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ সমূহ অপসারণ করà§à¦¨"
@@ -1115,6 +933,11 @@ msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨ পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿ করà§à¦¨"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Bus Volume"
+msgstr "সমà§à¦ªà§à¦°à¦¸à¦¾à¦°à¦¨/সংকোচন অপসারণ করà§à¦¨ (রিসেট জà§à¦®à§)"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Move Audio Bus"
msgstr "পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾ সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦° করà§à¦¨"
@@ -1151,7 +974,8 @@ msgstr "%s সংযà§à¦•à§à¦¤ করà§à¦¨"
msgid "Create a new Bus Layout."
msgstr "নতà§à¦¨ রিসোরà§à¦¸ তৈরি করà§à¦¨"
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr "লোড"
@@ -1249,7 +1073,7 @@ msgid "Rearrange Autoloads"
msgstr "Autoload সমূহ পà§à¦¨à¦°à§à¦¬à¦¿à¦¨à§à¦¯à¦¸à§à¦¤ করà§à¦¨"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "পথ:"
@@ -1257,9 +1081,7 @@ msgstr "পথ:"
msgid "Node Name:"
msgstr "নোডের নাম:"
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr "নাম"
@@ -1293,18 +1115,19 @@ msgid "Choose a Directory"
msgstr "à¦à¦•টি সà§à¦¥à¦¾à¦¨ পছনà§à¦¦ করà§à¦¨"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "ফোলà§à¦¡à¦¾à¦° তৈরি করà§à¦¨"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "নাম:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "ফোলà§à¦¡à¦¾à¦° তৈরী করা সমà§à¦­à¦¬ হয়নি।"
@@ -1324,30 +1147,6 @@ msgstr "পà§à¦¯à¦¾à¦•/গà§à¦šà§à¦›à¦¿à¦¤ করা"
msgid "Template file not found:\n"
msgstr ""
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr "সংযোজিত:"
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr "অপসারিত:"
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€ সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে:"
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€à¦° উপ-গঠনবিনà§à¦¯à¦¾à¦¸ (subtexture) সংরকà§à¦·à¦£ অসমরà§à¦¥ হয়েছে:"
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr "%s à¦à¦° জনà§à¦¯ à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ (export) হচà§à¦›à§‡"
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr "সà§à¦¥à¦¾à¦ªà¦¿à¦¤/বিনà§à¦¯à¦¸à§à¦¤ হচà§à¦›à§‡.."
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "à¦à¦•ই নামের ফাইল উপসà§à¦¥à¦¿à¦¤, তা মà§à¦›à§‡ লিখবেন?"
@@ -1432,6 +1231,11 @@ msgstr "ফেবরিট/পà§à¦°à¦¿à¦¯à¦¼à¦•ে উপরের দিকে
msgid "Move Favorite Down"
msgstr "ফেবরিট/পà§à¦°à¦¿à¦¯à¦¼à¦•ে নিচের দিকে নামান"
+#: editor/editor_file_dialog.cpp
+#, fuzzy
+msgid "Go to parent folder"
+msgstr "ফোলà§à¦¡à¦¾à¦° তৈরী করা সমà§à¦­à¦¬ হয়নি।"
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "পথ à¦à¦¬à¦‚ ফাইল:"
@@ -1446,10 +1250,6 @@ msgid "File:"
msgstr "ফাইল:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "ফিলà§à¦Ÿà¦¾à¦°:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "à¦à¦•টি কারà§à¦¯à¦•র à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦¶à¦¨ বà§à¦¯à¦¬à¦¹à¦¾à¦° করা আবশà§à¦¯à¦•।"
@@ -1475,6 +1275,10 @@ msgstr "কà§à¦²à¦¾à¦¸à§‡à¦° তালিকা:"
msgid "Search Classes"
msgstr "কà§à¦²à¦¾à¦¸à§‡à¦° অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨"
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr "শীরà§à¦·"
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr "কà§à¦²à¦¾à¦¸:"
@@ -1491,15 +1295,30 @@ msgstr "গৃহীত হয়েছে:"
msgid "Brief Description:"
msgstr "সংকà§à¦·à¦¿à¦ªà§à¦¤ বরà§à¦£à¦¨à¦¾:"
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Members"
+msgstr "সদসà§à¦¯à¦—ণ (Members):"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "সদসà§à¦¯à¦—ণ (Members):"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Public Methods"
+msgstr "সরà§à¦¬à¦œà¦¨à§€à¦¨/পà§à¦°à¦•াশà§à¦¯ মেথডসমূহ:"
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr "সরà§à¦¬à¦œà¦¨à§€à¦¨/পà§à¦°à¦•াশà§à¦¯ মেথডসমূহ:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "GUI Theme Items"
+msgstr "GUI থিম à¦à¦° বসà§à¦¤à§à¦¸à¦®à§‚হ:"
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr "GUI থিম à¦à¦° বসà§à¦¤à§à¦¸à¦®à§‚হ:"
@@ -1509,6 +1328,11 @@ msgstr "সিগনà§à¦¯à¦¾à¦²à¦¸/সংকেতসমূহ:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Enumerations"
+msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à¦¸à¦®à§‚হ"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Enumerations:"
msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à¦¸à¦®à§‚হ"
@@ -1517,18 +1341,50 @@ msgid "enum "
msgstr ""
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Constants"
+msgstr "ধà§à¦°à§à¦¬à¦•সমূহ:"
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "ধà§à¦°à§à¦¬à¦•সমূহ:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Description"
+msgstr "বরà§à¦£à¦¨à¦¾:"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Properties"
+msgstr "পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿-সমূহ:"
+
+#: editor/editor_help.cpp
msgid "Property Description:"
msgstr "মান/পà§à¦°à§‹à¦ªà¦¾à¦°à§à¦Ÿà¦¿à¦° বরà§à¦£à¦¨à¦¾:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Methods"
+msgstr "মেথডের তালিকা:"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr "মেথডের বরà§à¦£à§à¦¨à¦¾:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr "টেকà§à¦¸à¦Ÿ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨"
@@ -1538,24 +1394,21 @@ msgid "Output:"
msgstr " আউটপà§à¦Ÿ/ফলাফল:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "পরিসà§à¦•ার করà§à¦¨/কà§à¦²à§€à§Ÿà¦¾à¦°"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr "রিসোরà§à¦¸ সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে!"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr "রিসোরà§à¦¸ à¦à¦‡à¦°à§‚পে সংরকà§à¦·à¦£ করà§à¦¨.."
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "বà§à¦à¦²à¦¾à¦®.."
@@ -1572,6 +1425,30 @@ msgid "Error while saving."
msgstr "সংরকà§à¦·à¦£à§‡à¦° সময় সমসà§à¦¯à¦¾ হয়েছে।"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Can't open '%s'."
+msgstr "'..' তে পরিচালনা করা সমà§à¦­à¦¬ নয়"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while parsing '%s'."
+msgstr "সংরকà§à¦·à¦£à§‡à¦° সময় সমসà§à¦¯à¦¾ হয়েছে।"
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Missing '%s' or its dependencies."
+msgstr "'%s' দৃশà§à¦¯à¦Ÿà¦¿à¦° অসংলগà§à¦¨ নিরà§à¦­à¦°à¦¤à¦¾ রয়েছে:"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while loading '%s'."
+msgstr "সংরকà§à¦·à¦£à§‡à¦° সময় সমসà§à¦¯à¦¾ হয়েছে।"
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr "দৃশà§à¦¯ সংরকà§à¦·à¦¿à¦¤ হচà§à¦›à§‡"
@@ -1632,6 +1509,33 @@ msgid "Restored default layout to base settings."
msgstr "সাধারণ লেআউট/নকশা আদি সেটিংসে পà§à¦°à¦¤à§à¦¯à¦¾à¦¬à¦°à§à¦¤à¦¿à¦¤ হয়েছে।"
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr "মানসমূহ পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿/কপি করà§à¦¨"
@@ -1810,23 +1714,35 @@ msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "à¦à¦•টি মà§à¦–à§à¦¯ দৃশà§à¦¯ মনোনীত করà§à¦¨"
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "%s হতে সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ তà§à¦²à¦¤à§‡/লোডে সমসà§à¦¯à¦¾ হয়েছে"
+
+#: editor/editor_node.cpp
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -1836,7 +1752,7 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr "আহà§â€Œ"
@@ -1849,14 +1765,15 @@ msgstr ""
"(Import)' বà§à¦¯à¦¬à¦¹à¦¾à¦° করে দৃশà§à¦¯à¦Ÿà¦¿ খà§à¦²à§à¦¨, তারপর তা পà§à¦°à¦•লà§à¦ªà§‡à¦° পথের ভিতরে সংরকà§à¦·à¦£ করà§à¦¨à¥¤"
#: editor/editor_node.cpp
-msgid "Error loading scene."
-msgstr "দৃশà§à¦¯ লোডে সমসà§à¦¯à¦¾ হয়েছে।"
-
-#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
msgstr "'%s' দৃশà§à¦¯à¦Ÿà¦¿à¦° অসংলগà§à¦¨ নিরà§à¦­à¦°à¦¤à¦¾ রয়েছে:"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Clear Recent Scenes"
+msgstr "বোনà§â€Œ/হাড় পরিষà§à¦•ার করà§à¦¨"
+
+#: editor/editor_node.cpp
msgid "Save Layout"
msgstr "লেআউট/নকশা সংরকà§à¦·à¦£ করà§à¦¨"
@@ -1890,7 +1807,7 @@ msgstr "বিকà§à¦·à§‡à¦ª-হীন মোড"
msgid "Toggle distraction-free mode."
msgstr "বিকà§à¦·à§‡à¦ª-হীন মোড"
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr "দৃশà§à¦¯"
@@ -2134,6 +2051,10 @@ msgstr ""
msgid "Issue Tracker"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "কমিউনিটি/যৌথ-সামাজিক উৎস"
+
#: editor/editor_node.cpp
msgid "About"
msgstr "সমà§à¦¬à¦¨à§à¦§à§‡/সমà§à¦ªà¦°à§à¦•ে"
@@ -2142,7 +2063,7 @@ msgstr "সমà§à¦¬à¦¨à§à¦§à§‡/সমà§à¦ªà¦°à§à¦•ে"
msgid "Play the project."
msgstr "পà§à¦°à¦•লà§à¦ªà¦Ÿà¦¿ চালান।"
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr "চালান"
@@ -2158,7 +2079,7 @@ msgstr "দৃশà§à¦¯à¦•ে বিরতি দিন"
msgid "Stop the scene."
msgstr "দৃশà§à¦¯à¦Ÿà¦¿à¦•ে থামান।"
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr "থামান"
@@ -2231,6 +2152,16 @@ msgid "Object properties."
msgstr "বসà§à¦¤à§à¦° বৈশিষà§à¦Ÿà§à¦¯à¦¸à¦®à§‚হ।"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Changes may be lost!"
+msgstr "ছবির গà§à¦°à§à¦ª পরিবরà§à¦¤à¦¨ করà§à¦¨"
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ"
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr "ফাইলসিসà§à¦Ÿà§‡à¦®"
@@ -2246,14 +2177,6 @@ msgstr "আউটপà§à¦Ÿ/ফলাফল"
msgid "Don't Save"
msgstr ""
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr "পà§à¦¨-ইমà§à¦ªà§‹à¦°à§à¦Ÿ"
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr "হালনাগাদ"
-
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "ZIP ফাইল হতে টেমপà§à¦²à§‡à¦Ÿ-সমূহ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
@@ -2321,11 +2244,29 @@ msgstr "à¦à¦¡à¦¿à¦Ÿà¦°à§‡ খà§à¦²à§à¦¨"
msgid "Open the previous Editor"
msgstr "à¦à¦¡à¦¿à¦Ÿà¦°à§‡ খà§à¦²à§à¦¨"
+#: editor/editor_plugin.cpp
+#, fuzzy
+msgid "Creating Mesh Previews"
+msgstr "মেস লাইবà§à¦°à§‡à¦°à¦¿ তৈরি হচà§à¦›à§‡"
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr "থামà§à¦¬à¦¨à§‡à¦‡à¦².."
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr "ইনà§à¦¸à¦Ÿà¦²-কৃত পà§à¦²à¦¾à¦—ইন-সমূহ:"
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr "হালনাগাদ"
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "সংসà§à¦•রণ:"
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr "লেখক:"
@@ -2358,7 +2299,8 @@ msgid "Frame %"
msgstr "ফà§à¦°à§‡à¦® %"
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+#, fuzzy
+msgid "Physics Frame %"
msgstr "সà§à¦¥à¦¿à¦°/বদà§à¦§ ফà§à¦°à§‡à¦® %"
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2377,26 +2319,6 @@ msgstr "সà§à¦¬à§€à¦¯à¦¼"
msgid "Frame #:"
msgstr "ফà§à¦°à§‡à¦® #:"
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr "সà§à¦•à§à¦¯à¦¾à¦¨ সমà§à¦ªà¦¨à§à¦¨ হওয়া পরà§à¦¯à¦¨à§à¦¤ অনà§à¦—à§à¦°à¦¹ করে অপেকà§à¦·à¦¾ করà§à¦¨à¥¤"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr "পà§à¦¨à¦°à¦¾à§Ÿ-ইমà§à¦ªà§‹à¦°à§à¦Ÿ করতে বরà§à¦¤à¦®à¦¾à¦¨ দৃশà§à¦¯à¦Ÿà¦¿à¦•ে অবশà§à¦¯à¦‡ সংরকà§à¦·à¦£ করতে হবে।"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr "সংরকà§à¦·à¦£ à¦à¦¬à¦‚ পà§à¦¨-ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr "পà§à¦¨à¦°à¦¾à§Ÿ ইমà§à¦ªà§‹à¦°à§à¦Ÿ হচà§à¦›à§‡"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr "পà§à¦¨-ইমà§à¦ªà§‹à¦°à§à¦Ÿà§‡ রিসোরà§à¦¸-সমূহ পরিবরà§à¦¤à¦¿à¦¤ হয়েছে"
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2513,10 +2435,6 @@ msgid "Importing:"
msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ হচà§à¦›à§‡:"
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোড হচà§à¦›à§‡"
-
-#: editor/export_template_manager.cpp
#, fuzzy
msgid "Current Version:"
msgstr "বরà§à¦¤à¦®à¦¾à¦¨ দৃশà§à¦¯"
@@ -2557,11 +2475,18 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
-msgstr "সংরকà§à¦·à¦£ à¦à¦¬à¦‚ পà§à¦¨-ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+"Status: Import of file failed. Please fix file and reimport manually."
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
@@ -2571,46 +2496,57 @@ msgid ""
msgstr "উৎস:"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
-msgstr "ফাইলà§à¦—à§à¦²à§‹à¦° à¦à¦•ই উৎস à¦à¦¬à¦‚ গনà§à¦¤à¦¬à§à¦¯à¦¸à§à¦¥à¦¾à¦¨, কিছà§à¦‡ করা হচà§à¦›à§‡ না।"
+#, fuzzy
+msgid "Cannot move/rename resources root."
+msgstr "ফনà§à¦Ÿà§‡à¦° উৎস লোড/পà§à¦°à¦¸à§‡à¦¸ করা সমà§à¦­à¦¬ হচà§à¦›à§‡ না।"
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
-msgstr ""
+#, fuzzy
+msgid "Cannot move a folder into itself.\n"
+msgstr "ফাইলকে তার নিজের উপরেই ইমà§à¦ªà§‹à¦°à§à¦Ÿ করা সমà§à¦­à¦¬ নয়:"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
-msgstr "পথগà§à¦²à§‹à¦° à¦à¦•ই উৎস à¦à¦¬à¦‚ গনà§à¦¤à¦¬à§à¦¯à¦¸à§à¦¥à¦¾à¦¨, কিছà§à¦‡ করা হচà§à¦›à§‡ না।"
+#, fuzzy
+msgid "Error moving:\n"
+msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿà§‡ সমসà§à¦¯à¦¾ হয়েছে:"
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
-msgstr "সà§à¦¥à¦¾à¦¨à¦¸à¦®à§‚হকে তাদের মাà¦à§‡à¦‡ সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦° করা সমà§à¦­à¦¬ নয়।"
+#, fuzzy
+msgid "Unable to update dependencies:\n"
+msgstr "'%s' দৃশà§à¦¯à¦Ÿà¦¿à¦° অসংলগà§à¦¨ নিরà§à¦­à¦°à¦¤à¦¾ রয়েছে:"
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "No name provided"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving file:\n"
-msgstr "ছবি লোডে সমসà§à¦¯à¦¾ হয়েছে:"
+msgid "No name provided."
+msgstr "পà§à¦¨à¦ƒà¦¨à¦¾à¦®à¦•রণ করà§à¦¨ অথবা সরান.."
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿà§‡ সমসà§à¦¯à¦¾ হয়েছে:"
+msgid "Name contains invalid characters."
+msgstr "গà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ অকà§à¦·à¦°à¦¸à¦®à§‚হ:"
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
-msgstr "'..' তে পরিচালনা করা সমà§à¦­à¦¬ নয়"
+#, fuzzy
+msgid "A file or folder with this name already exists."
+msgstr "গà§à¦°à§à¦ªà§‡à¦° নাম ইতিমধà§à¦¯à§‡à¦‡ আছে!"
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
-msgstr "নতà§à¦¨ নাম à¦à¦¬à¦‚ অবসà§à¦¥à¦¾à¦¨ বাছাই করà§à¦¨:"
+#, fuzzy
+msgid "Renaming file:"
+msgstr "চলক/ভেরিয়েবল-à¦à¦° নামানà§à¦¤à¦° করà§à¦¨"
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
-msgstr "কোনো ফাইল নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ হয়নি!"
+#, fuzzy
+msgid "Renaming folder:"
+msgstr "নোড পà§à¦¨à¦ƒà¦¨à¦¾à¦®à¦•রণ করà§à¦¨"
#: editor/filesystem_dock.cpp
#, fuzzy
@@ -2622,40 +2558,38 @@ msgid "Collapse all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
-msgstr "ফাইল-মà§à¦¯à¦¾à¦¨à§‡à¦œà¦¾à¦°à§‡ দেখà§à¦¨"
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
-msgstr "ইনসà§à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸"
+msgid "Copy Path"
+msgstr "পথ পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿/কপি করà§à¦¨"
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
-msgstr "নিরà§à¦­à¦°à¦¤à¦¾à¦¸à¦®à§‚হ সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨.."
+#, fuzzy
+msgid "Rename.."
+msgstr "পà§à¦¨à¦ƒà¦¨à¦¾à¦®à¦•রণ করà§à¦¨"
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
-msgstr "সà§à¦¬à¦¤à§à¦¬à¦¾à¦§à¦¿à¦•ারীদের দেখà§à¦¨.."
+msgid "Move To.."
+msgstr "à¦à¦–ানে সরান.."
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr "পথ পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿/কপি করà§à¦¨"
+#, fuzzy
+msgid "New Folder.."
+msgstr "ফোলà§à¦¡à¦¾à¦° তৈরি করà§à¦¨"
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
-msgstr "পà§à¦¨à¦ƒà¦¨à¦¾à¦®à¦•রণ করà§à¦¨ অথবা সরান.."
+msgid "Show In File Manager"
+msgstr "ফাইল-মà§à¦¯à¦¾à¦¨à§‡à¦œà¦¾à¦°à§‡ দেখà§à¦¨"
#: editor/filesystem_dock.cpp
-msgid "Move To.."
-msgstr "à¦à¦–ানে সরান.."
+msgid "Instance"
+msgstr "ইনসà§à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸"
#: editor/filesystem_dock.cpp
-msgid "Info"
-msgstr "তথà§à¦¯"
+msgid "Edit Dependencies.."
+msgstr "নিরà§à¦­à¦°à¦¤à¦¾à¦¸à¦®à§‚হ সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨.."
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
-msgstr "পà§à¦¨-ইমà§à¦ªà§‹à¦°à§à¦Ÿ.."
+msgid "View Owners.."
+msgstr "সà§à¦¬à¦¤à§à¦¬à¦¾à¦§à¦¿à¦•ারীদের দেখà§à¦¨.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2687,6 +2621,11 @@ msgstr ""
msgid "Move"
msgstr "সরান"
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr "পà§à¦¨à¦ƒà¦¨à¦¾à¦®à¦•রণ করà§à¦¨"
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr "গà§à¦°à§à¦ª/দলে যোগ করà§à¦¨"
@@ -2701,6 +2640,11 @@ msgid "Import as Single Scene"
msgstr "দৃশà§à¦¯ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করা হচà§à¦›à§‡.."
#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Animations"
+msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à¦¸à¦®à§‚হ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨.."
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -2713,6 +2657,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
#, fuzzy
msgid "Import as Multiple Scenes"
msgstr "3D দৃশà§à¦¯ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
@@ -2722,38 +2678,31 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr "দৃশà§à¦¯ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr "দৃশà§à¦¯ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করা হচà§à¦›à§‡.."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦®à¦¿à¦¤ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ চালানো হচà§à¦›à§‡.."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ-পরবরà§à¦¤à§€ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ লোড করা সমà§à¦­à¦¬ হয়নি:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ-পরবরà§à¦¤à§€ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ অকারà§à¦¯à¦•র/তà§à¦°à§à¦Ÿà¦¿à¦ªà§‚রà§à¦£ (কনসোল দেখà§à¦¨):"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ-পরবরà§à¦¤à§€ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ চালানোয় সমসà§à¦¯à¦¾ হয়েছে:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr "সংরকà§à¦·à¦¿à¦¤ হচà§à¦›à§‡.."
@@ -2784,590 +2733,56 @@ msgstr "পà§à¦°à¦¿à¦¸à§‡à¦Ÿ.."
msgid "Reimport"
msgstr "পà§à¦¨-ইমà§à¦ªà§‹à¦°à§à¦Ÿ"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ করার জনà§à¦¯ কোনো বিট মাসà§à¦• নেই!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr "উদà§à¦¦à§‡à¦¶à§à¦¯à¦¿à¦¤ পথটি খালি।"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr "উদà§à¦¦à§‡à¦¶à§à¦¯à¦¿à¦¤ পথটি অবশà§à¦¯à¦‡ à¦à¦•টি সমà§à¦ªà§à¦°à§à¦£ রিসোরà§à¦¸ পথ হতে হবে।"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr "উদà§à¦¦à§‡à¦¶à§à¦¯à¦¿à¦¤ পথটি অবশà§à¦¯à¦‡ বিদà§à¦¯à¦®à¦¾à¦¨ হতে হবে।"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr "সংরকà§à¦·à¦£à§‡à¦° পথটি খালি!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr "BitMasks ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr "টেকà§à¦¸à¦¾à¦°(সমূহ)-à¦à¦° উৎস:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr "উদà§à¦¦à§‡à¦¶à§à¦¯à¦¿à¦¤ পথ:"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
+msgstr "মালà§à¦Ÿà¦¿-নোড সà§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr "গà§à¦°à¦¹à¦£ করà§à¦¨"
+#: editor/node_dock.cpp
+msgid "Groups"
+msgstr "দলসমূহ"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr "বিট-মাসà§à¦• (Bit Mask)"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
+msgstr "সিগনà§à¦¯à¦¾à¦²-সমূহ à¦à¦¬à¦‚ দলসমূহ সমà§à¦ªà¦¾à¦¦à¦¨ করতে à¦à¦•টি নোড নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨à¥¤"
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr "ফনà§à¦Ÿà§‡à¦° কোনো উৎস ফাইল নেই!"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
+msgstr "Poly তৈরি করà§à¦¨"
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr "ফনà§à¦Ÿà§‡à¦° কোনো উদà§à¦¦à§‡à¦¶à§à¦¯à¦¿à¦¤ রিসোরà§à¦¸ নেই!"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Poly সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨"
-#: editor/io_plugins/editor_font_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
#, fuzzy
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-"ফাইলের অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦¶à¦¨à¥¤\n"
-"অনà§à¦—à§à¦°à¦¹ করে .fnt বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨à¥¤"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr "ফনà§à¦Ÿà§‡à¦° উৎস লোড/পà§à¦°à¦¸à§‡à¦¸ করা সমà§à¦­à¦¬ হচà§à¦›à§‡ না।"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr "ফনà§à¦Ÿ সংরকà§à¦·à¦£ করা সমà§à¦­à¦¬ হয়নি।"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr "ফনà§à¦Ÿà§‡à¦° উৎস:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr "উৎস ফনà§à¦Ÿà§‡à¦° আকার:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr "রিসোরà§à¦¸à§‡à¦° গনà§à¦¤à¦¬à§à¦¯à¦¸à§à¦¥à¦¾à¦¨:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
-"বাদামী রঙà§à¦—ের দà§à¦°à§à¦¤ শিয়ালটি অলস কà§à¦•à§à¦°à§‡à¦° উপর দিয়ে লাফিয়ে যায় (The quick brown fox "
-"jumps over the lazy dog.)।"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr "পরীকà§à¦·à¦¾:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr "সিদà§à¦§à¦¾à¦¨à§à¦¤à¦¸à¦®à§‚হ (অপশন):"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr "ফনà§à¦Ÿ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-"à¦à¦‡ ফাইলটি ইতিমধà§à¦¯à§‡à¦‡ à¦à¦•টি Godot ফনà§à¦Ÿ ফাইল, পরিবরà§à¦¤à§‡ অনà§à¦—à§à¦°à¦¹ করে BMFont ধরণের ফাইল "
-"পà§à¦°à¦¦à¦¾à¦¨ করà§à¦¨à¥¤"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr "BMFont ফাইল খোলা বà§à¦¯à¦°à§à¦¥ হয়েছে।"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr "FreeType আরমà§à¦­à§‡ সমসà§à¦¯à¦¾ হয়েছে।"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "অজানা ধরনের ফনà§à¦Ÿà¥¤"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "ফনà§à¦Ÿ তà§à¦²à¦¤à§‡/লোডে সমসà§à¦¯à¦¾ হয়েছে।"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr "ফনà§à¦Ÿà§‡à¦° আকার অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯à¥¤"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦®à¦¿à¦¤ ফনà§à¦Ÿà§‡à¦° অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ উৎস।"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "ফনà§à¦Ÿ"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ করার মতো কোনো মেস নেই!"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr "à¦à¦•ক মেস ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr "মেস(সমূহ)-à¦à¦° উৎস:"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr "মেস"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "পৃষà§à¦ à¦¤à¦² %d"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ করার মতো কোনো নমà§à¦¨à¦¾ নেই!"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr "শবà§à¦¦à§‡à¦° নমà§à¦¨à¦¾à¦¸à¦®à§‚হ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr "নমà§à¦¨à¦¾(সমূহ)-à¦à¦° উৎস:"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr "শবà§à¦¦à§‡à¦° নমà§à¦¨à¦¾"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr "নতà§à¦¨ কà§à¦²à¦¿à¦ª"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° সিদà§à¦§à¦¾à¦¨à§à¦¤à¦¸à¦®à§‚হ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr "পতাকাসমূহ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr "সিদà§à¦§ FPS:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr "পরিমারà§à¦œà¦•"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr "সরà§à¦¬à§‡à¦¾à¦šà§à¦š রৈখিক ভà§à¦²/সমসà§à¦¯à¦¾"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr "সরà§à¦¬à§‡à¦¾à¦šà§à¦š কৌণিক ভà§à¦²/সমসà§à¦¯à¦¾"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr "সরà§à¦¬à§‡à¦¾à¦šà§à¦š কোণ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr "কà§à¦²à¦¿à¦ªà¦¸à¦®à§‚হ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr "আরমà§à¦­(সমূহ)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr "সমাপà§à¦¤à¦¿(সমূহ)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr "লà§à¦ª"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr "ফিলà§à¦Ÿà¦¾à¦°à¦¸à¦®à§‚হ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr "উৎসের পথটি খালি।"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ-পরবরà§à¦¤à§€ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ লোড করা সমà§à¦­à¦¬ হয়নি।"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ-পরবরà§à¦¤à§€ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ অকারà§à¦¯à¦•র/তà§à¦°à§à¦Ÿà¦¿à¦ªà§‚রà§à¦£à¥¤"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr "দৃশà§à¦¯ ইমà§à¦ªà§‹à¦°à§à¦Ÿà§‡ সমসà§à¦¯à¦¾ হয়েছে।"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr "3D দৃশà§à¦¯ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr "উৎস দৃশà§à¦¯:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr "উদà§à¦¦à§‡à¦¶à§à¦¯à¦¿à¦¤ দৃশà§à¦¯à§‡à¦° নà§à¦¯à¦¾à§Ÿ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr "শেয়ারকৃত"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° উদà§à¦¦à§‡à¦¶à§à¦¯à¦¿à¦¤ ফোলà§à¦¡à¦¾à¦°:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr "পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾-পরবরà§à¦¤à§€ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦®à¦¿à¦¤ মূল নোডের ধরণ:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr "সà§à¦¬à§Ÿà¦‚কà§à¦°à¦¿à§Ÿ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr "মূল নোডের নাম:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr "নিমà§à¦¨à§‹à¦•à§à¦¤ ফাইলসমূহ অনà§à¦ªà¦¸à§à¦¥à¦¿à¦¤:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr "যেকোনো উপায়েই ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "বাতিল"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨ à¦à¦¬à¦‚ খà§à¦²à§à¦¨"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr "সমà§à¦ªà¦¾à¦¦à¦¿à¦¤ দৃশà§à¦¯ সংরকà§à¦·à¦£ করা হয়নি, তবà§à¦“ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করা দৃশà§à¦¯à¦Ÿà¦¿ খà§à¦²à¦¬à§‡à¦¨?"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr "ছবি ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr "ফাইলকে তার নিজের উপরেই ইমà§à¦ªà§‹à¦°à§à¦Ÿ করা সমà§à¦­à¦¬ নয়:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr "পথ সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼à¦•রণ সমà§à¦­à¦¬ হচà§à¦›à§‡ না: %s (ইতিমধà§à¦¯à§‡à¦‡ সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr "3D দৃশà§à¦¯à§‡à¦° অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr "অসংকà§à¦šà¦¿à¦¤"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr "ধà§à¦¬à¦‚সবিহীন সঙà§à¦•োচন (PNG)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr "ধà§à¦¬à¦‚সাতà§à¦®à¦• সঙà§à¦•োচন (WebP)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr "সঙà§à¦•োচন (VRAM)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° ফরমà§à¦¯à¦¾à¦Ÿ"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr "গঠনবিনà§à¦¯à¦¾à¦¸ সঙà§à¦•োচনের গà§à¦£à¦®à¦¾à¦¨ (WebP):"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° সিদà§à¦§à¦¾à¦¨à§à¦¤ (অপশন)-সমূহ"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr "অনà§à¦—à§à¦°à¦¹ করে কিছৠফাইল নিরà§à¦¦à¦¿à¦·à§à¦Ÿ করে দিন!"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€à¦° জনà§à¦¯ কমপকà§à¦·à§‡ à¦à¦•টি ফাইল পà§à¦°à¦¯à¦¼à§‹à¦œà¦¨à¥¤"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿà§‡ সমসà§à¦¯à¦¾ হয়েছে:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr "বৃহৎ গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° জনà§à¦¯ শà§à¦§à§à¦®à¦¾à¦¤à§à¦° à¦à¦•টি ফাইল পà§à¦°à§Ÿà§‹à¦œà¦¨à¥¤"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° সরà§à¦¬à§‡à¦¾à¦šà§à¦š আকার:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€à¦° জনà§à¦¯ গঠনবিনà§à¦¯à¦¾à¦¸ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨ (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr "সেল (Cell)-à¦à¦° আকার:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr "বৃহৎ গঠনবিনà§à¦¯à¦¾à¦¸"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr "বৃহৎ গঠনবিনà§à¦¯à¦¾à¦¸ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨ (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
-msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° উৎস"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
-msgstr "গোড়ার à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€à¦° গঠনবিনà§à¦¯à¦¾à¦¸"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
-msgstr "গঠনবিনà§à¦¯à¦¾à¦¸(সমূহ)-à¦à¦° উৎস"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
-msgstr "2D-à¦à¦° জনà§à¦¯ গঠনবিনà§à¦¯à¦¾à¦¸à¦¸à¦®à§‚হ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
-msgstr "3D-à¦à¦° জনà§à¦¯ গঠনবিনà§à¦¯à¦¾à¦¸à¦¸à¦®à§‚হ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
-msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à¦¸à¦®à§‚হ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+msgid "Insert Point"
+msgstr "সনà§à¦¨à¦¿à¦¬à§‡à¦¶à¦¿à¦¤ হচà§à¦›à§‡"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
-msgstr "2D গঠনবিনà§à¦¯à¦¾à¦¸"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Poly সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨ (বিনà§à¦¦à§ অপসারণ করà§à¦¨)"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
-msgstr "3D গঠনবিনà§à¦¯à¦¾à¦¸"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
+msgstr "পলি à¦à¦¬à¦‚ বিনà§à¦¦à§ অপসারণ করà§à¦¨"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
-msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€à¦° গঠনবিনà§à¦¯à¦¾à¦¸"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
+msgstr "আরমà§à¦­ হতে নতà§à¦¨ polygon তৈরি করà§à¦¨à¥¤"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
-"নোটিশ: 2D টেকà§à¦¸à¦šà¦¾à¦° (texture) ইমà§à¦ªà§‹à¦°à§à¦Ÿ (import) করা অতà§à¦¯à¦¾à¦¬à¦¶à§à¦¯à¦• নয়। শà§à¦§à§à¦®à¦¾à¦¤à§à¦° png/jpg "
-"ফাইলসমূহ পà§à¦°à¦•লà§à¦ªà§‡ পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿/কপি করà§à¦¨à¥¤"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr "খালি সà§à¦¥à¦¾à¦¨ ছেà¦à¦Ÿà§‡ ফেলà§à¦¨à¥¤"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr "গঠনবিনà§à¦¯à¦¾à¦¸"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr "বৃহৎ গঠনবিনà§à¦¯à¦¾à¦¸ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr "উৎস হতে ছবি লোড করà§à¦¨"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr "টà§à¦•রো করà§à¦¨"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr "সনà§à¦¨à¦¿à¦¬à§‡à¦¶à¦¿à¦¤ হচà§à¦›à§‡"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr "সংরকà§à¦·à¦¿à¦¤ হচà§à¦›à§‡"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr "বৃহৎ গঠনবিনà§à¦¯à¦¾à¦¸ সংরকà§à¦·à¦£ করা সমà§à¦­à¦¬ হচà§à¦›à§‡ না:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€ নিরà§à¦®à¦¾à¦£ করà§à¦¨:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr "ছবি লোড করা হচà§à¦›à§‡:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr "ছবি লোড করা সমà§à¦­à¦¬ হচà§à¦›à§‡ না:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr "ছবিসমূহ রূপানà§à¦¤à¦° করা হচà§à¦›à§‡"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr "ছবিসমূহ ছাà¦à¦Ÿà¦¾ হচà§à¦›à§‡"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr "ছবিসমূহ বà§à¦²à¦¿à¦Ÿà¦¿à¦‚ (Blitting) করা হচà§à¦›à§‡"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€à¦° ছবি সংরকà§à¦·à¦£ করা সমà§à¦­à¦¬ হচà§à¦›à§‡ না:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr "রূপানà§à¦¤à¦°à¦¿à¦¤ গঠনবিনà§à¦¯à¦¾à¦¸ সংরকà§à¦·à¦£ করা সমà§à¦­à¦¬ হচà§à¦›à§‡ না:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr "অকারà§à¦¯à¦•র উৎস!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr "অকারà§à¦¯à¦•র অনà§à¦¬à¦¾à¦¦à§‡à¦° উৎস!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr "কলাম"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr "ভাষা"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ করার মতো কোনো বসà§à¦¤à§ নেই!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr "কোনো উদà§à¦¦à§‡à¦¶à§à¦¯à¦¿à¦¤ পথ নেই!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr "অনà§à¦¬à¦¾à¦¦à¦¸à¦®à§‚হ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ করা সমà§à¦­à¦¬ হচà§à¦›à§‡ না!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr "অনà§à¦¬à¦¾à¦¦ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr "CSV-à¦à¦° উৎস:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr "পà§à¦°à¦¥à¦® সারি অগà§à¦°à¦¾à¦¹à§à¦¯ করà§à¦¨"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr "সঙà§à¦•োচন করà§à¦¨"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
-msgid "Add to Project (project.godot)"
-msgstr "পà§à¦°à¦•লà§à¦ªà§‡ সংযà§à¦•à§à¦¤ করà§à¦¨ (engine.cfg)"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr "ভাষাসমূহ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr "অনà§à¦¬à¦¾à¦¦"
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr "মালà§à¦Ÿà¦¿-নোড সà§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr "দলসমূহ"
-
-#: editor/node_dock.cpp
-msgid "Select a Node to edit Signals and Groups."
-msgstr "সিগনà§à¦¯à¦¾à¦²-সমূহ à¦à¦¬à¦‚ দলসমূহ সমà§à¦ªà¦¾à¦¦à¦¨ করতে à¦à¦•টি নোড নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨à¥¤"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Toggle Autoplay"
@@ -3523,7 +2938,6 @@ msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° নাম:"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3634,10 +3048,6 @@ msgid "Delete Input"
msgstr "ইনপà§à¦Ÿ অপসারণ করà§à¦¨"
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr "পà§à¦¨à¦ƒà¦¨à¦¾à¦®à¦•রণ করà§à¦¨"
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° তালিকাটি কারà§à¦¯à¦•র।"
@@ -3693,65 +3103,191 @@ msgstr "নোড ফিলà§à¦Ÿà¦¾à¦°à¦¸à¦®à§‚হ সমà§à¦ªà¦¾à¦¦à¦¨ কর
msgid "Filters.."
msgstr "ফিলà§à¦Ÿà¦¾à¦°à¦¸à¦®à§‚হ.."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
-msgstr "%d টি তà§à¦°à¦¿à¦­à§à¦œ বিশà§à¦²à§‡à¦·à¦£ করা হচà§à¦›à§‡:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Contents:"
+msgstr "ধà§à¦°à§à¦¬à¦•সমূহ:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
-msgstr "তà§à¦°à¦¿à¦­à§à¦œ #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "View Files"
+msgstr "ফাইল"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
-msgstr "লাইটà§â€Œ সিদà§à¦§/বেকà§â€Œ-à¦à¦° সেটআপ:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
+msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
-msgstr "জà§à¦¯à¦¾à¦®à¦¿à¦¤à¦¿à¦•-আকার বিশà§à¦²à§‡à¦·à¦£ করা হচà§à¦›à§‡"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
+msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
-msgstr "লাইটà§â€Œà¦¸à¦®à§‚হ ঠিক করা হচà§à¦›à§‡"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
+msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
-msgstr "BVH তৈরি করা হচà§à¦›à§‡"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Can't connect."
+msgstr "সংযোগ.."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
-msgstr "লাইটের ওকটà§à¦°à§€ (octree) তৈরি করা হচà§à¦›à§‡"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Can't connect to host:"
+msgstr "নোডের সাথে সংযà§à¦•à§à¦¤ করà§à¦¨:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
-msgstr "ওকটà§à¦°à§€ (octree) গঠনবিনà§à¦¯à¦¾à¦¸ তৈরি করা হচà§à¦›à§‡"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
+msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
-msgstr "লাইটà§à¦®à§à¦¯à¦¾à¦ªà§‡ হসà§à¦¤à¦¾à¦¨à§à¦¤à¦° করà§à¦¨:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
-msgstr "গঠনবিনà§à¦¯à¦¾à¦¸ বণà§à¦Ÿà¦¿à¦¤ হচà§à¦›à§‡ #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Request failed, return code:"
+msgstr "আবেদনকৃত ফাইল ফরমà§à¦¯à¦¾à¦Ÿ/ধরণ অজানা:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
+msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
-msgstr "তà§à¦°à¦¿à¦­à§à¦œ সিদà§à¦§/বেকà§â€Œ করা হচà§à¦›à§‡ #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
+msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
-msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾-পরবরà§à¦¤à§€ পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾à¦•রণ #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
+msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
-msgstr "সিদà§à¦§/বেকà§â€Œ!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Resolving.."
+msgstr "সংরকà§à¦·à¦¿à¦¤ হচà§à¦›à§‡.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Connecting.."
+msgstr "সংযোগ.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Requesting.."
+msgstr "পরীকà§à¦·à¦¾à¦®à§‚লক উৎস"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Error making request"
+msgstr "রিসোরà§à¦¸ সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে!"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Download Error"
+msgstr "নীচে"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
msgstr ""
-"লাইটà§à¦®à§à¦¯à¦¾à¦ª ওকটà§à¦°à§€à¦° (octree) সিদà§à¦§/বেকà§â€Œ-à¦à¦° পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾à¦•রণ পà§à¦¨:সà§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨ (পà§à¦¨à¦°à¦¾à¦°à¦®à§à¦­)।"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "সকল"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr "পà§à¦²à¦¾à¦—ইন-সমূহ"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "সাজান:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr "উলà§à¦Ÿà¦¾à¦¨/বিপরীত দিকে ফিরান"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "বিভাগ:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "ওয়েবসাইট:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr "সমরà§à¦¥à¦¨.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "অফিসিয়াল/পà§à¦°à¦¾à¦¥à¦®à¦¿à¦• উৎস"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr "পরীকà§à¦·à¦¾à¦®à§‚লক উৎস"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr "পà§à¦°à¦¯à¦¼à§‡à¦¾à¦œà¦¨à§€à¦¯à¦¼ উপকরণসমূহের ZIP ফাইল"
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr "পà§à¦°à¦¿à¦­à¦¿à¦‰"
@@ -3794,12 +3330,18 @@ msgid "Edit CanvasItem"
msgstr "CanvasItem সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+#, fuzzy
+msgid "Anchors only"
+msgstr "অà§à¦¯à¦¾à¦‚কর"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Change Anchors and Margins"
msgstr "অà§à¦¯à¦¾à¦‚করসমূহ পরিবরà§à¦¤à¦¨ করà§à¦¨"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
-msgstr "জà§à¦®à§ (%):"
+msgid "Change Anchors"
+msgstr "অà§à¦¯à¦¾à¦‚করসমূহ পরিবরà§à¦¤à¦¨ করà§à¦¨"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Paste Pose"
@@ -3851,60 +3393,78 @@ msgid "Pan Mode"
msgstr "পà§à¦¯à¦¾à¦¨ মোড"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
-msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ বসà§à¦¤à§à¦Ÿà¦¿à¦•ে à¦à¦‡ সà§à¦¥à¦¾à¦¨à§‡ আটকিয়ে রাখà§à¦¨ (সরানো সমà§à¦­à¦¬ হবেনা)।"
+#, fuzzy
+msgid "Toggles snapping"
+msgstr "ছেদবিনà§à¦¦à§ অদলবদল করà§à¦¨ (টগল বà§à¦°à§‡à¦•পয়েনà§à¦Ÿ)"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
-msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ বসà§à¦¤à§à¦Ÿà¦¿à¦•ে মà§à¦•à§à¦¤ করà§à¦¨ (সরানো সমà§à¦­à¦¬ হবে)।"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
+msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
-msgstr "বসà§à¦¤à§à¦° অনà§à¦¤à¦°à§à¦­à§à¦•à§à¦¤-সমূহ যাতে নিরà§à¦¬à¦¾à¦šà¦¨à¦¯à§‹à¦—à§à¦¯ না হয় তা নিশà§à¦šà¦¿à¦¤ করে।"
+#, fuzzy
+msgid "Snapping options"
+msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° সিদà§à¦§à¦¾à¦¨à§à¦¤à¦¸à¦®à§‚হ"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
-msgstr "বসà§à¦¤à§à¦° অনà§à¦¤à¦°à§à¦­à§à¦•à§à¦¤-সমূহের নিরà§à¦¬à¦¾à¦šà¦¨à¦¯à§‹à¦—à§à¦¯à¦¤à¦¾ পà§à¦¨à¦°à¦¾à§Ÿ ফিরিয়ে আনে।"
+#, fuzzy
+msgid "Snap to grid"
+msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª মোড:"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨ (Edit)"
+msgid "Use Rotation Snap"
+msgstr "ঘূরà§à¦£à¦¨ সà§à¦¨à§à¦¯à¦¾à¦ª বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
-msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨"
+#, fuzzy
+msgid "Configure Snap..."
+msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª কনফিগার করà§à¦¨.."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
-msgstr "গà§à¦°à¦¿à¦¡ দেখান"
+msgid "Snap Relative"
+msgstr "আপেকà§à¦·à¦¿à¦• সà§à¦¨à§à¦¯à¦¾à¦ª"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
-msgstr "ঘূরà§à¦£à¦¨ সà§à¦¨à§à¦¯à¦¾à¦ª বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨"
+msgid "Use Pixel Snap"
+msgstr "পিকà§à¦¸à§‡à¦² সà§à¦¨à§à¦¯à¦¾à¦ª বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
-msgstr "আপেকà§à¦·à¦¿à¦• সà§à¦¨à§à¦¯à¦¾à¦ª"
+msgid "Smart snapping"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
-msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª কনফিগার করà§à¦¨.."
+#, fuzzy
+msgid "Snap to parent"
+msgstr "ধারক/বাহক পরà§à¦¯à¦¨à§à¦¤ বিসà§à¦¤à§ƒà¦¤ করà§à¦¨"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
-msgstr "পিকà§à¦¸à§‡à¦² সà§à¦¨à§à¦¯à¦¾à¦ª বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨"
+msgid "Snap to node anchor"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ বসà§à¦¤à§à¦Ÿà¦¿à¦•ে à¦à¦‡ সà§à¦¥à¦¾à¦¨à§‡ আটকিয়ে রাখà§à¦¨ (সরানো সমà§à¦­à¦¬ হবেনা)।"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
-msgstr "সà§à¦•েলেটন/কাঠাম.."
+msgid "Unlock the selected object (can be moved)."
+msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ বসà§à¦¤à§à¦Ÿà¦¿à¦•ে মà§à¦•à§à¦¤ করà§à¦¨ (সরানো সমà§à¦­à¦¬ হবে)।"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
+msgstr "বসà§à¦¤à§à¦° অনà§à¦¤à¦°à§à¦­à§à¦•à§à¦¤-সমূহ যাতে নিরà§à¦¬à¦¾à¦šà¦¨à¦¯à§‹à¦—à§à¦¯ না হয় তা নিশà§à¦šà¦¿à¦¤ করে।"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
+msgstr "বসà§à¦¤à§à¦° অনà§à¦¤à¦°à§à¦­à§à¦•à§à¦¤-সমূহের নিরà§à¦¬à¦¾à¦šà¦¨à¦¯à§‹à¦—à§à¦¯à¦¤à¦¾ পà§à¦¨à¦°à¦¾à§Ÿ ফিরিয়ে আনে।"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Make Bones"
@@ -3932,12 +3492,19 @@ msgid "View"
msgstr "দৃশà§à¦¯/পরিদরà§à¦¶à¦¨"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
-msgstr "জà§à¦®à§ পà§à¦¨:সà§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr "গà§à¦°à¦¿à¦¡ দেখান"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
-msgstr "জà§à¦®à§ নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨.."
+#, fuzzy
+msgid "Show helpers"
+msgstr "বোনà§â€Œ/হাড় দেখান"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Show rulers"
+msgstr "বোনà§â€Œ/হাড় দেখান"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -3948,8 +3515,9 @@ msgid "Frame Selection"
msgstr "নিরà§à¦¬à¦¾à¦šà¦¨à¦•ে ফà§à¦°à§‡à¦®à¦­à§‚কà§à¦¤ করà§à¦¨"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
-msgstr "অà§à¦¯à¦¾à¦‚কর"
+#, fuzzy
+msgid "Layout"
+msgstr "লেআউট/নকশা সংরকà§à¦·à¦£ করà§à¦¨"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Keys"
@@ -3972,12 +3540,21 @@ msgid "Clear Pose"
msgstr "ভঙà§à¦—ি পরিষà§à¦•ার করà§à¦¨"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
-msgstr "à¦à¦•টি মান নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨"
+msgid "Drag pivot from mouse position"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
-msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª (পিকà§à¦¸à§‡à¦²à¦¸à¦®à§‚হ):"
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "বহিঃ-বকà§à¦°à¦°à§‡à¦–ার সà§à¦¥à¦¾à¦¨ নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Divide grid step by 2"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
@@ -3987,23 +3564,28 @@ msgstr "%s সংযà§à¦•à§à¦¤ করà§à¦¨"
msgid "Adding %s..."
msgstr "%s সংযà§à¦•à§à¦¤ হচà§à¦›à§‡..."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr "নোড তৈরি করà§à¦¨"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr "%s হতে দৃশà§à¦¯ ইনসà§à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸ করাতে সমসà§à¦¯à¦¾ হয়েছে"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr "ঠিক আছে :("
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr "ইনসà§à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸ করার জনà§à¦¯ পà§à¦°à§Ÿà§‹à¦œà¦¨à§€à§Ÿ ধারক উপসà§à¦¥à¦¿à¦¤ নেই।"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr "à¦à¦‡ কাজটি করার জনà§à¦¯ à¦à¦•টি à¦à¦•ক নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ নোড পà§à¦°à§Ÿà§‹à¦œà¦¨à¥¤"
@@ -4019,45 +3601,6 @@ msgstr ""
"টানà§à¦¨ à¦à¦¬à¦‚ ফেলà§à¦¨ + শিফট কী (Shift) : সহোদর নোড সংযোজন করতে\n"
"টানà§à¦¨ à¦à¦¬à¦‚ ফেলà§à¦¨ + অলà§à¦Ÿà¦¾à¦° কী (Alt) : নোডের ধরণ পরিবরà§à¦¤à¦¨ করতে"
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr "Poly তৈরি করà§à¦¨"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr "Poly সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr "Poly সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨ (বিনà§à¦¦à§ অপসারণ করà§à¦¨)"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "আরমà§à¦­ হতে নতà§à¦¨ polygon তৈরি করà§à¦¨à¥¤"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "Poly3D তৈরি করà§à¦¨"
@@ -4067,14 +3610,6 @@ msgid "Set Handle"
msgstr "হà§à¦¯à¦¾à¦¨à§à¦¡à§‡à¦² সà§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr "মেস লাইবà§à¦°à§‡à¦°à¦¿ তৈরি হচà§à¦›à§‡"
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr "থামà§à¦¬à¦¨à§‡à¦‡à¦².."
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr "%d টি বসà§à¦¤à§ অপসারণ করবেন?"
@@ -4097,6 +3632,28 @@ msgid "Update from Scene"
msgstr "দৃশà§à¦¯ হতে হালনাগাদ করà§à¦¨"
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Ease in"
+msgstr "আনà§à¦¤-সহজাগমন"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Ease out"
+msgstr "বহিঃ-সহজাগমন"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
msgid "Modify Curve Point"
msgstr "Curve Map পরিবরà§à¦¤à¦¨ করà§à¦¨"
@@ -4181,22 +3738,18 @@ msgid "Create Occluder Polygon"
msgstr "অকলà§à¦¡à¦¾à¦° (occluder) পলিগন তৈরি করà§à¦¨"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr "বিদà§à¦¯à¦®à¦¾à¦¨ পলিগন সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨:"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr "মাউসের বাম বোতাম: বিনà§à¦¦à§ সরান।"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr "কনà§à¦Ÿà§à¦°à§‹à¦² + মাউসের বাম বোতাম: অংশ বিভকà§à¦¤ করà§à¦¨à¥¤"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr "মাউসের ডান বোতাম: বিনà§à¦¦à§ মà§à¦›à§‡ ফেলà§à¦¨à¥¤"
@@ -4301,6 +3854,10 @@ msgid "Create Outline"
msgstr "পà§à¦°à¦¾à¦¨à§à¦¤à¦°à§‡à¦–া তৈরি করà§à¦¨"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr "মেস"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr "সà§à¦¥à¦¿à¦¤-টà§à¦°à¦¾à¦‡à¦®à§‡à¦¸ বডি তৈরি করà§à¦¨"
@@ -4428,14 +3985,83 @@ msgstr "যথেচà§à¦› মাপ:"
msgid "Populate"
msgstr "পপà§à¦²à§‡à¦Ÿ"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr "সিদà§à¦§/বেকà§â€Œ!"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+#, fuzzy
+msgid "Bake the navigation mesh.\n"
+msgstr "Navigation Mesh তৈরি করà§à¦¨"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+#, fuzzy
+msgid "Clear the navigation mesh."
+msgstr "Navigation Mesh তৈরি করà§à¦¨"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating heightfield..."
+msgstr "লাইটের ওকটà§à¦°à§€ (octree) তৈরি করা হচà§à¦›à§‡"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Marking walkable triangles..."
+msgstr "অনà§à¦¬à¦¾à¦¦-সমà§à¦­à¦¬ শবà§à¦¦à¦®à¦¾à¦²à¦¾/বাকà§à¦¯-সমূহ.."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Partitioning..."
+msgstr "সতরà§à¦•তা"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating contours..."
+msgstr "ওকটà§à¦°à§€ (octree) গঠনবিনà§à¦¯à¦¾à¦¸ তৈরি করা হচà§à¦›à§‡"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating polymesh..."
+msgstr "পà§à¦°à¦¾à¦¨à§à¦¤à¦°à§‡à¦–া মেস তৈরি করà§à¦¨.."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Converting to native navigation mesh..."
+msgstr "Navigation Mesh তৈরি করà§à¦¨"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Parsing Geometry..."
+msgstr "জà§à¦¯à¦¾à¦®à¦¿à¦¤à¦¿à¦•-আকার বিশà§à¦²à§‡à¦·à¦£ করা হচà§à¦›à§‡"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
+msgstr ""
+
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Create Navigation Polygon"
msgstr "Navigation Polygon তৈরি করà§à¦¨"
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
-msgstr "পলি à¦à¦¬à¦‚ বিনà§à¦¦à§ অপসারণ করà§à¦¨"
-
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Clear Emission Mask"
msgstr "Emission Mask পরিসà§à¦•ার করà§à¦¨"
@@ -4621,14 +4247,17 @@ msgid "Curve Point #"
msgstr "বকà§à¦°à¦°à§‡à¦–ার বিনà§à¦¦à§ #"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
msgstr "বকà§à¦°à¦°à§‡à¦–ার বিনà§à¦¦à§à¦° সà§à¦¥à¦¾à¦¨ নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
msgstr "আনà§à¦¤-বকà§à¦°à¦°à§‡à¦–ার সà§à¦¥à¦¾à¦¨ নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
msgstr "বহিঃ-বকà§à¦°à¦°à§‡à¦–ার সà§à¦¥à¦¾à¦¨ নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨"
@@ -4691,6 +4320,14 @@ msgid "Scale Polygon"
msgstr "পলিগন মাপ করà§à¦¨"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨ (Edit)"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr "পলিগন->UV"
@@ -4745,63 +4382,10 @@ msgstr "রিসোরà§à¦¸ লোড করà§à¦¨"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "পà§à¦°à¦¤à¦¿à¦²à§‡à¦ªà¦¨/পেসà§à¦Ÿ করà§à¦¨"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr "BBCode বিশà§à¦²à§‡à¦·à¦£ করà§à¦¨"
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr "লমà§à¦¬à¦¾:"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr "নমà§à¦¨à¦¾ ফাইল(সমূহ) খà§à¦²à§à¦¨"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr "সমসà§à¦¯à¦¾: নমà§à¦¨à¦¾ লোড করা সমà§à¦­à¦¬ হয়নি!"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr "নমà§à¦¨à¦¾ যোগ করà§à¦¨"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr "নমà§à¦¨à¦¾ পà§à¦¨à¦ƒà¦¨à¦¾à¦®à¦•রণ করà§à¦¨"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr "নমà§à¦¨à¦¾ অপসারণ করà§à¦¨"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr "১৬ বিটসà§â€Œ"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr "à§® বিটসà§â€Œ"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr "সà§à¦Ÿà§‡à¦°à¦¿à¦“"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr "মনো"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr "ফরমà§à¦¯à¦¾à¦Ÿ"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr "পিচà§â€Œ"
-
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Clear Recent Files"
@@ -4893,6 +4477,10 @@ msgstr "ডকà§à¦®à§‡à¦¨à§à¦Ÿà¦¸à¦®à§‚হ বনà§à¦§ করà§à¦¨"
msgid "Close All"
msgstr "সবগà§à¦²à¦¿ বনà§à¦§ করà§à¦¨"
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr "চালান"
+
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Toggle Scripts Panel"
@@ -4922,7 +4510,8 @@ msgstr "পদারà§à¦ªà¦£ করà§à¦¨"
msgid "Break"
msgstr "বিরতি/ভাঙà§à¦—ন"
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr "সচল"
@@ -4936,18 +4525,6 @@ msgid "Debug with external editor"
msgstr "à¦à¦¡à¦¿à¦Ÿà¦°à§‡ খà§à¦²à§à¦¨"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr "উইনà§à¦¡à§‹"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr "বামে সরান"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr "ডানে সরান"
-
-#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Open Godot online documentation"
msgstr "রেফারেনà§à¦¸à§‡à¦° ডকà§à¦®à§‡à¦¨à§à¦Ÿà§‡à¦¶à¦¨à§‡ খà§à¦à¦œà§à¦¨à¥¤"
@@ -5034,8 +4611,9 @@ msgid "Cut"
msgstr "করà§à¦¤à¦¨/কাট করà§à¦¨"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿/কপি করà§à¦¨"
@@ -5301,10 +4879,6 @@ msgid "View Plane Transform."
msgstr "পà§à¦²à§‡à¦¨-à¦à¦° রà§à¦ªà¦¾à¦¨à§à¦¤à¦° দেখà§à¦¨à¥¤"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr "%s%% -ঠমাপিত হচà§à¦›à§‡à¥¤"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr "%s ডিগà§à¦°à¦¿ ঘূরà§à¦£à¦¿à¦¤ হচà§à¦›à§‡à¥¤"
@@ -5321,10 +4895,6 @@ msgid "Top View."
msgstr "শীরà§à¦· দরà§à¦¶à¦¨à¥¤"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr "শীরà§à¦·"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr "পশà§à¦šà¦¾à§Ž দরà§à¦¶à¦¨à¥¤"
@@ -5570,6 +5140,10 @@ msgid "Transform"
msgstr "রà§à¦ªà¦¾à¦¨à§à¦¤à¦°"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª কনফিগার করà§à¦¨.."
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr "সà§à¦¥à¦¾à¦¨à§€à§Ÿ সà§à¦¥à¦¾à¦¨à¦¾à¦™à§à¦•সমূহ"
@@ -5715,6 +5289,10 @@ msgid "Speed (FPS):"
msgstr "গতি (FPS):"
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr "লà§à¦ª"
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr "অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨à§‡à¦° ফà§à¦°à§‡à¦®à¦¸à¦®à§‚হ"
@@ -5727,12 +5305,14 @@ msgid "Insert Empty (After)"
msgstr "খালি বসà§à¦¤à§ যà§à¦•à§à¦¤ করà§à¦¨ (পরে)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr "উপরে"
+#, fuzzy
+msgid "Move (Before)"
+msgstr "নোড(সমূহ) অপসারণ করà§à¦¨"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
-msgstr "নীচে"
+#, fuzzy
+msgid "Move (After)"
+msgstr "বামে সরান"
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
@@ -5811,8 +5391,12 @@ msgid "Remove All"
msgstr "অপসারণ করà§à¦¨"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
-msgstr "থিম"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Class Items"
@@ -5896,6 +5480,10 @@ msgid "Style"
msgstr "সà§à¦Ÿà¦¾à¦‡à¦²"
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr "ফনà§à¦Ÿ"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr "রঙ"
@@ -5947,8 +5535,9 @@ msgid "Mirror Y"
msgstr "পà§à¦°à¦¤à¦¿à¦¬à¦¿à¦®à§à¦¬ Y"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
-msgstr "বাকেটà§â€Œ"
+#, fuzzy
+msgid "Paint Tile"
+msgstr "TileMap আà¦à¦•à§à¦¨"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Pick Tile"
@@ -6014,6 +5603,10 @@ msgid "Delete preset '%s'?"
msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ ফাইলসমূহ অপসারণ করবেন?"
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
#, fuzzy
msgid "Presets"
msgstr "পà§à¦°à¦¿à¦¸à§‡à¦Ÿ.."
@@ -6098,34 +5691,62 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
#, fuzzy
msgid "Export With Debug"
msgstr "Tile Set à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
-msgstr "অকারà§à¦¯à¦•র পà§à¦°à¦•লà§à¦ªà§‡à¦° পথ, পথটি অবশà§à¦¯à¦‡ বিদà§à¦¯à¦®à¦¾à¦¨ হতে হবে!"
+#, fuzzy
+msgid "The path does not exist."
+msgstr "ফাইলটি বিদà§à¦¯à¦®à¦¾à¦¨ নয়।"
#: editor/project_manager.cpp
#, fuzzy
-msgid "Invalid project path, project.godot must not exist."
-msgstr "অকারà§à¦¯à¦•র পà§à¦°à¦•লà§à¦ªà§‡à¦° পথ, engine.cfg অবশà§à¦¯à¦‡ অনà§à¦ªà¦¸à§à¦¥à¦¿à¦¤ হতে হবে।"
+msgid "Please choose a 'project.godot' file."
+msgstr "অনà§à¦—à§à¦°à¦¹ করে পà§à¦°à¦•লà§à¦ªà§‡à¦° ফোলà§à¦¡à¦¾à¦°à§‡à¦° বাইরে à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨!"
#: editor/project_manager.cpp
-#, fuzzy
-msgid "Invalid project path, project.godot must exist."
-msgstr "অকারà§à¦¯à¦•র পà§à¦°à¦•লà§à¦ªà§‡à¦° পথ, engine.cfg অবশà§à¦¯à¦‡ উপসà§à¦¥à¦¿à¦¤ হতে হবে।"
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose a folder that does not contain a 'project.godot' file."
+msgstr ""
#: editor/project_manager.cpp
msgid "Imported Project"
msgstr "পà§à¦°à¦•লà§à¦ª ইমà§à¦ªà§‹à¦°à§à¦Ÿ করা হয়েছে"
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr "অকারà§à¦¯à¦•র পà§à¦°à¦•লà§à¦ªà§‡à¦° পথ (কোনোকিছৠপরিবরà§à¦¤à¦¨ করেছেন?)।"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Couldn't get project.godot in project path."
+msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° পথে engine.cfg তৈরি করা সমà§à¦­à¦¬ হয়নি।"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't edit project.godot in project path."
+msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° পথে engine.cfg তৈরি করা সমà§à¦­à¦¬ হয়নি।"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Couldn't create project.godot in project path."
msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° পথে engine.cfg তৈরি করা সমà§à¦­à¦¬ হয়নি।"
@@ -6134,38 +5755,49 @@ msgid "The following files failed extraction from package:"
msgstr "পà§à¦¯à¦¾à¦•েজ হতে নীমà§à¦¨à§‹à¦•à§à¦¤ ফাইলসমূহ à¦à¦•à§à¦¸à¦Ÿà§à¦°à¦¾à¦•à§à¦Ÿ করা অসফল হয়েছে:"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Rename Project"
+msgstr "নামহীন পà§à¦°à¦•লà§à¦ª"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't get project.godot in the project path."
+msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° পথে engine.cfg তৈরি করা সমà§à¦­à¦¬ হয়নি।"
+
+#: editor/project_manager.cpp
+msgid "New Game Project"
+msgstr "নতà§à¦¨ গেম পà§à¦°à¦•লà§à¦ª"
+
+#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "বিদà§à¦¯à¦®à¦¾à¦¨ পà§à¦°à¦•লà§à¦ª ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
-msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° পথ (অবশà§à¦¯à¦‡ বিদà§à¦¯à¦®à¦¾à¦¨ হতে হবে):"
+msgid "Create New Project"
+msgstr "নতà§à¦¨ পà§à¦°à¦•লà§à¦ª তৈরি করà§à¦¨"
+
+#: editor/project_manager.cpp
+msgid "Install Project:"
+msgstr "পà§à¦°à¦•লà§à¦ª ইনà§à¦¸à¦Ÿà¦² করà§à¦¨:"
#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° নাম:"
#: editor/project_manager.cpp
-msgid "Create New Project"
-msgstr "নতà§à¦¨ পà§à¦°à¦•লà§à¦ª তৈরি করà§à¦¨"
+#, fuzzy
+msgid "Create folder"
+msgstr "ফোলà§à¦¡à¦¾à¦° তৈরি করà§à¦¨"
#: editor/project_manager.cpp
msgid "Project Path:"
msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° পথ:"
#: editor/project_manager.cpp
-msgid "Install Project:"
-msgstr "পà§à¦°à¦•লà§à¦ª ইনà§à¦¸à¦Ÿà¦² করà§à¦¨:"
-
-#: editor/project_manager.cpp
msgid "Browse"
msgstr "বà§à¦°à¦¾à¦‰à¦¸"
#: editor/project_manager.cpp
-msgid "New Game Project"
-msgstr "নতà§à¦¨ গেম পà§à¦°à¦•লà§à¦ª"
-
-#: editor/project_manager.cpp
msgid "That's a BINGO!"
msgstr "দারà§à¦£ খবর!"
@@ -6174,6 +5806,11 @@ msgid "Unnamed Project"
msgstr "নামহীন পà§à¦°à¦•লà§à¦ª"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't open project"
+msgstr "সংযোগ.."
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr "à¦à¦•ধিক পà§à¦°à¦•লà§à¦ª খোলায় আপনি সà§à¦¨à¦¿à¦¶à§à¦šà¦¿à¦¤?"
@@ -6204,6 +5841,12 @@ msgstr "তালিকা হতে পà§à¦°à¦•লà§à¦ª অপসারণ à¦
#: editor/project_manager.cpp
msgid ""
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
"You are about the scan %s folders for existing Godot projects. Do you "
"confirm?"
msgstr ""
@@ -6215,10 +5858,6 @@ msgid "Project List"
msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° তালিকা"
#: editor/project_manager.cpp
-msgid "Run"
-msgstr "চালান"
-
-#: editor/project_manager.cpp
msgid "Scan"
msgstr "সà§à¦•à§à¦¯à¦¾à¦¨"
@@ -6241,6 +5880,11 @@ msgstr "পà§à¦°à¦¸à§à¦¥à¦¾à¦¨ করà§à¦¨"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Restart Now"
+msgstr "পà§à¦¨à¦°à¦¾à¦°à¦®à§à¦­ (সেঃ):"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Can't run project"
msgstr "সংযোগ.."
@@ -6277,17 +5921,14 @@ msgid "Add Input Action Event"
msgstr "ইনপà§à¦Ÿ অà§à¦¯à¦¾à¦•শন ইভেনà§à¦Ÿ যোগ করà§à¦¨"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
@@ -6349,7 +5990,7 @@ msgstr "পরিবরà§à¦¤à¦¨ করà§à¦¨"
msgid "Joypad Axis Index:"
msgstr "জয়সà§à¦Ÿà¦¿à¦• অকà§à¦· ইনà§à¦¡à§‡à¦•à§à¦¸:"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "অকà§à¦·"
@@ -6371,31 +6012,31 @@ msgstr "ইনপà§à¦Ÿ অà§à¦¯à¦¾à¦•শন ইভেনà§à¦Ÿ মà§à¦›à§‡ à¦
msgid "Add Event"
msgstr "খালি বসà§à¦¤à§ যোগ করà§à¦¨"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "ডিভাইস/যনà§à¦¤à§à¦°"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "বাটন/বোতাম"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "বাম বোতাম/বাটন।"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "ডান বোতাম/বাটন।"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "মাঠবোতাম/বাটন।"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr "মাউসের চাকা উপরের দিকে চকà§à¦•র।"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr "মাউসের চাকা নিচের দিকে চকà§à¦•র।"
@@ -6405,7 +6046,7 @@ msgid "Add Global Property"
msgstr "গেটার (Getter) à¦à¦° বৈশিষà§à¦Ÿà§à¦¯à§‡ যà§à¦•à§à¦¤ করà§à¦¨"
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6424,6 +6065,16 @@ msgid "Delete Item"
msgstr "ইনপà§à¦Ÿ অপসারণ করà§à¦¨"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Can't contain '/' or ':'"
+msgstr "নোডের সাথে সংযà§à¦•à§à¦¤ করà§à¦¨:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Already existing"
+msgstr "সà§à¦¥à¦¾à§Ÿà§€à§Ÿà¦¤à¦¾ টগল করà§à¦¨"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে।"
@@ -6465,6 +6116,15 @@ msgstr "রিসোরà§à¦¸à§‡à¦° পà§à¦¨à¦ƒ-নকশার সিদà§à¦§
#: editor/project_settings_editor.cpp
#, fuzzy
+msgid "Changed Locale Filter"
+msgstr "বà§à¦²à§‡à¦¨à§à¦¡-à¦à¦° সময় পরিবরà§à¦¤à¦¨ করà§à¦¨"
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Project Settings (project.godot)"
msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° সেটিংস (engine.cfg)"
@@ -6525,6 +6185,30 @@ msgid "Locale"
msgstr "ঘটনাসà§à¦¥à¦²"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales Filter"
+msgstr "ছবির ফিলà§à¦Ÿà¦¾à¦°:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Show all locales"
+msgstr "বোনà§â€Œ/হাড় দেখান"
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "ফিলà§à¦Ÿà¦¾à¦°à¦¸à¦®à§‚হ"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales:"
+msgstr "ঘটনাসà§à¦¥à¦²"
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "সà§à¦¬à§Ÿà¦‚কà§à¦°à¦¿à§Ÿ-লোড"
@@ -6576,10 +6260,20 @@ msgstr "নতà§à¦¨ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ"
#: editor/property_editor.cpp
#, fuzzy
+msgid "Make Unique"
+msgstr "বোনà§â€Œ/হাড় তৈরি করà§à¦¨"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "Show in File System"
msgstr "ফাইলসিসà§à¦Ÿà§‡à¦®"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Convert To %s"
+msgstr "à¦à¦¤à§‡ রূপানà§à¦¤à¦° করà§à¦¨.."
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr "ফাইল লোডে সমসà§à¦¯à¦¾: রিসোরà§à¦¸ নয়!"
@@ -6618,6 +6312,11 @@ msgid "Select Property"
msgstr "গà§à¦£à¦¾à¦—à§à¦£/বৈশিষà§à¦Ÿà§à¦¯ বাছাই করà§à¦¨"
#: editor/property_selector.cpp
+#, fuzzy
+msgid "Select Virtual Method"
+msgstr "মেথড/পদà§à¦§à¦¤à¦¿ বাছাই করà§à¦¨"
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr "মেথড/পদà§à¦§à¦¤à¦¿ বাছাই করà§à¦¨"
@@ -6645,26 +6344,6 @@ msgstr "সারà§à¦¬à¦œà¦¨à§€à¦¨ রূপানà§à¦¤à¦° রাখà§à¦¨"
msgid "Reparent"
msgstr "নতà§à¦¨ অভিভাবক দান করà§à¦¨"
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr "নতà§à¦¨ রিসোরà§à¦¸ তৈরি করà§à¦¨"
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr "রিসোরà§à¦¸ খà§à¦²à§à¦¨"
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr "রিসোরà§à¦¸ সংরকà§à¦·à¦£ করà§à¦¨"
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr "রিসোরà§à¦¸-à¦à¦° সরঞà§à¦œà¦¾à¦®à¦¸à¦®à§‚হ"
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr "সà§à¦¥à¦¾à¦¨à§€à§Ÿ করà§à¦¨"
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr "চালানোর মোড:"
@@ -6796,14 +6475,6 @@ msgid "Sub-Resources:"
msgstr "রিসোরà§à¦¸à¦¸à¦®à§‚হ:"
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr "গà§à¦°à§à¦ªà¦¸à¦®à§‚হ সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨"
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr "সংযোগসমূহ সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨"
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr "উতà§à¦¤à¦°à¦¾à¦§à¦¿à¦•ারতà§à¦¬ পরিসà§à¦•ার করà§à¦¨"
@@ -6992,6 +6663,15 @@ msgid "Invalid base path"
msgstr "বেস পথ অগà§à¦°à¦¹à¦£à¦¯à§‹à¦—à§à¦¯"
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "File exists, will be reused"
+msgstr "à¦à¦•ই নামের ফাইল উপসà§à¦¥à¦¿à¦¤, তা মà§à¦›à§‡ লিখবেন?"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr "অগà§à¦°à¦¹à¦£à¦¯à§‹à¦—à§à¦¯ à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦¶à¦¨"
@@ -7037,6 +6717,10 @@ msgid "Load existing script file"
msgstr "বিদà§à¦¯à¦®à¦¾à¦¨ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ লোড করà§à¦¨"
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr "ভাষা"
+
+#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Inherits"
msgstr "গà§à¦°à¦¹à¦£ করে:"
@@ -7081,6 +6765,10 @@ msgid "Function:"
msgstr "ফাংশন:"
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr "সমসà§à¦¯à¦¾à¦¸à¦®à§‚হ"
@@ -7161,6 +6849,10 @@ msgid "Type"
msgstr "ধরণ"
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr "ফরমà§à¦¯à¦¾à¦Ÿ"
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr "বà§à¦¯à¦¬à¦¹à¦¾à¦°"
@@ -7236,12 +6928,30 @@ msgstr ""
msgid "Change Probe Extents"
msgstr "পà§à¦°à§‹à¦¬à§‡à¦° (Probe) পরিবà§à¦¯à¦¾à¦ªà§à¦¤à¦¿ পরিবরà§à¦¤à¦¨ করà§à¦¨"
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Library"
+msgstr "MeshLibrary (মেস-লাইবà§à¦°à§‡à¦°à¦¿).."
+
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Status"
+msgstr "অবসà§à¦¥à¦¾:"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr "অগà§à¦°à¦¹à¦£à¦¯à§‹à¦—à§à¦¯ মান/আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ convert()-ঠগিয়েছে, TYPE_* ধà§à¦°à§à¦¬à¦• বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨à¥¤"
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "বিনà§à¦¯à¦¾à¦¸ জানার জনà§à¦¯ যথেষà§à¦Ÿ বাইট নেই, অথবা ভà§à¦² ফরমà§à¦¯à¦¾à¦Ÿà¥¤"
@@ -7293,10 +7003,6 @@ msgid "GridMap Duplicate Selection"
msgstr "নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ সমূহ অনà§à¦²à¦¿à¦ªà¦¿ করà§à¦¨"
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Snap View"
msgstr "শীরà§à¦· দরà§à¦¶à¦¨"
@@ -7400,13 +7106,8 @@ msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª সেটিংস"
msgid "Pick Distance:"
msgstr "ইনà§à¦¸à¦Ÿà§à¦¯à¦¾à¦¨à§à¦¸:"
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr "ফাইল"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7620,10 +7321,18 @@ msgid "Return"
msgstr "ফেরৎ পাঠান (Return)"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr "ডাকà§à¦¨ (Call)"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr "মান পান (Get)"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Input Value"
msgstr "ইনপà§à¦Ÿ নাম পরিবরà§à¦¤à¦¨ করà§à¦¨"
@@ -8030,6 +7739,12 @@ msgstr ""
"AnimatedSprite3D দà§à¦¬à¦¾à¦°à¦¾ ফà§à¦°à§‡à¦® দেখাতে SpriteFrames রিসোরà§à¦¸ অবশà§à¦¯à¦‡ তৈরি করতে হবে "
"অথবা 'Frames' à¦à¦° মান-ঠনিরà§à¦§à¦¾à¦°à¦¨ করে দিতে হবে।"
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
#, fuzzy
msgid "Raw Mode"
@@ -8040,6 +7755,10 @@ msgid "Add current color as a preset"
msgstr ""
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "বাতিল"
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr "সতরà§à¦•তা!"
@@ -8047,10 +7766,6 @@ msgstr "সতরà§à¦•তা!"
msgid "Please Confirm..."
msgstr "অনà§à¦—à§à¦°à¦¹ করে নিশà§à¦šà¦¿à¦¤ করà§à¦¨..."
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -8086,6 +7801,625 @@ msgstr ""
"আকার ধারণ করতে পারে। অনà§à¦¯à¦¥à¦¾à§Ÿ, à¦à¦Ÿà¦¿à¦•ে à¦à¦•টি RenderTarget করà§à¦¨ à¦à¦¬à¦‚ à¦à¦° অভà§à¦¯à¦¨à§à¦¤à¦°à§€à¦£ "
"দৃশà§à¦¯à¦¾à¦¬à¦²à¦¿à¦•ে (texture) দৃশà§à¦¯à¦®à¦¾à¦¨ করতে কোনো নোডে হসà§à¦¤à¦¾à¦¨à§à¦¤à¦° করà§à¦¨à¥¤"
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr "FreeType আরমà§à¦­à§‡ সমসà§à¦¯à¦¾ হয়েছে।"
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "অজানা ধরনের ফনà§à¦Ÿà¥¤"
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "ফনà§à¦Ÿ তà§à¦²à¦¤à§‡/লোডে সমসà§à¦¯à¦¾ হয়েছে।"
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr "ফনà§à¦Ÿà§‡à¦° আকার অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯à¥¤"
+
+#~ msgid "Filter:"
+#~ msgstr "ফিলà§à¦Ÿà¦¾à¦°:"
+
+#~ msgid "Theme"
+#~ msgstr "থিম"
+
+#~ msgid "Method List For '%s':"
+#~ msgstr "'%s' à¦à¦° জনà§à¦¯ মেথডের তালিকা:"
+
+#~ msgid "Arguments:"
+#~ msgstr "মান/আরà§à¦—à§à¦®à§‡à¦¨à§à¦Ÿ-সমূহ:"
+
+#~ msgid "Return:"
+#~ msgstr "পà§à¦°à¦¤à§à¦¯à¦¾à¦¬à¦°à§à¦¤à¦¨:"
+
+#~ msgid "Added:"
+#~ msgstr "সংযোজিত:"
+
+#~ msgid "Removed:"
+#~ msgstr "অপসারিত:"
+
+#~ msgid "Error saving atlas:"
+#~ msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€ সংরকà§à¦·à¦£à§‡ সমসà§à¦¯à¦¾ হয়েছে:"
+
+#~ msgid "Could not save atlas subtexture:"
+#~ msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€à¦° উপ-গঠনবিনà§à¦¯à¦¾à¦¸ (subtexture) সংরকà§à¦·à¦£ অসমরà§à¦¥ হয়েছে:"
+
+#~ msgid "Exporting for %s"
+#~ msgstr "%s à¦à¦° জনà§à¦¯ à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ (export) হচà§à¦›à§‡"
+
+#~ msgid "Setting Up.."
+#~ msgstr "সà§à¦¥à¦¾à¦ªà¦¿à¦¤/বিনà§à¦¯à¦¸à§à¦¤ হচà§à¦›à§‡.."
+
+#~ msgid "Error loading scene."
+#~ msgstr "দৃশà§à¦¯ লোডে সমসà§à¦¯à¦¾ হয়েছে।"
+
+#~ msgid "Re-Import"
+#~ msgstr "পà§à¦¨-ইমà§à¦ªà§‹à¦°à§à¦Ÿ"
+
+#~ msgid "Please wait for scan to complete."
+#~ msgstr "সà§à¦•à§à¦¯à¦¾à¦¨ সমà§à¦ªà¦¨à§à¦¨ হওয়া পরà§à¦¯à¦¨à§à¦¤ অনà§à¦—à§à¦°à¦¹ করে অপেকà§à¦·à¦¾ করà§à¦¨à¥¤"
+
+#~ msgid "Current scene must be saved to re-import."
+#~ msgstr "পà§à¦¨à¦°à¦¾à§Ÿ-ইমà§à¦ªà§‹à¦°à§à¦Ÿ করতে বরà§à¦¤à¦®à¦¾à¦¨ দৃশà§à¦¯à¦Ÿà¦¿à¦•ে অবশà§à¦¯à¦‡ সংরকà§à¦·à¦£ করতে হবে।"
+
+#~ msgid "Save & Re-Import"
+#~ msgstr "সংরকà§à¦·à¦£ à¦à¦¬à¦‚ পà§à¦¨-ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#~ msgid "Re-Importing"
+#~ msgstr "পà§à¦¨à¦°à¦¾à§Ÿ ইমà§à¦ªà§‹à¦°à§à¦Ÿ হচà§à¦›à§‡"
+
+#~ msgid "Re-Import Changed Resources"
+#~ msgstr "পà§à¦¨-ইমà§à¦ªà§‹à¦°à§à¦Ÿà§‡ রিসোরà§à¦¸-সমূহ পরিবরà§à¦¤à¦¿à¦¤ হয়েছে"
+
+#~ msgid "Loading Export Templates"
+#~ msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ লোড হচà§à¦›à§‡"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Status: Needs Re-Import"
+#~ msgstr "সংরকà§à¦·à¦£ à¦à¦¬à¦‚ পà§à¦¨-ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#~ msgid "Same source and destination files, doing nothing."
+#~ msgstr "ফাইলà§à¦—à§à¦²à§‹à¦° à¦à¦•ই উৎস à¦à¦¬à¦‚ গনà§à¦¤à¦¬à§à¦¯à¦¸à§à¦¥à¦¾à¦¨, কিছà§à¦‡ করা হচà§à¦›à§‡ না।"
+
+#~ msgid "Same source and destination paths, doing nothing."
+#~ msgstr "পথগà§à¦²à§‹à¦° à¦à¦•ই উৎস à¦à¦¬à¦‚ গনà§à¦¤à¦¬à§à¦¯à¦¸à§à¦¥à¦¾à¦¨, কিছà§à¦‡ করা হচà§à¦›à§‡ না।"
+
+#~ msgid "Can't move directories to within themselves."
+#~ msgstr "সà§à¦¥à¦¾à¦¨à¦¸à¦®à§‚হকে তাদের মাà¦à§‡à¦‡ সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦° করা সমà§à¦­à¦¬ নয়।"
+
+#, fuzzy
+#~ msgid "Error moving file:\n"
+#~ msgstr "ছবি লোডে সমসà§à¦¯à¦¾ হয়েছে:"
+
+#~ msgid "Pick New Name and Location For:"
+#~ msgstr "নতà§à¦¨ নাম à¦à¦¬à¦‚ অবসà§à¦¥à¦¾à¦¨ বাছাই করà§à¦¨:"
+
+#~ msgid "No files selected!"
+#~ msgstr "কোনো ফাইল নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ হয়নি!"
+
+#~ msgid "Info"
+#~ msgstr "তথà§à¦¯"
+
+#~ msgid "Re-Import.."
+#~ msgstr "পà§à¦¨-ইমà§à¦ªà§‹à¦°à§à¦Ÿ.."
+
+#~ msgid "No bit masks to import!"
+#~ msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ করার জনà§à¦¯ কোনো বিট মাসà§à¦• নেই!"
+
+#~ msgid "Target path is empty."
+#~ msgstr "উদà§à¦¦à§‡à¦¶à§à¦¯à¦¿à¦¤ পথটি খালি।"
+
+#~ msgid "Target path must be a complete resource path."
+#~ msgstr "উদà§à¦¦à§‡à¦¶à§à¦¯à¦¿à¦¤ পথটি অবশà§à¦¯à¦‡ à¦à¦•টি সমà§à¦ªà§à¦°à§à¦£ রিসোরà§à¦¸ পথ হতে হবে।"
+
+#~ msgid "Target path must exist."
+#~ msgstr "উদà§à¦¦à§‡à¦¶à§à¦¯à¦¿à¦¤ পথটি অবশà§à¦¯à¦‡ বিদà§à¦¯à¦®à¦¾à¦¨ হতে হবে।"
+
+#~ msgid "Save path is empty!"
+#~ msgstr "সংরকà§à¦·à¦£à§‡à¦° পথটি খালি!"
+
+#~ msgid "Import BitMasks"
+#~ msgstr "BitMasks ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#~ msgid "Source Texture(s):"
+#~ msgstr "টেকà§à¦¸à¦¾à¦°(সমূহ)-à¦à¦° উৎস:"
+
+#~ msgid "Target Path:"
+#~ msgstr "উদà§à¦¦à§‡à¦¶à§à¦¯à¦¿à¦¤ পথ:"
+
+#~ msgid "Accept"
+#~ msgstr "গà§à¦°à¦¹à¦£ করà§à¦¨"
+
+#~ msgid "Bit Mask"
+#~ msgstr "বিট-মাসà§à¦• (Bit Mask)"
+
+#~ msgid "No source font file!"
+#~ msgstr "ফনà§à¦Ÿà§‡à¦° কোনো উৎস ফাইল নেই!"
+
+#~ msgid "No target font resource!"
+#~ msgstr "ফনà§à¦Ÿà§‡à¦° কোনো উদà§à¦¦à§‡à¦¶à§à¦¯à¦¿à¦¤ রিসোরà§à¦¸ নেই!"
+
+#, fuzzy
+#~ msgid ""
+#~ "Invalid file extension.\n"
+#~ "Please use .font."
+#~ msgstr ""
+#~ "ফাইলের অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦¶à¦¨à¥¤\n"
+#~ "অনà§à¦—à§à¦°à¦¹ করে .fnt বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨à¥¤"
+
+#~ msgid "Couldn't save font."
+#~ msgstr "ফনà§à¦Ÿ সংরকà§à¦·à¦£ করা সমà§à¦­à¦¬ হয়নি।"
+
+#~ msgid "Source Font:"
+#~ msgstr "ফনà§à¦Ÿà§‡à¦° উৎস:"
+
+#~ msgid "Source Font Size:"
+#~ msgstr "উৎস ফনà§à¦Ÿà§‡à¦° আকার:"
+
+#~ msgid "Dest Resource:"
+#~ msgstr "রিসোরà§à¦¸à§‡à¦° গনà§à¦¤à¦¬à§à¦¯à¦¸à§à¦¥à¦¾à¦¨:"
+
+#~ msgid "The quick brown fox jumps over the lazy dog."
+#~ msgstr ""
+#~ "বাদামী রঙà§à¦—ের দà§à¦°à§à¦¤ শিয়ালটি অলস কà§à¦•à§à¦°à§‡à¦° উপর দিয়ে লাফিয়ে যায় (The quick brown "
+#~ "fox jumps over the lazy dog.)।"
+
+#~ msgid "Test:"
+#~ msgstr "পরীকà§à¦·à¦¾:"
+
+#~ msgid "Options:"
+#~ msgstr "সিদà§à¦§à¦¾à¦¨à§à¦¤à¦¸à¦®à§‚হ (অপশন):"
+
+#~ msgid "Font Import"
+#~ msgstr "ফনà§à¦Ÿ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#~ msgid ""
+#~ "This file is already a Godot font file, please supply a BMFont type file "
+#~ "instead."
+#~ msgstr ""
+#~ "à¦à¦‡ ফাইলটি ইতিমধà§à¦¯à§‡à¦‡ à¦à¦•টি Godot ফনà§à¦Ÿ ফাইল, পরিবরà§à¦¤à§‡ অনà§à¦—à§à¦°à¦¹ করে BMFont ধরণের "
+#~ "ফাইল পà§à¦°à¦¦à¦¾à¦¨ করà§à¦¨à¥¤"
+
+#~ msgid "Failed opening as BMFont file."
+#~ msgstr "BMFont ফাইল খোলা বà§à¦¯à¦°à§à¦¥ হয়েছে।"
+
+#~ msgid "Invalid font custom source."
+#~ msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦®à¦¿à¦¤ ফনà§à¦Ÿà§‡à¦° অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ উৎস।"
+
+#~ msgid "No meshes to import!"
+#~ msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ করার মতো কোনো মেস নেই!"
+
+#~ msgid "Single Mesh Import"
+#~ msgstr "à¦à¦•ক মেস ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#~ msgid "Source Mesh(es):"
+#~ msgstr "মেস(সমূহ)-à¦à¦° উৎস:"
+
+#~ msgid "Surface %d"
+#~ msgstr "পৃষà§à¦ à¦¤à¦² %d"
+
+#~ msgid "No samples to import!"
+#~ msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ করার মতো কোনো নমà§à¦¨à¦¾ নেই!"
+
+#~ msgid "Import Audio Samples"
+#~ msgstr "শবà§à¦¦à§‡à¦° নমà§à¦¨à¦¾à¦¸à¦®à§‚হ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#~ msgid "Source Sample(s):"
+#~ msgstr "নমà§à¦¨à¦¾(সমূহ)-à¦à¦° উৎস:"
+
+#~ msgid "Audio Sample"
+#~ msgstr "শবà§à¦¦à§‡à¦° নমà§à¦¨à¦¾"
+
+#~ msgid "New Clip"
+#~ msgstr "নতà§à¦¨ কà§à¦²à¦¿à¦ª"
+
+#~ msgid "Flags"
+#~ msgstr "পতাকাসমূহ"
+
+#~ msgid "Bake FPS:"
+#~ msgstr "সিদà§à¦§ FPS:"
+
+#~ msgid "Optimizer"
+#~ msgstr "পরিমারà§à¦œà¦•"
+
+#~ msgid "Max Linear Error"
+#~ msgstr "সরà§à¦¬à§‡à¦¾à¦šà§à¦š রৈখিক ভà§à¦²/সমসà§à¦¯à¦¾"
+
+#~ msgid "Max Angular Error"
+#~ msgstr "সরà§à¦¬à§‡à¦¾à¦šà§à¦š কৌণিক ভà§à¦²/সমসà§à¦¯à¦¾"
+
+#~ msgid "Max Angle"
+#~ msgstr "সরà§à¦¬à§‡à¦¾à¦šà§à¦š কোণ"
+
+#~ msgid "Clips"
+#~ msgstr "কà§à¦²à¦¿à¦ªà¦¸à¦®à§‚হ"
+
+#~ msgid "Start(s)"
+#~ msgstr "আরমà§à¦­(সমূহ)"
+
+#~ msgid "End(s)"
+#~ msgstr "সমাপà§à¦¤à¦¿(সমূহ)"
+
+#~ msgid "Filters"
+#~ msgstr "ফিলà§à¦Ÿà¦¾à¦°à¦¸à¦®à§‚হ"
+
+#~ msgid "Source path is empty."
+#~ msgstr "উৎসের পথটি খালি।"
+
+#~ msgid "Couldn't load post-import script."
+#~ msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ-পরবরà§à¦¤à§€ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ লোড করা সমà§à¦­à¦¬ হয়নি।"
+
+#~ msgid "Invalid/broken script for post-import."
+#~ msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ-পরবরà§à¦¤à§€ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ অকারà§à¦¯à¦•র/তà§à¦°à§à¦Ÿà¦¿à¦ªà§‚রà§à¦£à¥¤"
+
+#~ msgid "Error importing scene."
+#~ msgstr "দৃশà§à¦¯ ইমà§à¦ªà§‹à¦°à§à¦Ÿà§‡ সমসà§à¦¯à¦¾ হয়েছে।"
+
+#~ msgid "Import 3D Scene"
+#~ msgstr "3D দৃশà§à¦¯ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#~ msgid "Source Scene:"
+#~ msgstr "উৎস দৃশà§à¦¯:"
+
+#~ msgid "Same as Target Scene"
+#~ msgstr "উদà§à¦¦à§‡à¦¶à§à¦¯à¦¿à¦¤ দৃশà§à¦¯à§‡à¦° নà§à¦¯à¦¾à§Ÿ"
+
+#~ msgid "Shared"
+#~ msgstr "শেয়ারকৃত"
+
+#~ msgid "Target Texture Folder:"
+#~ msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° উদà§à¦¦à§‡à¦¶à§à¦¯à¦¿à¦¤ ফোলà§à¦¡à¦¾à¦°:"
+
+#~ msgid "Post-Process Script:"
+#~ msgstr "পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾-পরবরà§à¦¤à§€ সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ:"
+
+#~ msgid "Custom Root Node Type:"
+#~ msgstr "সà§à¦¬à¦¨à¦¿à¦°à§à¦®à¦¿à¦¤ মূল নোডের ধরণ:"
+
+#~ msgid "Auto"
+#~ msgstr "সà§à¦¬à§Ÿà¦‚কà§à¦°à¦¿à§Ÿ"
+
+#~ msgid "Root Node Name:"
+#~ msgstr "মূল নোডের নাম:"
+
+#~ msgid "The Following Files are Missing:"
+#~ msgstr "নিমà§à¦¨à§‹à¦•à§à¦¤ ফাইলসমূহ অনà§à¦ªà¦¸à§à¦¥à¦¿à¦¤:"
+
+#~ msgid "Import Anyway"
+#~ msgstr "যেকোনো উপায়েই ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#~ msgid "Import & Open"
+#~ msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨ à¦à¦¬à¦‚ খà§à¦²à§à¦¨"
+
+#~ msgid "Edited scene has not been saved, open imported scene anyway?"
+#~ msgstr "সমà§à¦ªà¦¾à¦¦à¦¿à¦¤ দৃশà§à¦¯ সংরকà§à¦·à¦£ করা হয়নি, তবà§à¦“ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করা দৃশà§à¦¯à¦Ÿà¦¿ খà§à¦²à¦¬à§‡à¦¨?"
+
+#~ msgid "Import Image:"
+#~ msgstr "ছবি ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨:"
+
+#~ msgid "Couldn't localize path: %s (already local)"
+#~ msgstr "পথ সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼à¦•রণ সমà§à¦­à¦¬ হচà§à¦›à§‡ না: %s (ইতিমধà§à¦¯à§‡à¦‡ সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼)"
+
+#~ msgid "3D Scene Animation"
+#~ msgstr "3D দৃশà§à¦¯à§‡à¦° অà§à¦¯à¦¾à¦¨à¦¿à¦®à§‡à¦¶à¦¨"
+
+#~ msgid "Uncompressed"
+#~ msgstr "অসংকà§à¦šà¦¿à¦¤"
+
+#~ msgid "Compress Lossless (PNG)"
+#~ msgstr "ধà§à¦¬à¦‚সবিহীন সঙà§à¦•োচন (PNG)"
+
+#~ msgid "Compress Lossy (WebP)"
+#~ msgstr "ধà§à¦¬à¦‚সাতà§à¦®à¦• সঙà§à¦•োচন (WebP)"
+
+#~ msgid "Compress (VRAM)"
+#~ msgstr "সঙà§à¦•োচন (VRAM)"
+
+#~ msgid "Texture Format"
+#~ msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° ফরমà§à¦¯à¦¾à¦Ÿ"
+
+#~ msgid "Texture Compression Quality (WebP):"
+#~ msgstr "গঠনবিনà§à¦¯à¦¾à¦¸ সঙà§à¦•োচনের গà§à¦£à¦®à¦¾à¦¨ (WebP):"
+
+#~ msgid "Texture Options"
+#~ msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° সিদà§à¦§à¦¾à¦¨à§à¦¤ (অপশন)-সমূহ"
+
+#~ msgid "Please specify some files!"
+#~ msgstr "অনà§à¦—à§à¦°à¦¹ করে কিছৠফাইল নিরà§à¦¦à¦¿à¦·à§à¦Ÿ করে দিন!"
+
+#~ msgid "At least one file needed for Atlas."
+#~ msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€à¦° জনà§à¦¯ কমপকà§à¦·à§‡ à¦à¦•টি ফাইল পà§à¦°à¦¯à¦¼à§‹à¦œà¦¨à¥¤"
+
+#~ msgid "Error importing:"
+#~ msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿà§‡ সমসà§à¦¯à¦¾ হয়েছে:"
+
+#~ msgid "Only one file is required for large texture."
+#~ msgstr "বৃহৎ গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° জনà§à¦¯ শà§à¦§à§à¦®à¦¾à¦¤à§à¦° à¦à¦•টি ফাইল পà§à¦°à§Ÿà§‹à¦œà¦¨à¥¤"
+
+#~ msgid "Max Texture Size:"
+#~ msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° সরà§à¦¬à§‡à¦¾à¦šà§à¦š আকার:"
+
+#~ msgid "Import Textures for Atlas (2D)"
+#~ msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€à¦° জনà§à¦¯ গঠনবিনà§à¦¯à¦¾à¦¸ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨ (2D)"
+
+#~ msgid "Cell Size:"
+#~ msgstr "সেল (Cell)-à¦à¦° আকার:"
+
+#~ msgid "Large Texture"
+#~ msgstr "বৃহৎ গঠনবিনà§à¦¯à¦¾à¦¸"
+
+#~ msgid "Import Large Textures (2D)"
+#~ msgstr "বৃহৎ গঠনবিনà§à¦¯à¦¾à¦¸ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨ (2D)"
+
+#~ msgid "Source Texture"
+#~ msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° উৎস"
+
+#~ msgid "Base Atlas Texture"
+#~ msgstr "গোড়ার à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€à¦° গঠনবিনà§à¦¯à¦¾à¦¸"
+
+#~ msgid "Source Texture(s)"
+#~ msgstr "গঠনবিনà§à¦¯à¦¾à¦¸(সমূহ)-à¦à¦° উৎস"
+
+#~ msgid "Import Textures for 2D"
+#~ msgstr "2D-à¦à¦° জনà§à¦¯ গঠনবিনà§à¦¯à¦¾à¦¸à¦¸à¦®à§‚হ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#~ msgid "Import Textures for 3D"
+#~ msgstr "3D-à¦à¦° জনà§à¦¯ গঠনবিনà§à¦¯à¦¾à¦¸à¦¸à¦®à§‚হ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#~ msgid "Import Textures"
+#~ msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à¦¸à¦®à§‚হ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#~ msgid "2D Texture"
+#~ msgstr "2D গঠনবিনà§à¦¯à¦¾à¦¸"
+
+#~ msgid "3D Texture"
+#~ msgstr "3D গঠনবিনà§à¦¯à¦¾à¦¸"
+
+#~ msgid "Atlas Texture"
+#~ msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€à¦° গঠনবিনà§à¦¯à¦¾à¦¸"
+
+#~ msgid ""
+#~ "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files "
+#~ "to the project."
+#~ msgstr ""
+#~ "নোটিশ: 2D টেকà§à¦¸à¦šà¦¾à¦° (texture) ইমà§à¦ªà§‹à¦°à§à¦Ÿ (import) করা অতà§à¦¯à¦¾à¦¬à¦¶à§à¦¯à¦• নয়। শà§à¦§à§à¦®à¦¾à¦¤à§à¦° png/"
+#~ "jpg ফাইলসমূহ পà§à¦°à¦•লà§à¦ªà§‡ পà§à¦°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿/কপি করà§à¦¨à¥¤"
+
+#~ msgid "Crop empty space."
+#~ msgstr "খালি সà§à¦¥à¦¾à¦¨ ছেà¦à¦Ÿà§‡ ফেলà§à¦¨à¥¤"
+
+#~ msgid "Texture"
+#~ msgstr "গঠনবিনà§à¦¯à¦¾à¦¸"
+
+#~ msgid "Import Large Texture"
+#~ msgstr "বৃহৎ গঠনবিনà§à¦¯à¦¾à¦¸ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#~ msgid "Load Source Image"
+#~ msgstr "উৎস হতে ছবি লোড করà§à¦¨"
+
+#~ msgid "Slicing"
+#~ msgstr "টà§à¦•রো করà§à¦¨"
+
+#~ msgid "Saving"
+#~ msgstr "সংরকà§à¦·à¦¿à¦¤ হচà§à¦›à§‡"
+
+#~ msgid "Couldn't save large texture:"
+#~ msgstr "বৃহৎ গঠনবিনà§à¦¯à¦¾à¦¸ সংরকà§à¦·à¦£ করা সমà§à¦­à¦¬ হচà§à¦›à§‡ না:"
+
+#~ msgid "Build Atlas For:"
+#~ msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€ নিরà§à¦®à¦¾à¦£ করà§à¦¨:"
+
+#~ msgid "Loading Image:"
+#~ msgstr "ছবি লোড করা হচà§à¦›à§‡:"
+
+#~ msgid "Couldn't load image:"
+#~ msgstr "ছবি লোড করা সমà§à¦­à¦¬ হচà§à¦›à§‡ না:"
+
+#~ msgid "Converting Images"
+#~ msgstr "ছবিসমূহ রূপানà§à¦¤à¦° করা হচà§à¦›à§‡"
+
+#~ msgid "Cropping Images"
+#~ msgstr "ছবিসমূহ ছাà¦à¦Ÿà¦¾ হচà§à¦›à§‡"
+
+#~ msgid "Blitting Images"
+#~ msgstr "ছবিসমূহ বà§à¦²à¦¿à¦Ÿà¦¿à¦‚ (Blitting) করা হচà§à¦›à§‡"
+
+#~ msgid "Couldn't save atlas image:"
+#~ msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€à¦° ছবি সংরকà§à¦·à¦£ করা সমà§à¦­à¦¬ হচà§à¦›à§‡ না:"
+
+#~ msgid "Couldn't save converted texture:"
+#~ msgstr "রূপানà§à¦¤à¦°à¦¿à¦¤ গঠনবিনà§à¦¯à¦¾à¦¸ সংরকà§à¦·à¦£ করা সমà§à¦­à¦¬ হচà§à¦›à§‡ না:"
+
+#~ msgid "Invalid source!"
+#~ msgstr "অকারà§à¦¯à¦•র উৎস!"
+
+#~ msgid "Invalid translation source!"
+#~ msgstr "অকারà§à¦¯à¦•র অনà§à¦¬à¦¾à¦¦à§‡à¦° উৎস!"
+
+#~ msgid "Column"
+#~ msgstr "কলাম"
+
+#~ msgid "No items to import!"
+#~ msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ করার মতো কোনো বসà§à¦¤à§ নেই!"
+
+#~ msgid "No target path!"
+#~ msgstr "কোনো উদà§à¦¦à§‡à¦¶à§à¦¯à¦¿à¦¤ পথ নেই!"
+
+#~ msgid "Import Translations"
+#~ msgstr "অনà§à¦¬à¦¾à¦¦à¦¸à¦®à§‚হ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#~ msgid "Couldn't import!"
+#~ msgstr "ইমà§à¦ªà§‹à¦°à§à¦Ÿ করা সমà§à¦­à¦¬ হচà§à¦›à§‡ না!"
+
+#~ msgid "Import Translation"
+#~ msgstr "অনà§à¦¬à¦¾à¦¦ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨"
+
+#~ msgid "Source CSV:"
+#~ msgstr "CSV-à¦à¦° উৎস:"
+
+#~ msgid "Ignore First Row"
+#~ msgstr "পà§à¦°à¦¥à¦® সারি অগà§à¦°à¦¾à¦¹à§à¦¯ করà§à¦¨"
+
+#~ msgid "Compress"
+#~ msgstr "সঙà§à¦•োচন করà§à¦¨"
+
+#, fuzzy
+#~ msgid "Add to Project (project.godot)"
+#~ msgstr "পà§à¦°à¦•লà§à¦ªà§‡ সংযà§à¦•à§à¦¤ করà§à¦¨ (engine.cfg)"
+
+#~ msgid "Import Languages:"
+#~ msgstr "ভাষাসমূহ ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨:"
+
+#~ msgid "Translation"
+#~ msgstr "অনà§à¦¬à¦¾à¦¦"
+
+#~ msgid "Parsing %d Triangles:"
+#~ msgstr "%d টি তà§à¦°à¦¿à¦­à§à¦œ বিশà§à¦²à§‡à¦·à¦£ করা হচà§à¦›à§‡:"
+
+#~ msgid "Triangle #"
+#~ msgstr "তà§à¦°à¦¿à¦­à§à¦œ #"
+
+#~ msgid "Light Baker Setup:"
+#~ msgstr "লাইটà§â€Œ সিদà§à¦§/বেকà§â€Œ-à¦à¦° সেটআপ:"
+
+#~ msgid "Fixing Lights"
+#~ msgstr "লাইটà§â€Œà¦¸à¦®à§‚হ ঠিক করা হচà§à¦›à§‡"
+
+#~ msgid "Making BVH"
+#~ msgstr "BVH তৈরি করা হচà§à¦›à§‡"
+
+#~ msgid "Transfer to Lightmaps:"
+#~ msgstr "লাইটà§à¦®à§à¦¯à¦¾à¦ªà§‡ হসà§à¦¤à¦¾à¦¨à§à¦¤à¦° করà§à¦¨:"
+
+#~ msgid "Allocating Texture #"
+#~ msgstr "গঠনবিনà§à¦¯à¦¾à¦¸ বণà§à¦Ÿà¦¿à¦¤ হচà§à¦›à§‡ #"
+
+#~ msgid "Baking Triangle #"
+#~ msgstr "তà§à¦°à¦¿à¦­à§à¦œ সিদà§à¦§/বেকà§â€Œ করা হচà§à¦›à§‡ #"
+
+#~ msgid "Post-Processing Texture #"
+#~ msgstr "গঠনবিনà§à¦¯à¦¾à¦¸à§‡à¦° পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾-পরবরà§à¦¤à§€ পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾à¦•রণ #"
+
+#~ msgid "Reset the lightmap octree baking process (start over)."
+#~ msgstr ""
+#~ "লাইটà§à¦®à§à¦¯à¦¾à¦ª ওকটà§à¦°à§€à¦° (octree) সিদà§à¦§/বেকà§â€Œ-à¦à¦° পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾à¦•রণ পà§à¦¨:সà§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨ (পà§à¦¨à¦°à¦¾à¦°à¦®à§à¦­)।"
+
+#~ msgid "Zoom (%):"
+#~ msgstr "জà§à¦®à§ (%):"
+
+#~ msgid "Skeleton.."
+#~ msgstr "সà§à¦•েলেটন/কাঠাম.."
+
+#~ msgid "Zoom Reset"
+#~ msgstr "জà§à¦®à§ পà§à¦¨:সà§à¦¥à¦¾à¦ªà¦¨ করà§à¦¨"
+
+#~ msgid "Zoom Set.."
+#~ msgstr "জà§à¦®à§ নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨.."
+
+#~ msgid "Set a Value"
+#~ msgstr "à¦à¦•টি মান নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨"
+
+#~ msgid "Snap (Pixels):"
+#~ msgstr "সà§à¦¨à§à¦¯à¦¾à¦ª (পিকà§à¦¸à§‡à¦²à¦¸à¦®à§‚হ):"
+
+#~ msgid "Parse BBCode"
+#~ msgstr "BBCode বিশà§à¦²à§‡à¦·à¦£ করà§à¦¨"
+
+#~ msgid "Length:"
+#~ msgstr "লমà§à¦¬à¦¾:"
+
+#~ msgid "Open Sample File(s)"
+#~ msgstr "নমà§à¦¨à¦¾ ফাইল(সমূহ) খà§à¦²à§à¦¨"
+
+#~ msgid "ERROR: Couldn't load sample!"
+#~ msgstr "সমসà§à¦¯à¦¾: নমà§à¦¨à¦¾ লোড করা সমà§à¦­à¦¬ হয়নি!"
+
+#~ msgid "Add Sample"
+#~ msgstr "নমà§à¦¨à¦¾ যোগ করà§à¦¨"
+
+#~ msgid "Rename Sample"
+#~ msgstr "নমà§à¦¨à¦¾ পà§à¦¨à¦ƒà¦¨à¦¾à¦®à¦•রণ করà§à¦¨"
+
+#~ msgid "Delete Sample"
+#~ msgstr "নমà§à¦¨à¦¾ অপসারণ করà§à¦¨"
+
+#~ msgid "16 Bits"
+#~ msgstr "১৬ বিটসà§â€Œ"
+
+#~ msgid "8 Bits"
+#~ msgstr "à§® বিটসà§â€Œ"
+
+#~ msgid "Stereo"
+#~ msgstr "সà§à¦Ÿà§‡à¦°à¦¿à¦“"
+
+#~ msgid "Mono"
+#~ msgstr "মনো"
+
+#~ msgid "Pitch"
+#~ msgstr "পিচà§â€Œ"
+
+#~ msgid "Window"
+#~ msgstr "উইনà§à¦¡à§‹"
+
+#~ msgid "Move Right"
+#~ msgstr "ডানে সরান"
+
+#~ msgid "Scaling to %s%%."
+#~ msgstr "%s%% -ঠমাপিত হচà§à¦›à§‡à¥¤"
+
+#~ msgid "Up"
+#~ msgstr "উপরে"
+
+#~ msgid "Down"
+#~ msgstr "নীচে"
+
+#~ msgid "Bucket"
+#~ msgstr "বাকেটà§â€Œ"
+
+#~ msgid "Invalid project path, the path must exist!"
+#~ msgstr "অকারà§à¦¯à¦•র পà§à¦°à¦•লà§à¦ªà§‡à¦° পথ, পথটি অবশà§à¦¯à¦‡ বিদà§à¦¯à¦®à¦¾à¦¨ হতে হবে!"
+
+#, fuzzy
+#~ msgid "Invalid project path, project.godot must not exist."
+#~ msgstr "অকারà§à¦¯à¦•র পà§à¦°à¦•লà§à¦ªà§‡à¦° পথ, engine.cfg অবশà§à¦¯à¦‡ অনà§à¦ªà¦¸à§à¦¥à¦¿à¦¤ হতে হবে।"
+
+#, fuzzy
+#~ msgid "Invalid project path, project.godot must exist."
+#~ msgstr "অকারà§à¦¯à¦•র পà§à¦°à¦•লà§à¦ªà§‡à¦° পথ, engine.cfg অবশà§à¦¯à¦‡ উপসà§à¦¥à¦¿à¦¤ হতে হবে।"
+
+#~ msgid "Project Path (Must Exist):"
+#~ msgstr "পà§à¦°à¦•লà§à¦ªà§‡à¦° পথ (অবশà§à¦¯à¦‡ বিদà§à¦¯à¦®à¦¾à¦¨ হতে হবে):"
+
+#~ msgid "Create New Resource"
+#~ msgstr "নতà§à¦¨ রিসোরà§à¦¸ তৈরি করà§à¦¨"
+
+#~ msgid "Open Resource"
+#~ msgstr "রিসোরà§à¦¸ খà§à¦²à§à¦¨"
+
+#~ msgid "Save Resource"
+#~ msgstr "রিসোরà§à¦¸ সংরকà§à¦·à¦£ করà§à¦¨"
+
+#~ msgid "Resource Tools"
+#~ msgstr "রিসোরà§à¦¸-à¦à¦° সরঞà§à¦œà¦¾à¦®à¦¸à¦®à§‚হ"
+
+#~ msgid "Make Local"
+#~ msgstr "সà§à¦¥à¦¾à¦¨à§€à§Ÿ করà§à¦¨"
+
+#~ msgid "Edit Groups"
+#~ msgstr "গà§à¦°à§à¦ªà¦¸à¦®à§‚হ সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨"
+
+#~ msgid "Edit Connections"
+#~ msgstr "সংযোগসমূহ সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨"
+
+#, fuzzy
+#~ msgid "Tiles"
+#~ msgstr "ফাইল"
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl+"
+
#~ msgid "Close scene? (Unsaved changes will be lost)"
#~ msgstr "দৃশà§à¦¯ বনà§à¦§ করবেন? (অসংরকà§à¦·à¦¿à¦¤ পরিবরà§à¦¤à¦¨à¦¸à¦®à§‚হ হারিয়ে যাবে)"
@@ -8099,9 +8433,6 @@ msgstr ""
#~ msgid "Close Goto Prev. Scene"
#~ msgstr "বনà§à¦§ করে পূরà§à¦¬à§‡à¦° দৃশà§à¦¯à§‡ যান"
-#~ msgid "Expand to Parent"
-#~ msgstr "ধারক/বাহক পরà§à¦¯à¦¨à§à¦¤ বিসà§à¦¤à§ƒà¦¤ করà§à¦¨"
-
#~ msgid "Del"
#~ msgstr "ডিলিট/অপসারণ"
@@ -8265,18 +8596,12 @@ msgstr ""
#~ msgid "Save Translatable Strings"
#~ msgstr "অনà§à¦¬à¦¾à¦¦-সমà§à¦­à¦¬ শবà§à¦¦à¦®à¦¾à¦²à¦¾/বাকà§à¦¯-সমূহ সংরকà§à¦·à¦£ করà§à¦¨"
-#~ msgid "Translatable Strings.."
-#~ msgstr "অনà§à¦¬à¦¾à¦¦-সমà§à¦­à¦¬ শবà§à¦¦à¦®à¦¾à¦²à¦¾/বাকà§à¦¯-সমূহ.."
-
#~ msgid "Install Export Templates"
#~ msgstr "à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿà§‡à¦° টেমপà§à¦²à§‡à¦Ÿà¦¸à¦®à§‚হ ইনà§à¦¸à¦Ÿà¦² করà§à¦¨"
#~ msgid "Edit Script Options"
#~ msgstr "সà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ-à¦à¦° সিদà§à¦§à¦¾à¦¨à§à¦¤à¦¸à¦®à§‚হ সমà§à¦ªà¦¾à¦¦à¦¨ করà§à¦¨"
-#~ msgid "Please export outside the project folder!"
-#~ msgstr "অনà§à¦—à§à¦°à¦¹ করে পà§à¦°à¦•লà§à¦ªà§‡à¦° ফোলà§à¦¡à¦¾à¦°à§‡à¦° বাইরে à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨!"
-
#~ msgid "Error exporting project!"
#~ msgstr "পà§à¦°à¦•লà§à¦ª à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿà§‡ সমসà§à¦¯à¦¾ হয়েছে!"
@@ -8336,18 +8661,12 @@ msgstr ""
#~ msgid "Include"
#~ msgstr "অনà§à¦¤à¦°à§à¦­à§à¦•à§à¦¤ করà§à¦¨"
-#~ msgid "Change Image Group"
-#~ msgstr "ছবির গà§à¦°à§à¦ª পরিবরà§à¦¤à¦¨ করà§à¦¨"
-
#~ msgid "Group name can't be empty!"
#~ msgstr "গà§à¦°à§à¦ªà§‡à¦° নাম খালি হতে পারবে না!"
#~ msgid "Invalid character in group name!"
#~ msgstr "গà§à¦°à§à¦ªà§‡à¦° নামে অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ অকà§à¦·à¦°!"
-#~ msgid "Group name already exists!"
-#~ msgstr "গà§à¦°à§à¦ªà§‡à¦° নাম ইতিমধà§à¦¯à§‡à¦‡ আছে!"
-
#~ msgid "Add Image Group"
#~ msgstr "ছবির গà§à¦°à§à¦ª যোগ করà§à¦¨"
@@ -8426,9 +8745,6 @@ msgstr ""
#~ msgid "Preview Atlas"
#~ msgstr "à¦à¦Ÿà¦²à¦¾à¦¸/মানচিতà§à¦°à¦¾à¦¬à¦²à§€ পà§à¦°à¦¿à¦­à¦¿à¦‰"
-#~ msgid "Image Filter:"
-#~ msgstr "ছবির ফিলà§à¦Ÿà¦¾à¦°:"
-
#~ msgid "Images:"
#~ msgstr "ছবিসমূহ:"
@@ -8495,9 +8811,6 @@ msgstr ""
#~ msgid "Lighting"
#~ msgstr "লাইটিং"
-#~ msgid "Toggle Persisting"
-#~ msgstr "সà§à¦¥à¦¾à§Ÿà§€à§Ÿà¦¤à¦¾ টগল করà§à¦¨"
-
#~ msgid "Global"
#~ msgstr "সারà§à¦¬à¦œà¦¨à§€à¦¨"
diff --git a/editor/translations/ca.po b/editor/translations/ca.po
index 80f4b246b5..1a5a285b94 100644
--- a/editor/translations/ca.po
+++ b/editor/translations/ca.po
@@ -1,5 +1,6 @@
# Catalan translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# Roger BR <drai_kin@hotmail.com>, 2016.
@@ -193,10 +194,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr "Vol crear %d noves pistes i inserir-hi claus?"
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -359,271 +359,6 @@ msgstr "Canvia Tipus de la Matriu"
msgid "Change Array Value"
msgstr "Canvia Valor de la Matriu"
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr "Versió:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Contents:"
-msgstr "Constants:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "View Files"
-msgstr "Fitxer:"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr "Descripció:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "Tanca"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect."
-msgstr "Connecta.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect to host:"
-msgstr "Connecta al Node:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Request failed, return code:"
-msgstr "Format de fitxer desconegut:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Resolving.."
-msgstr "Desant..."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Connecting.."
-msgstr "Connecta.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Requesting.."
-msgstr "Provant"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Error making request"
-msgstr "Error en desar recurs!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Download Error"
-msgstr "Errors de Càrrega"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "Tot"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "Cerca:"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Cerca"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr "Importa"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "Ordena:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr "Inverteix"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "Categoria:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "Lloc:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr "Suport..."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr "Oficial"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "Comunitat"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr "Provant"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr "Arxiu ZIP d'Actius"
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr "Llista de mètodes de '%s':"
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "Crida"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr "Llista de mètodes:"
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr "Arguments:"
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr "Retorn:"
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr "Vés a la Línia"
@@ -661,6 +396,14 @@ msgstr "Paraules senceres"
msgid "Selection Only"
msgstr "Selecció Només"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Cerca"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr "Troba"
@@ -693,11 +436,11 @@ msgstr "Indica en reemplaçar"
msgid "Skip"
msgstr "Omet"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "Apropa"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr "Allunya"
@@ -765,6 +508,20 @@ msgstr "Diferit"
msgid "Oneshot"
msgstr "D'un cop"
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "Tanca"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr "Connecta"
@@ -790,7 +547,7 @@ msgstr "Connecta.."
msgid "Disconnect"
msgstr "Desconnecta"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr "Senyals"
@@ -807,12 +564,25 @@ msgstr "Favorits:"
msgid "Recent:"
msgstr "Recents:"
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "Cerca:"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr "Coincidències:"
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "Descripció:"
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr "Cerca Reemplaçant per a:"
@@ -872,6 +642,10 @@ msgid "Owners Of:"
msgstr "Propietaris de:"
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr "Elimina fitxer seleccionats del project? (no es pot desfer)"
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -881,8 +655,8 @@ msgstr ""
"Eliminar de totes formes? (No es pot desfer)"
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
-msgstr "Elimina fitxer seleccionats del project? (no es pot desfer)"
+msgid "Cannot remove:\n"
+msgstr ""
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -949,11 +723,6 @@ msgstr ""
#: editor/editor_about.cpp
#, fuzzy
-msgid "Authors"
-msgstr "Autor:"
-
-#: editor/editor_about.cpp
-#, fuzzy
msgid "Project Founders"
msgstr "Configuració del Projecte"
@@ -970,6 +739,39 @@ msgid "Developers"
msgstr ""
#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "Autor:"
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
msgid "License"
msgstr ""
@@ -1013,6 +815,16 @@ msgid "Package Installed Successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
msgstr ""
@@ -1063,11 +875,6 @@ msgid "Audio Bus, Drag and Drop to rearrange."
msgstr ""
#: editor/editor_audio_buses.cpp
-#, fuzzy
-msgid "Bus options"
-msgstr "Opcions de Depuració (Debug)"
-
-#: editor/editor_audio_buses.cpp
msgid "Solo"
msgstr ""
@@ -1079,6 +886,11 @@ msgstr ""
msgid "Bypass"
msgstr ""
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "Opcions de Depuració (Debug)"
+
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
msgid "Duplicate"
@@ -1086,6 +898,11 @@ msgstr ""
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Volume"
+msgstr "Reinicia el Zoom"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Delete Effect"
msgstr "Elimina Seleccionats"
@@ -1109,6 +926,11 @@ msgstr "Duplica la Selecció"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Bus Volume"
+msgstr "Reinicia el Zoom"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Move Audio Bus"
msgstr "Mou Afegir Clau"
@@ -1143,7 +965,8 @@ msgstr ""
msgid "Create a new Bus Layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
@@ -1238,7 +1061,7 @@ msgid "Rearrange Autoloads"
msgstr "Reorganitza AutoCàrregues"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "Camí:"
@@ -1246,9 +1069,7 @@ msgstr "Camí:"
msgid "Node Name:"
msgstr "Nom del node:"
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr "Nom"
@@ -1282,18 +1103,19 @@ msgid "Choose a Directory"
msgstr "Tria un Directori"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "Crea una Carpeta"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "Nom:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "No s'ha pogut crear la carpeta."
@@ -1313,30 +1135,6 @@ msgstr "Compressió"
msgid "Template file not found:\n"
msgstr ""
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr "Afegit:"
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr "Eliminat:"
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr "Error en desar atles:"
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr "No s'ha pogut desar la subtextura de l'atles:"
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr "Exportació per a %s"
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr "Instal·lant.."
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "Fitxer Existent, Sobreescriure?"
@@ -1421,6 +1219,11 @@ msgstr "Mou Favorit Amunt"
msgid "Move Favorite Down"
msgstr "Mou Favorit Avall"
+#: editor/editor_file_dialog.cpp
+#, fuzzy
+msgid "Go to parent folder"
+msgstr "No s'ha pogut crear la carpeta."
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "Directoris i Fitxers:"
@@ -1435,10 +1238,6 @@ msgid "File:"
msgstr "Fitxer:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "Filtre:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "Cal utilitzar una extensió vàlida."
@@ -1464,6 +1263,10 @@ msgstr "Llista de Classes:"
msgid "Search Classes"
msgstr "Cerca Classes"
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr ""
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr "Classe:"
@@ -1480,15 +1283,30 @@ msgstr "Heretat per:"
msgid "Brief Description:"
msgstr "Descripció breu:"
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Members"
+msgstr "Membres:"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "Membres:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Public Methods"
+msgstr "Mètodes públics:"
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr "Mètodes públics:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "GUI Theme Items"
+msgstr "Elements del Tema de la GUI:"
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr "Elements del Tema de la GUI:"
@@ -1498,6 +1316,11 @@ msgstr "Senyals:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Enumerations"
+msgstr "Funcions:"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Enumerations:"
msgstr "Funcions:"
@@ -1506,19 +1329,51 @@ msgid "enum "
msgstr ""
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Constants"
+msgstr "Constants:"
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Constants:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Description"
+msgstr "Descripció:"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Properties"
+msgstr "Propietats de l'objecte."
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Property Description:"
msgstr "Descripció breu:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Methods"
+msgstr "Llista de mètodes:"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr "Descripció del mètode:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr "Cerca Text"
@@ -1528,24 +1383,21 @@ msgid "Output:"
msgstr " Sortida:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "Neteja"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr "Error en desar recurs!"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr "Desar Recurs com..."
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Vaja..."
@@ -1562,6 +1414,30 @@ msgid "Error while saving."
msgstr "Error en desar."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Can't open '%s'."
+msgstr "No es pot operar en '..'"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while parsing '%s'."
+msgstr "Error en desar."
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Missing '%s' or its dependencies."
+msgstr "Escena '%s' té dependències no vàlides:"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while loading '%s'."
+msgstr "Error en desar."
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr "Desant Escena"
@@ -1622,6 +1498,33 @@ msgid "Restored default layout to base settings."
msgstr "S'ha restaurat la configuració predeterminada."
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr "Copia Paràmetres"
@@ -1798,23 +1701,35 @@ msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Tria una Escena Principal"
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "Error carregant lletra."
+
+#: editor/editor_node.cpp
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -1824,7 +1739,7 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr "Uf..."
@@ -1837,14 +1752,15 @@ msgstr ""
"Utilitzeu 'Importa' per obrir l'escena i deseu-la dins del camí del projecte."
#: editor/editor_node.cpp
-msgid "Error loading scene."
-msgstr "No s'ha pogut carregar l'escena."
-
-#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
msgstr "Escena '%s' té dependències no vàlides:"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Clear Recent Scenes"
+msgstr "Reverteix Escena"
+
+#: editor/editor_node.cpp
msgid "Save Layout"
msgstr "Desar Disposició (Layout)"
@@ -1878,7 +1794,7 @@ msgstr "Mode Lliure de Distraccions"
msgid "Toggle distraction-free mode."
msgstr "Mode Lliure de Distraccions"
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr "Escena"
@@ -2122,6 +2038,10 @@ msgstr ""
msgid "Issue Tracker"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "Comunitat"
+
#: editor/editor_node.cpp
msgid "About"
msgstr "Quant a"
@@ -2130,7 +2050,7 @@ msgstr "Quant a"
msgid "Play the project."
msgstr "Reprodueix el projecte."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr "Reprodueix"
@@ -2146,7 +2066,7 @@ msgstr "Pausa Escena"
msgid "Stop the scene."
msgstr "Atura l'escena."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr "Atura"
@@ -2219,6 +2139,15 @@ msgid "Object properties."
msgstr "Propietats de l'objecte."
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr "Importa"
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr "SistemaDeFitxers"
@@ -2234,14 +2163,6 @@ msgstr "Sortida"
msgid "Don't Save"
msgstr ""
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr "ReImporta"
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr "Actualitza"
-
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "Importa Plantilles des d'un Fitxer ZIP"
@@ -2308,11 +2229,28 @@ msgstr "Editor de Dependències"
msgid "Open the previous Editor"
msgstr ""
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr ""
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr "Connectors Instal·lats:"
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr "Actualitza"
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Versió:"
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr "Autor:"
@@ -2345,7 +2283,8 @@ msgid "Frame %"
msgstr "% del Fotograma"
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+#, fuzzy
+msgid "Physics Frame %"
msgstr "% del Fotograma Fix"
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2364,26 +2303,6 @@ msgstr "Propi"
msgid "Frame #:"
msgstr "Fotograma núm.:"
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr "Espera que s'acabi l'anàlisi."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr "S'ha de desar l'escena abans de reimportar-la."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr "Desa i ReImporta"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr "Re-Importació"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr "ReImporta Recursos Modificats"
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2496,10 +2415,6 @@ msgid "Importing:"
msgstr "Importació:"
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr "Carregant Plantilles d'Exportació"
-
-#: editor/export_template_manager.cpp
#, fuzzy
msgid "Current Version:"
msgstr "Versió:"
@@ -2539,11 +2454,18 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
-msgstr "Desa i ReImporta"
+"Status: Import of file failed. Please fix file and reimport manually."
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
@@ -2553,48 +2475,55 @@ msgid ""
msgstr "Lletra:"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
-msgstr ""
-"Els fitxers d'origen i destinació són els mateixos. No s'ha produït cap "
-"acció."
+#, fuzzy
+msgid "Cannot move/rename resources root."
+msgstr "No es pot carregar/processar la lletra."
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
-msgstr ""
+#, fuzzy
+msgid "Cannot move a folder into itself.\n"
+msgstr "No es pot importar un fitxer dins de si mateix:"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
-msgstr "El camí d'origen i destinació es idèntic. No s'ha produït cap acció."
+#, fuzzy
+msgid "Error moving:\n"
+msgstr "Error en carregar:"
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
-msgstr "No es poden moure directoris en si mateixos."
+#, fuzzy
+msgid "Unable to update dependencies:\n"
+msgstr "Escena '%s' té dependències no vàlides:"
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "No name provided"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving file:\n"
-msgstr "Error en desar TileSet!"
+msgid "No name provided."
+msgstr "Renomena o Mou..."
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "Error en carregar:"
+msgid "Name contains invalid characters."
+msgstr "Caràcters vàlids:"
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
-msgstr "No es pot operar en '..'"
+msgid "A file or folder with this name already exists."
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
-msgstr "Tria un Nou Nom i Ubicació per a:"
+#, fuzzy
+msgid "Renaming file:"
+msgstr "Reanomena Variable"
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
-msgstr "Cap fitxer seleccionat!"
+msgid "Renaming folder:"
+msgstr ""
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2605,40 +2534,38 @@ msgid "Collapse all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
-msgstr "Mostra en el Gestor de Fitxers"
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
-msgstr "Instància"
+msgid "Copy Path"
+msgstr "Copia Camí"
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
-msgstr "Edita Dependències..."
+#, fuzzy
+msgid "Rename.."
+msgstr "Renomena o Mou..."
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
-msgstr "Mostra Propietaris..."
+msgid "Move To.."
+msgstr "Mou cap a..."
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr "Copia Camí"
+#, fuzzy
+msgid "New Folder.."
+msgstr "Crea una Carpeta"
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
-msgstr "Renomena o Mou..."
+msgid "Show In File Manager"
+msgstr "Mostra en el Gestor de Fitxers"
#: editor/filesystem_dock.cpp
-msgid "Move To.."
-msgstr "Mou cap a..."
+msgid "Instance"
+msgstr "Instància"
#: editor/filesystem_dock.cpp
-msgid "Info"
-msgstr "Informació"
+msgid "Edit Dependencies.."
+msgstr "Edita Dependències..."
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
-msgstr "ReImporta..."
+msgid "View Owners.."
+msgstr "Mostra Propietaris..."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2670,6 +2597,11 @@ msgstr ""
msgid "Move"
msgstr "Mou"
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr ""
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr "Afegeix al Grup"
@@ -2684,6 +2616,10 @@ msgid "Import as Single Scene"
msgstr "Important Escena..."
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -2696,6 +2632,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
#, fuzzy
msgid "Import as Multiple Scenes"
msgstr "Importa Escena 3D"
@@ -2705,38 +2653,31 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr "Importa Escena"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr "Important Escena..."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr "Executant Script Personalitzat..."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr "No s'ha pogut carregar l'script de post-importació:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr "L'script de post-importació no és vàlid (comprova el terminal):"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr "Error en l'execució de l'script de post-importació:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr "Desant..."
@@ -2767,589 +2708,54 @@ msgstr ""
msgid "Reimport"
msgstr "ReImporta"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr "Cap màscara de bits per importar!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr "El camí de Destinació és buit."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr "El camí de Destinació ha de ser un camí de recursos complet."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr "El camí de Destinació ha d'existir."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr "El camí per desar és buit!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr "Importa Màscares de Bit"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr "Textures Font:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr "Camí de Destinació:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr "Accepta"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr "Màscara de bits"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr "Cap fitxer de lletra font!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr "Cap recurs de Lletra!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-"Extensió de fitxer no vàlida.\n"
-"Utilitzeu .fnt."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr "No es pot carregar/processar la lletra."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr "No s'ha pogut desar la lletra."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr "Lletra:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr "Mida de la lletra:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr "Recurs Objectiu:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
-"«Dóna amor que seràs feliç!». Això, il·lús veí i company geniüt, ja és un "
-"lluït rètol d'onze kWh."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr "Prova:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr "Opcions:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr "Importa lletra"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-"Aquest fitxer ja és un fitxer de lletra de Godot. Proveïu un fitxer de tipus "
-"BMFont."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr "No s'ha pogut obrir com a fitxer BMFont."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr "Error inicialitzant FreeType."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "Format de lletra desconegut."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "Error carregant lletra."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr "La mida de la lletra no és vàlida."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr "Lletra personalitzada no vàlida."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Lletra"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr "Cap malla per importar!"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr "Importa una Malla"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr "Malla/es :"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr "Malla"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "Superfície %d"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr "No s'ha trobat cap mostra d'Àudio per importar!"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr "Importa Mostra d'Àudio"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr "Mostra/es d'Origen:"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr "Mostra d'Àudio"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr "Nou Clip"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr "Opcions d'Animació"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Flags"
-msgstr "Indicadors (flags)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr "Fer Bake dels FPS:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr "Optimitzador"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr "Error Lineal Màxim"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr "Error Angular Màxim"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr "Angle Màxim"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr "Clips"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr "Inici/s"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr "Final/s"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr "Bucle"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr "Filtres"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr "El camí d'origen és buit."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr "No s'ha pogut carregar l'script de post-importació."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr "L'script de post-importació no és vàlid ."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr "No s'ha pogut importar l'escena."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr "Importa Escena 3D"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr "Escena d'Origen:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr "Igual que l'Escena de Destinació"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr "Compartit"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr "Directori per a Textures escollit:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr "Script de Post-Processat:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr "Tipus de Node Arrel Personalitzat:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr "Auto"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Root Node Name:"
-msgstr "Nom del node:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr "Manquen els següents Fitxers:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr "Importa Igualment"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Cancel·la"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr "Importa i Obre"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-"No s'ha desat l'escena editada. Vol obrir l'escena importada igualment?"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr "Importa Imatge:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr "No es pot importar un fitxer dins de si mateix:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr "No s'ha pogut localitzar el camí: %s (ja és local)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr "Animació d'Escenes 3D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr "Sense Compressió"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr "Compressió sense Pèrdua (PNG)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr "Compressió amb Pèrdua (WebP)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr "Compressió (VRAM)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr "Format de Textura"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr "Qualitat de Compressió de Textura (WebP):"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr "Opcions de Textura"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr "Cal especificar algun fitxer!"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr "Es necessita com a mínim un fitxer per a l'Atles."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
+#: editor/node_dock.cpp
+msgid "Groups"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr ""
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Select a Node to edit Signals and Groups."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -3506,7 +2912,6 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3617,10 +3022,6 @@ msgid "Delete Input"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr ""
@@ -3676,64 +3077,191 @@ msgstr ""
msgid "Filters.."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Contents:"
+msgstr "Constants:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "View Files"
+msgstr "Fitxer:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Can't connect."
+msgstr "Connecta.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Can't connect to host:"
+msgstr "Connecta al Node:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Request failed, return code:"
+msgstr "Format de fitxer desconegut:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Resolving.."
+msgstr "Desant..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Connecting.."
+msgstr "Connecta.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Requesting.."
+msgstr "Provant"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Error making request"
+msgstr "Error en desar recurs!"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Download Error"
+msgstr "Errors de Càrrega"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "Tot"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "Ordena:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr "Inverteix"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "Categoria:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "Lloc:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr "Suport..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "Oficial"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr "Provant"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr "Arxiu ZIP d'Actius"
+
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3776,11 +3304,15 @@ msgid "Edit CanvasItem"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+msgid "Anchors only"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
+msgid "Change Anchors and Margins"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3831,59 +3363,74 @@ msgid "Pan Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
+#, fuzzy
+msgid "Toggles snapping"
+msgstr "Commuta el punt d'Interrupció"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
+#, fuzzy
+msgid "Snapping options"
+msgstr "Opcions d'Animació"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
+msgid "Use Rotation Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
+msgid "Configure Snap..."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "Edita"
+msgid "Snap Relative"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
+msgid "Smart snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
+msgid "Snap to parent"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
+msgid "Snap to node anchor"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
+msgid "Snap to node sides"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
+msgid "Snap to other nodes"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
+msgid "Lock the selected object in place (can't be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3912,11 +3459,16 @@ msgid "View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show helpers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
+msgid "Show rulers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3928,8 +3480,9 @@ msgid "Frame Selection"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
-msgstr ""
+#, fuzzy
+msgid "Layout"
+msgstr "Desar Disposició (Layout)"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Keys"
@@ -3952,11 +3505,20 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
+msgid "Drag pivot from mouse position"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "Treu Senyal"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Divide grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3967,23 +3529,28 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr ""
@@ -3998,45 +3565,6 @@ msgid ""
"Drag & drop + Alt : Change node type"
msgstr ""
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -4046,14 +3574,6 @@ msgid "Set Handle"
msgstr ""
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr ""
@@ -4076,6 +3596,27 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Ease in"
+msgstr "Escala la Selecció"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
msgstr ""
@@ -4157,22 +3698,18 @@ msgid "Create Occluder Polygon"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr ""
@@ -4274,6 +3811,10 @@ msgid "Create Outline"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr "Malla"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr ""
@@ -4401,12 +3942,73 @@ msgstr ""
msgid "Populate"
msgstr ""
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create Navigation Polygon"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Marking walkable triangles..."
+msgstr "Cadenes Traduïbles..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Partitioning..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
msgstr ""
#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
+msgid "Create Navigation Polygon"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -4582,16 +4184,19 @@ msgid "Curve Point #"
msgstr ""
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
-msgstr ""
+msgstr "Treu Senyal"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
-msgstr ""
+msgstr "Treu Senyal"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
-msgstr ""
+msgstr "Treu Senyal"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4651,6 +4256,14 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "Edita"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr ""
@@ -4705,63 +4318,10 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "Enganxa"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr ""
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr ""
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
@@ -4853,6 +4413,10 @@ msgstr ""
msgid "Close All"
msgstr "Tanca"
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Toggle Scripts Panel"
@@ -4882,7 +4446,8 @@ msgstr ""
msgid "Break"
msgstr ""
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr ""
@@ -4896,18 +4461,6 @@ msgid "Debug with external editor"
msgstr "Editor de Dependències"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
msgstr ""
@@ -4991,8 +4544,9 @@ msgid "Cut"
msgstr "Talla"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "Copia"
@@ -5258,10 +4812,6 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr ""
@@ -5278,10 +4828,6 @@ msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr ""
@@ -5520,6 +5066,10 @@ msgid "Transform"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr ""
@@ -5665,6 +5215,10 @@ msgid "Speed (FPS):"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr "Bucle"
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr ""
@@ -5677,11 +5231,12 @@ msgid "Insert Empty (After)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr ""
+#, fuzzy
+msgid "Move (Before)"
+msgstr "Copia Nodes"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
+msgid "Move (After)"
msgstr ""
#: editor/plugins/style_box_editor_plugin.cpp
@@ -5760,7 +5315,11 @@ msgid "Remove All"
msgstr "Treu"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
@@ -5845,6 +5404,10 @@ msgid "Style"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr "Lletra"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr ""
@@ -5895,7 +5458,7 @@ msgid "Mirror Y"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
+msgid "Paint Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5962,6 +5525,10 @@ msgid "Delete preset '%s'?"
msgstr "Esborra fitxers seleccionats?"
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr ""
@@ -6038,33 +5605,58 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
#, fuzzy
msgid "Export With Debug"
msgstr "Exporta el joc de Mosaics (Tiles)"
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
+#, fuzzy
+msgid "The path does not exist."
+msgstr "El Fitxer no existeix."
+
+#: editor/project_manager.cpp
+msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-#, fuzzy
-msgid "Invalid project path, project.godot must not exist."
-msgstr "El camí de Destinació ha d'existir."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
+msgstr ""
#: editor/project_manager.cpp
-#, fuzzy
-msgid "Invalid project path, project.godot must exist."
-msgstr "El camí de Destinació ha d'existir."
+msgid "Please choose a folder that does not contain a 'project.godot' file."
+msgstr ""
#: editor/project_manager.cpp
msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't edit project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr ""
@@ -6073,15 +5665,20 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Import Existing Project"
+#, fuzzy
+msgid "Rename Project"
+msgstr "Exporta Projecte"
+
+#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in the project path."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
+msgid "New Game Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Name:"
+msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
@@ -6089,19 +5686,24 @@ msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path:"
+msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Install Project:"
+msgid "Project Name:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Browse"
+#, fuzzy
+msgid "Create folder"
+msgstr "Crea una Carpeta"
+
+#: editor/project_manager.cpp
+msgid "Project Path:"
msgstr ""
#: editor/project_manager.cpp
-msgid "New Game Project"
+msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
@@ -6113,6 +5715,11 @@ msgid "Unnamed Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't open project"
+msgstr "Connecta.."
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr ""
@@ -6143,16 +5750,18 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
-"You are about the scan %s folders for existing Godot projects. Do you "
-"confirm?"
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project List"
+msgid ""
+"You are about the scan %s folders for existing Godot projects. Do you "
+"confirm?"
msgstr ""
#: editor/project_manager.cpp
-msgid "Run"
+msgid "Project List"
msgstr ""
#: editor/project_manager.cpp
@@ -6177,6 +5786,10 @@ msgid "Exit"
msgstr ""
#: editor/project_manager.cpp
+msgid "Restart Now"
+msgstr ""
+
+#: editor/project_manager.cpp
#, fuzzy
msgid "Can't run project"
msgstr "Connecta.."
@@ -6214,17 +5827,14 @@ msgid "Add Input Action Event"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta +"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Maj +"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt +"
@@ -6285,7 +5895,7 @@ msgstr "Canvia"
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "Eix"
@@ -6305,31 +5915,31 @@ msgstr ""
msgid "Add Event"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "Dispositiu"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "Botó"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "Botó Esquerre."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "Botó Dret."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "Botó del Mig."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr "Roda Amunt."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr "Roda Avall."
@@ -6339,7 +5949,7 @@ msgid "Add Global Property"
msgstr "Afegeix Propietat d'Accés (Getter)"
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6357,6 +5967,15 @@ msgid "Delete Item"
msgstr "Esborra"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Can't contain '/' or ':'"
+msgstr "Connecta al Node:"
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "No s'ha pogut desar la configuració."
@@ -6398,6 +6017,15 @@ msgstr ""
#: editor/project_settings_editor.cpp
#, fuzzy
+msgid "Changed Locale Filter"
+msgstr "Canvia Tipus de la Matriu"
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Project Settings (project.godot)"
msgstr "Configuració del Projecte (engine.cfg)"
@@ -6458,6 +6086,27 @@ msgid "Locale"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Locales Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show all locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "Filtres"
+
+#: editor/project_settings_editor.cpp
+msgid "Locales:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -6510,10 +6159,20 @@ msgstr "Executa Script"
#: editor/property_editor.cpp
#, fuzzy
+msgid "Make Unique"
+msgstr "Crea SubRecurs Únic"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "Show in File System"
msgstr "SistemaDeFitxers"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Convert To %s"
+msgstr "Converteix a..."
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr ""
@@ -6554,6 +6213,11 @@ msgstr "Afegeix Col.locador de Proprietat (Setter)"
#: editor/property_selector.cpp
#, fuzzy
+msgid "Select Virtual Method"
+msgstr "Mètodes públics:"
+
+#: editor/property_selector.cpp
+#, fuzzy
msgid "Select Method"
msgstr "Mètodes públics:"
@@ -6581,26 +6245,6 @@ msgstr ""
msgid "Reparent"
msgstr ""
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr ""
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr ""
@@ -6728,14 +6372,6 @@ msgid "Sub-Resources:"
msgstr "Recurs"
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr ""
@@ -6924,6 +6560,15 @@ msgid "Invalid base path"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "File exists, will be reused"
+msgstr "Fitxer Existent, Sobreescriure?"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr ""
@@ -6968,6 +6613,10 @@ msgid "Load existing script file"
msgstr "No s'ha pogut instanciar l'script:"
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Inherits"
msgstr "Hereta:"
@@ -7013,6 +6662,10 @@ msgid "Function:"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr ""
@@ -7093,6 +6746,10 @@ msgid "Type"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr ""
@@ -7168,12 +6825,30 @@ msgstr ""
msgid "Change Probe Extents"
msgstr ""
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Library"
+msgstr "Biblioteca de Models (MeshLibrary)..."
+
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Status"
+msgstr "Estat:"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr "Argument de tipus invàlid per a convert(), utilitzi constants TYPE_*."
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr ""
@@ -7229,10 +6904,6 @@ msgid "GridMap Duplicate Selection"
msgstr "Duplica la Selecció"
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Snap View"
msgstr ""
@@ -7329,13 +7000,8 @@ msgstr "Configuració de Desplaçament"
msgid "Pick Distance:"
msgstr ""
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr "Fitxer:"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7549,10 +7215,18 @@ msgid "Return"
msgstr "Retorn:"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr "Crida"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr "Obtenir"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Input Value"
msgstr "Canvia Valor de la Matriu"
@@ -7971,6 +7645,12 @@ msgstr ""
"Cal crear o establir un recurs SpriteFrames en la propietat 'Frames' perquè "
"AnimatedSprite3D dibuixi els quadres."
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -7980,6 +7660,10 @@ msgid "Add current color as a preset"
msgstr ""
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Cancel·la"
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr "Ep!"
@@ -7987,10 +7671,6 @@ msgstr "Ep!"
msgid "Please Confirm..."
msgstr "Confirmeu..."
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "Ctrl +"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -8026,6 +7706,355 @@ msgstr ""
"forma per tal d'obtenir-ne la mida. Altrament, establiu-la com a Destinació "
"de Renderització i assigneu-ne la textura interna a algun node."
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr "Error inicialitzant FreeType."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "Format de lletra desconegut."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "Error carregant lletra."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr "La mida de la lletra no és vàlida."
+
+#~ msgid "Filter:"
+#~ msgstr "Filtre:"
+
+#~ msgid "Method List For '%s':"
+#~ msgstr "Llista de mètodes de '%s':"
+
+#~ msgid "Arguments:"
+#~ msgstr "Arguments:"
+
+#~ msgid "Return:"
+#~ msgstr "Retorn:"
+
+#~ msgid "Added:"
+#~ msgstr "Afegit:"
+
+#~ msgid "Removed:"
+#~ msgstr "Eliminat:"
+
+#~ msgid "Error saving atlas:"
+#~ msgstr "Error en desar atles:"
+
+#~ msgid "Could not save atlas subtexture:"
+#~ msgstr "No s'ha pogut desar la subtextura de l'atles:"
+
+#~ msgid "Exporting for %s"
+#~ msgstr "Exportació per a %s"
+
+#~ msgid "Setting Up.."
+#~ msgstr "Instal·lant.."
+
+#~ msgid "Error loading scene."
+#~ msgstr "No s'ha pogut carregar l'escena."
+
+#~ msgid "Re-Import"
+#~ msgstr "ReImporta"
+
+#~ msgid "Please wait for scan to complete."
+#~ msgstr "Espera que s'acabi l'anàlisi."
+
+#~ msgid "Current scene must be saved to re-import."
+#~ msgstr "S'ha de desar l'escena abans de reimportar-la."
+
+#~ msgid "Save & Re-Import"
+#~ msgstr "Desa i ReImporta"
+
+#~ msgid "Re-Importing"
+#~ msgstr "Re-Importació"
+
+#~ msgid "Re-Import Changed Resources"
+#~ msgstr "ReImporta Recursos Modificats"
+
+#~ msgid "Loading Export Templates"
+#~ msgstr "Carregant Plantilles d'Exportació"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Status: Needs Re-Import"
+#~ msgstr "Desa i ReImporta"
+
+#~ msgid "Same source and destination files, doing nothing."
+#~ msgstr ""
+#~ "Els fitxers d'origen i destinació són els mateixos. No s'ha produït cap "
+#~ "acció."
+
+#~ msgid "Same source and destination paths, doing nothing."
+#~ msgstr ""
+#~ "El camí d'origen i destinació es idèntic. No s'ha produït cap acció."
+
+#~ msgid "Can't move directories to within themselves."
+#~ msgstr "No es poden moure directoris en si mateixos."
+
+#, fuzzy
+#~ msgid "Error moving file:\n"
+#~ msgstr "Error en desar TileSet!"
+
+#~ msgid "Pick New Name and Location For:"
+#~ msgstr "Tria un Nou Nom i Ubicació per a:"
+
+#~ msgid "No files selected!"
+#~ msgstr "Cap fitxer seleccionat!"
+
+#~ msgid "Info"
+#~ msgstr "Informació"
+
+#~ msgid "Re-Import.."
+#~ msgstr "ReImporta..."
+
+#~ msgid "No bit masks to import!"
+#~ msgstr "Cap màscara de bits per importar!"
+
+#~ msgid "Target path is empty."
+#~ msgstr "El camí de Destinació és buit."
+
+#~ msgid "Target path must be a complete resource path."
+#~ msgstr "El camí de Destinació ha de ser un camí de recursos complet."
+
+#~ msgid "Target path must exist."
+#~ msgstr "El camí de Destinació ha d'existir."
+
+#~ msgid "Save path is empty!"
+#~ msgstr "El camí per desar és buit!"
+
+#~ msgid "Import BitMasks"
+#~ msgstr "Importa Màscares de Bit"
+
+#~ msgid "Source Texture(s):"
+#~ msgstr "Textures Font:"
+
+#~ msgid "Target Path:"
+#~ msgstr "Camí de Destinació:"
+
+#~ msgid "Accept"
+#~ msgstr "Accepta"
+
+#~ msgid "Bit Mask"
+#~ msgstr "Màscara de bits"
+
+#~ msgid "No source font file!"
+#~ msgstr "Cap fitxer de lletra font!"
+
+#~ msgid "No target font resource!"
+#~ msgstr "Cap recurs de Lletra!"
+
+#, fuzzy
+#~ msgid ""
+#~ "Invalid file extension.\n"
+#~ "Please use .font."
+#~ msgstr ""
+#~ "Extensió de fitxer no vàlida.\n"
+#~ "Utilitzeu .fnt."
+
+#~ msgid "Couldn't save font."
+#~ msgstr "No s'ha pogut desar la lletra."
+
+#~ msgid "Source Font:"
+#~ msgstr "Lletra:"
+
+#~ msgid "Source Font Size:"
+#~ msgstr "Mida de la lletra:"
+
+#~ msgid "Dest Resource:"
+#~ msgstr "Recurs Objectiu:"
+
+#~ msgid "The quick brown fox jumps over the lazy dog."
+#~ msgstr ""
+#~ "«Dóna amor que seràs feliç!». Això, il·lús veí i company geniüt, ja és un "
+#~ "lluït rètol d'onze kWh."
+
+#~ msgid "Test:"
+#~ msgstr "Prova:"
+
+#~ msgid "Options:"
+#~ msgstr "Opcions:"
+
+#~ msgid "Font Import"
+#~ msgstr "Importa lletra"
+
+#~ msgid ""
+#~ "This file is already a Godot font file, please supply a BMFont type file "
+#~ "instead."
+#~ msgstr ""
+#~ "Aquest fitxer ja és un fitxer de lletra de Godot. Proveïu un fitxer de "
+#~ "tipus BMFont."
+
+#~ msgid "Failed opening as BMFont file."
+#~ msgstr "No s'ha pogut obrir com a fitxer BMFont."
+
+#~ msgid "Invalid font custom source."
+#~ msgstr "Lletra personalitzada no vàlida."
+
+#~ msgid "No meshes to import!"
+#~ msgstr "Cap malla per importar!"
+
+#~ msgid "Single Mesh Import"
+#~ msgstr "Importa una Malla"
+
+#~ msgid "Source Mesh(es):"
+#~ msgstr "Malla/es :"
+
+#~ msgid "Surface %d"
+#~ msgstr "Superfície %d"
+
+#~ msgid "No samples to import!"
+#~ msgstr "No s'ha trobat cap mostra d'Àudio per importar!"
+
+#~ msgid "Import Audio Samples"
+#~ msgstr "Importa Mostra d'Àudio"
+
+#~ msgid "Source Sample(s):"
+#~ msgstr "Mostra/es d'Origen:"
+
+#~ msgid "Audio Sample"
+#~ msgstr "Mostra d'Àudio"
+
+#~ msgid "New Clip"
+#~ msgstr "Nou Clip"
+
+#, fuzzy
+#~ msgid "Flags"
+#~ msgstr "Indicadors (flags)"
+
+#~ msgid "Bake FPS:"
+#~ msgstr "Fer Bake dels FPS:"
+
+#~ msgid "Optimizer"
+#~ msgstr "Optimitzador"
+
+#~ msgid "Max Linear Error"
+#~ msgstr "Error Lineal Màxim"
+
+#~ msgid "Max Angular Error"
+#~ msgstr "Error Angular Màxim"
+
+#~ msgid "Max Angle"
+#~ msgstr "Angle Màxim"
+
+#~ msgid "Clips"
+#~ msgstr "Clips"
+
+#~ msgid "Start(s)"
+#~ msgstr "Inici/s"
+
+#~ msgid "End(s)"
+#~ msgstr "Final/s"
+
+#~ msgid "Filters"
+#~ msgstr "Filtres"
+
+#~ msgid "Source path is empty."
+#~ msgstr "El camí d'origen és buit."
+
+#~ msgid "Couldn't load post-import script."
+#~ msgstr "No s'ha pogut carregar l'script de post-importació."
+
+#~ msgid "Invalid/broken script for post-import."
+#~ msgstr "L'script de post-importació no és vàlid ."
+
+#~ msgid "Error importing scene."
+#~ msgstr "No s'ha pogut importar l'escena."
+
+#~ msgid "Import 3D Scene"
+#~ msgstr "Importa Escena 3D"
+
+#~ msgid "Source Scene:"
+#~ msgstr "Escena d'Origen:"
+
+#~ msgid "Same as Target Scene"
+#~ msgstr "Igual que l'Escena de Destinació"
+
+#~ msgid "Shared"
+#~ msgstr "Compartit"
+
+#~ msgid "Target Texture Folder:"
+#~ msgstr "Directori per a Textures escollit:"
+
+#~ msgid "Post-Process Script:"
+#~ msgstr "Script de Post-Processat:"
+
+#~ msgid "Custom Root Node Type:"
+#~ msgstr "Tipus de Node Arrel Personalitzat:"
+
+#~ msgid "Auto"
+#~ msgstr "Auto"
+
+#, fuzzy
+#~ msgid "Root Node Name:"
+#~ msgstr "Nom del node:"
+
+#~ msgid "The Following Files are Missing:"
+#~ msgstr "Manquen els següents Fitxers:"
+
+#~ msgid "Import Anyway"
+#~ msgstr "Importa Igualment"
+
+#~ msgid "Import & Open"
+#~ msgstr "Importa i Obre"
+
+#~ msgid "Edited scene has not been saved, open imported scene anyway?"
+#~ msgstr ""
+#~ "No s'ha desat l'escena editada. Vol obrir l'escena importada igualment?"
+
+#~ msgid "Import Image:"
+#~ msgstr "Importa Imatge:"
+
+#~ msgid "Couldn't localize path: %s (already local)"
+#~ msgstr "No s'ha pogut localitzar el camí: %s (ja és local)"
+
+#~ msgid "3D Scene Animation"
+#~ msgstr "Animació d'Escenes 3D"
+
+#~ msgid "Uncompressed"
+#~ msgstr "Sense Compressió"
+
+#~ msgid "Compress Lossless (PNG)"
+#~ msgstr "Compressió sense Pèrdua (PNG)"
+
+#~ msgid "Compress Lossy (WebP)"
+#~ msgstr "Compressió amb Pèrdua (WebP)"
+
+#~ msgid "Compress (VRAM)"
+#~ msgstr "Compressió (VRAM)"
+
+#~ msgid "Texture Format"
+#~ msgstr "Format de Textura"
+
+#~ msgid "Texture Compression Quality (WebP):"
+#~ msgstr "Qualitat de Compressió de Textura (WebP):"
+
+#~ msgid "Texture Options"
+#~ msgstr "Opcions de Textura"
+
+#~ msgid "Please specify some files!"
+#~ msgstr "Cal especificar algun fitxer!"
+
+#~ msgid "At least one file needed for Atlas."
+#~ msgstr "Es necessita com a mínim un fitxer per a l'Atles."
+
+#, fuzzy
+#~ msgid "Invalid project path, project.godot must not exist."
+#~ msgstr "El camí de Destinació ha d'existir."
+
+#, fuzzy
+#~ msgid "Invalid project path, project.godot must exist."
+#~ msgstr "El camí de Destinació ha d'existir."
+
+#, fuzzy
+#~ msgid "Tiles"
+#~ msgstr "Fitxer:"
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl +"
+
#~ msgid "Close scene? (Unsaved changes will be lost)"
#~ msgstr "Tanca l'Escena? (Es perdran els canvis sense desar)"
@@ -8150,9 +8179,6 @@ msgstr ""
#~ msgid "Save Translatable Strings"
#~ msgstr "Desa els texts Traduïbles"
-#~ msgid "Translatable Strings.."
-#~ msgstr "Cadenes Traduïbles..."
-
#~ msgid "Install Export Templates"
#~ msgstr "Instal·la Plantilles d'Exportació"
diff --git a/editor/translations/cs.po b/editor/translations/cs.po
index 929aa6eb30..8083094a39 100644
--- a/editor/translations/cs.po
+++ b/editor/translations/cs.po
@@ -1,5 +1,6 @@
# Czech translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# Jan 'spl!te' Kondelík <j.kondelik@centrum.cz>, 2016.
@@ -194,10 +195,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr "VytvoÅ™it %d NOVÃCH stop a vložit klíÄe?"
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -359,268 +359,6 @@ msgstr "Změnit typ hodnot pole"
msgid "Change Array Value"
msgstr "Změnit hodnotu pole"
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Contents:"
-msgstr "Spojité"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "View Files"
-msgstr "Soubor:"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "Zavřít"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect."
-msgstr "Připojit.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect to host:"
-msgstr "Připojit k uzlu:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Connecting.."
-msgstr "Připojit.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Requesting.."
-msgstr "Testované"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Error making request"
-msgstr "Chyba nahrávání fontu."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "Všechny"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "Hledat:"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Hledat"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "Řadit:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr "Naopak"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "Kategorie:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "Web:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr "Podpora.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr "Oficiální"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "Z komunity"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr "Testované"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr "ZIP soubor asetů"
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr "Seznam metod '%s':"
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "Zavolat"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr "Seznam metod:"
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr "Argumenty:"
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr "Vrátit:"
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr "Běž na řádek"
@@ -658,6 +396,14 @@ msgstr "Celá slova"
msgid "Selection Only"
msgstr "Pouze výběr"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Hledat"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr "Najít"
@@ -690,11 +436,11 @@ msgstr "Potvrzovat nahrazení"
msgid "Skip"
msgstr "PÅ™eskoÄit"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "Přiblížit"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr "Oddálit"
@@ -761,6 +507,20 @@ msgstr "Odloženě"
msgid "Oneshot"
msgstr "Jednorázově"
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "Zavřít"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr "Připojit"
@@ -786,7 +546,7 @@ msgstr "Připojit.."
msgid "Disconnect"
msgstr "Odpojit"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr "Signály"
@@ -803,12 +563,25 @@ msgstr ""
msgid "Recent:"
msgstr ""
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "Hledat:"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr "Shody:"
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr ""
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr "Hledat náhradu za:"
@@ -868,6 +641,10 @@ msgid "Owners Of:"
msgstr "Vlastníci:"
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr "Odebrat vybrané soubory z projektu? (nelze vrátit zpět)"
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -877,8 +654,8 @@ msgstr ""
"Přesto je chcete smazat? (nelze vrátit zpět)"
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
-msgstr "Odebrat vybrané soubory z projektu? (nelze vrátit zpět)"
+msgid "Cannot remove:\n"
+msgstr ""
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -944,10 +721,6 @@ msgid "Godot Engine contributors"
msgstr ""
#: editor/editor_about.cpp
-msgid "Authors"
-msgstr ""
-
-#: editor/editor_about.cpp
#, fuzzy
msgid "Project Founders"
msgstr "Nastavení projektu"
@@ -965,6 +738,38 @@ msgid "Developers"
msgstr ""
#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
msgid "License"
msgstr ""
@@ -1007,6 +812,16 @@ msgid "Package Installed Successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
msgstr ""
@@ -1057,10 +872,6 @@ msgid "Audio Bus, Drag and Drop to rearrange."
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
msgid "Solo"
msgstr ""
@@ -1072,6 +883,10 @@ msgstr ""
msgid "Bypass"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
msgid "Duplicate"
@@ -1079,6 +894,11 @@ msgstr ""
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Volume"
+msgstr "Obnovit původní přiblížení"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Delete Effect"
msgstr "Smazat vybraný"
@@ -1101,6 +921,11 @@ msgid "Duplicate Audio Bus"
msgstr "Duplikovat výběr"
#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Reset Bus Volume"
+msgstr "Obnovit původní přiblížení"
+
+#: editor/editor_audio_buses.cpp
msgid "Move Audio Bus"
msgstr ""
@@ -1132,7 +957,8 @@ msgstr ""
msgid "Create a new Bus Layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
@@ -1224,7 +1050,7 @@ msgid "Rearrange Autoloads"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "Cesta:"
@@ -1232,9 +1058,7 @@ msgstr "Cesta:"
msgid "Node Name:"
msgstr ""
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr "Název"
@@ -1267,18 +1091,19 @@ msgid "Choose a Directory"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "Vytvořit složku"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "Jméno:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "Nelze vytvořit složku."
@@ -1298,30 +1123,6 @@ msgstr ""
msgid "Template file not found:\n"
msgstr ""
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr ""
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "Soubor už existuje. Přepsat?"
@@ -1406,6 +1207,11 @@ msgstr ""
msgid "Move Favorite Down"
msgstr ""
+#: editor/editor_file_dialog.cpp
+#, fuzzy
+msgid "Go to parent folder"
+msgstr "Nelze vytvořit složku."
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "Složky a soubory:"
@@ -1420,10 +1226,6 @@ msgid "File:"
msgstr "Soubor:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "Filtr:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "Je nutné použít platnou příponu."
@@ -1448,6 +1250,10 @@ msgstr ""
msgid "Search Classes"
msgstr ""
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr ""
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr ""
@@ -1464,15 +1270,29 @@ msgstr ""
msgid "Brief Description:"
msgstr ""
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Members"
+msgstr "Členové:"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "Členové:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Public Methods"
+msgstr "Vybrat vše"
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr ""
#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr ""
@@ -1482,6 +1302,11 @@ msgstr "Signály:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Enumerations"
+msgstr "Funkce:"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Enumerations:"
msgstr "Funkce:"
@@ -1490,19 +1315,50 @@ msgid "enum "
msgstr ""
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Constants"
+msgstr "Konstantní"
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
#: editor/editor_help.cpp
#, fuzzy
+msgid "Description"
+msgstr "Vytvořit odběr"
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr ""
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Property Description:"
msgstr "Vytvořit odběr"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Methods"
+msgstr "Seznam metod:"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr ""
@@ -1511,24 +1367,21 @@ msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "VyÄistit"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr ""
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1545,6 +1398,29 @@ msgid "Error while saving."
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Can't open '%s'."
+msgstr "Připojit.."
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while parsing '%s'."
+msgstr "Chyba nahrávání fontu."
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while loading '%s'."
+msgstr "Chyba nahrávání fontu."
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr ""
@@ -1602,6 +1478,33 @@ msgid "Restored default layout to base settings."
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr ""
@@ -1765,23 +1668,35 @@ msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "Chyba nahrávání fontu."
+
+#: editor/editor_node.cpp
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -1791,7 +1706,7 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr ""
@@ -1802,11 +1717,11 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp
-msgid "Error loading scene."
+msgid "Scene '%s' has broken dependencies:"
msgstr ""
#: editor/editor_node.cpp
-msgid "Scene '%s' has broken dependencies:"
+msgid "Clear Recent Scenes"
msgstr ""
#: editor/editor_node.cpp
@@ -1842,7 +1757,7 @@ msgstr ""
msgid "Toggle distraction-free mode."
msgstr ""
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr ""
@@ -2063,6 +1978,10 @@ msgstr ""
msgid "Issue Tracker"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "Z komunity"
+
#: editor/editor_node.cpp
msgid "About"
msgstr ""
@@ -2071,7 +1990,7 @@ msgstr ""
msgid "Play the project."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr ""
@@ -2087,7 +2006,7 @@ msgstr ""
msgid "Stop the scene."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr ""
@@ -2161,6 +2080,15 @@ msgid "Object properties."
msgstr ""
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr ""
@@ -2176,14 +2104,6 @@ msgstr ""
msgid "Don't Save"
msgstr ""
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr ""
-
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
@@ -2248,11 +2168,28 @@ msgstr "Editor závislostí"
msgid "Open the previous Editor"
msgstr ""
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr ""
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr ""
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr ""
@@ -2285,7 +2222,7 @@ msgid "Frame %"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+msgid "Physics Frame %"
msgstr ""
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2304,26 +2241,6 @@ msgstr ""
msgid "Frame #:"
msgstr ""
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr ""
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2434,10 +2351,6 @@ msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr ""
@@ -2472,9 +2385,17 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
+"Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2485,45 +2406,51 @@ msgid ""
msgstr "Zdroj"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
+msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
+msgid "Cannot move a folder into itself.\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
-msgstr ""
+#, fuzzy
+msgid "Error moving:\n"
+msgstr "Chyba pÅ™i naÄítání:"
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
+#, fuzzy
+msgid "Unable to update dependencies:\n"
+msgstr "Scénu se nepodaÅ™ilo naÄíst kvůli chybÄ›jícím závislostem:"
+
+#: editor/filesystem_dock.cpp
+msgid "No name provided"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error moving file:\n"
-msgstr "Chyba pÅ™i naÄítání:"
+msgid "No name provided."
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "Chyba pÅ™i naÄítání:"
+msgid "Name contains invalid characters."
+msgstr "Platné znaky:"
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
+msgid "A file or folder with this name already exists."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
-msgstr ""
+#, fuzzy
+msgid "Renaming file:"
+msgstr "Přejmenovat proměnnou"
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
+msgid "Renaming folder:"
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2535,39 +2462,36 @@ msgid "Collapse all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
+msgid "Copy Path"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
+msgid "Rename.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
+msgid "Move To.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr ""
+#, fuzzy
+msgid "New Folder.."
+msgstr "Vytvořit složku"
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
+msgid "Show In File Manager"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move To.."
+msgid "Instance"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Info"
+msgid "Edit Dependencies.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
+msgid "View Owners.."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2600,6 +2524,11 @@ msgstr ""
msgid "Move"
msgstr ""
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr ""
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr ""
@@ -2613,6 +2542,10 @@ msgid "Import as Single Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -2625,6 +2558,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
msgstr ""
@@ -2633,38 +2578,31 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr ""
@@ -2693,579 +2631,54 @@ msgstr ""
msgid "Reimport"
msgstr ""
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr "Chyba při inicializaci FreeType."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "Neznámý formát fontu."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "Chyba nahrávání fontu."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr "Neplatná velikost fontu."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr "Nevalidní písmo z vlastního zdroje."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Zrušit"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
+#: editor/node_dock.cpp
+msgid "Groups"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr ""
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Select a Node to edit Signals and Groups."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -3422,7 +2835,6 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3533,10 +2945,6 @@ msgid "Delete Input"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr ""
@@ -3592,64 +3000,188 @@ msgstr ""
msgid "Filters.."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Contents:"
+msgstr "Spojité"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "View Files"
+msgstr "Soubor:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Can't connect."
+msgstr "Připojit.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Can't connect to host:"
+msgstr "Připojit k uzlu:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Connecting.."
+msgstr "Připojit.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Requesting.."
+msgstr "Testované"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Error making request"
+msgstr "Chyba nahrávání fontu."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "Všechny"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "Řadit:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr "Naopak"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "Kategorie:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "Web:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr "Podpora.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "Oficiální"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr "Testované"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr "ZIP soubor asetů"
+
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3692,11 +3224,15 @@ msgid "Edit CanvasItem"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+msgid "Anchors only"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors and Margins"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
+msgid "Change Anchors"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3748,59 +3284,73 @@ msgid "Pan Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
+#, fuzzy
+msgid "Toggles snapping"
+msgstr "Přepnout breakpoint"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
+msgid "Snapping options"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
+msgid "Snap to grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
+msgid "Use Rotation Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "Upravit"
+msgid "Configure Snap..."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Snap Relative"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
+msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
+msgid "Smart snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
+msgid "Snap to parent"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
+msgid "Snap to node anchor"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
+msgid "Makes sure the object's children are not selectable."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3829,11 +3379,16 @@ msgid "View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show helpers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
+msgid "Show rulers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3845,7 +3400,7 @@ msgid "Frame Selection"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
+msgid "Layout"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3869,11 +3424,20 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
+msgid "Drag pivot from mouse position"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "Odstranit signál"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Divide grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3884,23 +3448,28 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr ""
@@ -3915,45 +3484,6 @@ msgid ""
"Drag & drop + Alt : Change node type"
msgstr ""
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3963,14 +3493,6 @@ msgid "Set Handle"
msgstr ""
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr ""
@@ -3993,6 +3515,27 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Ease in"
+msgstr "Změnit měřítko výběru"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
msgstr ""
@@ -4072,22 +3615,18 @@ msgid "Create Occluder Polygon"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr ""
@@ -4189,6 +3728,10 @@ msgid "Create Outline"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr ""
@@ -4316,12 +3859,72 @@ msgstr ""
msgid "Populate"
msgstr ""
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create Navigation Polygon"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Marking walkable triangles..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Partitioning..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
msgstr ""
#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
+msgid "Create Navigation Polygon"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -4495,16 +4098,19 @@ msgid "Curve Point #"
msgstr ""
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
-msgstr ""
+msgstr "Odstranit signál"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
-msgstr ""
+msgstr "Odstranit signál"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
-msgstr ""
+msgstr "Odstranit signál"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4564,6 +4170,14 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "Upravit"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr ""
@@ -4618,63 +4232,10 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "Vložit"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr ""
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr ""
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
@@ -4766,6 +4327,10 @@ msgstr ""
msgid "Close All"
msgstr "Zavřít"
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
msgstr ""
@@ -4794,7 +4359,8 @@ msgstr ""
msgid "Break"
msgstr ""
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr ""
@@ -4808,18 +4374,6 @@ msgid "Debug with external editor"
msgstr "Editor závislostí"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
msgstr ""
@@ -4902,8 +4456,9 @@ msgid "Cut"
msgstr "Vyjmout"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "Kopírovat"
@@ -5168,10 +4723,6 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr ""
@@ -5188,10 +4739,6 @@ msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr ""
@@ -5424,6 +4971,10 @@ msgid "Transform"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr ""
@@ -5569,6 +5120,10 @@ msgid "Speed (FPS):"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr ""
@@ -5581,11 +5136,12 @@ msgid "Insert Empty (After)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr ""
+#, fuzzy
+msgid "Move (Before)"
+msgstr "Zkopírovat uzly"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
+msgid "Move (After)"
msgstr ""
#: editor/plugins/style_box_editor_plugin.cpp
@@ -5664,7 +5220,11 @@ msgid "Remove All"
msgstr "Odebrat"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
@@ -5749,6 +5309,10 @@ msgid "Style"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr ""
@@ -5799,7 +5363,7 @@ msgid "Mirror Y"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
+msgid "Paint Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5866,6 +5430,10 @@ msgid "Delete preset '%s'?"
msgstr "Odstranit vybrané soubory?"
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr ""
@@ -5938,19 +5506,30 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
+#, fuzzy
+msgid "The path does not exist."
+msgstr "Soubor neexistuje."
+
+#: editor/project_manager.cpp
+msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
+msgid "Please choose a folder that does not contain a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
@@ -5958,10 +5537,26 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't edit project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr ""
@@ -5970,15 +5565,20 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Import Existing Project"
+#, fuzzy
+msgid "Rename Project"
+msgstr "Nastavení projektu"
+
+#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in the project path."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
+msgid "New Game Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Name:"
+msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
@@ -5986,19 +5586,24 @@ msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path:"
+msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Install Project:"
+msgid "Project Name:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Browse"
+#, fuzzy
+msgid "Create folder"
+msgstr "Vytvořit složku"
+
+#: editor/project_manager.cpp
+msgid "Project Path:"
msgstr ""
#: editor/project_manager.cpp
-msgid "New Game Project"
+msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
@@ -6010,6 +5615,11 @@ msgid "Unnamed Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't open project"
+msgstr "Připojit.."
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr ""
@@ -6036,16 +5646,18 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
-"You are about the scan %s folders for existing Godot projects. Do you "
-"confirm?"
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project List"
+msgid ""
+"You are about the scan %s folders for existing Godot projects. Do you "
+"confirm?"
msgstr ""
#: editor/project_manager.cpp
-msgid "Run"
+msgid "Project List"
msgstr ""
#: editor/project_manager.cpp
@@ -6070,6 +5682,10 @@ msgid "Exit"
msgstr ""
#: editor/project_manager.cpp
+msgid "Restart Now"
+msgstr ""
+
+#: editor/project_manager.cpp
#, fuzzy
msgid "Can't run project"
msgstr "Připojit.."
@@ -6107,17 +5723,14 @@ msgid "Add Input Action Event"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
@@ -6178,7 +5791,7 @@ msgstr "Změnit"
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "Osa"
@@ -6198,31 +5811,31 @@ msgstr ""
msgid "Add Event"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "Zařízení"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "TlaÄítko"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "Levé tlaÄítko."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "Pravé tlaÄítko."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "ProstÅ™ední tlaÄítko."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr "KoleÄko nahoru."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr "KoleÄko dolů."
@@ -6232,7 +5845,7 @@ msgid "Add Global Property"
msgstr "Přidat vlastnost getter"
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6250,6 +5863,15 @@ msgid "Delete Item"
msgstr "Odstranit"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Can't contain '/' or ':'"
+msgstr "Připojit k uzlu:"
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
@@ -6291,6 +5913,15 @@ msgstr ""
#: editor/project_settings_editor.cpp
#, fuzzy
+msgid "Changed Locale Filter"
+msgstr "Změnit typ hodnot pole"
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Project Settings (project.godot)"
msgstr "Nastavení projektu"
@@ -6351,6 +5982,27 @@ msgid "Locale"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Locales Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show all locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "Filtr:"
+
+#: editor/project_settings_editor.cpp
+msgid "Locales:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -6400,10 +6052,19 @@ msgid "New Script"
msgstr ""
#: editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr ""
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Convert To %s"
+msgstr "Připojit k uzlu:"
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr ""
@@ -6443,6 +6104,11 @@ msgstr "Přidat vlastnost setter"
#: editor/property_selector.cpp
#, fuzzy
+msgid "Select Virtual Method"
+msgstr "Vybrat vše"
+
+#: editor/property_selector.cpp
+#, fuzzy
msgid "Select Method"
msgstr "Vybrat vše"
@@ -6470,26 +6136,6 @@ msgstr ""
msgid "Reparent"
msgstr ""
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr ""
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr ""
@@ -6617,14 +6263,6 @@ msgid "Sub-Resources:"
msgstr "Zdroj"
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr ""
@@ -6813,6 +6451,15 @@ msgid "Invalid base path"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "File exists, will be reused"
+msgstr "Soubor už existuje. Přepsat?"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr ""
@@ -6856,6 +6503,10 @@ msgid "Load existing script file"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Inherits"
msgstr ""
@@ -6898,6 +6549,10 @@ msgid "Function:"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr ""
@@ -6978,6 +6633,10 @@ msgid "Type"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr ""
@@ -7053,13 +6712,29 @@ msgstr ""
msgid "Change Probe Extents"
msgstr ""
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Library"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Status"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr ""
"Neplatný typ argumentu funkce convert(), použijte některou z konstant TYPE_*"
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Nedostatek bajtů pro dekódování bajtů, nebo špatný formát."
@@ -7111,10 +6786,6 @@ msgid "GridMap Duplicate Selection"
msgstr "Duplikovat výběr"
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Snap View"
msgstr ""
@@ -7211,13 +6882,8 @@ msgstr "Nastavení projektu"
msgid "Pick Distance:"
msgstr ""
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr "Soubor:"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7432,10 +7098,18 @@ msgid "Return"
msgstr "Vrátit"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr "Zavolat"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Input Value"
msgstr "Změnit hodnotu pole"
@@ -7843,6 +7517,12 @@ msgstr ""
"Zdroj SpriteFrames musí být vytvořen nebo nastaven ve vlastnosti 'Frames', "
"aby mohl AnimatedSprite3D zobrazit rámeÄky."
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -7852,6 +7532,10 @@ msgid "Add current color as a preset"
msgstr ""
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr "Pozor!"
@@ -7859,10 +7543,6 @@ msgstr "Pozor!"
msgid "Please Confirm..."
msgstr "PotvrÄte prosím..."
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -7898,6 +7578,48 @@ msgstr ""
"mohl získat velikost. Jinak ho nastavte jako render target a pÅ™iÅ™aÄte jeho "
"vnitřní texturu nějakému uzlu k zobrazení."
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr "Chyba při inicializaci FreeType."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "Neznámý formát fontu."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "Chyba nahrávání fontu."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr "Neplatná velikost fontu."
+
+#~ msgid "Filter:"
+#~ msgstr "Filtr:"
+
+#~ msgid "Method List For '%s':"
+#~ msgstr "Seznam metod '%s':"
+
+#~ msgid "Arguments:"
+#~ msgstr "Argumenty:"
+
+#~ msgid "Return:"
+#~ msgstr "Vrátit:"
+
+#, fuzzy
+#~ msgid "Error moving file:\n"
+#~ msgstr "Chyba pÅ™i naÄítání:"
+
+#~ msgid "Invalid font custom source."
+#~ msgstr "Nevalidní písmo z vlastního zdroje."
+
+#, fuzzy
+#~ msgid "Tiles"
+#~ msgstr "Soubor:"
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl+"
+
#~ msgid "just pressed"
#~ msgstr "právě stisknuto"
diff --git a/editor/translations/da.po b/editor/translations/da.po
index 47409d5293..50da2c54b8 100644
--- a/editor/translations/da.po
+++ b/editor/translations/da.po
@@ -1,5 +1,6 @@
# Danish translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# David Lamhauge <davidlamhauge@gmail.com>, 2016.
@@ -192,10 +193,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr "Oprette %d nye numre og indsætte nøgler?"
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -357,268 +357,6 @@ msgstr "Skift Array værditype"
msgid "Change Array Value"
msgstr "Ændre Array-værdi"
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Contents:"
-msgstr "Kontinuerlig"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "View Files"
-msgstr "Fil:"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "Luk"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect."
-msgstr "Forbind..."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect to host:"
-msgstr "Opret forbindelse til Node:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Connecting.."
-msgstr "Forbind..."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Requesting.."
-msgstr "Tester"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Error making request"
-msgstr "Error loading skrifttype."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "Alle"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "Søgning:"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Søg"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "Sorter:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr "Omvendt"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "Kategori:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "Websted:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr "Støtte..."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr "Officiel"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "Fællesskabet"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr "Tester"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr "Assets zipfil"
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr "Metode liste For '%s':"
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "Kald"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr "Metode liste:"
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr "Argumenter:"
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr "Tilbage:"
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr "GÃ¥ til linje"
@@ -656,6 +394,14 @@ msgstr "Hele ord"
msgid "Selection Only"
msgstr "Kun Valgte"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Søg"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr "Find"
@@ -688,11 +434,11 @@ msgstr "Spørg ved Erstat"
msgid "Skip"
msgstr "Spring over"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "Zoom ind"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr "Zoom ud"
@@ -759,6 +505,20 @@ msgstr "Udskudt"
msgid "Oneshot"
msgstr "OneShot"
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "Luk"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr "Tilslut"
@@ -784,7 +544,7 @@ msgstr "Forbind..."
msgid "Disconnect"
msgstr "Afbryd"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr "Signaler"
@@ -801,12 +561,25 @@ msgstr ""
msgid "Recent:"
msgstr ""
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "Søgning:"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr "Matches:"
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr ""
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr "Søg erstatning For:"
@@ -866,6 +639,10 @@ msgid "Owners Of:"
msgstr ""
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr ""
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -873,7 +650,7 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
+msgid "Cannot remove:\n"
msgstr ""
#: editor/dependency_editor.cpp
@@ -940,10 +717,6 @@ msgid "Godot Engine contributors"
msgstr ""
#: editor/editor_about.cpp
-msgid "Authors"
-msgstr ""
-
-#: editor/editor_about.cpp
msgid "Project Founders"
msgstr ""
@@ -960,6 +733,38 @@ msgid "Developers"
msgstr ""
#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
msgid "License"
msgstr ""
@@ -1002,6 +807,16 @@ msgid "Package Installed Successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
msgstr ""
@@ -1052,10 +867,6 @@ msgid "Audio Bus, Drag and Drop to rearrange."
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
msgid "Solo"
msgstr ""
@@ -1067,6 +878,10 @@ msgstr ""
msgid "Bypass"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
msgid "Duplicate"
@@ -1074,6 +889,11 @@ msgstr ""
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Volume"
+msgstr "Nulstil Zoom"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Delete Effect"
msgstr "Slet Valgte"
@@ -1097,6 +917,11 @@ msgstr "Dubler valg"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Bus Volume"
+msgstr "Nulstil Zoom"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Move Audio Bus"
msgstr "Flyt Add Key"
@@ -1128,7 +953,8 @@ msgstr ""
msgid "Create a new Bus Layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
@@ -1218,7 +1044,7 @@ msgid "Rearrange Autoloads"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "Sti:"
@@ -1226,9 +1052,7 @@ msgstr "Sti:"
msgid "Node Name:"
msgstr ""
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr ""
@@ -1261,18 +1085,19 @@ msgid "Choose a Directory"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "Opret mappe"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "Navn:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "Kunne ikke oprette mappe."
@@ -1292,30 +1117,6 @@ msgstr ""
msgid "Template file not found:\n"
msgstr ""
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr ""
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "Filen findes, overskrives?"
@@ -1400,6 +1201,11 @@ msgstr ""
msgid "Move Favorite Down"
msgstr ""
+#: editor/editor_file_dialog.cpp
+#, fuzzy
+msgid "Go to parent folder"
+msgstr "Kunne ikke oprette mappe."
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "Mapper & filer:"
@@ -1414,10 +1220,6 @@ msgid "File:"
msgstr "Fil:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "Filter:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "Skal bruge en gyldig udvidelse."
@@ -1442,6 +1244,10 @@ msgstr ""
msgid "Search Classes"
msgstr ""
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr ""
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr ""
@@ -1458,15 +1264,29 @@ msgstr ""
msgid "Brief Description:"
msgstr ""
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Members"
+msgstr "Medlemmer:"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "Medlemmer:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Public Methods"
+msgstr "Vælg alle"
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr ""
#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr ""
@@ -1476,6 +1296,11 @@ msgstr "Signaler:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Enumerations"
+msgstr "Funktioner:"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Enumerations:"
msgstr "Funktioner:"
@@ -1484,19 +1309,50 @@ msgid "enum "
msgstr ""
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Constants"
+msgstr "Konstant"
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
#: editor/editor_help.cpp
#, fuzzy
+msgid "Description"
+msgstr "Opret abonnement"
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr ""
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Property Description:"
msgstr "Opret abonnement"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Methods"
+msgstr "Metode liste:"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr ""
@@ -1505,24 +1361,21 @@ msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "Clear"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr ""
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1539,6 +1392,29 @@ msgid "Error while saving."
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Can't open '%s'."
+msgstr "Forbind..."
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while parsing '%s'."
+msgstr "Error loading skrifttype."
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while loading '%s'."
+msgstr "Error loading skrifttype."
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr ""
@@ -1596,6 +1472,33 @@ msgid "Restored default layout to base settings."
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr ""
@@ -1759,23 +1662,35 @@ msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "Error loading skrifttype."
+
+#: editor/editor_node.cpp
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -1785,7 +1700,7 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr ""
@@ -1796,11 +1711,11 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp
-msgid "Error loading scene."
+msgid "Scene '%s' has broken dependencies:"
msgstr ""
#: editor/editor_node.cpp
-msgid "Scene '%s' has broken dependencies:"
+msgid "Clear Recent Scenes"
msgstr ""
#: editor/editor_node.cpp
@@ -1836,7 +1751,7 @@ msgstr ""
msgid "Toggle distraction-free mode."
msgstr ""
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr ""
@@ -2056,6 +1971,10 @@ msgstr ""
msgid "Issue Tracker"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "Fællesskabet"
+
#: editor/editor_node.cpp
msgid "About"
msgstr ""
@@ -2064,7 +1983,7 @@ msgstr ""
msgid "Play the project."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr ""
@@ -2080,7 +1999,7 @@ msgstr ""
msgid "Stop the scene."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr ""
@@ -2153,6 +2072,15 @@ msgid "Object properties."
msgstr ""
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr ""
@@ -2168,14 +2096,6 @@ msgstr ""
msgid "Don't Save"
msgstr ""
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr ""
-
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
@@ -2240,11 +2160,28 @@ msgstr "Afhængigheds Editor"
msgid "Open the previous Editor"
msgstr ""
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr ""
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr ""
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr ""
@@ -2277,7 +2214,7 @@ msgid "Frame %"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+msgid "Physics Frame %"
msgstr ""
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2296,26 +2233,6 @@ msgstr ""
msgid "Frame #:"
msgstr ""
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr ""
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2425,10 +2342,6 @@ msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr ""
@@ -2463,9 +2376,17 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
+"Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2476,45 +2397,49 @@ msgid ""
msgstr "Ressource"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
+msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
+msgid "Cannot move a folder into itself.\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
-msgstr ""
+#, fuzzy
+msgid "Error moving:\n"
+msgstr "Error loading skrifttype."
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
+msgid "Unable to update dependencies:\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "No name provided"
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error moving file:\n"
-msgstr "Error loading skrifttype."
+msgid "Provided name contains invalid characters"
+msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "Error loading skrifttype."
+msgid "No name provided."
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
+msgid "Name contains invalid characters."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
+msgid "A file or folder with this name already exists."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
+#, fuzzy
+msgid "Renaming file:"
+msgstr "Omdøbe variablen"
+
+#: editor/filesystem_dock.cpp
+msgid "Renaming folder:"
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2526,39 +2451,36 @@ msgid "Collapse all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
+msgid "Copy Path"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Instance"
+msgid "Rename.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "View Owners.."
+msgid "Move To.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr ""
+#, fuzzy
+msgid "New Folder.."
+msgstr "Opret mappe"
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
+msgid "Show In File Manager"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move To.."
+msgid "Instance"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Info"
+msgid "Edit Dependencies.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
+msgid "View Owners.."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2591,6 +2513,11 @@ msgstr ""
msgid "Move"
msgstr ""
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr ""
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr ""
@@ -2604,6 +2531,10 @@ msgid "Import as Single Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -2616,6 +2547,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
msgstr ""
@@ -2624,38 +2567,31 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr ""
@@ -2684,579 +2620,54 @@ msgstr ""
msgid "Reimport"
msgstr ""
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr "Fejl under initialisering af FreeType."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "Ukendt skrifttypeformat."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "Error loading skrifttype."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr "Ugyldig skriftstørrelse."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Annuller"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
+#: editor/node_dock.cpp
+msgid "Groups"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr ""
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Select a Node to edit Signals and Groups."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -3413,7 +2824,6 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3524,10 +2934,6 @@ msgid "Delete Input"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr ""
@@ -3583,64 +2989,188 @@ msgstr ""
msgid "Filters.."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Contents:"
+msgstr "Kontinuerlig"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "View Files"
+msgstr "Fil:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Can't connect."
+msgstr "Forbind..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Can't connect to host:"
+msgstr "Opret forbindelse til Node:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Connecting.."
+msgstr "Forbind..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Requesting.."
+msgstr "Tester"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Error making request"
+msgstr "Error loading skrifttype."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "Alle"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "Sorter:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr "Omvendt"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "Kategori:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "Websted:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr "Støtte..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "Officiel"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr "Tester"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr "Assets zipfil"
+
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3683,11 +3213,15 @@ msgid "Edit CanvasItem"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+msgid "Anchors only"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors and Margins"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
+msgid "Change Anchors"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3738,59 +3272,73 @@ msgid "Pan Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
+#, fuzzy
+msgid "Toggles snapping"
+msgstr "Skift/Toggle Breakpoint"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
+msgid "Snapping options"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
+msgid "Snap to grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
+msgid "Use Rotation Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "Rediger"
+msgid "Configure Snap..."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Snap Relative"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
+msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
+msgid "Smart snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
+msgid "Snap to parent"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
+msgid "Snap to node anchor"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
+msgid "Restores the object's children's ability to be selected."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3819,11 +3367,16 @@ msgid "View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show helpers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
+msgid "Show rulers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3835,7 +3388,7 @@ msgid "Frame Selection"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
+msgid "Layout"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3859,11 +3412,20 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
+msgid "Drag pivot from mouse position"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "Fjern Signal"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Divide grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3874,23 +3436,28 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr ""
@@ -3905,45 +3472,6 @@ msgid ""
"Drag & drop + Alt : Change node type"
msgstr ""
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3953,14 +3481,6 @@ msgid "Set Handle"
msgstr ""
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr ""
@@ -3983,6 +3503,27 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Ease in"
+msgstr "Skalering Valg"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
msgstr ""
@@ -4062,22 +3603,18 @@ msgid "Create Occluder Polygon"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr ""
@@ -4179,6 +3716,10 @@ msgid "Create Outline"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr ""
@@ -4306,12 +3847,72 @@ msgstr ""
msgid "Populate"
msgstr ""
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create Navigation Polygon"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Marking walkable triangles..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Partitioning..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
msgstr ""
#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
+msgid "Create Navigation Polygon"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -4485,16 +4086,19 @@ msgid "Curve Point #"
msgstr ""
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
-msgstr ""
+msgstr "Fjern Signal"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
-msgstr ""
+msgstr "Fjern Signal"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
-msgstr ""
+msgstr "Fjern Signal"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4554,6 +4158,14 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "Rediger"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr ""
@@ -4608,63 +4220,10 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "Indsæt"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr ""
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr ""
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
@@ -4756,6 +4315,10 @@ msgstr ""
msgid "Close All"
msgstr "Luk"
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
msgstr ""
@@ -4784,7 +4347,8 @@ msgstr ""
msgid "Break"
msgstr ""
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr ""
@@ -4798,18 +4362,6 @@ msgid "Debug with external editor"
msgstr "Afhængigheds Editor"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
msgstr ""
@@ -4892,8 +4444,9 @@ msgid "Cut"
msgstr "Cut"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "Kopier"
@@ -5158,10 +4711,6 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr ""
@@ -5178,10 +4727,6 @@ msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr ""
@@ -5414,6 +4959,10 @@ msgid "Transform"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr ""
@@ -5559,6 +5108,10 @@ msgid "Speed (FPS):"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr ""
@@ -5571,11 +5124,12 @@ msgid "Insert Empty (After)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr ""
+#, fuzzy
+msgid "Move (Before)"
+msgstr "Sti til Node:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
+msgid "Move (After)"
msgstr ""
#: editor/plugins/style_box_editor_plugin.cpp
@@ -5654,7 +5208,11 @@ msgid "Remove All"
msgstr "Fjern"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
@@ -5739,6 +5297,10 @@ msgid "Style"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr ""
@@ -5789,7 +5351,7 @@ msgid "Mirror Y"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
+msgid "Paint Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5853,6 +5415,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr ""
@@ -5925,19 +5491,29 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
+msgid "The path does not exist."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
+msgid "Please choose a folder that does not contain a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
@@ -5945,10 +5521,26 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't edit project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr ""
@@ -5957,15 +5549,20 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Import Existing Project"
+#, fuzzy
+msgid "Rename Project"
+msgstr "Omdøb Funktion"
+
+#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in the project path."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
+msgid "New Game Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Name:"
+msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
@@ -5973,19 +5570,24 @@ msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path:"
+msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Install Project:"
+msgid "Project Name:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Browse"
+#, fuzzy
+msgid "Create folder"
+msgstr "Opret mappe"
+
+#: editor/project_manager.cpp
+msgid "Project Path:"
msgstr ""
#: editor/project_manager.cpp
-msgid "New Game Project"
+msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
@@ -5997,6 +5599,11 @@ msgid "Unnamed Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't open project"
+msgstr "Forbind..."
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr ""
@@ -6023,16 +5630,18 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
-"You are about the scan %s folders for existing Godot projects. Do you "
-"confirm?"
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project List"
+msgid ""
+"You are about the scan %s folders for existing Godot projects. Do you "
+"confirm?"
msgstr ""
#: editor/project_manager.cpp
-msgid "Run"
+msgid "Project List"
msgstr ""
#: editor/project_manager.cpp
@@ -6057,6 +5666,10 @@ msgid "Exit"
msgstr ""
#: editor/project_manager.cpp
+msgid "Restart Now"
+msgstr ""
+
+#: editor/project_manager.cpp
#, fuzzy
msgid "Can't run project"
msgstr "Forbind..."
@@ -6094,17 +5707,14 @@ msgid "Add Input Action Event"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta +"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt +"
@@ -6165,7 +5775,7 @@ msgstr "Skift"
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "Akse"
@@ -6185,31 +5795,31 @@ msgstr ""
msgid "Add Event"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "Enhed"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "Knap"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "Venstre knap."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "Højre knap."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "Midterste knap."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr "Hjulet op."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr "Hjulet ned."
@@ -6219,7 +5829,7 @@ msgid "Add Global Property"
msgstr "Tilføj Getter Egenskab"
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6237,6 +5847,15 @@ msgid "Delete Item"
msgstr "Slet Valgte"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Can't contain '/' or ':'"
+msgstr "Opret forbindelse til Node:"
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
@@ -6277,6 +5896,15 @@ msgid "Remove Resource Remap Option"
msgstr ""
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Changed Locale Filter"
+msgstr "Skift Array værditype"
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
@@ -6337,6 +5965,27 @@ msgid "Locale"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Locales Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show all locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "Filter:"
+
+#: editor/project_settings_editor.cpp
+msgid "Locales:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -6386,10 +6035,19 @@ msgid "New Script"
msgstr ""
#: editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr ""
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Convert To %s"
+msgstr "Opret forbindelse til Node:"
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr ""
@@ -6429,6 +6087,11 @@ msgstr "Tilføj Setter Egenskab"
#: editor/property_selector.cpp
#, fuzzy
+msgid "Select Virtual Method"
+msgstr "Vælg alle"
+
+#: editor/property_selector.cpp
+#, fuzzy
msgid "Select Method"
msgstr "Vælg alle"
@@ -6456,26 +6119,6 @@ msgstr ""
msgid "Reparent"
msgstr ""
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr ""
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr ""
@@ -6603,14 +6246,6 @@ msgid "Sub-Resources:"
msgstr "Ressource"
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr ""
@@ -6797,6 +6432,15 @@ msgid "Invalid base path"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "File exists, will be reused"
+msgstr "Filen findes, overskrives?"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr ""
@@ -6840,6 +6484,10 @@ msgid "Load existing script file"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Inherits"
msgstr ""
@@ -6881,6 +6529,10 @@ msgid "Function:"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr ""
@@ -6961,6 +6613,10 @@ msgid "Type"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr ""
@@ -7036,12 +6692,28 @@ msgstr ""
msgid "Change Probe Extents"
msgstr ""
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Library"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Status"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr "Ugyldigt type argument til convert(), brug TYPE_* konstanter."
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Ikke nok bytes til afkodning af bytes, eller ugyldigt format."
@@ -7093,10 +6765,6 @@ msgid "GridMap Duplicate Selection"
msgstr "Dubler valg"
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Snap View"
msgstr ""
@@ -7192,13 +6860,8 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr "Fil:"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7407,10 +7070,18 @@ msgid "Return"
msgstr "Tilbage:"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr "Kald"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Input Value"
msgstr "Ændre Array-værdi"
@@ -7821,6 +7492,12 @@ msgstr ""
"En SpriteFrames ressource skal oprettes eller angivets i egenskaben 'Frames' "
"for at AnimatedSprite3D kan vise frames."
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -7830,6 +7507,10 @@ msgid "Add current color as a preset"
msgstr ""
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Annuller"
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr "Advarsel!"
@@ -7837,10 +7518,6 @@ msgstr "Advarsel!"
msgid "Please Confirm..."
msgstr "Bekræft venligst..."
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "CTRL +"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -7876,6 +7553,45 @@ msgstr ""
"den kan opnå en størrelse. Ellers gør den til en RenderTarget og tildel dens "
"indre textur til en node så den kan vises."
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr "Fejl under initialisering af FreeType."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "Ukendt skrifttypeformat."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "Error loading skrifttype."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr "Ugyldig skriftstørrelse."
+
+#~ msgid "Filter:"
+#~ msgstr "Filter:"
+
+#~ msgid "Method List For '%s':"
+#~ msgstr "Metode liste For '%s':"
+
+#~ msgid "Arguments:"
+#~ msgstr "Argumenter:"
+
+#~ msgid "Return:"
+#~ msgstr "Tilbage:"
+
+#, fuzzy
+#~ msgid "Error moving file:\n"
+#~ msgstr "Error loading skrifttype."
+
+#, fuzzy
+#~ msgid "Tiles"
+#~ msgstr "Fil:"
+
+#~ msgid "Ctrl+"
+#~ msgstr "CTRL +"
+
#, fuzzy
#~ msgid "Invalid unique name."
#~ msgstr "Ugyldigt index egenskabsnavn."
diff --git a/editor/translations/de.po b/editor/translations/de.po
index 98e2e35922..986987978c 100644
--- a/editor/translations/de.po
+++ b/editor/translations/de.po
@@ -1,5 +1,6 @@
# German translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# Alexander Mahr <alex.mahr@gmail.com>, 2016.
@@ -24,8 +25,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-06-28 09:12+0000\n"
-"Last-Translator: So Wieso <sowieso@dukun.de>\n"
+"PO-Revision-Date: 2017-10-07 04:45+0000\n"
+"Last-Translator: anonymous <>\n"
"Language-Team: German <https://hosted.weblate.org/projects/godot-engine/"
"godot/de/>\n"
"Language: de\n"
@@ -33,7 +34,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 2.15-dev\n"
+"X-Generator: Weblate 2.17-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -209,10 +210,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr "Erstelle %d NEUE Spuren und füge Schlüsselbilder hinzu?"
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -375,262 +375,6 @@ msgstr "Wertetyp des Arrays ändern"
msgid "Change Array Value"
msgstr "Array-Wert ändern"
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr "Frei"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr "Version:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr "Inhalt:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr "Dateien anzeigen"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr "Beschreibung:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr "Installieren"
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "Schließen"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr "Kann Hostnamen nicht auflösen:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Kann nicht auflösen."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr "Verbindungsfehler, bitte erneut versuchen."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Kann nicht verbinden."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr "Kann nicht zu Host verbinden:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr "Keine Antwort von Host:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Keine Antwort."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Anfrage fehlgeschlagen: Rückgabewert:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr "Anfrage fehlgeschlagen."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr "Anfrage fehlgeschlagen, zu viele Weiterleitungen"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr "Weiterleitungsschleife."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Fehlgeschlagen:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr "Falsche Download-Prüfsumme, Datei könnte manipuliert worden sein."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr "Erwartet:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr "Erhalten:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr "Sha256-Prüfung fehlgeschlagen"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Asset Download Error:"
-msgstr "Asset-Download-Fehler:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr "Erfolgreich!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr "Hole:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr "Löse auf.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connecting.."
-msgstr "Verbinde.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Requesting.."
-msgstr "Frage an.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Error making request"
-msgstr "Fehler bei Anfrage"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr "Leerlauf"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr "Erneut versuchen"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr "Übertragungsfehler"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr "Dieser Posten wird bereits herunter geladen!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr "Anfang"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr "zurück"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr "vor"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr "Ende"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "Alle"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "Suche:"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Suche"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr "Import"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr "Erweiterungen"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "Sortiere:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr "Umkehren"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "Kategorie:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "Seite:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr "Unterstützung.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr "Offiziell"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "Gemeinschaft"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr "Testphase"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr "Projektdaten als ZIP-Datei"
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr "Methodenliste für '%s':"
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "Aufruf"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr "Methodenliste:"
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr "Argumente:"
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr "Rückgabe:"
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr "Gehe zu Zeile"
@@ -644,7 +388,6 @@ msgid "No Matches"
msgstr "Keine Übereinstimmungen"
#: editor/code_editor.cpp
-#, fuzzy
msgid "Replaced %d occurrence(s)."
msgstr "Suchbegriff wurde %d mal ersetzt."
@@ -668,6 +411,14 @@ msgstr "Ganze Wörter"
msgid "Selection Only"
msgstr "Nur Auswahl"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Suche"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr "Finde"
@@ -700,11 +451,11 @@ msgstr "Aufforderung beim Ersetzen"
msgid "Skip"
msgstr "Überspringen"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "Vergrößern"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr "Verkleinern"
@@ -773,6 +524,20 @@ msgstr "Verzögert"
msgid "Oneshot"
msgstr "Einmalig"
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "Schließen"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr "Verbinden"
@@ -798,7 +563,7 @@ msgstr "Verbinde.."
msgid "Disconnect"
msgstr "Trennen"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr "Signale"
@@ -815,12 +580,25 @@ msgstr "Favoriten:"
msgid "Recent:"
msgstr "Kürzlich:"
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "Suche:"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr "Treffer:"
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "Beschreibung:"
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr "Suche Ersatz für:"
@@ -880,6 +658,10 @@ msgid "Owners Of:"
msgstr "Besitzer von:"
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr "Lösche ausgewählte Dateien aus dem Projekt? (nicht umkehrbar)"
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -890,8 +672,9 @@ msgstr ""
"Trotzdem entfernen? (Nicht Wiederherstellbar)"
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
-msgstr "Lösche ausgewählte Dateien aus dem Projekt? (nicht umkehrbar)"
+#, fuzzy
+msgid "Cannot remove:\n"
+msgstr "Kann nicht auflösen."
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -957,19 +740,12 @@ msgid "Godot Engine contributors"
msgstr "Godot-Engine-Mitwirkende"
#: editor/editor_about.cpp
-#, fuzzy
-msgid "Authors"
-msgstr "Autor:"
-
-#: editor/editor_about.cpp
-#, fuzzy
msgid "Project Founders"
-msgstr "Projektverwaltung"
+msgstr "Projektgründer"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Lead Developer"
-msgstr "Entwickler"
+msgstr "Hauptentwickler"
#: editor/editor_about.cpp editor/project_manager.cpp
msgid "Project Manager"
@@ -980,118 +756,157 @@ msgid "Developers"
msgstr "Entwickler"
#: editor/editor_about.cpp
-msgid "License"
+msgid "Authors"
+msgstr "Autoren"
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
msgstr ""
#: editor/editor_about.cpp
-msgid "Thirdparty License"
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Bronze Donors"
+msgstr "Klone herunter"
+
+#: editor/editor_about.cpp
+msgid "Donors"
msgstr ""
#: editor/editor_about.cpp
+msgid "License"
+msgstr "Lizenz"
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr "Drittpartei-Lizenz"
+
+#: editor/editor_about.cpp
msgid ""
"Godot Engine relies on a number of thirdparty free and open source "
"libraries, all compatible with the terms of its MIT license. The following "
"is an exhaustive list of all such thirdparty components with their "
"respective copyright statements and license terms."
msgstr ""
+"Die Godot-Engine baut auf einer Vielzahl freier und quelloffener projekt-"
+"externer Bibliotheken auf, die alle kompatibel mit den Auflagen der MIT-"
+"Lizenz sind. Es folgt eine vollständige Liste aller verwendeten externen "
+"Bibliotheken mit den jeweiligen zugehörigen Urheberrechtserklärungen und "
+"Lizenzbedingungen."
#: editor/editor_about.cpp
-#, fuzzy
msgid "All Components"
-msgstr "Inhalt:"
+msgstr "Alle Komponenten"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Components"
-msgstr "Inhalt:"
+msgstr "Komponenten"
#: editor/editor_about.cpp
msgid "Licenses"
-msgstr ""
+msgstr "Lizenzen"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Error opening package file, not in zip format."
-msgstr ""
+msgstr "Fehler beim Öffnen der Paketdatei, kein Zip-Format."
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Uncompressing Assets"
-msgstr "Unkomprimiert"
+msgstr "Entpacke Assets"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Package Installed Successfully!"
msgstr "Paket erfolgreich installiert!"
#: editor/editor_asset_installer.cpp
-#, fuzzy
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr "Erfolgreich!"
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr "Installieren"
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
-msgstr "Paket erfolgreich installiert!"
+msgstr "Paketinstallierung"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
-msgstr ""
+msgstr "Lautsprecher"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Effect"
-msgstr "Ereignis hinzufügen"
+msgstr "Audiobuseffekt hinzufügen"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Rename Audio Bus"
-msgstr "Öffne Audiobus-Layout"
+msgstr "Audiobus umbenennen"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Toggle Audio Bus Solo"
-msgstr "Öffne Audiobus-Layout"
+msgstr "Audiobus Solo-Status umschalten"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Toggle Audio Bus Mute"
-msgstr "Öffne Audiobus-Layout"
+msgstr "Audiobus stumm schalten"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Bypass Effects"
-msgstr ""
+msgstr "Audiobus-Bypasseffekte umschalten"
#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Select Audio Bus Send"
-msgstr ""
+msgstr "Audiobus Senden auswählen"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus Effect"
-msgstr ""
+msgstr "Audiobuseffekt hinzufügen"
#: editor/editor_audio_buses.cpp
msgid "Move Bus Effect"
-msgstr ""
+msgstr "Audiobuseffekt verschieben"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Bus Effect"
-msgstr "Ausgewähltes löschen"
+msgstr "Audiobuseffekt löschen"
#: editor/editor_audio_buses.cpp
msgid "Audio Bus, Drag and Drop to rearrange."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-#, fuzzy
-msgid "Bus options"
-msgstr "Unterszenen-Optionen"
+msgstr "Audiobus, ziehen um umzusortieren."
#: editor/editor_audio_buses.cpp
msgid "Solo"
-msgstr ""
+msgstr "Solo"
#: editor/editor_audio_buses.cpp
msgid "Mute"
-msgstr ""
+msgstr "Stumm"
#: editor/editor_audio_buses.cpp
msgid "Bypass"
-msgstr ""
+msgstr "Bypass"
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr "Audiobusoptionen"
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
@@ -1100,41 +915,45 @@ msgstr "Duplizieren"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Volume"
+msgstr "Vergrößerung zurücksetzen"
+
+#: editor/editor_audio_buses.cpp
msgid "Delete Effect"
-msgstr "Ausgewähltes löschen"
+msgstr "Effekt löschen"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Audio Bus"
msgstr "Audiobus hinzufügen"
#: editor/editor_audio_buses.cpp
msgid "Master bus can't be deleted!"
-msgstr ""
+msgstr "Master-Audiobus kann nicht gelöscht werden!"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Audio Bus"
-msgstr "Layout löschen"
+msgstr "Audiobus löschen"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Duplicate Audio Bus"
-msgstr "Animation duplizieren"
+msgstr "Audiobus duplizieren"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Bus Volume"
+msgstr "Vergrößerung zurücksetzen"
+
+#: editor/editor_audio_buses.cpp
msgid "Move Audio Bus"
-msgstr "Aktion verschieben"
+msgstr "Audiobus verschieben"
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
-msgstr "Audiobus-Layout speichern als…"
+msgstr "Audiobus-Layout speichern als.."
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Location for New Layout.."
-msgstr "Ort für neues Layout…"
+msgstr "Speicherort für neues Layout.."
#: editor/editor_audio_buses.cpp
msgid "Open Audio Bus Layout"
@@ -1142,32 +961,28 @@ msgstr "Öffne Audiobus-Layout"
#: editor/editor_audio_buses.cpp
msgid "There is no 'res://default_bus_layout.tres' file."
-msgstr ""
+msgstr "Datei ‚res://default_bus_layout.tres‘ existiert nicht."
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Invalid file, not an audio bus layout."
-msgstr ""
-"Ungültige Dateiendung.\n"
-"Nutze .font als Dateiendung."
+msgstr "Ungültige Datei, kein Audiobus-Layout."
#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr "Audiobus hinzufügen"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Create a new Bus Layout."
-msgstr "Erstelle neue Ressource"
+msgstr "Neues Audiobus-Layout erstellen."
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr "Lade"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Load an existing Bus Layout."
-msgstr "Lade eine bestehende Ressource von der Festplatte und bearbeite sie."
+msgstr "Lade ein existierendes Bus-Layout."
#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -1175,18 +990,16 @@ msgid "Save As"
msgstr "Speichern als"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Save this Bus Layout to a file."
-msgstr "Audiobus-Layout speichern als…"
+msgstr "Bus-Layout in Datei speichern."
#: editor/editor_audio_buses.cpp editor/import_dock.cpp
-#, fuzzy
msgid "Load Default"
-msgstr "Standard"
+msgstr "Standard laden"
#: editor/editor_audio_buses.cpp
msgid "Load the default Bus Layout."
-msgstr ""
+msgstr "Standart Bus Layout laden."
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
@@ -1259,7 +1072,7 @@ msgid "Rearrange Autoloads"
msgstr "Autoloads neu anordnen"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "Pfad:"
@@ -1267,9 +1080,7 @@ msgstr "Pfad:"
msgid "Node Name:"
msgstr "Node-Name:"
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr "Name"
@@ -1294,27 +1105,27 @@ msgid "Updating scene.."
msgstr "Aktualisiere Szene..."
#: editor/editor_dir_dialog.cpp
-#, fuzzy
msgid "Please select a base directory first"
-msgstr "Bitte speichere die Szene zuerst."
+msgstr "Zuerst ein Wurzelverzeichnis setzen"
#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "Wähle ein Verzeichnis"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "Ordner erstellen"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "Name:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "Ordner konnte nicht erstellt werden."
@@ -1334,30 +1145,6 @@ msgstr "Packe"
msgid "Template file not found:\n"
msgstr "Template-Datei nicht gefunden:\n"
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr "Hinzugefügt:"
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr "Entfernt:"
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr "Fehler beim speichern des Atlas:"
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr "Atlas Untertextur konnte nicht gespeichert werden:"
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr "Exportiere für %s"
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr "Bereite vor..."
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "Datei existiert bereits. Überschreiben?"
@@ -1442,6 +1229,11 @@ msgstr "Favorit nach oben schieben"
msgid "Move Favorite Down"
msgstr "Favorit nach unten schieben"
+#: editor/editor_file_dialog.cpp
+#, fuzzy
+msgid "Go to parent folder"
+msgstr "Ordner konnte nicht erstellt werden."
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "Verzeichnisse & Dateien:"
@@ -1456,10 +1248,6 @@ msgid "File:"
msgstr "Datei:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "Filter:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "Eine gültige Datei-Endung muss verwendet werden."
@@ -1468,9 +1256,8 @@ msgid "ScanSources"
msgstr "Lese Quellen"
#: editor/editor_file_system.cpp
-#, fuzzy
msgid "(Re)Importing Assets"
-msgstr "Importiere erneut"
+msgstr "Importiere Assets erneut"
#: editor/editor_help.cpp editor/editor_node.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -1485,6 +1272,10 @@ msgstr "Klassenliste:"
msgid "Search Classes"
msgstr "Klassen suchen"
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr "Oben"
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr "Klasse:"
@@ -1501,15 +1292,30 @@ msgstr "Geerbt von:"
msgid "Brief Description:"
msgstr "Kurze Beschreibung:"
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Members"
+msgstr "Mitglieder:"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "Mitglieder:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Public Methods"
+msgstr "Öffentliche Methoden:"
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr "Öffentliche Methoden:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "GUI Theme Items"
+msgstr "GUI-Theme-Elemente:"
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr "GUI-Theme-Elemente:"
@@ -1519,53 +1325,85 @@ msgstr "Signale:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Enumerations"
+msgstr "Enums:"
+
+#: editor/editor_help.cpp
msgid "Enumerations:"
-msgstr "Animationen"
+msgstr "Enums:"
#: editor/editor_help.cpp
msgid "enum "
-msgstr ""
+msgstr "Enum "
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Constants"
+msgstr "Konstanten:"
#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Konstanten:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Description"
+msgstr "Beschreibung:"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Properties"
+msgstr "Eigenschaften:"
+
+#: editor/editor_help.cpp
msgid "Property Description:"
msgstr "Eigenschaft-Beschreibung:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Methods"
+msgstr "Methodenliste:"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr "Methoden-Beschreibung:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr "Suchtext"
#: editor/editor_log.cpp
-#, fuzzy
msgid "Output:"
-msgstr " Ausgabe:"
+msgstr "Ausgabe:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "Löschen"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr "Fehler beim speichern der Ressource!"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr "Speichere Ressource als.."
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Verstehe..."
@@ -1582,6 +1420,30 @@ msgid "Error while saving."
msgstr "Fehler beim speichern."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Can't open '%s'."
+msgstr "Kann mit ‚..‘ nicht arbeiten"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while parsing '%s'."
+msgstr "Fehler beim speichern."
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Missing '%s' or its dependencies."
+msgstr "Szene '%s' hat defekte Abhängigkeiten:"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while loading '%s'."
+msgstr "Fehler beim speichern."
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr "Speichere Szene"
@@ -1594,9 +1456,8 @@ msgid "Creating Thumbnail"
msgstr "Erzeuge Miniaturansicht"
#: editor/editor_node.cpp
-#, fuzzy
msgid "This operation can't be done without a tree root."
-msgstr "Diese Aktion kann nicht ohne eine Szene ausgeführt werden."
+msgstr "Diese Aktion kann nicht ohne eine Wurzel ausgeführt werden."
#: editor/editor_node.cpp
msgid ""
@@ -1642,6 +1503,33 @@ msgid "Restored default layout to base settings."
msgstr "Layout wurde auf die Standardeinstellungen zurückgesetzt."
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr "Parameter kopieren"
@@ -1674,14 +1562,14 @@ msgid "There is no defined scene to run."
msgstr "Es ist keine zu startende Szene definiert."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"No main scene has ever been defined, select one?\n"
"You can change it later in \"Project Settings\" under the 'application' "
"category."
msgstr ""
-"Es ist keine Hauptszene definiert worden.\n"
-"Wähle eine in den Projekteinstellungen unter der Kategorie „Anwendung“."
+"Es ist keine Hauptszene wurde jemals bestimmt, soll eine ausgewählt werden?\n"
+"Dies kann später in den Projekteinstellungen unter der Kategorie ‚Anwendung‘ "
+"geändert werden."
#: editor/editor_node.cpp
msgid ""
@@ -1730,13 +1618,12 @@ msgid "Quick Open Script.."
msgstr "Schnell Skripte öffnen.."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Close"
-msgstr "Datei speichern"
+msgstr "Speichern und schließen"
#: editor/editor_node.cpp
msgid "Save changes to '%s' before closing?"
-msgstr ""
+msgstr "Änderungen in ‚%s‘ vor dem Schließen speichern?"
#: editor/editor_node.cpp
msgid "Save Scene As.."
@@ -1767,9 +1654,8 @@ msgid "Export Tile Set"
msgstr "Tileset exportieren"
#: editor/editor_node.cpp
-#, fuzzy
msgid "This operation can't be done without a selected node."
-msgstr "Diese Aktion kann nicht ohne eine Szene ausgeführt werden."
+msgstr "Diese Aktion kann nicht ohne ein ausgewähltes Node ausgeführt werden."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1802,42 +1688,59 @@ msgid "Exit the editor?"
msgstr "Editor verlassen?"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Project Manager?"
-msgstr "Projektverwaltung"
+msgstr "Projektverwaltung öffnen?"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Quit"
-msgstr "Datei speichern"
+msgstr "Speichern und beenden"
#: editor/editor_node.cpp
msgid "Save changes to the following scene(s) before quitting?"
-msgstr ""
+msgstr "Änderungen in den folgenden Szenen vor dem Schließen speichern?"
#: editor/editor_node.cpp
msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
+"Änderungen in den folgenden Szenen vor dem Öffnen der Projektverwaltung "
+"speichern?"
+
+#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Wähle eine Hauptszene"
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
-msgstr ""
+#, fuzzy
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
+msgstr "Plugin bei ‚"
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+#, fuzzy
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
+"Skript-Feld für Addon-Plugin in ‚res://addons/‘ konnte nicht gefunden werden."
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
-msgstr ""
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "AddOn-Skript konnte nicht geladen werden: '"
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
-msgstr ""
+#, fuzzy
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
+msgstr "AddOn-Skript konnte nicht geladen werden: '"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
+msgstr "AddOn-Skript konnte nicht geladen werden: '"
#: editor/editor_node.cpp
msgid ""
@@ -1850,7 +1753,7 @@ msgstr ""
"werden."
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr "Ähm"
@@ -1864,14 +1767,15 @@ msgstr ""
"die Szene innerhalb des Projektpfades gespeichert werden."
#: editor/editor_node.cpp
-msgid "Error loading scene."
-msgstr "Fehler beim laden der Szene."
-
-#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
msgstr "Szene '%s' hat defekte Abhängigkeiten:"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Clear Recent Scenes"
+msgstr "Letzte Dateien leeren"
+
+#: editor/editor_node.cpp
msgid "Save Layout"
msgstr "Layout speichern"
@@ -1901,11 +1805,10 @@ msgid "Distraction Free Mode"
msgstr "Ablenkungsfreier Modus"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Toggle distraction-free mode."
-msgstr "Ablenkungsfreier Modus"
+msgstr "Ablenkungsfreien Modus umschalten."
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr "Szene"
@@ -2145,6 +2048,10 @@ msgstr "Fragen&Antworten"
msgid "Issue Tracker"
msgstr "Problem-Melder"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "Gemeinschaft"
+
#: editor/editor_node.cpp
msgid "About"
msgstr "Über"
@@ -2153,7 +2060,7 @@ msgstr "Über"
msgid "Play the project."
msgstr "Projekt abspielen."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr "Starten"
@@ -2169,7 +2076,7 @@ msgstr "Szene pausieren"
msgid "Stop the scene."
msgstr "Szene stoppen."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr "Stop"
@@ -2242,6 +2149,16 @@ msgid "Object properties."
msgstr "Objekteigenschaften."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Changes may be lost!"
+msgstr "Ändere Bildergruppe"
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr "Import"
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr "Dateisystem"
@@ -2255,15 +2172,7 @@ msgstr "Ausgabe"
#: editor/editor_node.cpp
msgid "Don't Save"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr "Neuimport"
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr "Update"
+msgstr "Nicht speichern"
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
@@ -2290,9 +2199,8 @@ msgid "Open & Run a Script"
msgstr "Skript öffnen und ausführen"
#: editor/editor_node.cpp
-#, fuzzy
msgid "New Inherited"
-msgstr "Neue gererbte Szene.."
+msgstr "Neue geerbte Szene.."
#: editor/editor_node.cpp
msgid "Load Errors"
@@ -2326,11 +2234,29 @@ msgstr "Nächsten Editor öffnen"
msgid "Open the previous Editor"
msgstr "Vorigen Editor öffnen"
+#: editor/editor_plugin.cpp
+#, fuzzy
+msgid "Creating Mesh Previews"
+msgstr "Erzeuge MeshLibrary"
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr "Vorschau.."
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr "Installierte Erweiterungen:"
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr "Update"
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Version:"
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr "Autor:"
@@ -2363,7 +2289,8 @@ msgid "Frame %"
msgstr "Bild %"
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+#, fuzzy
+msgid "Physics Frame %"
msgstr "Fixiertes Bild %"
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2382,35 +2309,17 @@ msgstr "Selbst"
msgid "Frame #:"
msgstr "Bild #:"
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr "Bitte warten bis Operation abgeschlossen ist."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr "Aktuelle Szene muss gespeichert sein um sie erneut zu importieren."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr "Speichern & neu importieren"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr "Importiere erneut"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr "Veränderte Ressourcen neu importieren"
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
-msgstr ""
+msgstr "Gerät aus Liste auswählen"
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
"Please add a runnable preset in the export menu."
msgstr ""
+"Keine ausführbare Exportvorlage für diese Plattform gefunden.\n"
+"Im Exportmenü kann eine ausführbare Vorlage hinzugefügt werden."
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
@@ -2513,10 +2422,6 @@ msgid "Importing:"
msgstr "Importiere:"
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr "Lade Exportvorlagen"
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Aktuelle Version:"
@@ -2551,60 +2456,79 @@ msgid "Cannot navigate to '"
msgstr "Kann Ordner ‚"
#: editor/filesystem_dock.cpp
-#, fuzzy
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
-msgstr "Speichern & neu importieren"
+"Status: Import of file failed. Please fix file and reimport manually."
+msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid ""
"\n"
"Source: "
-msgstr "Quelle:"
+msgstr ""
+"\n"
+"Quelle: "
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
-msgstr "Quell- und Zieldatei sind gleich, ignoriere Anweisung."
+#, fuzzy
+msgid "Cannot move/rename resources root."
+msgstr "Quellschriftart kann nicht geladen/verarbeitet werden."
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
-msgstr ""
+#, fuzzy
+msgid "Cannot move a folder into itself.\n"
+msgstr "Datei kann nicht in sich selbst importiert werden:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving:\n"
+msgstr "Fehler beim Verzeichnisverschieben:\n"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
-msgstr "Quell- und Zielpfad sind gleich, ignoriere Anweisung."
+#, fuzzy
+msgid "Unable to update dependencies:\n"
+msgstr "Szene '%s' hat defekte Abhängigkeiten:"
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
-msgstr "Verzeichnisse lassen sich nicht in sich selbst verschieben."
+msgid "No name provided"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving file:\n"
-msgstr "Fehler beim Laden des Bilds:"
+msgid "No name provided."
+msgstr "Umbenennen oder Verschieben.."
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "Fehler beim importieren:"
+msgid "Name contains invalid characters."
+msgstr "Gültige Zeichen:"
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
-msgstr "Kann mit ‚..‘ nicht arbeiten"
+#, fuzzy
+msgid "A file or folder with this name already exists."
+msgstr "Gruppenname existiert bereits!"
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
-msgstr "Wähle neuen Namen und Ort für:"
+#, fuzzy
+msgid "Renaming file:"
+msgstr "Variable umbenennen"
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
-msgstr "Keine Dateien ausgewählt!"
+#, fuzzy
+msgid "Renaming folder:"
+msgstr "Node umbenennen"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2615,40 +2539,38 @@ msgid "Collapse all"
msgstr "Alle einklappen"
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
-msgstr "Zeige im Dateimanager"
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
-msgstr "Instanz"
+msgid "Copy Path"
+msgstr "Pfad kopieren"
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
-msgstr "Abhängigkeiten bearbeiten.."
+#, fuzzy
+msgid "Rename.."
+msgstr "Umbenennen"
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
-msgstr "Zeige Besitzer.."
+msgid "Move To.."
+msgstr "Verschiebe zu.."
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr "Pfad kopieren"
+#, fuzzy
+msgid "New Folder.."
+msgstr "Ordner erstellen"
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
-msgstr "Umbenennen oder Verschieben.."
+msgid "Show In File Manager"
+msgstr "Zeige im Dateimanager"
#: editor/filesystem_dock.cpp
-msgid "Move To.."
-msgstr "Verschiebe zu.."
+msgid "Instance"
+msgstr "Instanz"
#: editor/filesystem_dock.cpp
-msgid "Info"
-msgstr "Info"
+msgid "Edit Dependencies.."
+msgstr "Abhängigkeiten bearbeiten.."
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
-msgstr "Neuimport.."
+msgid "View Owners.."
+msgstr "Zeige Besitzer.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2675,11 +2597,18 @@ msgid ""
"Scanning Files,\n"
"Please Wait.."
msgstr ""
+"Lese Dateien,\n"
+"Bitte warten.."
#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "Verschieben"
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr "Umbenennen"
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr "Zu Gruppe hinzufügen"
@@ -2689,74 +2618,85 @@ msgid "Remove from Group"
msgstr "Aus Gruppe entfernen"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Import as Single Scene"
-msgstr "Szene wird importiert.."
+msgstr "Als einzelne Szene importieren"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Animations"
+msgstr "Import mit separaten Materialien"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
-msgstr ""
+msgstr "Import mit separaten Materialien"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects"
-msgstr ""
+msgstr "Import mit separaten Objekten"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects+Materials"
-msgstr ""
+msgstr "Import mit separaten Objekten und Materialien"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Objects+Animations"
+msgstr "Import mit separaten Objekten und Materialien"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Materials+Animations"
+msgstr "Import mit separaten Materialien"
#: editor/import/resource_importer_scene.cpp
#, fuzzy
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr "Import mit separaten Objekten und Materialien"
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
-msgstr "3D-Szene importieren"
+msgstr "Als mehrere Szenen importieren"
#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes+Materials"
-msgstr ""
+msgstr "Import als mehrere Szenen und Materialien"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr "Szene importieren"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr "Szene wird importiert.."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr "Angepasstes Skript wird ausgeführt.."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr "Post-Import Skript konnte nicht geladen werden:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr "Ungültiges oder fehlerhaftes Skript für Post-Import (siehe Konsole):"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr "Fehler beim ausführen des Post-Import Skripts:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr "Speichere.."
#: editor/import_dock.cpp
msgid "Set as Default for '%s'"
-msgstr ""
+msgstr "Standard für ‚%s‘ setzen"
#: editor/import_dock.cpp
msgid "Clear Default for '%s'"
-msgstr ""
+msgstr "Standard für ‚%s‘ löschen"
#: editor/import_dock.cpp
msgid " Files"
@@ -2774,576 +2714,6 @@ msgstr "Voreinstellungen.."
msgid "Reimport"
msgstr "Neuimport"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr "Keine Bitmasken zu importieren!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr "Zielpfad ist leer."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr "Zielpfad muss ein kompletter Ressourcenpfad sein."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr "Zielpfad muss existieren."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr "Speicherpfad ist leer!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr "BitMasks importieren"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr "Quelltextur(en):"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr "Zielpfad:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr "Akzeptieren"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr "Bitmaske"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr "Keine Quellschriftart-Datei gefunden!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr "Keine Zielschriftart-Ressource!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-"Ungültige Dateiendung.\n"
-"Nutze .font als Dateiendung."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr "Quellschriftart kann nicht geladen/verarbeitet werden."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr "Schriftart konnte nicht gespeichert werden."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr "Quellschriftart:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr "Quellschriftgröße:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr "Ziel-Ressource:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr "Franz jagt im komplett verwahrlosten Taxi quer durch Bayern."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr "Test:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr "Optionen:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr "Schriftart importieren"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-"Diese Datei ist bereits eine Godot Schriftart. Bitte stattdessen eine Datei "
-"im BMFont-Format angeben."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr "Öffnen der BMFont-Datei fehlgeschlagen."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr "Fehler beim initialisieren von FreeType."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "Unbekanntes Schriftformat."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "Fehler beim Laden der Schriftart."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr "Ungültige Schriftgröße."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr "Eigene Schriftart-Quelle ist ungültig."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Schriftart"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr "Keine Meshes zu importieren!"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr "Einzelnes Mesh importieren"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr "Quell Mesh(es):"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr "Mesh"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "Oberfläche %d"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr "Keine Samples zu importieren!"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr "Audio-Samples importieren"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr "Quell Sample(s):"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr "Audio-Sample"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr "Neuer Clip"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr "Animationseinstellungen"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr "Flags"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr "FPS fixieren:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr "Optimierung"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr "Obere lineare Fehlergrenze"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr "Obere Winkelfehlergrenze"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr "Maximaler Winkel"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr "Ausschnitte"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr "Start"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr "Ende"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr "Wiederholung"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr "Filter"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr "Quellpfad ist leer."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr "Post-Import Skript konnte nicht geladen werden."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr "Ungültiges / Fehlerhaftes Skript für Post-Import."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr "Fehler beim importieren der Szene."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr "3D-Szene importieren"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr "Quellszene:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr "Dieselbe wie die Zielszene"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr "Geteilt"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr "Ziel-Texturenordner:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr "Post-Process Skript:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr "Angepasster Root-Node-Typ:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr "Auto"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr "Name des Root-Node:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr "Die folgenden Dateien fehlen:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr "Trotzdem importieren"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Abbrechen"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr "Importieren & Öffnen"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-"Bearbeitete Szene wurde nicht gespeichert, trotzdem importierte Szene öffnen?"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr "Bild importieren:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr "Datei kann nicht in sich selbst importiert werden:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr "Pfad konnte nicht gefunden werden: %s (bereits lokal)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr "3D-Szenenanimation"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr "Unkomprimiert"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr "Verlustfrei komprimieren (PNG)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr "Verlustbehaftet komprimieren (WebP)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr "Komprimieren (VRAM)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr "Texturformat"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr "Texturkompressionsqualität (WebP):"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr "Textureinstellungen"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr "Bitte gib einige Dateien an!"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr "Es wird zumindest eine Datei für den Atlas benötigt."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr "Fehler beim importieren:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr "Es ist nur eine Datei für eine große Textur erforderlich."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr "Maximale Texturgröße:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr "Texturen für Atlas (2D) importieren"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr "Zellgröße:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr "Große Textur"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr "Große Texturen (2D) importieren"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
-msgstr "Quelltextur"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
-msgstr "Basis-Atlastextur"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
-msgstr "Quelltextur(en)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
-msgstr "Texturen für 2D importieren"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
-msgstr "Texturen für 3D importieren"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
-msgstr "Texturen importieren"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
-msgstr "2D-Textur"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
-msgstr "3D-Textur"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
-msgstr "Atlastextur"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-"MERKE: Das importieren von 2D Texturen ist nicht zwingend notwendig. Kopiere "
-"einfach png/jpg Dateien in das Projekt."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr "Leere Bereiche beschneiden."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr "Textur"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr "Große Textur importieren"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr "Quellbild laden"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr "Teile"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr "Füge Ein"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr "Speichere"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr "Große Textur konnte nicht gespeichert werden:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr "Erstelle Atlas für:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr "Lade Bild:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr "Bild konnte nicht geladen werden:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr "Bilder werden konvertiert"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr "Bilder werden beschnitten"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr "Blitting Bilder"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr "Atlas-Bild konnte nicht gespeichert werden:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr "Konvertierte Textur konnte nicht gespeichert werden:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr "Fehlerhafte Quelle!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr "Fehlerhafte Übersetzungsquelle!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr "Reihe"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr "Sprache"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr "Keine Elemente zu importieren!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr "Kein Zielpfad!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr "Übersetzungen importieren"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr "Konnte nicht importiert werden!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr "Übersetzung importieren"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr "Quell-CSV:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr "Erste Zeile ignorieren"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr "Komprimieren"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr "Zu Projekt hinzufügen (project.godot)"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr "Sprachen importieren:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr "Übersetzung"
-
#: editor/multi_node_edit.cpp
msgid "MultiNode Set"
msgstr "MultiNode setzen"
@@ -3356,6 +2726,49 @@ msgstr "Gruppen"
msgid "Select a Node to edit Signals and Groups."
msgstr "Wähle ein Node um Signale und Gruppen zu bearbeiten."
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
+msgstr "Polygon erstellen"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Polygon bearbeiten"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
+msgid "Insert Point"
+msgstr "Füge Ein"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Polygon bearbeiten (Punkt entfernen)"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
+msgstr "Polygon und Punkt entfernen"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
+msgstr "Polygon von Grund auf neu erstellen."
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+"Existierendes Polygon editieren:\n"
+"LMT: Punkt verschieben.\n"
+"Strg+LMT: Segment aufteilen.\n"
+"RMT: Punkt löschen."
+
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Toggle Autoplay"
msgstr "Automatisches Abspielen umschalten"
@@ -3509,7 +2922,6 @@ msgstr "Animationsname:"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3537,9 +2949,8 @@ msgid "New name:"
msgstr "Neuer Name:"
#: editor/plugins/animation_tree_editor_plugin.cpp
-#, fuzzy
msgid "Edit Filters"
-msgstr "Nodefilter bearbeiten"
+msgstr "Filter bearbeiten"
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
@@ -3620,10 +3031,6 @@ msgid "Delete Input"
msgstr "Eingang löschen"
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr "Umbenennen"
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr "Animationsbaum ist gültig."
@@ -3679,64 +3086,181 @@ msgstr "Nodefilter bearbeiten"
msgid "Filters.."
msgstr "Filter.."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
-msgstr "Analysiere %d Dreiecke:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr "Frei"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
-msgstr "Dreieck #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
+msgstr "Inhalt:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
-msgstr "Light-Baker einrichten:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
+msgstr "Dateien anzeigen"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
-msgstr "Analysiere Geometrie"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
+msgstr "Kann Hostnamen nicht auflösen:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
-msgstr "Fixiere Lampen"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
+msgstr "Kann nicht auflösen."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
-msgstr "Erstelle BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
+msgstr "Verbindungsfehler, bitte erneut versuchen."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
-msgstr "erstelle Licht-Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Kann nicht verbinden."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
-msgstr "Erstelle Octree-Textur"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
+msgstr "Kann nicht zu Host verbinden:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
-msgstr "übertrage zu Lightmaps:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
+msgstr "Keine Antwort von Host:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
-msgstr "Zuweisen von Textur #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Keine Antwort."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
-msgstr "Baking von Dreieck #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
+msgstr "Anfrage fehlgeschlagen: Rückgabewert:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
-msgstr "Nachbearbeiten von Textur #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
+msgstr "Anfrage fehlgeschlagen."
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
-msgstr "Backen!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
+msgstr "Anfrage fehlgeschlagen, zu viele Weiterleitungen"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
+msgstr "Weiterleitungsschleife."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Fehlgeschlagen:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr "Falsche Download-Prüfsumme, Datei könnte manipuliert worden sein."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr "Erwartet:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr "Erhalten:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr "Sha256-Prüfung fehlgeschlagen"
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
-msgstr "Lightmap-Octree-Backing-Prozess zurücksetzen (neu starten)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr "Asset-Download-Fehler:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr "Hole:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr "Löse auf.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting.."
+msgstr "Verbinde.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr "Frage an.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
+msgstr "Fehler bei Anfrage"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr "Leerlauf"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr "Erneut versuchen"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr "Übertragungsfehler"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr "Dieser Posten wird bereits herunter geladen!"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr "Anfang"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr "zurück"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr "vor"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr "Ende"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "Alle"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr "Erweiterungen"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "Sortiere:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr "Umkehren"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "Kategorie:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "Seite:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr "Unterstützung.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "Offiziell"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr "Testphase"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr "Projektdaten als ZIP-Datei"
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr "Vorschau"
@@ -3779,12 +3303,18 @@ msgid "Edit CanvasItem"
msgstr "CanvasItem bearbeiten"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+#, fuzzy
+msgid "Anchors only"
+msgstr "Anker"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Change Anchors and Margins"
msgstr "Ankerpunkte ändern"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
-msgstr "Vergrößerung (%):"
+msgid "Change Anchors"
+msgstr "Ankerpunkte ändern"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Paste Pose"
@@ -3839,61 +3369,79 @@ msgid "Pan Mode"
msgstr "Schwenkmodus"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
-msgstr ""
-"Das ausgewählte Objekt an seiner Position sperren (kann nicht bewegt werden)."
+#, fuzzy
+msgid "Toggles snapping"
+msgstr "Haltepunkt umschalten"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
-msgstr "Das ausgewählte Objekt entsperren (kann bewegt werden)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
+msgstr "Einrasten aktivieren"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
-msgstr "Verhindert das Auswählen von Unterobjekten dieses Nodes."
+#, fuzzy
+msgid "Snapping options"
+msgstr "Animationseinstellungen"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
-msgstr "Macht Unterobjekte dieses Objekts wieder auswählbar."
+#, fuzzy
+msgid "Snap to grid"
+msgstr "Einrastmodus:"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "Bearbeiten"
+msgid "Use Rotation Snap"
+msgstr "Rotationsraster benutzen"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
-msgstr "Einrasten aktivieren"
+#, fuzzy
+msgid "Configure Snap..."
+msgstr "Einrasten konfigurieren.."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
-msgstr "Raster anzeigen"
+msgid "Snap Relative"
+msgstr "Relatives Einrasten benutzen"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
-msgstr "Rotationsraster benutzen"
+msgid "Use Pixel Snap"
+msgstr "Pixelraster benutzen"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
-msgstr "Relatives Einrasten benutzen"
+msgid "Smart snapping"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
-msgstr "Einrasten konfigurieren.."
+#, fuzzy
+msgid "Snap to parent"
+msgstr "Auf übergeordnetes Node ausdehnen"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
-msgstr "Pixelraster benutzen"
+msgid "Snap to node anchor"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
-msgstr "Skelett.."
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr ""
+"Das ausgewählte Objekt an seiner Position sperren (kann nicht bewegt werden)."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr "Das ausgewählte Objekt entsperren (kann bewegt werden)."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
+msgstr "Verhindert das Auswählen von Unterobjekten dieses Nodes."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+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
msgid "Make Bones"
@@ -3921,12 +3469,19 @@ msgid "View"
msgstr "Ansicht"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
-msgstr "Vergrößerung zurücksetzen"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr "Raster anzeigen"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Show helpers"
+msgstr "Knochen anzeigen"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
-msgstr "Vergrößerung setzen.."
+#, fuzzy
+msgid "Show rulers"
+msgstr "Knochen anzeigen"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -3937,8 +3492,9 @@ msgid "Frame Selection"
msgstr "Auswahl einrahmen"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
-msgstr "Anker"
+#, fuzzy
+msgid "Layout"
+msgstr "Layout speichern"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Keys"
@@ -3961,12 +3517,21 @@ msgid "Clear Pose"
msgstr "Pose zurücksetzen"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
-msgstr "Einen Wert setzen"
+msgid "Drag pivot from mouse position"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "Position der Ausgangskurve setzen"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
-msgstr "Einrasten (Pixel):"
+msgid "Divide grid step by 2"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
@@ -3976,23 +3541,28 @@ msgstr "%s hinzufügen"
msgid "Adding %s..."
msgstr "%s hinzufügen…"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr "Erzeuge Node"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr "Fehler beim Instanziieren von %s"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr "Verstehe"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr "Kein Node unter dem Unterobjekt instantiiert werden könnte vorhanden."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr "Diese Aktion benötigt ein einzelnes ausgewähltes Node."
@@ -4008,45 +3578,6 @@ msgstr ""
"Ziehen + Umschalt: Node auf gleicher Ebene einfügen\n"
"Ziehen + Alt: Nodetyp ändern"
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr "Polygon erstellen"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr "Polygon bearbeiten"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr "Polygon bearbeiten (Punkt entfernen)"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Polygon von Grund auf neu erstellen."
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "Polygon3D erstellen"
@@ -4056,14 +3587,6 @@ msgid "Set Handle"
msgstr "Wähle Griff"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr "Erzeuge MeshLibrary"
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr "Vorschau.."
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr "Element %d entfernen?"
@@ -4086,19 +3609,38 @@ msgid "Update from Scene"
msgstr "Aus Szene aktualisieren"
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
-msgid "Modify Curve Point"
-msgstr "Kurve ändern"
+msgid "Ease in"
+msgstr "Einblenden"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Ease out"
+msgstr "Ausblenden"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr "Kurvenpunkt ändern"
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Tangent"
-msgstr "Verändere Curve-Map"
+msgstr "Kurventangente ändern"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Load Curve Preset"
-msgstr "Vorlage laden"
+msgstr "Kurvenvorlage laden"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Add point"
@@ -4109,31 +3651,28 @@ msgid "Remove point"
msgstr "Punkt entfernen"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Left linear"
-msgstr "Linear"
+msgstr "Links linear"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Right linear"
-msgstr "Sicht von rechts"
+msgstr "Rechts linear"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
msgstr "Vorlage laden"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Remove Curve Point"
-msgstr "Pfadpunkt entfernen"
+msgstr "Kurvenpunkt entfernen"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Toggle Curve Linear Tangent"
-msgstr ""
+msgstr "Lineare Kurventangente umschalten"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Hold Shift to edit tangents individually"
-msgstr ""
+msgstr "Umsch halten um Tangenten einzeln zu bearbeiten"
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -4161,28 +3700,26 @@ msgid ""
"No OccluderPolygon2D resource on this node.\n"
"Create and assign one?"
msgstr ""
+"Keine OccluderPolygon2D-Ressource für dieses Node gefunden.\n"
+"Neues erstellen und zuweisen?"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Occluder-Polygon erzeugen"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr "Bestehendes Polygon bearbeiten:"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr "LMT: Punkt verschieben."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr "Strg+LMT: Segment aufteilen."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr "RMT: Punkt entfernen."
@@ -4283,6 +3820,10 @@ msgid "Create Outline"
msgstr "Umriss erzeugen"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr "Mesh"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr "Statischen Trimesh-Körper erzeugen"
@@ -4411,14 +3952,83 @@ msgstr "Zufällige Skalieren:"
msgid "Populate"
msgstr "Füllen"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr "Backen!"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+#, fuzzy
+msgid "Bake the navigation mesh.\n"
+msgstr "Navigations-Mesh erzeugen"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+#, fuzzy
+msgid "Clear the navigation mesh."
+msgstr "Navigations-Mesh erzeugen"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating heightfield..."
+msgstr "erstelle Licht-Octree"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Marking walkable triangles..."
+msgstr "Übersetzbare Textbausteine.."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Partitioning..."
+msgstr "Warnung"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating contours..."
+msgstr "Erstelle Octree-Textur"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating polymesh..."
+msgstr "Umriss-Mesh erzeugen.."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Converting to native navigation mesh..."
+msgstr "Navigations-Mesh erzeugen"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Parsing Geometry..."
+msgstr "Analysiere Geometrie"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
+msgstr ""
+
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Create Navigation Polygon"
msgstr "Erzeuge Navigationspolygon"
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
-msgstr "Polygon und Punkt entfernen"
-
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Clear Emission Mask"
msgstr "Emissionsmaske leeren"
@@ -4456,9 +4066,8 @@ msgstr "Emissionsmaske laden"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Particles"
-msgstr "Vertices"
+msgstr "Partikel"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
@@ -4593,14 +4202,17 @@ msgid "Curve Point #"
msgstr "Kurvenpunkt #"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
msgstr "Position des Kurvenpunkts setzen"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
msgstr "Position der Eingangskurve setzen"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
msgstr "Position der Ausgangskurve setzen"
@@ -4661,6 +4273,14 @@ msgid "Scale Polygon"
msgstr "Polygon skalieren"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "Bearbeiten"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr "Polygon→UV"
@@ -4715,63 +4335,10 @@ msgstr "Ressource laden"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "Einfügen"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr "BBCode parsen"
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr "Länge:"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr "Audiodatei(en) öffnen"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr "Fehler: Konnte Audio nicht laden!"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr "Sample hinzufügen"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr "Sample umbenennen"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr "Sample löschen"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr "16 Bit"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr "8 Bit"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr "Stereo"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr "Mono"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr "Format"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr "Tonhöhe"
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr "Letzte Dateien leeren"
@@ -4781,6 +4348,8 @@ msgid ""
"Close and save changes?\n"
"\""
msgstr ""
+"Schließen und Änderungen speichern?\n"
+"„"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4808,7 +4377,7 @@ msgstr "Motiv speichern als.."
#: editor/plugins/script_editor_plugin.cpp
msgid " Class Reference"
-msgstr ""
+msgstr " Klassenreferenz"
#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
@@ -4862,10 +4431,13 @@ msgstr "Dokumentation schließen"
msgid "Close All"
msgstr "Alle schließen"
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr "Ausführen"
+
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Toggle Scripts Panel"
-msgstr "Favoriten ein- und ausblenden"
+msgstr "Seitenleiste umschalten"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -4891,7 +4463,8 @@ msgstr "Hineinspringen"
msgid "Break"
msgstr "Unterbrechung"
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr "Fortfahren"
@@ -4900,21 +4473,8 @@ msgid "Keep Debugger Open"
msgstr "Debugger offen halten"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Debug with external editor"
-msgstr "Nächsten Editor öffnen"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr "Fenster"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr "nach links"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr "nach rechts"
+msgstr "Mit externem Editor debuggen"
#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
@@ -4973,7 +4533,7 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
-msgstr ""
+msgstr "Nur Ressourcen aus dem Dateisystem können hier fallen gelassen werden."
#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
@@ -5002,8 +4562,9 @@ msgid "Cut"
msgstr "Ausschneiden"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "Kopieren"
@@ -5022,9 +4583,8 @@ msgid "Move Down"
msgstr "Schiebe herunter"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Delete Line"
-msgstr "Punk löschen"
+msgstr "Linie löschen"
#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
@@ -5267,10 +4827,6 @@ msgid "View Plane Transform."
msgstr "Zeige Flächentransformation."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr "Skaliere auf %s%%."
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr "Rotiere %s Grad."
@@ -5287,10 +4843,6 @@ msgid "Top View."
msgstr "Sicht von oben."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr "Oben"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr "Sicht von hinten."
@@ -5391,9 +4943,8 @@ msgid "Audio Listener"
msgstr "Audiosenke"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Doppler Enable"
-msgstr "Aktivieren"
+msgstr "Dopplereffekt aktivieren"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
@@ -5424,7 +4975,6 @@ msgid "Freelook Speed Modifier"
msgstr "Freisicht Geschwindigkeitsregler"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "preview"
msgstr "Vorschau"
@@ -5433,17 +4983,18 @@ msgid "XForm Dialog"
msgstr "Transformationsdialog"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Select Mode (Q)\n"
-msgstr "Auswahlmodus"
+msgstr "Auswahlmodus (Q)\n"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid ""
"Drag: Rotate\n"
"Alt+Drag: Move\n"
"Alt+RMB: Depth list selection"
-msgstr "Alt+Rechtsklick: Listenauswahl nach Tiefe"
+msgstr ""
+"Ziehen: Rotieren\n"
+"Alt+Ziehen: Verschieben\n"
+"Alt+RMT: Tiefenauswahl"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
@@ -5522,6 +5073,10 @@ msgid "Transform"
msgstr "Transformation"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr "Einrasten konfigurieren.."
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr "Lokale Koordinaten"
@@ -5667,6 +5222,10 @@ msgid "Speed (FPS):"
msgstr "Geschwindigkeit (FPS):"
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr "Wiederholung"
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr "Animationsframes"
@@ -5679,21 +5238,22 @@ msgid "Insert Empty (After)"
msgstr "Empty einfügen (danach)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr "Hoch"
+#, fuzzy
+msgid "Move (Before)"
+msgstr "Node(s) verschieben"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
-msgstr "Herunter"
+#, fuzzy
+msgid "Move (After)"
+msgstr "nach links"
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "StyleBox-Vorschau:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#, fuzzy
msgid "Set Region Rect"
-msgstr "Skalierungsbegrenzungseditor"
+msgstr "Bereichsrechteck setzen"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
@@ -5753,18 +5313,20 @@ msgid "Remove Item"
msgstr "Entferne Element"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All Items"
-msgstr "Entferne Klassen-Element"
+msgstr "Alle Elemente entfernen"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All"
-msgstr "Entfernen"
+msgstr "Alles entfernen"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Edit theme.."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
-msgstr "Motiv"
+msgid "Theme editing menu."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Class Items"
@@ -5848,31 +5410,32 @@ msgid "Style"
msgstr "Stil"
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr "Schriftart"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr "Farbe"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase Selection"
-msgstr "Lösche Auswahl"
+msgstr "Auswahl löschen"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
msgstr "Zeichne TileMap"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Line Draw"
-msgstr "Linear"
+msgstr "Linie zeichnen"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rectangle Paint"
-msgstr ""
+msgstr "Rechteck zeichnen"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Bucket Fill"
-msgstr "Eimer"
+msgstr "Fülleimer"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -5899,8 +5462,9 @@ msgid "Mirror Y"
msgstr "Y-Koordinaten spiegeln"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
-msgstr "Eimer"
+#, fuzzy
+msgid "Paint Tile"
+msgstr "Zeichne TileMap"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Pick Tile"
@@ -5963,6 +5527,11 @@ msgid "Delete preset '%s'?"
msgstr "Vorlage ‚%s‘ löschen?"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr "Export-Templates für diese Systeme fehlen:"
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr "Vorlagen"
@@ -6017,18 +5586,16 @@ msgid "Make Patch"
msgstr "Erstelle Patch"
#: editor/project_export.cpp
-#, fuzzy
msgid "Features"
-msgstr "Textur"
+msgstr "Funktionen"
#: editor/project_export.cpp
msgid "Custom (comma-separated):"
-msgstr ""
+msgstr "Benutzerdefiniert (komma-separiert):"
#: editor/project_export.cpp
-#, fuzzy
msgid "Feature List:"
-msgstr "Methodenliste:"
+msgstr "Funktionalitätsliste:"
#: editor/project_export.cpp
msgid "Export PCK/Zip"
@@ -6039,30 +5606,61 @@ msgid "Export templates for this platform are missing:"
msgstr "Export-Templates für diese Systeme fehlen:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr "Export-Templates für diese Systeme fehlen:"
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr "Exportiere mit Debuginformationen"
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
-msgstr "Ungültiger Projektpfad, der Pfad muss existieren!"
+#, fuzzy
+msgid "The path does not exist."
+msgstr "Datei existiert nicht."
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
-msgstr "Ungültiger Projektpfad, project.godot darf nicht existieren."
+#, fuzzy
+msgid "Please choose a 'project.godot' file."
+msgstr "Bitte außerhalb des Projektordners exportieren!"
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
-msgstr "Ungültiger Projektpfad, project.godot muss existieren."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose a folder that does not contain a 'project.godot' file."
+msgstr ""
#: editor/project_manager.cpp
msgid "Imported Project"
msgstr "Importiertes Projekt"
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr "Ungültiger Projektpfad (etwas geändert?)."
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't get project.godot in project path."
+msgstr "Konnte project.godot im Projektpfad nicht erzeugen."
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't edit project.godot in project path."
+msgstr "Konnte project.godot im Projektpfad nicht erzeugen."
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr "Konnte project.godot im Projektpfad nicht erzeugen."
@@ -6071,38 +5669,49 @@ msgid "The following files failed extraction from package:"
msgstr "Die folgenden Dateien ließen sich nicht aus dem Paket extrahieren:"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Rename Project"
+msgstr "Unbenanntes Projekt"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't get project.godot in the project path."
+msgstr "Konnte project.godot im Projektpfad nicht erzeugen."
+
+#: editor/project_manager.cpp
+msgid "New Game Project"
+msgstr "Neues Spiel"
+
+#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "Existierendes Projekt importieren"
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
-msgstr "Projektpfad (muss existieren):"
+msgid "Create New Project"
+msgstr "Erstelle neues Projekt"
+
+#: editor/project_manager.cpp
+msgid "Install Project:"
+msgstr "Installiere Projekt:"
#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Projektname:"
#: editor/project_manager.cpp
-msgid "Create New Project"
-msgstr "Erstelle neues Projekt"
+#, fuzzy
+msgid "Create folder"
+msgstr "Ordner erstellen"
#: editor/project_manager.cpp
msgid "Project Path:"
msgstr "Projektpfad:"
#: editor/project_manager.cpp
-msgid "Install Project:"
-msgstr "Installiere Projekt:"
-
-#: editor/project_manager.cpp
msgid "Browse"
msgstr "Durchstöbern"
#: editor/project_manager.cpp
-msgid "New Game Project"
-msgstr "Neues Spiel"
-
-#: editor/project_manager.cpp
msgid "That's a BINGO!"
msgstr "Aber klar :-) !"
@@ -6111,24 +5720,31 @@ msgid "Unnamed Project"
msgstr "Unbenanntes Projekt"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't open project"
+msgstr "Projekt kann nicht ausgeführt werden"
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr "Sollen wirklich mehrere Projekte geöffnet werden?"
#: editor/project_manager.cpp
-#, fuzzy
msgid ""
"Can't run project: no main scene defined.\n"
"Please edit the project and set the main scene in \"Project Settings\" under "
"the \"Application\" category."
msgstr ""
-"Es ist keine Hauptszene definiert worden.\n"
-"Wähle eine in den Projekteinstellungen unter der Kategorie „Anwendung“."
+"Projekt kann nicht ausgeführt werden: Keine Hauptszene festgelegt.\n"
+"In den Projekteinstellungen unter der Kategorie „Anwendung“ kann die "
+"Hauptszene festgelegt werden."
#: editor/project_manager.cpp
msgid ""
"Can't run project: Assets need to be imported.\n"
"Please edit the project to trigger the initial import."
msgstr ""
+"Projekt kann nicht ausgeführt werden: Assets müssen importiert werden.\n"
+"Das Projekt muss eingestellt werden einen ersten Import einzuleiten."
#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
@@ -6142,6 +5758,12 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
"You are about the scan %s folders for existing Godot projects. Do you "
"confirm?"
msgstr "Sollen wirklich %s Ordner nach Godot-Projekten durchsucht werden?"
@@ -6151,10 +5773,6 @@ msgid "Project List"
msgstr "Projektliste"
#: editor/project_manager.cpp
-msgid "Run"
-msgstr "Ausführen"
-
-#: editor/project_manager.cpp
msgid "Scan"
msgstr "Scannen"
@@ -6176,8 +5794,12 @@ msgstr "Verlassen"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Restart Now"
+msgstr "Neu starten (s):"
+
+#: editor/project_manager.cpp
msgid "Can't run project"
-msgstr "Kann nicht verbinden."
+msgstr "Projekt kann nicht ausgeführt werden"
#: editor/project_settings_editor.cpp
msgid "Key "
@@ -6212,17 +5834,14 @@ msgid "Add Input Action Event"
msgstr "Eingabeaktionsereignis hinzufügen"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Umschalt+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
@@ -6280,16 +5899,14 @@ msgid "Change"
msgstr "Ändern"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Joypad Axis Index:"
msgstr "Joystickachsen-Index:"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "Achse"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Joypad Button Index:"
msgstr "Joysticktasten-Index:"
@@ -6305,57 +5922,64 @@ msgstr "Lösche Eingabeaktionsereignis"
msgid "Add Event"
msgstr "Ereignis hinzufügen"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "Gerät"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "Schaltfläche"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "Linke Taste."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "Rechte Taste."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "Mittlere Taste."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr "Mausrad hoch."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr "Mausrad runter."
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Add Global Property"
-msgstr "Getter-Eigenschaft hinzufügen"
+msgstr "Globale Eigenschaft hinzufügen"
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
-msgstr ""
+#, fuzzy
+msgid "Select a setting item first!"
+msgstr "Ein Einstellungspunkt muss zuerst ausgewählt werden!"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "No property '"
-msgstr "Eigenschaft:"
+msgstr "Keine Eigenschaft ‚"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Setting '"
-msgstr "Einstellungen"
+msgstr "Einstellung ‚"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Delete Item"
-msgstr "Eingang löschen"
+msgstr "Eintrag löschen"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Can't contain '/' or ':'"
+msgstr "Kann nicht zu Host verbinden:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Already existing"
+msgstr "Persistente an- und ausschalten"
#: editor/project_settings_editor.cpp
msgid "Error saving settings."
@@ -6367,7 +5991,7 @@ msgstr "Einstellungen gespeichert OK."
#: editor/project_settings_editor.cpp
msgid "Override for Feature"
-msgstr ""
+msgstr "Für Funktion überschreiben"
#: editor/project_settings_editor.cpp
msgid "Add Translation"
@@ -6398,6 +6022,15 @@ msgid "Remove Resource Remap Option"
msgstr "Ressourcen-Remap-Option entfernen"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Changed Locale Filter"
+msgstr "Überblendungszeit ändern"
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr "Projekteinstellungen (project.godot)"
@@ -6411,7 +6044,7 @@ msgstr "Eigenschaft:"
#: editor/project_settings_editor.cpp
msgid "Override For.."
-msgstr ""
+msgstr "Überschreiben für.."
#: editor/project_settings_editor.cpp
msgid "Input Map"
@@ -6458,6 +6091,30 @@ msgid "Locale"
msgstr "Lokalisierung"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales Filter"
+msgstr "Bildfilter:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Show all locales"
+msgstr "Knochen anzeigen"
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "Nodes filtern"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales:"
+msgstr "Lokalisierung"
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "Autoload"
@@ -6498,26 +6155,34 @@ msgid "Assign"
msgstr "Zuweisen"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Select Node"
-msgstr "Wähle ein Node"
+msgstr "Node auswählen"
#: editor/property_editor.cpp
msgid "New Script"
msgstr "Neues Skript"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Make Unique"
+msgstr "Knochen erstellen"
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr "Im Dateisystem anzeigen"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Convert To %s"
+msgstr "Umwandeln zu.."
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr "Fehler beim Laden der Datei: Keine Ressource!"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Selected node is not a Viewport!"
-msgstr "Selektiere Node(s) für den Import"
+msgstr "Ausgewähltes Node ist kein Viewport!"
#: editor/property_editor.cpp
msgid "Pick a Node"
@@ -6548,6 +6213,11 @@ msgid "Select Property"
msgstr "Eigenschaft auswählen"
#: editor/property_selector.cpp
+#, fuzzy
+msgid "Select Virtual Method"
+msgstr "Methode auswählen"
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr "Methode auswählen"
@@ -6576,26 +6246,6 @@ msgstr "Behalte globale Transformation"
msgid "Reparent"
msgstr "Umhängen"
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr "Erstelle neue Ressource"
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr "Ressource öffnen"
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr "Ressource speichern"
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr "Ressourcenwerkzeuge"
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr "Lokal machen"
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr "Ausführungsmodus:"
@@ -6728,14 +6378,6 @@ msgid "Sub-Resources:"
msgstr "Unter-Ressourcen:"
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr "Gruppen bearbeiten"
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr "Verbindungen bearbeiten"
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr "Leere Vererbung"
@@ -6796,9 +6438,8 @@ msgstr ""
"kein Root-Node existiert."
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Filter nodes"
-msgstr "Filter"
+msgstr "Nodes filtern"
#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
@@ -6903,9 +6544,8 @@ msgid "Select a Node"
msgstr "Wähle ein Node"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Error loading template '%s'"
-msgstr "Fehler beim Laden des Bilds:"
+msgstr "Fehler beim Laden der Vorlage ‚%s‘"
#: editor/script_create_dialog.cpp
msgid "Error - Could not create script in filesystem."
@@ -6932,6 +6572,15 @@ msgid "Invalid base path"
msgstr "Ungültiger Pfad"
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "File exists, will be reused"
+msgstr "Datei existiert bereits. Überschreiben?"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr "Ungültige Erweiterung"
@@ -6972,6 +6621,10 @@ msgid "Load existing script file"
msgstr "Lade bestehende Skriptdatei"
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr "Sprache"
+
+#: editor/script_create_dialog.cpp
msgid "Inherits"
msgstr "Erbt"
@@ -7012,6 +6665,10 @@ msgid "Function:"
msgstr "Funktion:"
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr "Fehler"
@@ -7092,6 +6749,10 @@ msgid "Type"
msgstr "Art"
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr "Format"
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr "Nutzung"
@@ -7125,7 +6786,7 @@ msgstr "Ändere Lichtradius"
#: editor/spatial_editor_gizmos.cpp
msgid "Change AudioStreamPlayer3D Emission Angle"
-msgstr ""
+msgstr "Emissionswinkel für AudioStreamPlayer3D ändern"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
@@ -7168,13 +6829,31 @@ msgstr "Ändere Partikel AABB"
msgid "Change Probe Extents"
msgstr "Sondenausmaße ändern"
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Library"
+msgstr "MeshLibrary.."
+
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Status"
+msgstr "Status:"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr ""
"Ungültiger Argument-Typ in convert()-Aufruf, TYPE_*-Konstanten benötigt."
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr ""
@@ -7216,26 +6895,19 @@ msgstr "Ungültiges Instanz-Verzeichnisformat (ungültige Unterklasse)"
#: modules/gdscript/gd_functions.cpp
msgid "Object can't provide a length."
-msgstr ""
+msgstr "Objekt kann keine Länge vorweisen."
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Delete Selection"
-msgstr "Ausgewähltes löschen"
+msgstr "GridMap-Auswahl löschen"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Duplicate Selection"
-msgstr "Auswahl duplizieren"
+msgstr "GridMap-Auswahl duplizieren"
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Snap View"
-msgstr "Sicht von oben"
+msgstr "Sicht einrasten"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Prev Level (%sDown Wheel)"
@@ -7246,103 +6918,87 @@ msgid "Next Level (%sUp Wheel)"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Clip Disabled"
-msgstr "Deaktiviert"
+msgstr "Einrasten deaktiviert"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clip Above"
-msgstr ""
+msgstr "Oben einrasten"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clip Below"
-msgstr ""
+msgstr "Unten einrasten"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit X Axis"
-msgstr ""
+msgstr "X-Achse editieren"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Y Axis"
-msgstr ""
+msgstr "Y-Achse editieren"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Z Axis"
-msgstr ""
+msgstr "Z-Achse editieren"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate X"
-msgstr "Strg: Rotieren"
+msgstr "X-Rotation am Mauszeiger"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate Y"
-msgstr "Strg: Rotieren"
+msgstr "Y-Rotation am Mauszeiger"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate Z"
-msgstr "Strg: Rotieren"
+msgstr "Z-Rotation am Mauszeiger"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate X"
-msgstr ""
+msgstr "Rückwärts X-Rotation am Mauszeiger"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate Y"
-msgstr ""
+msgstr "Rückwärts Y-Rotation am Mauszeiger"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate Z"
-msgstr ""
+msgstr "Rückwärts Z-Rotation am Mauszeiger"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Clear Rotation"
-msgstr ""
+msgstr "Rotation am Mauszeiger zurücksetzen"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Create Area"
-msgstr "Neu erstellen"
+msgstr "Bereich erzeugen"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Create Exterior Connector"
-msgstr "Erstelle neues Projekt"
+msgstr "Exterior-Connector erstellen"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase Area"
-msgstr "Lösche TileMap"
+msgstr "Bereich entfernen"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Selection -> Duplicate"
-msgstr "Nur Auswahl"
+msgstr "Auswahl → Duplizieren"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Selection -> Clear"
-msgstr "Nur Auswahl"
+msgstr "Auswahl → Löschen"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Settings"
-msgstr "Einrasteinstellungen"
+msgstr "GridMap-Einstellungen"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Pick Distance:"
-msgstr "Instanz:"
+msgstr "Auswahlradius:"
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr " Dateien"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7384,29 +7040,24 @@ msgid "Stack overflow with stack depth: "
msgstr "Stack-Overflow mit Stack-Tiefe: "
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Signal Arguments"
-msgstr "Signalparameter bearbeiten:"
+msgstr "Signalparameter ändern"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Argument Type"
-msgstr "Wertetyp des Arrays ändern"
+msgstr "Parametertyp ändern"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Argument name"
-msgstr "Ändere Eingabename"
+msgstr "Parametername ändern"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Set Variable Default Value"
-msgstr "Ändere Standardwert"
+msgstr "Variablenstandardwert setzen"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Set Variable Type"
-msgstr "Variable bearbeiten:"
+msgstr "Variablentyp festlegen"
#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
@@ -7457,14 +7108,12 @@ msgid "Add Node"
msgstr "Node hinzufügen"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Remove VisualScript Nodes"
-msgstr "Ungültige Schlüsselbilder entfernen"
+msgstr "VisualScript-Nodes entfernen"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Duplicate VisualScript Nodes"
-msgstr "Dupliziere Graph-Node(s)"
+msgstr "VisualScript-Nodes duplizieren"
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
@@ -7511,24 +7160,20 @@ msgid "Add Setter Property"
msgstr "Setter-Eigenschaft hinzufügen"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Base Type"
-msgstr "Typ ändern"
+msgstr "Basistyp ändern"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Move Node(s)"
-msgstr "Entferne Node(s)"
+msgstr "Node(s) verschieben"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Remove VisualScript Node"
-msgstr "Entferne Shader-Graph-Node"
+msgstr "VisualScript-Node entfernen"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Connect Nodes"
-msgstr "Verbinde mit Node:"
+msgstr "Nodes verbinden"
#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
@@ -7555,46 +7200,48 @@ msgid "Return"
msgstr "Rückgabe"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr "Aufruf"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr "Abfragen"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
-msgstr "Ändere Eingabename"
+msgstr "Eingabewert ändern"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Can't copy the function node."
-msgstr "Kann mit ‚..‘ nicht arbeiten"
+msgstr "Das Function-Node kann nicht kopiert werden."
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Clipboard is empty!"
-msgstr "Zwischenablage für Ressourcen ist leer!"
+msgstr "Zwischenablage ist leer!"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Paste VisualScript Nodes"
-msgstr "Nodes einfügen"
+msgstr "VisualScript-Nodes einfügen"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Function"
msgstr "Funktion entfernen"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Edit Variable"
-msgstr "Variable bearbeiten:"
+msgstr "Variable bearbeiten"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Variable"
msgstr "Variable entfernen"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Edit Signal"
-msgstr "bearbeite Signal:"
+msgstr "Signal bearbeiten"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Signal"
@@ -7843,6 +7490,10 @@ msgid ""
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"Größenänderungen von RigidBody2D (in den Character- oder Rigid-Modi) werden "
+"überschrieben wenn die Physikengine läuft.\n"
+"Die Größe der entsprechenden Collisionshape-Unterobjekte sollte stattdessen "
+"geändert werden."
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
@@ -7876,31 +7527,35 @@ msgstr ""
#: scene/3d/arvr_nodes.cpp
msgid "ARVRCamera must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRCamera braucht ein ARVROrigin-Node als Überobjekt"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRController must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRController braucht ein ARVROrigin-Node als Überobjekt"
#: scene/3d/arvr_nodes.cpp
msgid ""
"The controller id must not be 0 or this controller will not be bound to an "
"actual controller"
msgstr ""
+"Die Controller-ID sollte nicht null sein, sonst wird der Controller nicht an "
+"einen echten Controller gebunden"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRAnchor must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRAnchor braucht ein ARVROrigin-Node als Überobjekt"
#: 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 ""
+"Die Anker-ID darf nicht null sein, sonst wird der Anker nicht an einen "
+"echten Anker gebunden"
#: scene/3d/arvr_nodes.cpp
msgid "ARVROrigin requires an ARVRCamera child node"
-msgstr ""
+msgstr "ARVROrigin benötigt ein ARVRCamera-Unterobjekt"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7960,6 +7615,10 @@ msgid ""
"the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"Größenänderungen von RigidBody (in Character- oder Rigid-Modus) werden "
+"überschrieben wenn die Physikengine läuft.\n"
+"Die Größe der entsprechenden Collisionshape-Unterobjekte sollte stattdessen "
+"geändert werden."
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
@@ -7980,16 +7639,25 @@ msgstr ""
"Eine SpriteFrames-Ressource muss in der ‚Frames‘-Eigenschaft erzeugt oder "
"definiert werden, damit AnimatedSprite3D Einzelbilder anzeigen kann."
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
-#, fuzzy
msgid "Raw Mode"
-msgstr "Schwenkmodus"
+msgstr "Rohdatenmodus"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
msgstr "Füge aktuelle Farbe als Vorlage hinzu"
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr "Warnung!"
@@ -7997,10 +7665,6 @@ msgstr "Warnung!"
msgid "Please Confirm..."
msgstr "Bitte bestätigen..."
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "Strg+"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -8045,6 +7709,638 @@ msgstr ""
"Eigenschaft ‚Render Target‘ des Viewports aktiviert und seine Textur "
"irgendeinem Node zum Anzeigen zugewiesen werden."
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr "Fehler beim initialisieren von FreeType."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "Unbekanntes Schriftformat."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "Fehler beim Laden der Schriftart."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr "Ungültige Schriftgröße."
+
+#~ msgid "Filter:"
+#~ msgstr "Filter:"
+
+#~ msgid "' parsing of config failed."
+#~ msgstr ""
+#~ "‘ kann nicht aktiviert werden, Einlesen der Konfigurationsdatei "
+#~ "fehlgeschlagen."
+
+#~ msgid "Theme"
+#~ msgstr "Motiv"
+
+#~ msgid "Method List For '%s':"
+#~ msgstr "Methodenliste für '%s':"
+
+#~ msgid "Arguments:"
+#~ msgstr "Argumente:"
+
+#~ msgid "Return:"
+#~ msgstr "Rückgabe:"
+
+#~ msgid "Added:"
+#~ msgstr "Hinzugefügt:"
+
+#~ msgid "Removed:"
+#~ msgstr "Entfernt:"
+
+#~ msgid "Error saving atlas:"
+#~ msgstr "Fehler beim speichern des Atlas:"
+
+#~ msgid "Could not save atlas subtexture:"
+#~ msgstr "Atlas Untertextur konnte nicht gespeichert werden:"
+
+#~ msgid "Exporting for %s"
+#~ msgstr "Exportiere für %s"
+
+#~ msgid "Setting Up.."
+#~ msgstr "Bereite vor..."
+
+#~ msgid "Error loading scene."
+#~ msgstr "Fehler beim laden der Szene."
+
+#~ msgid "Re-Import"
+#~ msgstr "Neuimport"
+
+#~ msgid "Please wait for scan to complete."
+#~ msgstr "Bitte warten bis Operation abgeschlossen ist."
+
+#~ msgid "Current scene must be saved to re-import."
+#~ msgstr "Aktuelle Szene muss gespeichert sein um sie erneut zu importieren."
+
+#~ msgid "Save & Re-Import"
+#~ msgstr "Speichern & neu importieren"
+
+#~ msgid "Re-Importing"
+#~ msgstr "Importiere erneut"
+
+#~ msgid "Re-Import Changed Resources"
+#~ msgstr "Veränderte Ressourcen neu importieren"
+
+#~ msgid "Loading Export Templates"
+#~ msgstr "Lade Exportvorlagen"
+
+#~ msgid ""
+#~ "\n"
+#~ "Status: Needs Re-Import"
+#~ msgstr ""
+#~ "\n"
+#~ "Status: Benötigt Neu-Import"
+
+#~ msgid "Same source and destination files, doing nothing."
+#~ msgstr "Quell- und Zieldatei sind gleich, ignoriere Anweisung."
+
+#~ msgid "Target file exists, can't overwrite. Delete first."
+#~ msgstr ""
+#~ "Zieldatei existiert bereits und kann nicht überschrieben werden. Ggf "
+#~ "manuell löschen."
+
+#~ msgid "Same source and destination paths, doing nothing."
+#~ msgstr "Quell- und Zielpfad sind gleich, ignoriere Anweisung."
+
+#~ msgid "Can't move directories to within themselves."
+#~ msgstr "Verzeichnisse lassen sich nicht in sich selbst verschieben."
+
+#~ msgid "Can't rename deps for:\n"
+#~ msgstr "Abhängigkeiten können nicht umbenannt werden für:\n"
+
+#~ msgid "Error moving file:\n"
+#~ msgstr "Fehler beim Dateiverschieben:\n"
+
+#~ msgid "Pick New Name and Location For:"
+#~ msgstr "Wähle neuen Namen und Ort für:"
+
+#~ msgid "No files selected!"
+#~ msgstr "Keine Dateien ausgewählt!"
+
+#~ msgid "Info"
+#~ msgstr "Info"
+
+#~ msgid "Re-Import.."
+#~ msgstr "Neuimport.."
+
+#~ msgid "No bit masks to import!"
+#~ msgstr "Keine Bitmasken zu importieren!"
+
+#~ msgid "Target path is empty."
+#~ msgstr "Zielpfad ist leer."
+
+#~ msgid "Target path must be a complete resource path."
+#~ msgstr "Zielpfad muss ein kompletter Ressourcenpfad sein."
+
+#~ msgid "Target path must exist."
+#~ msgstr "Zielpfad muss existieren."
+
+#~ msgid "Save path is empty!"
+#~ msgstr "Speicherpfad ist leer!"
+
+#~ msgid "Import BitMasks"
+#~ msgstr "BitMasks importieren"
+
+#~ msgid "Source Texture(s):"
+#~ msgstr "Quelltextur(en):"
+
+#~ msgid "Target Path:"
+#~ msgstr "Zielpfad:"
+
+#~ msgid "Accept"
+#~ msgstr "Akzeptieren"
+
+#~ msgid "Bit Mask"
+#~ msgstr "Bitmaske"
+
+#~ msgid "No source font file!"
+#~ msgstr "Keine Quellschriftart-Datei gefunden!"
+
+#~ msgid "No target font resource!"
+#~ msgstr "Keine Zielschriftart-Ressource!"
+
+#~ msgid ""
+#~ "Invalid file extension.\n"
+#~ "Please use .font."
+#~ msgstr ""
+#~ "Ungültige Dateiendung.\n"
+#~ "Nutze .font als Dateiendung."
+
+#~ msgid "Couldn't save font."
+#~ msgstr "Schriftart konnte nicht gespeichert werden."
+
+#~ msgid "Source Font:"
+#~ msgstr "Quellschriftart:"
+
+#~ msgid "Source Font Size:"
+#~ msgstr "Quellschriftgröße:"
+
+#~ msgid "Dest Resource:"
+#~ msgstr "Ziel-Ressource:"
+
+#~ msgid "The quick brown fox jumps over the lazy dog."
+#~ msgstr "Franz jagt im komplett verwahrlosten Taxi quer durch Bayern."
+
+#~ msgid "Test:"
+#~ msgstr "Test:"
+
+#~ msgid "Options:"
+#~ msgstr "Optionen:"
+
+#~ msgid "Font Import"
+#~ msgstr "Schriftart importieren"
+
+#~ msgid ""
+#~ "This file is already a Godot font file, please supply a BMFont type file "
+#~ "instead."
+#~ msgstr ""
+#~ "Diese Datei ist bereits eine Godot Schriftart. Bitte stattdessen eine "
+#~ "Datei im BMFont-Format angeben."
+
+#~ msgid "Failed opening as BMFont file."
+#~ msgstr "Öffnen der BMFont-Datei fehlgeschlagen."
+
+#~ msgid "Invalid font custom source."
+#~ msgstr "Eigene Schriftart-Quelle ist ungültig."
+
+#~ msgid "No meshes to import!"
+#~ msgstr "Keine Meshes zu importieren!"
+
+#~ msgid "Single Mesh Import"
+#~ msgstr "Einzelnes Mesh importieren"
+
+#~ msgid "Source Mesh(es):"
+#~ msgstr "Quell Mesh(es):"
+
+#~ msgid "Surface %d"
+#~ msgstr "Oberfläche %d"
+
+#~ msgid "No samples to import!"
+#~ msgstr "Keine Samples zu importieren!"
+
+#~ msgid "Import Audio Samples"
+#~ msgstr "Audio-Samples importieren"
+
+#~ msgid "Source Sample(s):"
+#~ msgstr "Quell Sample(s):"
+
+#~ msgid "Audio Sample"
+#~ msgstr "Audio-Sample"
+
+#~ msgid "New Clip"
+#~ msgstr "Neuer Clip"
+
+#~ msgid "Flags"
+#~ msgstr "Flags"
+
+#~ msgid "Bake FPS:"
+#~ msgstr "FPS fixieren:"
+
+#~ msgid "Optimizer"
+#~ msgstr "Optimierung"
+
+#~ msgid "Max Linear Error"
+#~ msgstr "Obere lineare Fehlergrenze"
+
+#~ msgid "Max Angular Error"
+#~ msgstr "Obere Winkelfehlergrenze"
+
+#~ msgid "Max Angle"
+#~ msgstr "Maximaler Winkel"
+
+#~ msgid "Clips"
+#~ msgstr "Ausschnitte"
+
+#~ msgid "Start(s)"
+#~ msgstr "Start"
+
+#~ msgid "End(s)"
+#~ msgstr "Ende"
+
+#~ msgid "Filters"
+#~ msgstr "Filter"
+
+#~ msgid "Source path is empty."
+#~ msgstr "Quellpfad ist leer."
+
+#~ msgid "Couldn't load post-import script."
+#~ msgstr "Post-Import Skript konnte nicht geladen werden."
+
+#~ msgid "Invalid/broken script for post-import."
+#~ msgstr "Ungültiges / Fehlerhaftes Skript für Post-Import."
+
+#~ msgid "Error importing scene."
+#~ msgstr "Fehler beim importieren der Szene."
+
+#~ msgid "Import 3D Scene"
+#~ msgstr "3D-Szene importieren"
+
+#~ msgid "Source Scene:"
+#~ msgstr "Quellszene:"
+
+#~ msgid "Same as Target Scene"
+#~ msgstr "Dieselbe wie die Zielszene"
+
+#~ msgid "Shared"
+#~ msgstr "Geteilt"
+
+#~ msgid "Target Texture Folder:"
+#~ msgstr "Ziel-Texturenordner:"
+
+#~ msgid "Post-Process Script:"
+#~ msgstr "Post-Process Skript:"
+
+#~ msgid "Custom Root Node Type:"
+#~ msgstr "Angepasster Root-Node-Typ:"
+
+#~ msgid "Auto"
+#~ msgstr "Auto"
+
+#~ msgid "Root Node Name:"
+#~ msgstr "Name des Root-Node:"
+
+#~ msgid "The Following Files are Missing:"
+#~ msgstr "Die folgenden Dateien fehlen:"
+
+#~ msgid "Import Anyway"
+#~ msgstr "Trotzdem importieren"
+
+#~ msgid "Import & Open"
+#~ msgstr "Importieren & Öffnen"
+
+#~ msgid "Edited scene has not been saved, open imported scene anyway?"
+#~ msgstr ""
+#~ "Bearbeitete Szene wurde nicht gespeichert, trotzdem importierte Szene "
+#~ "öffnen?"
+
+#~ msgid "Import Image:"
+#~ msgstr "Bild importieren:"
+
+#~ msgid "Couldn't localize path: %s (already local)"
+#~ msgstr "Pfad konnte nicht gefunden werden: %s (bereits lokal)"
+
+#~ msgid "3D Scene Animation"
+#~ msgstr "3D-Szenenanimation"
+
+#~ msgid "Uncompressed"
+#~ msgstr "Unkomprimiert"
+
+#~ msgid "Compress Lossless (PNG)"
+#~ msgstr "Verlustfrei komprimieren (PNG)"
+
+#~ msgid "Compress Lossy (WebP)"
+#~ msgstr "Verlustbehaftet komprimieren (WebP)"
+
+#~ msgid "Compress (VRAM)"
+#~ msgstr "Komprimieren (VRAM)"
+
+#~ msgid "Texture Format"
+#~ msgstr "Texturformat"
+
+#~ msgid "Texture Compression Quality (WebP):"
+#~ msgstr "Texturkompressionsqualität (WebP):"
+
+#~ msgid "Texture Options"
+#~ msgstr "Textureinstellungen"
+
+#~ msgid "Please specify some files!"
+#~ msgstr "Bitte gib einige Dateien an!"
+
+#~ msgid "At least one file needed for Atlas."
+#~ msgstr "Es wird zumindest eine Datei für den Atlas benötigt."
+
+#~ msgid "Error importing:"
+#~ msgstr "Fehler beim importieren:"
+
+#~ msgid "Only one file is required for large texture."
+#~ msgstr "Es ist nur eine Datei für eine große Textur erforderlich."
+
+#~ msgid "Max Texture Size:"
+#~ msgstr "Maximale Texturgröße:"
+
+#~ msgid "Import Textures for Atlas (2D)"
+#~ msgstr "Texturen für Atlas (2D) importieren"
+
+#~ msgid "Cell Size:"
+#~ msgstr "Zellgröße:"
+
+#~ msgid "Large Texture"
+#~ msgstr "Große Textur"
+
+#~ msgid "Import Large Textures (2D)"
+#~ msgstr "Große Texturen (2D) importieren"
+
+#~ msgid "Source Texture"
+#~ msgstr "Quelltextur"
+
+#~ msgid "Base Atlas Texture"
+#~ msgstr "Basis-Atlastextur"
+
+#~ msgid "Source Texture(s)"
+#~ msgstr "Quelltextur(en)"
+
+#~ msgid "Import Textures for 2D"
+#~ msgstr "Texturen für 2D importieren"
+
+#~ msgid "Import Textures for 3D"
+#~ msgstr "Texturen für 3D importieren"
+
+#~ msgid "Import Textures"
+#~ msgstr "Texturen importieren"
+
+#~ msgid "2D Texture"
+#~ msgstr "2D-Textur"
+
+#~ msgid "3D Texture"
+#~ msgstr "3D-Textur"
+
+#~ msgid "Atlas Texture"
+#~ msgstr "Atlastextur"
+
+#~ msgid ""
+#~ "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files "
+#~ "to the project."
+#~ msgstr ""
+#~ "MERKE: Das importieren von 2D Texturen ist nicht zwingend notwendig. "
+#~ "Kopiere einfach png/jpg Dateien in das Projekt."
+
+#~ msgid "Crop empty space."
+#~ msgstr "Leere Bereiche beschneiden."
+
+#~ msgid "Texture"
+#~ msgstr "Textur"
+
+#~ msgid "Import Large Texture"
+#~ msgstr "Große Textur importieren"
+
+#~ msgid "Load Source Image"
+#~ msgstr "Quellbild laden"
+
+#~ msgid "Slicing"
+#~ msgstr "Teile"
+
+#~ msgid "Saving"
+#~ msgstr "Speichere"
+
+#~ msgid "Couldn't save large texture:"
+#~ msgstr "Große Textur konnte nicht gespeichert werden:"
+
+#~ msgid "Build Atlas For:"
+#~ msgstr "Erstelle Atlas für:"
+
+#~ msgid "Loading Image:"
+#~ msgstr "Lade Bild:"
+
+#~ msgid "Couldn't load image:"
+#~ msgstr "Bild konnte nicht geladen werden:"
+
+#~ msgid "Converting Images"
+#~ msgstr "Bilder werden konvertiert"
+
+#~ msgid "Cropping Images"
+#~ msgstr "Bilder werden beschnitten"
+
+#~ msgid "Blitting Images"
+#~ msgstr "Blitting Bilder"
+
+#~ msgid "Couldn't save atlas image:"
+#~ msgstr "Atlas-Bild konnte nicht gespeichert werden:"
+
+#~ msgid "Couldn't save converted texture:"
+#~ msgstr "Konvertierte Textur konnte nicht gespeichert werden:"
+
+#~ msgid "Invalid source!"
+#~ msgstr "Fehlerhafte Quelle!"
+
+#~ msgid "Invalid translation source!"
+#~ msgstr "Fehlerhafte Übersetzungsquelle!"
+
+#~ msgid "Column"
+#~ msgstr "Reihe"
+
+#~ msgid "No items to import!"
+#~ msgstr "Keine Elemente zu importieren!"
+
+#~ msgid "No target path!"
+#~ msgstr "Kein Zielpfad!"
+
+#~ msgid "Import Translations"
+#~ msgstr "Übersetzungen importieren"
+
+#~ msgid "Couldn't import!"
+#~ msgstr "Konnte nicht importiert werden!"
+
+#~ msgid "Import Translation"
+#~ msgstr "Übersetzung importieren"
+
+#~ msgid "Source CSV:"
+#~ msgstr "Quell-CSV:"
+
+#~ msgid "Ignore First Row"
+#~ msgstr "Erste Zeile ignorieren"
+
+#~ msgid "Compress"
+#~ msgstr "Komprimieren"
+
+#~ msgid "Add to Project (project.godot)"
+#~ msgstr "Zu Projekt hinzufügen (project.godot)"
+
+#~ msgid "Import Languages:"
+#~ msgstr "Sprachen importieren:"
+
+#~ msgid "Translation"
+#~ msgstr "Übersetzung"
+
+#~ msgid "Parsing %d Triangles:"
+#~ msgstr "Analysiere %d Dreiecke:"
+
+#~ msgid "Triangle #"
+#~ msgstr "Dreieck #"
+
+#~ msgid "Light Baker Setup:"
+#~ msgstr "Light-Baker einrichten:"
+
+#~ msgid "Fixing Lights"
+#~ msgstr "Fixiere Lampen"
+
+#~ msgid "Making BVH"
+#~ msgstr "Erstelle BVH"
+
+#~ msgid "Transfer to Lightmaps:"
+#~ msgstr "übertrage zu Lightmaps:"
+
+#~ msgid "Allocating Texture #"
+#~ msgstr "Zuweisen von Textur #"
+
+#~ msgid "Baking Triangle #"
+#~ msgstr "Baking von Dreieck #"
+
+#~ msgid "Post-Processing Texture #"
+#~ msgstr "Nachbearbeiten von Textur #"
+
+#~ msgid "Reset the lightmap octree baking process (start over)."
+#~ msgstr "Lightmap-Octree-Backing-Prozess zurücksetzen (neu starten)."
+
+#~ msgid "Zoom (%):"
+#~ msgstr "Vergrößerung (%):"
+
+#~ msgid "Skeleton.."
+#~ msgstr "Skelett.."
+
+#~ msgid "Zoom Reset"
+#~ msgstr "Vergrößerung zurücksetzen"
+
+#~ msgid "Zoom Set.."
+#~ msgstr "Vergrößerung setzen.."
+
+#~ msgid "Set a Value"
+#~ msgstr "Einen Wert setzen"
+
+#~ msgid "Snap (Pixels):"
+#~ msgstr "Einrasten (Pixel):"
+
+#~ msgid "Parse BBCode"
+#~ msgstr "BBCode parsen"
+
+#~ msgid "Length:"
+#~ msgstr "Länge:"
+
+#~ msgid "Open Sample File(s)"
+#~ msgstr "Audiodatei(en) öffnen"
+
+#~ msgid "ERROR: Couldn't load sample!"
+#~ msgstr "Fehler: Konnte Audio nicht laden!"
+
+#~ msgid "Add Sample"
+#~ msgstr "Sample hinzufügen"
+
+#~ msgid "Rename Sample"
+#~ msgstr "Sample umbenennen"
+
+#~ msgid "Delete Sample"
+#~ msgstr "Sample löschen"
+
+#~ msgid "16 Bits"
+#~ msgstr "16 Bit"
+
+#~ msgid "8 Bits"
+#~ msgstr "8 Bit"
+
+#~ msgid "Stereo"
+#~ msgstr "Stereo"
+
+#~ msgid "Mono"
+#~ msgstr "Mono"
+
+#~ msgid "Pitch"
+#~ msgstr "Tonhöhe"
+
+#~ msgid "Window"
+#~ msgstr "Fenster"
+
+#~ msgid "Move Right"
+#~ msgstr "nach rechts"
+
+#~ msgid "Scaling to %s%%."
+#~ msgstr "Skaliere auf %s%%."
+
+#~ msgid "Up"
+#~ msgstr "Hoch"
+
+#~ msgid "Down"
+#~ msgstr "Herunter"
+
+#~ msgid "Bucket"
+#~ msgstr "Eimer"
+
+#~ msgid "Invalid project path, the path must exist!"
+#~ msgstr "Ungültiger Projektpfad, der Pfad muss existieren!"
+
+#~ msgid "Invalid project path, project.godot must not exist."
+#~ msgstr "Ungültiger Projektpfad, project.godot darf nicht existieren."
+
+#~ msgid "Invalid project path, project.godot must exist."
+#~ msgstr "Ungültiger Projektpfad, project.godot muss existieren."
+
+#~ msgid "Project Path (Must Exist):"
+#~ msgstr "Projektpfad (muss existieren):"
+
+#~ msgid "Create New Resource"
+#~ msgstr "Erstelle neue Ressource"
+
+#~ msgid "Open Resource"
+#~ msgstr "Ressource öffnen"
+
+#~ msgid "Save Resource"
+#~ msgstr "Ressource speichern"
+
+#~ msgid "Resource Tools"
+#~ msgstr "Ressourcenwerkzeuge"
+
+#~ msgid "Make Local"
+#~ msgstr "Lokal machen"
+
+#~ msgid "Edit Groups"
+#~ msgstr "Gruppen bearbeiten"
+
+#~ msgid "Edit Connections"
+#~ msgstr "Verbindungen bearbeiten"
+
+#~ msgid "GridMap Paint"
+#~ msgstr "GridMap zeichnen"
+
+#~ msgid "Tiles"
+#~ msgstr "Kacheln"
+
+#~ msgid "Areas"
+#~ msgstr "Bereiche"
+
+#~ msgid "Ctrl+"
+#~ msgstr "Strg+"
+
#~ msgid "Close scene? (Unsaved changes will be lost)"
#~ msgstr "Szene schließen? (Nicht gespeicherte Änderungen gehen verloren)"
@@ -8058,9 +8354,6 @@ msgstr ""
#~ msgid "Close Goto Prev. Scene"
#~ msgstr "Schließen und zur letzten Szene wechseln"
-#~ msgid "Expand to Parent"
-#~ msgstr "Auf übergeordnetes Node ausdehnen"
-
#~ msgid "Del"
#~ msgstr "Entfernen"
@@ -8226,18 +8519,12 @@ msgstr ""
#~ msgid "Save Translatable Strings"
#~ msgstr "Speichere übersetzbare Zeichenketten"
-#~ msgid "Translatable Strings.."
-#~ msgstr "Übersetzbare Textbausteine.."
-
#~ msgid "Install Export Templates"
#~ msgstr "Exportvorlagen installieren"
#~ msgid "Edit Script Options"
#~ msgstr "Skriptoptionen bearbeiten"
-#~ msgid "Please export outside the project folder!"
-#~ msgstr "Bitte außerhalb des Projektordners exportieren!"
-
#~ msgid "Error exporting project!"
#~ msgstr "Fehler beim Exportieren des Projekts!"
@@ -8296,18 +8583,12 @@ msgstr ""
#~ msgid "Include"
#~ msgstr "Einbeziehen"
-#~ msgid "Change Image Group"
-#~ msgstr "Ändere Bildergruppe"
-
#~ msgid "Group name can't be empty!"
#~ msgstr "Gruppenname muss vorhanden sein!"
#~ msgid "Invalid character in group name!"
#~ msgstr "Ungültiges Zeichen in Gruppenname!"
-#~ msgid "Group name already exists!"
-#~ msgstr "Gruppenname existiert bereits!"
-
#~ msgid "Add Image Group"
#~ msgstr "Füge Bildergruppe hinzu"
@@ -8387,9 +8668,6 @@ msgstr ""
#~ msgid "Preview Atlas"
#~ msgstr "Zeige Atlas-Vorschau"
-#~ msgid "Image Filter:"
-#~ msgstr "Bildfilter:"
-
#~ msgid "Images:"
#~ msgstr "Bilder:"
@@ -8456,9 +8734,6 @@ msgstr ""
#~ msgid "Lighting"
#~ msgstr "Belichtung"
-#~ msgid "Toggle Persisting"
-#~ msgstr "Persistente an- und ausschalten"
-
#~ msgid "Global"
#~ msgstr "Global"
diff --git a/editor/translations/de_CH.po b/editor/translations/de_CH.po
index c5234c20d9..8c9e4cc1de 100644
--- a/editor/translations/de_CH.po
+++ b/editor/translations/de_CH.po
@@ -1,5 +1,6 @@
# Swiss High German translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# Christian Fisch <christian.fiesel@gmail.com>, 2016.
@@ -191,10 +192,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr "Erstelle %d in neuer Ebene inklusiv Bild?"
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -356,265 +356,6 @@ msgstr ""
msgid "Change Array Value"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "View Files"
-msgstr "Datei(en) öffnen"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect to host:"
-msgstr "Verbindung zu Node:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Connecting.."
-msgstr "Connections editieren"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Requesting.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Error making request"
-msgstr "Szene kann nicht gespeichert werden."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr ""
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr ""
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr ""
@@ -651,6 +392,14 @@ msgstr ""
msgid "Selection Only"
msgstr ""
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr ""
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr ""
@@ -683,11 +432,11 @@ msgstr ""
msgid "Skip"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr ""
@@ -755,6 +504,20 @@ msgstr ""
msgid "Oneshot"
msgstr ""
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr ""
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr ""
@@ -780,7 +543,7 @@ msgstr ""
msgid "Disconnect"
msgstr ""
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr ""
@@ -797,12 +560,25 @@ msgstr ""
msgid "Recent:"
msgstr ""
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr ""
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr ""
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr ""
@@ -858,6 +634,10 @@ msgid "Owners Of:"
msgstr ""
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr ""
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -865,7 +645,7 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
+msgid "Cannot remove:\n"
msgstr ""
#: editor/dependency_editor.cpp
@@ -932,10 +712,6 @@ msgid "Godot Engine contributors"
msgstr ""
#: editor/editor_about.cpp
-msgid "Authors"
-msgstr ""
-
-#: editor/editor_about.cpp
#, fuzzy
msgid "Project Founders"
msgstr "Projekt exportieren"
@@ -953,6 +729,38 @@ msgid "Developers"
msgstr ""
#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
msgid "License"
msgstr ""
@@ -993,6 +801,16 @@ msgid "Package Installed Successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
msgstr ""
@@ -1042,10 +860,6 @@ msgid "Audio Bus, Drag and Drop to rearrange."
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
msgid "Solo"
msgstr ""
@@ -1057,12 +871,20 @@ msgstr ""
msgid "Bypass"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Reset Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Delete Effect"
msgstr ""
@@ -1085,6 +907,10 @@ msgid "Duplicate Audio Bus"
msgstr "Node(s) duplizieren"
#: editor/editor_audio_buses.cpp
+msgid "Reset Bus Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
#, fuzzy
msgid "Move Audio Bus"
msgstr "Bild bewegen/einfügen"
@@ -1117,7 +943,8 @@ msgstr ""
msgid "Create a new Bus Layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
@@ -1207,7 +1034,7 @@ msgid "Rearrange Autoloads"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr ""
@@ -1215,9 +1042,7 @@ msgstr ""
msgid "Node Name:"
msgstr ""
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr ""
@@ -1250,18 +1075,19 @@ msgid "Choose a Directory"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr ""
@@ -1281,30 +1107,6 @@ msgstr ""
msgid "Template file not found:\n"
msgstr ""
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr ""
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "Datei existiert, Überschreiben?"
@@ -1389,6 +1191,10 @@ msgstr ""
msgid "Move Favorite Down"
msgstr ""
+#: editor/editor_file_dialog.cpp
+msgid "Go to parent folder"
+msgstr ""
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr ""
@@ -1403,10 +1209,6 @@ msgid "File:"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr ""
@@ -1431,6 +1233,10 @@ msgstr ""
msgid "Search Classes"
msgstr ""
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr ""
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr ""
@@ -1447,15 +1253,27 @@ msgstr ""
msgid "Brief Description:"
msgstr ""
+#: editor/editor_help.cpp
+msgid "Members"
+msgstr ""
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Public Methods"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr ""
#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr ""
@@ -1464,6 +1282,10 @@ msgid "Signals:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Enumerations"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Enumerations:"
msgstr ""
@@ -1472,18 +1294,47 @@ msgid "enum "
msgstr ""
#: editor/editor_help.cpp
+msgid "Constants"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Description"
+msgstr "Script hinzufügen"
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Property Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Methods"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr ""
@@ -1492,24 +1343,21 @@ msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr ""
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr ""
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1526,6 +1374,29 @@ msgid "Error while saving."
msgstr ""
#: editor/editor_node.cpp
+msgid "Can't open '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while parsing '%s'."
+msgstr "Fehler beim Instanzieren der %s Szene"
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Missing '%s' or its dependencies."
+msgstr "Szene '%s' hat kapute Abhängigkeiten:"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while loading '%s'."
+msgstr "Fehler beim Instanzieren der %s Szene"
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr ""
@@ -1584,6 +1455,33 @@ msgid "Restored default layout to base settings."
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr ""
@@ -1749,23 +1647,35 @@ msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "Fehler beim Instanzieren der %s Szene"
+
+#: editor/editor_node.cpp
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -1775,7 +1685,7 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr ""
@@ -1786,14 +1696,14 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp
-msgid "Error loading scene."
-msgstr ""
-
-#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
msgstr "Szene '%s' hat kapute Abhängigkeiten:"
#: editor/editor_node.cpp
+msgid "Clear Recent Scenes"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save Layout"
msgstr ""
@@ -1826,7 +1736,7 @@ msgstr ""
msgid "Toggle distraction-free mode."
msgstr ""
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr ""
@@ -2050,6 +1960,10 @@ msgstr ""
msgid "Issue Tracker"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "About"
msgstr ""
@@ -2058,7 +1972,7 @@ msgstr ""
msgid "Play the project."
msgstr "Projekt starten."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr "Abspielen"
@@ -2074,7 +1988,7 @@ msgstr ""
msgid "Stop the scene."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr ""
@@ -2148,6 +2062,15 @@ msgid "Object properties."
msgstr ""
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr ""
@@ -2163,14 +2086,6 @@ msgstr ""
msgid "Don't Save"
msgstr ""
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr ""
-
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
@@ -2234,11 +2149,28 @@ msgstr ""
msgid "Open the previous Editor"
msgstr ""
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr ""
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr ""
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr ""
@@ -2271,7 +2203,7 @@ msgid "Frame %"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+msgid "Physics Frame %"
msgstr ""
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2290,26 +2222,6 @@ msgstr ""
msgid "Frame #:"
msgstr ""
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr ""
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2420,10 +2332,6 @@ msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr ""
@@ -2457,9 +2365,17 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
+"Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2469,89 +2385,90 @@ msgid ""
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
+msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
+msgid "Cannot move a folder into itself.\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
-msgstr ""
+#, fuzzy
+msgid "Error moving:\n"
+msgstr "Szene kann nicht gespeichert werden."
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
-msgstr ""
+#, fuzzy
+msgid "Unable to update dependencies:\n"
+msgstr "Szene '%s' hat kapute Abhängigkeiten:"
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "No name provided"
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error moving file:\n"
-msgstr "Szene kann nicht gespeichert werden."
+msgid "Provided name contains invalid characters"
+msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "Szene kann nicht gespeichert werden."
+msgid "No name provided."
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
+msgid "Name contains invalid characters."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
+msgid "A file or folder with this name already exists."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
-msgstr ""
+#, fuzzy
+msgid "Renaming file:"
+msgstr "Szene kann nicht gespeichert werden."
#: editor/filesystem_dock.cpp
-msgid "Expand all"
+msgid "Renaming folder:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Collapse all"
+msgid "Expand all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
+msgid "Collapse all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Instance"
+msgid "Copy Path"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
+msgid "Rename.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
+msgid "Move To.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
+msgid "New Folder.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
+msgid "Show In File Manager"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move To.."
+msgid "Instance"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Info"
+msgid "Edit Dependencies.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
+msgid "View Owners.."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2584,6 +2501,11 @@ msgstr ""
msgid "Move"
msgstr ""
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr ""
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr ""
@@ -2597,6 +2519,10 @@ msgid "Import as Single Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -2609,6 +2535,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
msgstr ""
@@ -2617,38 +2555,31 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr ""
@@ -2677,587 +2608,58 @@ msgstr ""
msgid "Reimport"
msgstr ""
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
+#: editor/multi_node_edit.cpp
#, fuzzy
-msgid "Error initializing FreeType."
-msgstr "Fehler bei der FreeType Inizialisierung."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "Oberfläche %d"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Abbrechen"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr "Importiere Texturen für Atlas (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr "Importiere Große Texturen (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
-msgstr "Importiere Texturen für 2D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
-msgstr "2D-Textur"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
-msgstr ""
+msgid "MultiNode Set"
+msgstr "MultiNode Set"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
+#: editor/node_dock.cpp
+msgid "Groups"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/node_dock.cpp
#, fuzzy
-msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-"MERKE: Das importieren von 2D Texturen ist nicht zwingend notwendig. Kopiere "
-"einfach png/jpg Dateien in das Projekt."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr ""
+msgid "Select a Node to edit Signals and Groups."
+msgstr "Selektiere ein Node um deren Signale und Gruppen zu ändern."
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
msgstr ""
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
msgstr ""
-#: editor/io_plugins/editor_translation_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
#, fuzzy
-msgid "Add to Project (project.godot)"
-msgstr "Zum Projekt hinzufügen (engine.cfg)"
+msgid "Insert Point"
+msgstr "Bild einfügen"
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
msgstr ""
-#: editor/multi_node_edit.cpp
-#, fuzzy
-msgid "MultiNode Set"
-msgstr "MultiNode Set"
-
-#: editor/node_dock.cpp
-msgid "Groups"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
msgstr ""
-#: editor/node_dock.cpp
-#, fuzzy
-msgid "Select a Node to edit Signals and Groups."
-msgstr "Selektiere ein Node um deren Signale und Gruppen zu ändern."
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Toggle Autoplay"
@@ -3417,7 +2819,6 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3528,10 +2929,6 @@ msgid "Delete Input"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr ""
@@ -3587,64 +2984,185 @@ msgstr "Node Filter editieren"
msgid "Filters.."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "View Files"
+msgstr "Datei(en) öffnen"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Can't connect to host:"
+msgstr "Verbindung zu Node:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Connecting.."
+msgstr "Connections editieren"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Error making request"
+msgstr "Szene kann nicht gespeichert werden."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3687,11 +3205,15 @@ msgid "Edit CanvasItem"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+msgid "Anchors only"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors and Margins"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
+msgid "Change Anchors"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3744,59 +3266,72 @@ msgid "Pan Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
+msgid "Toggles snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
+msgid "Snapping options"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
+msgid "Snap to grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
+msgid "Use Rotation Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Configure Snap..."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
+msgid "Snap Relative"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
+msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
+msgid "Smart snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
+msgid "Snap to parent"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
+msgid "Snap to node anchor"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
+msgid "Makes sure the object's children are not selectable."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3825,11 +3360,16 @@ msgid "View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
+msgid "Show helpers"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show rulers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3841,7 +3381,7 @@ msgid "Frame Selection"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
+msgid "Layout"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3866,11 +3406,20 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
+msgid "Drag pivot from mouse position"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "Ungültige Bilder löschen"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
+msgid "Divide grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3881,23 +3430,28 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr "Node erstellen"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr "Fehler beim Instanzieren der %s Szene"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr "Okay :("
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr "Bitte nur ein Node selektieren."
@@ -3912,45 +3466,6 @@ msgid ""
"Drag & drop + Alt : Change node type"
msgstr ""
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3960,14 +3475,6 @@ msgid "Set Handle"
msgstr ""
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr ""
@@ -3990,6 +3497,26 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease in"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
msgstr ""
@@ -4068,22 +3595,18 @@ msgid "Create Occluder Polygon"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr ""
@@ -4184,6 +3707,10 @@ msgid "Create Outline"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr ""
@@ -4312,12 +3839,72 @@ msgstr ""
msgid "Populate"
msgstr ""
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create Navigation Polygon"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Marking walkable triangles..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Partitioning..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
msgstr ""
#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
+msgid "Create Navigation Polygon"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -4496,16 +4083,19 @@ msgid "Curve Point #"
msgstr ""
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
-msgstr ""
+msgstr "Ungültige Bilder löschen"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
-msgstr ""
+msgstr "Ungültige Bilder löschen"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
-msgstr ""
+msgstr "Ungültige Bilder löschen"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4564,6 +4154,14 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr ""
@@ -4618,63 +4216,10 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr ""
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr ""
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr ""
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
@@ -4765,6 +4310,10 @@ msgstr ""
msgid "Close All"
msgstr ""
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
msgstr ""
@@ -4793,7 +4342,8 @@ msgstr ""
msgid "Break"
msgstr ""
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr ""
@@ -4806,18 +4356,6 @@ msgid "Debug with external editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
msgstr ""
@@ -4899,8 +4437,9 @@ msgid "Cut"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr ""
@@ -5165,10 +4704,6 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr ""
@@ -5185,10 +4720,6 @@ msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr ""
@@ -5420,6 +4951,10 @@ msgid "Transform"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr ""
@@ -5565,6 +5100,10 @@ msgid "Speed (FPS):"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr ""
@@ -5577,11 +5116,12 @@ msgid "Insert Empty (After)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr ""
+#, fuzzy
+msgid "Move (Before)"
+msgstr "Node(s) entfernen"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
+msgid "Move (After)"
msgstr ""
#: editor/plugins/style_box_editor_plugin.cpp
@@ -5660,7 +5200,11 @@ msgid "Remove All"
msgstr "Ungültige Bilder löschen"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
@@ -5745,6 +5289,10 @@ msgid "Style"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr ""
@@ -5793,7 +5341,7 @@ msgid "Mirror Y"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
+msgid "Paint Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5857,6 +5405,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr ""
@@ -5930,33 +5482,60 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
-msgstr "Ungültiger Projektpfad, Pfad existiert nicht!"
+msgid "The path does not exist."
+msgstr ""
#: editor/project_manager.cpp
#, fuzzy
-msgid "Invalid project path, project.godot must not exist."
-msgstr "Ungültiger Projektpfad, engine.cfg vorhanden!"
+msgid "Please choose a 'project.godot' file."
+msgstr "Bitte ausserhalb des Projekt Verzeichnis exportieren!"
#: editor/project_manager.cpp
-#, fuzzy
-msgid "Invalid project path, project.godot must exist."
-msgstr "Ungültiger Projektpfad, engine.cfg nicht vorhanden!"
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose a folder that does not contain a 'project.godot' file."
+msgstr ""
#: editor/project_manager.cpp
msgid "Imported Project"
msgstr "Importierte Projekte"
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr "Ungültiger Projektpfad, (wurde was geändert?)!"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Couldn't get project.godot in project path."
+msgstr "Die engine.cfg kann im Projektverzeichnis nicht erstellt werden."
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't edit project.godot in project path."
+msgstr "Die engine.cfg kann im Projektverzeichnis nicht erstellt werden."
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Couldn't create project.godot in project path."
msgstr "Die engine.cfg kann im Projektverzeichnis nicht erstellt werden."
@@ -5965,35 +5544,46 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Import Existing Project"
-msgstr "Existierendes Projekt importieren"
+#, fuzzy
+msgid "Rename Project"
+msgstr "Neues Projekt erstellen"
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
-msgstr "Projektpfad (muss existieren):"
+#, fuzzy
+msgid "Couldn't get project.godot in the project path."
+msgstr "Die engine.cfg kann im Projektverzeichnis nicht erstellt werden."
#: editor/project_manager.cpp
-msgid "Project Name:"
-msgstr "Projektname:"
+msgid "New Game Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Import Existing Project"
+msgstr "Existierendes Projekt importieren"
#: editor/project_manager.cpp
msgid "Create New Project"
msgstr "Neues Projekt erstellen"
#: editor/project_manager.cpp
-msgid "Project Path:"
+msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Install Project:"
-msgstr ""
+msgid "Project Name:"
+msgstr "Projektname:"
#: editor/project_manager.cpp
-msgid "Browse"
+#, fuzzy
+msgid "Create folder"
+msgstr "Node erstellen"
+
+#: editor/project_manager.cpp
+msgid "Project Path:"
msgstr ""
#: editor/project_manager.cpp
-msgid "New Game Project"
+msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
@@ -6005,6 +5595,11 @@ msgid "Unnamed Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't open project"
+msgstr "Neues Projekt erstellen"
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr ""
@@ -6031,16 +5626,18 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
-"You are about the scan %s folders for existing Godot projects. Do you "
-"confirm?"
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project List"
+msgid ""
+"You are about the scan %s folders for existing Godot projects. Do you "
+"confirm?"
msgstr ""
#: editor/project_manager.cpp
-msgid "Run"
+msgid "Project List"
msgstr ""
#: editor/project_manager.cpp
@@ -6065,6 +5662,10 @@ msgid "Exit"
msgstr ""
#: editor/project_manager.cpp
+msgid "Restart Now"
+msgstr ""
+
+#: editor/project_manager.cpp
#, fuzzy
msgid "Can't run project"
msgstr "Neues Projekt erstellen"
@@ -6102,17 +5703,14 @@ msgid "Add Input Action Event"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
@@ -6174,7 +5772,7 @@ msgstr "Typ ändern"
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr ""
@@ -6194,31 +5792,31 @@ msgstr ""
msgid "Add Event"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr ""
@@ -6227,7 +5825,7 @@ msgid "Add Global Property"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6244,6 +5842,15 @@ msgid "Delete Item"
msgstr "Node(s) löschen"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Can't contain '/' or ':'"
+msgstr "Verbindung zu Node:"
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
@@ -6285,6 +5892,15 @@ msgstr ""
#: editor/project_settings_editor.cpp
#, fuzzy
+msgid "Changed Locale Filter"
+msgstr "Typ ändern"
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Project Settings (project.godot)"
msgstr "Projekteinstellungen"
@@ -6345,6 +5961,27 @@ msgid "Locale"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Locales Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show all locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "Node erstellen"
+
+#: editor/project_settings_editor.cpp
+msgid "Locales:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -6395,10 +6032,19 @@ msgid "New Script"
msgstr "Script hinzufügen"
#: editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr ""
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Convert To %s"
+msgstr "Verbindung zu Node:"
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr ""
@@ -6437,6 +6083,10 @@ msgid "Select Property"
msgstr ""
#: editor/property_selector.cpp
+msgid "Select Virtual Method"
+msgstr ""
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr ""
@@ -6464,26 +6114,6 @@ msgstr ""
msgid "Reparent"
msgstr ""
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr ""
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr ""
@@ -6611,14 +6241,6 @@ msgid "Sub-Resources:"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr "Connections editieren"
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr ""
@@ -6806,6 +6428,15 @@ msgid "Invalid base path"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "File exists, will be reused"
+msgstr "Datei existiert, Überschreiben?"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr ""
@@ -6847,6 +6478,10 @@ msgid "Load existing script file"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Inherits"
msgstr ""
@@ -6889,6 +6524,10 @@ msgid "Function:"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr ""
@@ -6969,6 +6608,10 @@ msgid "Type"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr ""
@@ -7044,12 +6687,28 @@ msgstr ""
msgid "Change Probe Extents"
msgstr ""
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Library"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Status"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr ""
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr ""
@@ -7099,10 +6758,6 @@ msgid "GridMap Duplicate Selection"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Snap View"
msgstr ""
@@ -7197,13 +6852,8 @@ msgstr "Projekteinstellungen"
msgid "Pick Distance:"
msgstr ""
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr "Datei(en) öffnen"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7406,10 +7056,18 @@ msgid "Return"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Input Value"
msgstr "Typ ändern"
@@ -7795,6 +7453,12 @@ msgid ""
"order for AnimatedSprite3D to display frames."
msgstr ""
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
#, fuzzy
msgid "Raw Mode"
@@ -7805,6 +7469,10 @@ msgid "Add current color as a preset"
msgstr ""
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr "Alert!"
@@ -7812,10 +7480,6 @@ msgstr "Alert!"
msgid "Please Confirm..."
msgstr "Bitte bestätigen..."
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr ""
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -7844,6 +7508,71 @@ msgid ""
"texture to some node for display."
msgstr ""
+#: scene/resources/dynamic_font.cpp
+#, fuzzy
+msgid "Error initializing FreeType."
+msgstr "Fehler bei der FreeType Inizialisierung."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr ""
+
+#~ msgid "Surface %d"
+#~ msgstr "Oberfläche %d"
+
+#~ msgid "Import Textures for Atlas (2D)"
+#~ msgstr "Importiere Texturen für Atlas (2D)"
+
+#~ msgid "Import Large Textures (2D)"
+#~ msgstr "Importiere Große Texturen (2D)"
+
+#~ msgid "Import Textures for 2D"
+#~ msgstr "Importiere Texturen für 2D"
+
+#~ msgid "2D Texture"
+#~ msgstr "2D-Textur"
+
+#, fuzzy
+#~ msgid ""
+#~ "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files "
+#~ "to the project."
+#~ msgstr ""
+#~ "MERKE: Das importieren von 2D Texturen ist nicht zwingend notwendig. "
+#~ "Kopiere einfach png/jpg Dateien in das Projekt."
+
+#, fuzzy
+#~ msgid "Add to Project (project.godot)"
+#~ msgstr "Zum Projekt hinzufügen (engine.cfg)"
+
+#~ msgid "Invalid project path, the path must exist!"
+#~ msgstr "Ungültiger Projektpfad, Pfad existiert nicht!"
+
+#, fuzzy
+#~ msgid "Invalid project path, project.godot must not exist."
+#~ msgstr "Ungültiger Projektpfad, engine.cfg vorhanden!"
+
+#, fuzzy
+#~ msgid "Invalid project path, project.godot must exist."
+#~ msgstr "Ungültiger Projektpfad, engine.cfg nicht vorhanden!"
+
+#~ msgid "Project Path (Must Exist):"
+#~ msgstr "Projektpfad (muss existieren):"
+
+#~ msgid "Edit Connections"
+#~ msgstr "Connections editieren"
+
+#, fuzzy
+#~ msgid "Tiles"
+#~ msgstr "Datei(en) öffnen"
+
#, fuzzy
#~ msgid "Error creating the signature object."
#~ msgstr "Fehler beim Schreiben des Projekts PCK!"
@@ -7879,9 +7608,6 @@ msgstr ""
#~ "SampleLibrary Ressource in der 'samples' Eigenschaft erzeugt oder "
#~ "definiert werden."
-#~ msgid "Please export outside the project folder!"
-#~ msgstr "Bitte ausserhalb des Projekt Verzeichnis exportieren!"
-
#~ msgid "Error exporting project!"
#~ msgstr "Fehler beim Exportieren des Projekts!"
diff --git a/editor/translations/editor.pot b/editor/translations/editor.pot
index a1247ab925..efddb63796 100644
--- a/editor/translations/editor.pot
+++ b/editor/translations/editor.pot
@@ -186,10 +186,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr ""
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -351,261 +350,6 @@ msgstr ""
msgid "Change Array Value"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connecting.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Requesting.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Error making request"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr ""
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr ""
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr ""
@@ -642,6 +386,14 @@ msgstr ""
msgid "Selection Only"
msgstr ""
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr ""
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr ""
@@ -674,11 +426,11 @@ msgstr ""
msgid "Skip"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr ""
@@ -745,6 +497,20 @@ msgstr ""
msgid "Oneshot"
msgstr ""
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr ""
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr ""
@@ -770,7 +536,7 @@ msgstr ""
msgid "Disconnect"
msgstr ""
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr ""
@@ -787,12 +553,25 @@ msgstr ""
msgid "Recent:"
msgstr ""
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr ""
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr ""
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr ""
@@ -848,6 +627,10 @@ msgid "Owners Of:"
msgstr ""
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr ""
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -855,7 +638,7 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
+msgid "Cannot remove:\n"
msgstr ""
#: editor/dependency_editor.cpp
@@ -922,10 +705,6 @@ msgid "Godot Engine contributors"
msgstr ""
#: editor/editor_about.cpp
-msgid "Authors"
-msgstr ""
-
-#: editor/editor_about.cpp
msgid "Project Founders"
msgstr ""
@@ -942,6 +721,38 @@ msgid "Developers"
msgstr ""
#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
msgid "License"
msgstr ""
@@ -982,6 +793,16 @@ msgid "Package Installed Successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
msgstr ""
@@ -1030,10 +851,6 @@ msgid "Audio Bus, Drag and Drop to rearrange."
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
msgid "Solo"
msgstr ""
@@ -1045,12 +862,20 @@ msgstr ""
msgid "Bypass"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Reset Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Delete Effect"
msgstr ""
@@ -1071,6 +896,10 @@ msgid "Duplicate Audio Bus"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Reset Bus Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Move Audio Bus"
msgstr ""
@@ -1102,7 +931,8 @@ msgstr ""
msgid "Create a new Bus Layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
@@ -1192,7 +1022,7 @@ msgid "Rearrange Autoloads"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr ""
@@ -1200,9 +1030,7 @@ msgstr ""
msgid "Node Name:"
msgstr ""
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr ""
@@ -1235,18 +1063,19 @@ msgid "Choose a Directory"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr ""
@@ -1266,30 +1095,6 @@ msgstr ""
msgid "Template file not found:\n"
msgstr ""
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr ""
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr ""
@@ -1374,6 +1179,10 @@ msgstr ""
msgid "Move Favorite Down"
msgstr ""
+#: editor/editor_file_dialog.cpp
+msgid "Go to parent folder"
+msgstr ""
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr ""
@@ -1388,10 +1197,6 @@ msgid "File:"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr ""
@@ -1416,6 +1221,10 @@ msgstr ""
msgid "Search Classes"
msgstr ""
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr ""
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr ""
@@ -1432,15 +1241,27 @@ msgstr ""
msgid "Brief Description:"
msgstr ""
+#: editor/editor_help.cpp
+msgid "Members"
+msgstr ""
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Public Methods"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr ""
#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr ""
@@ -1449,6 +1270,10 @@ msgid "Signals:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Enumerations"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Enumerations:"
msgstr ""
@@ -1457,18 +1282,46 @@ msgid "enum "
msgstr ""
#: editor/editor_help.cpp
+msgid "Constants"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Description"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Property Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Methods"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr ""
@@ -1477,24 +1330,21 @@ msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr ""
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr ""
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1511,6 +1361,26 @@ msgid "Error while saving."
msgstr ""
#: editor/editor_node.cpp
+msgid "Can't open '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error while parsing '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error while loading '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr ""
@@ -1568,6 +1438,33 @@ msgid "Restored default layout to base settings."
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr ""
@@ -1729,23 +1626,34 @@ msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+msgid "Unable to load addon script from path: '%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -1755,7 +1663,7 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr ""
@@ -1766,11 +1674,11 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp
-msgid "Error loading scene."
+msgid "Scene '%s' has broken dependencies:"
msgstr ""
#: editor/editor_node.cpp
-msgid "Scene '%s' has broken dependencies:"
+msgid "Clear Recent Scenes"
msgstr ""
#: editor/editor_node.cpp
@@ -1806,7 +1714,7 @@ msgstr ""
msgid "Toggle distraction-free mode."
msgstr ""
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr ""
@@ -2025,6 +1933,10 @@ msgstr ""
msgid "Issue Tracker"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "About"
msgstr ""
@@ -2033,7 +1945,7 @@ msgstr ""
msgid "Play the project."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr ""
@@ -2049,7 +1961,7 @@ msgstr ""
msgid "Stop the scene."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr ""
@@ -2122,6 +2034,15 @@ msgid "Object properties."
msgstr ""
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr ""
@@ -2137,14 +2058,6 @@ msgstr ""
msgid "Don't Save"
msgstr ""
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr ""
-
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
@@ -2205,11 +2118,28 @@ msgstr ""
msgid "Open the previous Editor"
msgstr ""
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr ""
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr ""
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr ""
@@ -2242,7 +2172,7 @@ msgid "Frame %"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+msgid "Physics Frame %"
msgstr ""
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2261,26 +2191,6 @@ msgstr ""
msgid "Frame #:"
msgstr ""
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr ""
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2390,10 +2300,6 @@ msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr ""
@@ -2426,9 +2332,17 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
+"Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2438,87 +2352,87 @@ msgid ""
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
+msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
+msgid "Cannot move a folder into itself.\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
+msgid "Error moving:\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
+msgid "Unable to update dependencies:\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "No name provided"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving file:\n"
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving dir:\n"
+msgid "No name provided."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
+msgid "Name contains invalid characters."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
+msgid "A file or folder with this name already exists."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
+msgid "Renaming file:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Expand all"
+msgid "Renaming folder:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Collapse all"
+msgid "Expand all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
+msgid "Collapse all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Instance"
+msgid "Copy Path"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
+msgid "Rename.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
+msgid "Move To.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
+msgid "New Folder.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
+msgid "Show In File Manager"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move To.."
+msgid "Instance"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Info"
+msgid "Edit Dependencies.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
+msgid "View Owners.."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2551,6 +2465,11 @@ msgstr ""
msgid "Move"
msgstr ""
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr ""
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr ""
@@ -2564,6 +2483,10 @@ msgid "Import as Single Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -2576,6 +2499,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
msgstr ""
@@ -2584,38 +2519,31 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr ""
@@ -2643,579 +2571,54 @@ msgstr ""
msgid "Reimport"
msgstr ""
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
+#: editor/node_dock.cpp
+msgid "Groups"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr ""
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Select a Node to edit Signals and Groups."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -3371,7 +2774,6 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3481,10 +2883,6 @@ msgid "Delete Input"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr ""
@@ -3540,64 +2938,181 @@ msgstr ""
msgid "Filters.."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3640,11 +3155,15 @@ msgid "Edit CanvasItem"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+msgid "Anchors only"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
+msgid "Change Anchors and Margins"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3695,59 +3214,72 @@ msgid "Pan Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
+msgid "Toggles snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
+msgid "Snapping options"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
+msgid "Snap to grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
+msgid "Use Rotation Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Configure Snap..."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
+msgid "Snap Relative"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
+msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
+msgid "Smart snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
+msgid "Snap to parent"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
+msgid "Snap to node anchor"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
+msgid "Restores the object's children's ability to be selected."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3776,11 +3308,16 @@ msgid "View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show helpers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
+msgid "Show rulers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3792,7 +3329,7 @@ msgid "Frame Selection"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
+msgid "Layout"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3816,11 +3353,19 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
+msgid "Drag pivot from mouse position"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Set pivot at mouse position"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
+msgid "Multiply grid step by 2"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Divide grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3831,23 +3376,28 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr ""
@@ -3861,45 +3411,6 @@ msgid ""
"Drag & drop + Alt : Change node type"
msgstr ""
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3909,14 +3420,6 @@ msgid "Set Handle"
msgstr ""
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr ""
@@ -3939,6 +3442,26 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease in"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
msgstr ""
@@ -4014,22 +3537,18 @@ msgid "Create Occluder Polygon"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr ""
@@ -4130,6 +3649,10 @@ msgid "Create Outline"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr ""
@@ -4257,12 +3780,72 @@ msgstr ""
msgid "Populate"
msgstr ""
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create Navigation Polygon"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Marking walkable triangles..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Partitioning..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
msgstr ""
#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
+msgid "Create Navigation Polygon"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -4504,6 +4087,14 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr ""
@@ -4558,63 +4149,10 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr ""
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr ""
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr ""
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
@@ -4705,6 +4243,10 @@ msgstr ""
msgid "Close All"
msgstr ""
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
msgstr ""
@@ -4733,7 +4275,8 @@ msgstr ""
msgid "Break"
msgstr ""
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr ""
@@ -4746,18 +4289,6 @@ msgid "Debug with external editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
msgstr ""
@@ -4839,8 +4370,9 @@ msgid "Cut"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr ""
@@ -5103,10 +4635,6 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr ""
@@ -5123,10 +4651,6 @@ msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr ""
@@ -5354,6 +4878,10 @@ msgid "Transform"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr ""
@@ -5499,6 +5027,10 @@ msgid "Speed (FPS):"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr ""
@@ -5511,11 +5043,11 @@ msgid "Insert Empty (After)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
+msgid "Move (Before)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
+msgid "Move (After)"
msgstr ""
#: editor/plugins/style_box_editor_plugin.cpp
@@ -5592,7 +5124,11 @@ msgid "Remove All"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
@@ -5677,6 +5213,10 @@ msgid "Style"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr ""
@@ -5725,7 +5265,7 @@ msgid "Mirror Y"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
+msgid "Paint Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5789,6 +5329,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr ""
@@ -5859,19 +5403,29 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
+msgid "The path does not exist."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
+msgid "Please choose a folder that does not contain a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
@@ -5879,10 +5433,26 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't edit project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr ""
@@ -5891,23 +5461,23 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Import Existing Project"
+msgid "Rename Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
+msgid "Couldn't get project.godot in the project path."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Name:"
+msgid "New Game Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Create New Project"
+msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path:"
+msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
@@ -5915,11 +5485,19 @@ msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Browse"
+msgid "Project Name:"
msgstr ""
#: editor/project_manager.cpp
-msgid "New Game Project"
+msgid "Create folder"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Project Path:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
@@ -5931,6 +5509,10 @@ msgid "Unnamed Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Can't open project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr ""
@@ -5957,16 +5539,18 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
-"You are about the scan %s folders for existing Godot projects. Do you "
-"confirm?"
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project List"
+msgid ""
+"You are about the scan %s folders for existing Godot projects. Do you "
+"confirm?"
msgstr ""
#: editor/project_manager.cpp
-msgid "Run"
+msgid "Project List"
msgstr ""
#: editor/project_manager.cpp
@@ -5990,6 +5574,10 @@ msgid "Exit"
msgstr ""
#: editor/project_manager.cpp
+msgid "Restart Now"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -6026,17 +5614,14 @@ msgid "Add Input Action Event"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
@@ -6097,7 +5682,7 @@ msgstr ""
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr ""
@@ -6117,31 +5702,31 @@ msgstr ""
msgid "Add Event"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr ""
@@ -6150,7 +5735,7 @@ msgid "Add Global Property"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6166,6 +5751,14 @@ msgid "Delete Item"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Can't contain '/' or ':'"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
@@ -6206,6 +5799,14 @@ msgid "Remove Resource Remap Option"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
@@ -6266,6 +5867,26 @@ msgid "Locale"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Locales Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show all locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Filter mode:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Locales:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -6314,10 +5935,18 @@ msgid "New Script"
msgstr ""
#: editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr ""
#: editor/property_editor.cpp
+msgid "Convert To %s"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr ""
@@ -6354,6 +5983,10 @@ msgid "Select Property"
msgstr ""
#: editor/property_selector.cpp
+msgid "Select Virtual Method"
+msgstr ""
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr ""
@@ -6381,26 +6014,6 @@ msgstr ""
msgid "Reparent"
msgstr ""
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr ""
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr ""
@@ -6527,14 +6140,6 @@ msgid "Sub-Resources:"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr ""
@@ -6715,6 +6320,14 @@ msgid "Invalid base path"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "File exists, will be reused"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr ""
@@ -6755,6 +6368,10 @@ msgid "Load existing script file"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Inherits"
msgstr ""
@@ -6795,6 +6412,10 @@ msgid "Function:"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr ""
@@ -6875,6 +6496,10 @@ msgid "Type"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr ""
@@ -6950,12 +6575,28 @@ msgstr ""
msgid "Change Probe Extents"
msgstr ""
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Library"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Status"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr ""
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr ""
@@ -7005,10 +6646,6 @@ msgid "GridMap Duplicate Selection"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Snap View"
msgstr ""
@@ -7100,12 +6737,8 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Tiles"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7295,10 +6928,18 @@ msgid "Return"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
msgstr ""
@@ -7652,6 +7293,12 @@ msgid ""
"order for AnimatedSprite3D to display frames."
msgstr ""
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -7661,15 +7308,15 @@ msgid "Add current color as a preset"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Alert!"
+msgid "Cancel"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Please Confirm..."
+msgid "Alert!"
msgstr ""
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
+#: scene/gui/dialogs.cpp
+msgid "Please Confirm..."
msgstr ""
#: scene/gui/popup.cpp
@@ -7699,3 +7346,19 @@ msgid ""
"obtain a size. Otherwise, make it a RenderTarget and assign its internal "
"texture to some node for display."
msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr ""
diff --git a/editor/translations/el.po b/editor/translations/el.po
index 0532753542..02de498110 100644
--- a/editor/translations/el.po
+++ b/editor/translations/el.po
@@ -1,21 +1,22 @@
# Greek translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
-# gtsiam <gtsiam@windowslive.com>, 2017.
+# George Tsiamasiotis <gtsiam@windowslive.com>, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-06-29 17:12+0000\n"
-"Last-Translator: gtsiam <gtsiam@windowslive.com>\n"
+"PO-Revision-Date: 2017-10-24 18:46+0000\n"
+"Last-Translator: George Tsiamasiotis <gtsiam@windowslive.com>\n"
"Language-Team: Greek <https://hosted.weblate.org/projects/godot-engine/godot/"
"el/>\n"
"Language: el\n"
"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 2.15-dev\n"
+"X-Generator: Weblate 2.17\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -191,10 +192,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr "ΔημιουÏγία %d νέων κομματιών και εισαγωγή κλειδιών;"
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -358,262 +358,6 @@ msgstr "Αλλαγή Ï„Ïπου τιμής πίνακα"
msgid "Change Array Value"
msgstr "Αλλαγή τιμής πίνακα"
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr "ΔωÏεάν"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr "Έκδοση:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr "ΠεÏιεχόμενα:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr "ΠÏοβολή αÏχείων"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr "ΠεÏιγÏαφή:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr "Εγκατάσταση"
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "Κλείσιμο"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr "Δεν είναι δυνατή η επίλυση του ονόματος του κεντÏÎ¹ÎºÎ¿Ï Ï…Ï€Î¿Î»Î¿Î³Î¹ÏƒÏ„Î®:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Δεν είναι δυνατή η επίλυση."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr "Σφάλμα σÏνδεσης, παÏακαλώ ξαναπÏοσπαθήστε."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Δεν ήταν δυνατή η σÏνδεση."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr "Δεν ήταν δυνατή η σÏνδεση στον κεντÏικό υπολογιστή:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr "Δεν λήφθηκε απόκÏιση από τον κεντÏικό υπολογιστή:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Δεν λήφθηκε απόκÏιση."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Το αίτημα απέτυχε, κώδικας επιστÏοφής:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr "Το αίτημα απέτυχε."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr "Το αίτημα απέτυχε, πάÏα πολλές ανακατευθήνσεις"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr "Î’Ïόχος ανακατευθήνσεων."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Απέτυχε:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-"Εσφαλμένος κωδικός κατακεÏματισμοÏ, θα θεωÏηθεί ότι το αÏχείο έχει αλοιωθεί."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr "Αναμενόμενο:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr "Δοσμένο:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr "Η δοκιμή κατακεÏÎ¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï sha256 απέτυχε"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr "Σφάλμα λήψης:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr "Επιτυχία!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr "Λήψη:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr "Επίλυση..."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connecting.."
-msgstr "ΣÏνδεση.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Requesting.."
-msgstr "Γίνεται αίτημα.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Error making request"
-msgstr "Σφάλμα κατά την Ï€Ïαγματοποίηση αιτήματος"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr "ΑνενεÏγό"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr "Ξαναδοκίμασε"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr "Σφάλμα λήψης"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr "Η λήψη είναι ήδη σε εξέλιξη!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr "ΠÏώτο"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr "ΠÏοηγοÏμενο"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr "Επόμενο"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr "ΠÏοηγοÏμενο"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "Όλα"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "Αναζήτηση:"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Αναζήτηση"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr "Εισαγωγή"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr "ΠÏόσθετα"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "Ταξινόμηση:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr "ΑντιστÏοφή"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "ΚατηγοÏία:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "ΔιεÏθυνση:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr "ΥποστήÏιξη.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr "Επίσημα"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "Κοινότητα"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr "Δοκιμιμαστικά"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr "ΑÏχείο ZIP των Asset"
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr "Λίστα συναÏτήσεων για '%s':"
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "Κλήση"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr "Λίστα συναÏτήσεων:"
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr "ΠαÏάμετÏοι:"
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr "ΕπιστÏέφει:"
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr "Πήγαινε στη γÏαμμή"
@@ -650,6 +394,14 @@ msgstr "ΟλόκληÏες λέξεις"
msgid "Selection Only"
msgstr "Μόνο στην επιλογή"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Αναζήτηση"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr "ΕÏÏεση"
@@ -682,11 +434,11 @@ msgstr "Ρώτησε στην αντικατάσταση"
msgid "Skip"
msgstr "ΠαÏάλειψη"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "Μεγέθυνση"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr "ΣμÏκÏινση"
@@ -755,6 +507,20 @@ msgstr "Αναβλημένη"
msgid "Oneshot"
msgstr "Μία κλήση"
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "Κλείσιμο"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr "ΣÏνδεση"
@@ -780,7 +546,7 @@ msgstr "ΣÏνδεση.."
msgid "Disconnect"
msgstr "ΑποσÏνδεση"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr "Σήματα"
@@ -797,12 +563,25 @@ msgstr "Αγαπημένα:"
msgid "Recent:"
msgstr "ΠÏόσφατα:"
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "Αναζήτηση:"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr "Αντιστοιχίες:"
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "ΠεÏιγÏαφή:"
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr "Αναζήτηση αντικατάστασης για:"
@@ -862,6 +641,10 @@ msgid "Owners Of:"
msgstr "Ιδιοκτήτες του:"
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr "Îα αφαιÏεθοÏν τα επιλεγμένα αÏχεία από το έÏγο; (ΑδÏνατη η αναίÏεση)"
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -871,8 +654,8 @@ msgstr ""
"Îα αφαιÏεθοÏν; (ΑδÏνατη η αναίÏεση)"
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
-msgstr "Îα αφαιÏεθοÏν τα επιλεγμένα αÏχεία από το έÏγο; (ΑδÏνατη η αναίÏεση)"
+msgid "Cannot remove:\n"
+msgstr "ΑδÏνατη η αφαίÏεση:\n"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -938,19 +721,12 @@ msgid "Godot Engine contributors"
msgstr "ΣυνεισφέÏοντες στην Godot Engine"
#: editor/editor_about.cpp
-#, fuzzy
-msgid "Authors"
-msgstr "ΣυγγÏαφέας:"
-
-#: editor/editor_about.cpp
-#, fuzzy
msgid "Project Founders"
-msgstr "ΔιαχειÏιστής"
+msgstr "ΙδÏυτές του έÏγου"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Lead Developer"
-msgstr "ΠÏογÏαμματιστές"
+msgstr "Επικεφαλής Ï€ÏογÏαμματιστής"
#: editor/editor_about.cpp editor/project_manager.cpp
msgid "Project Manager"
@@ -961,12 +737,44 @@ msgid "Developers"
msgstr "ΠÏογÏαμματιστές"
#: editor/editor_about.cpp
+msgid "Authors"
+msgstr "ΣυγγÏαφείς"
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr "ΚοÏυφαίοι ΧοÏηγοί"
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr "ΧÏυσοί ΧοÏυγοί"
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr "ΜικÏοί ΧοÏηγοί"
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr "ΧÏυσοί ΔωÏητές"
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr "ΑÏγυÏοί ΔωÏητές"
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr "Χάλκινοι ΔωÏητές"
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr "ΔωÏητές"
+
+#: editor/editor_about.cpp
msgid "License"
-msgstr ""
+msgstr "Άδεια"
#: editor/editor_about.cpp
msgid "Thirdparty License"
-msgstr ""
+msgstr "Άδεια Ï„Ïίτων ομάδων"
#: editor/editor_about.cpp
msgid ""
@@ -975,104 +783,109 @@ msgid ""
"is an exhaustive list of all such thirdparty components with their "
"respective copyright statements and license terms."
msgstr ""
+"Η μηχανή Godot βασίζεται σε μια σειÏά από δωÏεάν και Î±Î½Î¿Î¹Ï‡Ï„Î¿Ï ÎºÏŽÎ´Î¹ÎºÎ± "
+"βιβλιοθήκες Ï„Ïίτων ομάδων, όλες συμβατές με τους ÏŒÏους της άδειας MIT. "
+"Ακολουθεί μία εκτενής λίστα με όλα τα σχετικά συστατικά της μηχανής μαζί με "
+"όλες τις αντοίστοιχες δηλώσεις Ï€Ïοστασίας πνευματικών δικαιωμάτων και τους "
+"ÏŒÏους των αδειών τους."
#: editor/editor_about.cpp
-#, fuzzy
msgid "All Components"
-msgstr "ΠεÏιεχόμενα:"
+msgstr "Όλα τα συστατικά"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Components"
-msgstr "ΠεÏιεχόμενα:"
+msgstr "Συστατικά"
#: editor/editor_about.cpp
msgid "Licenses"
-msgstr ""
+msgstr "Άδειες"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Error opening package file, not in zip format."
-msgstr ""
+msgstr "Σφάλμα κατά το άνοιγμα του πακέτου, δεν είναι αÏχείο zip."
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Uncompressing Assets"
-msgstr "Ασυμπίεστο"
+msgstr "Αποσυμπίεση asset"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Package Installed Successfully!"
msgstr "Το πακέτο εγκαταστάθηκε επιτυχώς!"
#: editor/editor_asset_installer.cpp
-#, fuzzy
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr "Επιτυχία!"
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr "Εγκατάσταση"
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
-msgstr "Το πακέτο εγκαταστάθηκε επιτυχώς!"
+msgstr "ΠÏόγÏαμμα εγκατάστασης πακέτων"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
-msgstr ""
+msgstr "Ηχεία"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Effect"
-msgstr "ΠÏοσθήκη συμβάντος"
+msgstr "ΠÏοσθήκη εφέ"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Rename Audio Bus"
-msgstr "Άνοιγμα διάταξης διαÏλων ήχου"
+msgstr "Μετονομασία διαÏλου ήχου"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Toggle Audio Bus Solo"
-msgstr "Άνοιγμα διάταξης διαÏλων ήχου"
+msgstr "Εναλλαγή σόλο διαÏλου ήχου"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Toggle Audio Bus Mute"
-msgstr "Άνοιγμα διάταξης διαÏλων ήχου"
+msgstr "Εναλλαγή σίγασης διαÏλου ήχου"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Bypass Effects"
-msgstr ""
+msgstr "Εναλλαγή παÏάκαμψης εφέ διαÏλου ήχου"
#: editor/editor_audio_buses.cpp
msgid "Select Audio Bus Send"
-msgstr ""
+msgstr "Επιλογή Ï€ÏοοÏÎ¹ÏƒÎ¼Î¿Ï Î´Î¹Î±Ïλου ήχου"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus Effect"
-msgstr ""
+msgstr "ΠÏοσθήκη εφέ διαÏλου ήχου"
#: editor/editor_audio_buses.cpp
msgid "Move Bus Effect"
-msgstr ""
+msgstr "Μετακίνηση εφέ διαÏλου ήχου"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Bus Effect"
-msgstr "ΔιαγÏαφή επιλεγμένου"
+msgstr "ΔιαγÏαφή εφέ διαÏλου ήχου"
#: editor/editor_audio_buses.cpp
msgid "Audio Bus, Drag and Drop to rearrange."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-#, fuzzy
-msgid "Bus options"
-msgstr "Επιλογές υπο-σκηνής"
+msgstr "Δίαυλος ήχου, ΣÏÏσιμο και απόθεση για αναδιάταξη."
#: editor/editor_audio_buses.cpp
msgid "Solo"
-msgstr ""
+msgstr "Σόλο"
#: editor/editor_audio_buses.cpp
msgid "Mute"
-msgstr ""
+msgstr "Σίγαση"
#: editor/editor_audio_buses.cpp
msgid "Bypass"
-msgstr ""
+msgstr "ΠαÏάκαμψη"
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr "Επιλογές διαÏλου"
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
@@ -1080,33 +893,36 @@ msgid "Duplicate"
msgstr "Διπλασιασμός"
#: editor/editor_audio_buses.cpp
-#, fuzzy
+msgid "Reset Volume"
+msgstr "ΕπαναφοÏά Έντασης"
+
+#: editor/editor_audio_buses.cpp
msgid "Delete Effect"
-msgstr "ΔιαγÏαφή επιλεγμένου"
+msgstr "ΔιαγÏαφή εφέ"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Audio Bus"
-msgstr "ΠÏοσθήκη διαÏλου"
+msgstr "ΠÏοσθήκη διαÏλου ήχου"
#: editor/editor_audio_buses.cpp
msgid "Master bus can't be deleted!"
-msgstr ""
+msgstr "Ο Ï€ÏωτεÏον δίαυλος δεν μποÏεί να διαγÏαφεί!"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Audio Bus"
-msgstr "ΔιαγÏαφή διάταξης"
+msgstr "ΔιαγÏαφή διαÏλου ήχου"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Duplicate Audio Bus"
-msgstr "ΑναπαÏαγωγή κίνησης"
+msgstr "ΑναπαÏαγωγή διαÏλου ήχου"
+
+#: editor/editor_audio_buses.cpp
+msgid "Reset Bus Volume"
+msgstr "ΕπαναφοÏά Έντασης ΔιαÏλου"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Move Audio Bus"
-msgstr "ΕνέÏγεια μετακίνησης"
+msgstr "Μετακίνηση διαÏλου ήχου"
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
@@ -1122,32 +938,28 @@ msgstr "Άνοιγμα διάταξης διαÏλων ήχου"
#: editor/editor_audio_buses.cpp
msgid "There is no 'res://default_bus_layout.tres' file."
-msgstr ""
+msgstr "Δεν υπάÏχει αÏχείο 'res://default_bus_layout.tres'."
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Invalid file, not an audio bus layout."
-msgstr ""
-"ΆκυÏη επέκταση αÏχείου.\n"
-"ΠαÏακαλώ χÏησιμοποιήστε .font."
+msgstr "ΆκυÏο αÏχείο, δεν είναι διάταξη διαÏλων ήχου."
#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr "ΠÏοσθήκη διαÏλου"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Create a new Bus Layout."
-msgstr "ΔημιουÏγία νέου πόÏου"
+msgstr "ΔημιουÏγία νέας διάταξης διαÏλων ήχου."
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr "ΦόÏτωσε"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Load an existing Bus Layout."
-msgstr "ΦόÏτωσε υπάÏχων πόÏο στη μνήμη και επεξεÏγάσου τον."
+msgstr "ΦόÏτωση υπαÏκτής διάταξης διαÏλων ήχου."
#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -1155,18 +967,16 @@ msgid "Save As"
msgstr "Αποθήκευση ώς"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Save this Bus Layout to a file."
-msgstr "Αποθήκευση διάταξης διαÏλων ήχου ÏŽÏ‚.."
+msgstr "Αποθήκευση διάταξης διαÏλων ήχου σε αÏχείο."
#: editor/editor_audio_buses.cpp editor/import_dock.cpp
-#, fuzzy
msgid "Load Default"
-msgstr "ΠÏοεπιλογή"
+msgstr "ΦόÏτωση Ï€Ïοεπιλογής"
#: editor/editor_audio_buses.cpp
msgid "Load the default Bus Layout."
-msgstr ""
+msgstr "ΦόÏτωση Ï€Ïοεπιλεγμένης διάταξης διαÏλων ήχου."
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
@@ -1235,7 +1045,7 @@ msgid "Rearrange Autoloads"
msgstr "Αναδιάταξη των AutoLoad"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "ΔιαδÏομή:"
@@ -1243,9 +1053,7 @@ msgstr "ΔιαδÏομή:"
msgid "Node Name:"
msgstr "Όνομα κόμβου:"
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr "Όνομα"
@@ -1270,27 +1078,27 @@ msgid "Updating scene.."
msgstr "ΕνημέÏωση σκηνής.."
#: editor/editor_dir_dialog.cpp
-#, fuzzy
msgid "Please select a base directory first"
-msgstr "ΠαÏακαλοÏμε αποθηκεÏστε την σκηνή Ï€Ïώτα."
+msgstr "ΠαÏακαλοÏμε επιλέξτε Ï€Ïώτα έναν βασικό κατάλογο"
#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "Επιλέξτε ένα λεξικό"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "ΔημιουÏγία φακέλου"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "Όνομα:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "ΑδÏνατη η δημιουÏγία φακέλου."
@@ -1310,30 +1118,6 @@ msgstr "ΠακετάÏισμα"
msgid "Template file not found:\n"
msgstr "Δεν βÏέθηκε το αÏχείο Ï€ÏοτÏπου:\n"
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr "ΠÏοστέθηκαν:"
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr "ΑφαιÏέθηκαν:"
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr "Σφάλμα κατά την αποθήκευση άτλαντα:"
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr "ΑδÏνατη η αποθήκευση υπό-εικόνας άτλαντα:"
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr "Εξαγωγή για %s"
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr "ΑÏχικοποίηση.."
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "Το αÏχείο υπάÏχει. Θέλετε να το αντικαταστήσετε;"
@@ -1418,6 +1202,10 @@ msgstr "Μετακίνηση αγαπημένου πάνω"
msgid "Move Favorite Down"
msgstr "Μετακίνηση αγαπημένου κάτω"
+#: editor/editor_file_dialog.cpp
+msgid "Go to parent folder"
+msgstr "Πήγαινε στον γονικό φάκελο"
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "Φάκελοι & ΑÏχεία:"
@@ -1432,10 +1220,6 @@ msgid "File:"
msgstr "ΑÏχείο:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "ΦίλτÏο:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "Απαιτείται η χÏήση έγκυÏης επέκτασης."
@@ -1460,6 +1244,10 @@ msgstr "Λίστα κλάσεων:"
msgid "Search Classes"
msgstr "Αναζήτηση κλάσεων"
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr "Πάνω"
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr "Κλάση:"
@@ -1476,15 +1264,27 @@ msgstr "ΚληÏονομείται από:"
msgid "Brief Description:"
msgstr "ΣÏντομη πεÏιγÏαφή:"
+#: editor/editor_help.cpp
+msgid "Members"
+msgstr "Μέλη"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "Μέλη:"
#: editor/editor_help.cpp
+msgid "Public Methods"
+msgstr "Δημόσιες συναÏτήσεις"
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr "Δημόσιες συναÏτήσεις:"
#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr "Στοιχεία του θέματος GUI"
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr "Στοιχεία του θέματος GUI:"
@@ -1493,54 +1293,81 @@ msgid "Signals:"
msgstr "Σήματα:"
#: editor/editor_help.cpp
-#, fuzzy
+msgid "Enumerations"
+msgstr "ΑπαÏιθμήσεις"
+
+#: editor/editor_help.cpp
msgid "Enumerations:"
-msgstr "Κινήσεις"
+msgstr "ΑπαÏιθμήσεις:"
#: editor/editor_help.cpp
msgid "enum "
-msgstr ""
+msgstr "απαÏίθμηση "
+
+#: editor/editor_help.cpp
+msgid "Constants"
+msgstr "ΣταθεÏές"
#: editor/editor_help.cpp
msgid "Constants:"
msgstr "ΣταθεÏές:"
#: editor/editor_help.cpp
+msgid "Description"
+msgstr "ΠεÏιγÏαφή"
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr "Ιδιότητες"
+
+#: editor/editor_help.cpp
msgid "Property Description:"
msgstr "ΠεÏιγÏαφή ιδιότητας:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Methods"
+msgstr "ΣυναÏτήσεις"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr "ΠεÏιγÏαφή μεθόδου:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr "Αναζήτηση κειμένου"
#: editor/editor_log.cpp
-#, fuzzy
msgid "Output:"
-msgstr " Έξοδος:"
+msgstr "Έξοδος:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "ΕκκαθάÏιση"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr "Σφάλμα κατά την αποθήκευση πόÏου!"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr "Αποθήκευση πόÏου ως.."
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Εντάξει.."
@@ -1557,6 +1384,26 @@ msgid "Error while saving."
msgstr "Σφάλμα κατά την αποθήκευση."
#: editor/editor_node.cpp
+msgid "Can't open '%s'."
+msgstr "ΑδÏνατο το άνοιγμα του '%s'."
+
+#: editor/editor_node.cpp
+msgid "Error while parsing '%s'."
+msgstr "Σφάλμα κατά η ανάλυση του '%s'."
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
+msgstr "Λείπει το '%s' ή οι εξαÏτήσεις του."
+
+#: editor/editor_node.cpp
+msgid "Error while loading '%s'."
+msgstr "Σφάλμα κατά την φόÏτωση του '%s'."
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr "Αποθήκευση σκηνής"
@@ -1569,9 +1416,8 @@ msgid "Creating Thumbnail"
msgstr "ΔημιουÏγία μικÏογÏαφίας"
#: editor/editor_node.cpp
-#, fuzzy
msgid "This operation can't be done without a tree root."
-msgstr "Αυτή η λειτουÏγία δεν μποÏεί να γίνει χωÏίς σκηνή."
+msgstr "Αυτή η λειτουÏγία δεν μποÏεί να γίνει χωÏίς Ïίζα δέντÏου."
#: editor/editor_node.cpp
msgid ""
@@ -1617,6 +1463,33 @@ msgid "Restored default layout to base settings."
msgstr "ΕπαναφοÏά της Ï€Ïοεπιλεγμένης διάταξης στις βασικές Ïυθμίσεις."
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr "ΑντιγÏαφή παÏαμέτÏων"
@@ -1706,13 +1579,12 @@ msgid "Quick Open Script.."
msgstr "ΓÏήγοÏη άνοιγμα δεσμής ενεÏγειών..."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Close"
-msgstr "Αποθήκευση αÏχείου"
+msgstr "Αποθήκευση & Κλείσιμο"
#: editor/editor_node.cpp
msgid "Save changes to '%s' before closing?"
-msgstr ""
+msgstr "Αποθήκευση αλλαγών στο '%s' Ï€Ïιν το κλείσιμο;"
#: editor/editor_node.cpp
msgid "Save Scene As.."
@@ -1743,9 +1615,8 @@ msgid "Export Tile Set"
msgstr "Εξαγωγή σετ πλακιδίων"
#: editor/editor_node.cpp
-#, fuzzy
msgid "This operation can't be done without a selected node."
-msgstr "Αυτή η λειτουÏγία δεν μποÏεί να γίνει χωÏίς σκηνή."
+msgstr "Αυτή η λειτουÏγία δεν μποÏεί να γίνει χωÏίς έναν επιλεγμένο κόμβο."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1779,42 +1650,60 @@ msgid "Exit the editor?"
msgstr "ΤεÏματισμός του Ï€ÏογÏάμματος επεξεÏγασίας;"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Project Manager?"
-msgstr "ΔιαχειÏιστής"
+msgstr "Άνοιγμα του διαχειÏιστή έÏγων;"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Quit"
-msgstr "Αποθήκευση αÏχείου"
+msgstr "Αποθήκευση & Έξοδος"
#: editor/editor_node.cpp
msgid "Save changes to the following scene(s) before quitting?"
-msgstr ""
+msgstr "Αποθήκευση αλλαγών στις ακόλουθες σκηνές σκηνές Ï€Ïιν την έξοδο;"
#: editor/editor_node.cpp
msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
+"Αποθήκευση αλλαγών στις ακόλουθες σκηνές σκηνές Ï€Ïιν το άνοιγμα του "
+"διαχειÏιστή έÏγων;"
+
+#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Επιλογή κÏÏιας σκηνής"
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
-msgstr ""
+#, fuzzy
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
+msgstr "ΑδÏνατη η ενεÏγοποίηση Ï€Ïόσθετης επέκτασης στο: '"
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+#, fuzzy
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
+"ΑδÏνατη η έυÏεση του πεδίου 'script' για την Ï€Ïόσθετη επέκταση στο: 'res://"
+"addons/"
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
-msgstr ""
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "ΑδÏνατη η φόÏτωση δεσμής ενεÏγειών Ï€Ïοσθέτου από τη διαδÏομή: '"
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
-msgstr ""
+#, fuzzy
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
+msgstr "ΑδÏνατη η φόÏτωση δεσμής ενεÏγειών Ï€Ïοσθέτου από τη διαδÏομή: '"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
+msgstr "ΑδÏνατη η φόÏτωση δεσμής ενεÏγειών Ï€Ïοσθέτου από τη διαδÏομή: '"
#: editor/editor_node.cpp
msgid ""
@@ -1826,7 +1715,7 @@ msgstr ""
"σκηνή."
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr "α..."
@@ -1840,14 +1729,14 @@ msgstr ""
"συνέχεια, αποθηκεÏστε τη μέσα στη διαδÏομή του έÏγου."
#: editor/editor_node.cpp
-msgid "Error loading scene."
-msgstr "Σφάλμα κατά τη φόÏτωση σκηνής."
-
-#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
msgstr "Η σκηνή '%s' έχει σπασμένες εξαÏτήσεις:"
#: editor/editor_node.cpp
+msgid "Clear Recent Scenes"
+msgstr "ΕκκαθάÏιση Ï€Ïόσφατων σκηνών"
+
+#: editor/editor_node.cpp
msgid "Save Layout"
msgstr "Αποθήκευση διάταξης"
@@ -1877,11 +1766,10 @@ msgid "Distraction Free Mode"
msgstr "ΛειτουÏγία χωÏίς διάσπαση Ï€Ïοσοχής"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Toggle distraction-free mode."
-msgstr "ΛειτουÏγία χωÏίς διάσπαση Ï€Ïοσοχής"
+msgstr "Εναλλαγή λειτουÏγίας χωÏίς πεÏισπασμοÏÏ‚."
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr "Σκηνή"
@@ -2120,6 +2008,10 @@ msgstr "ΕÏώτηση&Απάντηση"
msgid "Issue Tracker"
msgstr "ΔιαχείÏιση Ï€Ïοβλημάτων"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "Κοινότητα"
+
#: editor/editor_node.cpp
msgid "About"
msgstr "Σχετικά"
@@ -2128,7 +2020,7 @@ msgstr "Σχετικά"
msgid "Play the project."
msgstr "ΑναπαÏαγωγή του έÏγου."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr "ΑναπαÏαγωγή"
@@ -2144,7 +2036,7 @@ msgstr "ΠαÏση της σκηνής"
msgid "Stop the scene."
msgstr "Διέκοψε τη σκηνή."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr "Διακοπή"
@@ -2217,6 +2109,15 @@ msgid "Object properties."
msgstr "Ιδιότητες αντικειμένου."
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr "Οι αλλαγές μποÏεί να χαθοÏν!"
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr "Εισαγωγή"
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr "ΣÏστημα αÏχείων"
@@ -2230,15 +2131,7 @@ msgstr "Έξοδος"
#: editor/editor_node.cpp
msgid "Don't Save"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr "Επανεισαγωγή"
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr "ΕνημέÏωση"
+msgstr "ΧωÏις αποθήκευση"
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
@@ -2265,9 +2158,8 @@ msgid "Open & Run a Script"
msgstr "Άνοιξε & ΤÏέξε μία δεσμή ενεÏγειών"
#: editor/editor_node.cpp
-#, fuzzy
msgid "New Inherited"
-msgstr "Îέα κληÏονομημένη σκηνή.."
+msgstr "Îέα κληÏονομημένη"
#: editor/editor_node.cpp
msgid "Load Errors"
@@ -2301,11 +2193,29 @@ msgstr "Άνοιγμα του επόμενου επεξεÏγαστή"
msgid "Open the previous Editor"
msgstr "Άνοιγμα του Ï€ÏοηγοÏμενου επεξεÏγαστή"
+#: editor/editor_plugin.cpp
+#, fuzzy
+msgid "Creating Mesh Previews"
+msgstr "ΔημιουÏγία Ï€Ïοεπισκοπήσεων πλεγμάτων"
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr "ΜικÏογÏαφία.."
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr "Εγκατεστημένα Ï€Ïόσθετα:"
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr "ΕνημέÏωση"
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Έκδοση:"
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr "ΣυγγÏαφέας:"
@@ -2338,7 +2248,8 @@ msgid "Frame %"
msgstr "ΚαÏέ %"
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+#, fuzzy
+msgid "Physics Frame %"
msgstr "ΣταθεÏÏŒ καÏέ %"
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2357,35 +2268,17 @@ msgstr "Εαυτός"
msgid "Frame #:"
msgstr "ΚαÏέ #:"
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr "ΠαÏακαλώ πεÏιμένετε να ολοκληÏωθεί η σάÏωση."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr "Η Ï„Ïέχουσα σκηνή Ï€Ïέπει να αποθηκευτεί για να επαν-εισάγετε."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr "Αποθήκευση & Επανεισαγωγή"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr "Επανεισαγωγή"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr "Επανεισαγωγή Ï„Ïοποπιημένων πόÏων"
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
-msgstr ""
+msgstr "Επιλέξτε συσκευή από την λίστα"
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
"Please add a runnable preset in the export menu."
msgstr ""
+"Δεν βÏέθηκε εκτελέσιμη διαμόÏφωση εξαγωγής για αυτή την πλατφόÏμα.\n"
+"ΠαÏακαλοÏμε Ï€Ïοσθέστε μία εκτελέσιμη διαμόÏφωση στο Î¼ÎµÎ½Î¿Ï ÎµÎ¾Î±Î³Ï‰Î³Î®Ï‚."
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
@@ -2488,10 +2381,6 @@ msgid "Importing:"
msgstr "Εισαγωγή:"
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr "ΦόÏτωση Ï€ÏοτÏπων εξαγωγής"
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "ΤÏέχουσα έκδοση:"
@@ -2526,60 +2415,78 @@ msgid "Cannot navigate to '"
msgstr "ΑδÏνατη η πλοήγηση στο '"
#: editor/filesystem_dock.cpp
-#, fuzzy
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
-msgstr "Αποθήκευση & Επανεισαγωγή"
+"Status: Import of file failed. Please fix file and reimport manually."
+msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid ""
"\n"
"Source: "
-msgstr "Πηγή:"
+msgstr ""
+"\n"
+"Πηγή: "
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
-msgstr "Ίδια αÏχεία πηγής και Ï€ÏοοÏισμοÏ, παÏάλειψη ενέÏγειας."
+#, fuzzy
+msgid "Cannot move/rename resources root."
+msgstr "Δεν ήταν δυνατή η φόÏτωση/επεξεÏγασία της πηγαίας γÏαμματοσειÏάς."
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
-msgstr ""
+#, fuzzy
+msgid "Cannot move a folder into itself.\n"
+msgstr "Δεν είναι δυνατή η εισαγωγή ενός αÏχείου πάνω στον εαυτό του:"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
-msgstr "Ίδιες διαδÏομές πηγής και Ï€ÏοοÏισμοÏ, παÏάλειψη ενέÏγειας."
+#, fuzzy
+msgid "Error moving:\n"
+msgstr "Σφάλμα κατά την μετακίνηση καταλόγου:\n"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Unable to update dependencies:\n"
+msgstr "Η σκηνή '%s' έχει σπασμένες εξαÏτήσεις:"
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
-msgstr "ΑδÏνατη η μετακίνηση καταλόγων μέσα στους εαυτοÏÏ‚ τους."
+msgid "No name provided"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving file:\n"
-msgstr "Σφάλμα κατά την φόÏτωση εικόνας:"
+msgid "No name provided."
+msgstr "Μετονομασία ή μετακίνηση.."
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "Σφάλμα κατά την εισαγωγή:"
+msgid "Name contains invalid characters."
+msgstr "ΈγκυÏοι χαÏακτήÏες:"
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
-msgstr "ΑδÏνατη η λειτουÏγία στο '..'"
+msgid "A file or folder with this name already exists."
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
-msgstr "Επιλέξτε νέο όνομα και θέση για:"
+#, fuzzy
+msgid "Renaming file:"
+msgstr "Μετονομασία μεταβλητής"
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
-msgstr "Δεν επιλέχθηκαν αÏχεία!"
+#, fuzzy
+msgid "Renaming folder:"
+msgstr "Μετονομασία κόμβου"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2590,40 +2497,38 @@ msgid "Collapse all"
msgstr "ΣÏμπτηξη όλων"
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
-msgstr "Εμφάνιση στη διαχείÏιση αÏχείων"
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
-msgstr "Στιγμιότυπο"
+msgid "Copy Path"
+msgstr "ΑντιγÏαφή διαδÏομής"
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
-msgstr "ΕπεξεÏγασία εξαÏτήσεων .."
+#, fuzzy
+msgid "Rename.."
+msgstr "Μετονομασία"
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
-msgstr "ΠÏοβολή Ιδιοκτητών .."
+msgid "Move To.."
+msgstr "Μετακίνηση σε..."
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr "ΑντιγÏαφή διαδÏομής"
+#, fuzzy
+msgid "New Folder.."
+msgstr "ΔημιουÏγία φακέλου"
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
-msgstr "Μετονομασία ή μετακίνηση.."
+msgid "Show In File Manager"
+msgstr "Εμφάνιση στη διαχείÏιση αÏχείων"
#: editor/filesystem_dock.cpp
-msgid "Move To.."
-msgstr "Μετακίνηση σε..."
+msgid "Instance"
+msgstr "Στιγμιότυπο"
#: editor/filesystem_dock.cpp
-msgid "Info"
-msgstr "ΠληÏοφοÏίες"
+msgid "Edit Dependencies.."
+msgstr "ΕπεξεÏγασία εξαÏτήσεων .."
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
-msgstr "Εκ νέου εισαγωγή..."
+msgid "View Owners.."
+msgstr "ΠÏοβολή Ιδιοκτητών .."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2652,11 +2557,18 @@ msgid ""
"Scanning Files,\n"
"Please Wait.."
msgstr ""
+"ΣάÏωση αÏχείων,\n"
+"ΠαÏακαλώ πεÏιμένετε.."
#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "Μετακίνηση"
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr "Μετονομασία"
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr "ΠÏοσθήκη σε Ομάδα"
@@ -2666,76 +2578,87 @@ msgid "Remove from Group"
msgstr "ΚατάÏγηση από την ομάδα"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Import as Single Scene"
-msgstr "Εισαγωγή σκηνής..."
+msgstr "Εισαγωγή ως μονή σκηνή"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Animations"
+msgstr "Εισαγωγή με ξεχωÏιστά υλικά"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
-msgstr ""
+msgstr "Εισαγωγή με ξεχωÏιστά υλικά"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects"
-msgstr ""
+msgstr "Εισαγωγή με ξεχωÏιστά αντικείμενα"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects+Materials"
-msgstr ""
+msgstr "Εισαγωγή με ξεχωÏιστά υλικά και αντικείμενα"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Objects+Animations"
+msgstr "Εισαγωγή με ξεχωÏιστά υλικά και αντικείμενα"
#: editor/import/resource_importer_scene.cpp
#, fuzzy
+msgid "Import with Separate Materials+Animations"
+msgstr "Εισαγωγή με ξεχωÏιστά υλικά"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr "Εισαγωγή με ξεχωÏιστά υλικά και αντικείμενα"
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
-msgstr "Εισαγωγή 3D σκηνής"
+msgstr "Εισαγωγή ως πολλαπλές σκηνές"
#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes+Materials"
-msgstr ""
+msgstr "Εισαγωγή ως πολλαπλές σκηνές και υλικά"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr "Εισαγωγή σκηνής"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr "Εισαγωγή σκηνής..."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr "Εκτέλεση Ï€ÏοσαÏμοσμένης δέσμης ενεÏγειών..."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr "Δεν ήταν δυνατή η φόÏτωση της δεσμής ενεÏγειών για μετά την εισαγωγή:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
"ΆκυÏη / χαλασμένη δεσμή ενεÏγειών για την διαδικασία της μετ-εισαγωγής "
"(ελέγξτε την κονσόλα):"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr "Σφάλμα κατά την εκτέλεση της δέσμης ενεÏγειών μετ-εισαγωγής:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr "Αποθήκευση..."
#: editor/import_dock.cpp
msgid "Set as Default for '%s'"
-msgstr ""
+msgstr "ΟÏισμός ως Ï€Ïοεπιλογής για '%s'"
#: editor/import_dock.cpp
msgid "Clear Default for '%s'"
-msgstr ""
+msgstr "ΕκκαθάÏιση Ï€Ïοεπιλογής για '%s'"
#: editor/import_dock.cpp
msgid " Files"
@@ -2747,585 +2670,12 @@ msgstr "Εισαγωγή ώς:"
#: editor/import_dock.cpp editor/property_editor.cpp
msgid "Preset.."
-msgstr "ΠÏοκαθοÏισμένο..."
+msgstr "ΔιαμόÏφωση..."
#: editor/import_dock.cpp
msgid "Reimport"
msgstr "Επανεισαγωγή"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr "Δεν υπάÏχουν μάσκες bit για εισαγωγή!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr "Η διαδÏομή Ï€ÏοοÏÎ¹ÏƒÎ¼Î¿Ï ÎµÎ¯Î½Î±Î¹ άδεια."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr "Η διαδÏομή Ï€ÏοοÏÎ¹ÏƒÎ¼Î¿Ï Ï€Ïέπει να είναι μία πλήÏης διαδÏομή σε πόÏο."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr "Η διαδÏομή Ï€ÏοοÏÎ¹ÏƒÎ¼Î¿Ï Ï€Ïέπει να υπάÏχει."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr "Η διαδÏομή αποθήκευσης είναι άδεια!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr "Εισαγωγή μάσκας bit"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr "Πηγαίες υφές:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr "ΔιαδÏομή Ï€ÏοοÏισμοÏ:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr "Αποδοχή"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr "Μάσκα bit"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr "Δεν δόθηκε πηγαίο αÏχείο γÏαμματοσειÏάς!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr "Δε δόθηκε πόÏος γÏαμματοσειÏάς Ï€ÏοοÏισμοÏ!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-"ΆκυÏη επέκταση αÏχείου.\n"
-"ΠαÏακαλώ χÏησιμοποιήστε .font."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr "Δεν ήταν δυνατή η φόÏτωση/επεξεÏγασία της πηγαίας γÏαμματοσειÏάς."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr "Δεν ήταν δυνατή η αποθήκευση της γÏαμματοσειÏάς."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr "Πηγαία γÏαμματοσειÏά:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr "Μέγεθος πηγαίας γÏαμματοσειÏάς:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr "ΠόÏος Ï€ÏοοÏισμοÏ:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr "Γαζέες καὶ μυÏτιὲς δὲν θὰ βÏá¿¶ πιὰ στὸ χÏυσαφὶ ξέφωτο."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr "Δοκιμή:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr "Επιλογές:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr "Εισαγωγή γÏαμματοσειÏάς"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-"Αυτό το αÏχείο είναι ήδη ένα αÏχείο γÏαμματοσειÏάς της Godot, παÏακαλώ "
-"υποβάλετε ένα αÏχείο Ï„Ïπου BMFont."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr "Απέτυχε το άνοιγμα ως αÏχείο BMFont."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr "Σφάλμα κατά την αÏχικοποίηση του FreeType."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "Άγνωστη μοÏφή γÏαμματοσειÏάς."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "Σφάλμα κατά την φόÏτωση της γÏαμματοσειÏάς."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr "Μη έγκυÏο μέγεθος γÏαμματοσειÏάς."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr "ΆκυÏη Ï€ÏοσαÏμοσμένη πηγή γÏαμματοσειÏάς."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "ΓÏαμματοσειÏά"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr "Δεν υπάÏχουν πλέγματα για εισαγωγή!"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr "Εισαγωγή ενός πλέγματος"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr "Πηγαία πλέγματα:"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr "Πλέγμα"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "Επιφάνεια %d"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr "Δεν υπάÏχουν δείγματα για εισαγωγή!"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr "Εισαγωγή δειγμάτων ήχου"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr "Πηγαία δείγματα:"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr "Δείγμα ήχου"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr "Îέο απόσπασμα"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr "Επιλογές κίνησης"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr "Σημαίες"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr "Ψήστε FPS:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr "ΕÏγαλείο βελτιστοποίησης"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr "Μέγιστο γÏαμμικό σφάλμα"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr "Μέγιστο γωνιακό σφάλμα"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr "Ανώτατη Γωνία"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr "Αποσπάσματα"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr "ΑÏχή"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr "Τέλος"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr "Επανάληψη"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr "ΦίλτÏα"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr "Η διαδÏομή Ï€Ïοέλευσης είναι άδεια."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr "Δεν ήταν δυνατή η φόÏτωση της δεσμής ενεÏγειών μετ-εισαγωγής."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr ""
-"ΆκυÏη / χαλασμένη δεσμή ενεÏγειών για την διαδικασία της μετ-εισαγωγής."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr "Σφάλμα κατά την εισαγωγή της σκηνής."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr "Εισαγωγή 3D σκηνής"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr "Σκηνή Ï€Ïοέλευσης:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr "Το ίδιο με την στοχευμένη σκηνή"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr "ΚοινόχÏηστο"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr "Επιλεγμένος φάκλος υφών:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr "Δεσμή ενεÏγειών μετ-επεξεÏγασίας:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr "ΠÏοσαÏμοσμένος Ï„Ïπος ÏÎ¹Î¶Î¹ÎºÎ¿Ï ÎºÏŒÎ¼Î²Î¿Ï…:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr "Αυτόματο"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr "Όνομα ÏÎ¹Î¶Î¹ÎºÎ¿Ï ÎºÏŒÎ¼Î²Î¿Ï…:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr "Τα ακόλουθα αÏχεία λείπουν:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr "Εισαγωγή οÏτως ή άλλως"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "ΑκÏÏωση"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr "Εισαγωγή & Άνοιγμα"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-"Η Ï„Ïέχουσα σκηνή δεν έχει αποθηκευτεί, άνοιγμα της εισαγμένης σκηνής οÏτως ή "
-"άλλως;"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr "Εισαγωγή εικόνας:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr "Δεν είναι δυνατή η εισαγωγή ενός αÏχείου πάνω στον εαυτό του:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr ""
-"Δεν είναι δυνατή η μετατÏοπή της διαδÏομής σε τοπική: %s (είναι ήδη τοπικό)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr "Κίνηση Ï„Ïισδιάστατης σκηνής"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr "Ασυμπίεστο"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr "Συμπίεση χωÏίς απώλειες (PNG)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr "Συμπίεση με απώλειες (WebP)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr "Συμπίεση (VRAM)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr "ΜοÏφή υφής"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr "Ποιότητα συμπίεσης υφής (WebP):"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr "Επιλογές υφής"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr "ΠαÏακαλώ καθοÏίστε κάποια αÏχεία!"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr "Τουλάχιστον ένα αÏχείο απαιτείται για τον άτλαντα."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr "Σφάλμα κατά την εισαγωγή:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr "Μόνο ένα αÏχείο είναι απαÏαίτητη για μεγάλη υφή."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr "Μέγιστο μέγεθος υφής:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr "Εισαγωγή υφών για τον άτλαντα (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr "Μέγεθος κελιοÏ:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr "Μεγάλη υφή"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr "Εισαγωγής Μεγάλων Υφών (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
-msgstr "Υφή Ï€Ïοέλευσης"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
-msgstr "Βασική υφή άτλαντα"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
-msgstr "Υφές Ï€Ïοέλευσης"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
-msgstr "Εισαγωγή υφών για 2 διαστάσεις"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
-msgstr "Εισαγωγή υφών για 3 διαστάσεις"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
-msgstr "Εισαγωγή υφών"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
-msgstr "Υφή 2 διαστάσεων"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
-msgstr "Υφή 3 διαστάσεων"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
-msgstr "Υφή άτλαντα"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-"ΣΗΜΕΙΩΣΗ: Η εισαγωγή δισδιάστατων υφών δεν είναι υποχÏεωτική. Απλά "
-"αντιγÏάψτε τα αÏχεία png/jpg στο έÏγο."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr "ΠεÏικοπή άδειου χώÏου."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr "Υφή"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr "Εισαγωγή μεγάλης υφής"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr "ΦόÏτωση εικόνας Ï€Ïοέλευσης"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr "Κατάτμηση"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr "Εισαγωγή"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr "Αποθήκευση"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr "Δεν ήταν δυνατή η αποθήκευση μεγάλης υφής:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr "Κατασκευή άτλαντα για:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr "ΦόÏτωση εικόνας:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr "Δεν ήταν δυνατή η φόÏτωση της εικόνας:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr "ΜετατÏοπή Εικόνων"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr "ΠεÏικοπή Εικόνων"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr "Συνδυασμός εικόνων"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr "Δεν ήταν δυνατή η αποθήκευση εικόνας άτλαντα:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr "Δεν ήταν δυνατή η αποθήκευση υφής που έχει μετατÏαπεί:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr "Μη έγκυÏη πηγή!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr "Μη έγκυÏη πηγή μετάφÏασης!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr "Στήλη"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr "Γλώσσα"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr "Δεν υπάÏχουν στοιχεία για εισαγωγή!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr "Καμία διαδÏομή Ï€ÏοοÏισμοÏ!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr "Εισαγωγή μεταφÏάσεων"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr "Δεν ήταν δυνατή η εισαγωγή!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr "Εισαγωγή μετάφÏασης"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr "CSV Ï€Ïοέλευσης:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr "Αγνόησε την Ï€Ïώτη γÏαμμή"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr "Συμπίεση"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr "ΠÏόσθεσε στο έÏγο (project.godot)"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr "Εισαγωγή γλωσσών:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr "ΜετάφÏαση"
-
#: editor/multi_node_edit.cpp
msgid "MultiNode Set"
msgstr "Σετ πολλαπλών κόμβων"
@@ -3338,6 +2688,49 @@ msgstr "Ομάδες"
msgid "Select a Node to edit Signals and Groups."
msgstr "Επιλέξτε ένα κόμβο για να επεξεÏγαστείτε τα σήματα και τις ομάδες."
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
+msgstr "Δημιουγία πολυγώνου"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "ΕπεγεÏγασία πολυγώνου"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
+msgid "Insert Point"
+msgstr "Εισαγωγή"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "ΕπεγεÏγασία πολυγώνου (ΑφαίÏεση σημείου)"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
+msgstr "ΑφαίÏεση πολυγώνου και σημείου"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
+msgstr "ΔημιουÏγία νέου πολυγώνου από την αÏχή."
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+"ΕπεξεÏγασία υπαÏÎºÏ„Î¿Ï Ï€Î¿Î»Ï…Î³ÏŒÎ½Î¿Ï…:\n"
+"ΑÏιστεÏÏŒ κλικ: Μετακίνηση σημείου.\n"
+"Ctrl + ΑÏιστεÏÏŒ κλικ: ΔιαίÏεση τμήματος.\n"
+"Δεξί κλικ: ΔιαγÏαφή σημείου."
+
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Toggle Autoplay"
msgstr "Εναλλαγή αυτόματης αναπαÏαγωγής"
@@ -3491,7 +2884,6 @@ msgstr "Όνομα κίνησης:"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3519,9 +2911,8 @@ msgid "New name:"
msgstr "Îέο όνομα:"
#: editor/plugins/animation_tree_editor_plugin.cpp
-#, fuzzy
msgid "Edit Filters"
-msgstr "ΕπεξεÏγασία φίλτÏων κόμβων"
+msgstr "ΕπεξεÏγασία φίλτÏων"
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
@@ -3602,10 +2993,6 @@ msgid "Delete Input"
msgstr "ΔιαγÏαφή εισόδου"
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr "Μετονομασία"
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr "Το δέντÏο κίνησης είναι έγκυÏο."
@@ -3661,66 +3048,182 @@ msgstr "ΕπεξεÏγασία φίλτÏων κόμβων"
msgid "Filters.."
msgstr "ΦίλτÏα.."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
-msgstr "Ανάλυση %d ΤÏιγώνων:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr "ΔωÏεάν"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
-msgstr "ΤÏίγωνο #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
+msgstr "ΠεÏιεχόμενα:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
-msgstr "ΡÏθμιση Ï€ÏοεπεγεÏγαστή φωτός:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
+msgstr "ΠÏοβολή αÏχείων"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
-msgstr "Ανάλυση γεωμετÏίας"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
+msgstr "Δεν είναι δυνατή η επίλυση του ονόματος του κεντÏÎ¹ÎºÎ¿Ï Ï…Ï€Î¿Î»Î¿Î³Î¹ÏƒÏ„Î®:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
-msgstr "ΔιόÏθωση φώτων"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
+msgstr "Δεν είναι δυνατή η επίλυση."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
-msgstr "ΔημιουÏγία BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
+msgstr "Σφάλμα σÏνδεσης, παÏακαλώ ξαναπÏοσπαθήστε."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
-msgstr "ΔημιουÏγία Î¿ÎºÏ„Î±Î´Î¹ÎºÎ¿Ï Î´Î­Î½Ï„Ïου φωτός"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Δεν ήταν δυνατή η σÏνδεση."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
-msgstr "ΔημιουÏγία υφής Î¿ÎºÏ„Î±Î´Î¹ÎºÎ¿Ï Î´Î­Î½Ï„Ïου"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
+msgstr "Δεν ήταν δυνατή η σÏνδεση στον κεντÏικό υπολογιστή:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
-msgstr "ΜεταφοÏά στους χάÏτες φωτός:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
+msgstr "Δεν λήφθηκε απόκÏιση από τον κεντÏικό υπολογιστή:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
-msgstr "Δέσμευση υφής #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Δεν λήφθηκε απόκÏιση."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
-msgstr "ΠÏοεπεξεÏγασία Ï„Ïιγώνου #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
+msgstr "Το αίτημα απέτυχε, κώδικας επιστÏοφής:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
-msgstr "ΜετεπεξεÏγασία υφής #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
+msgstr "Το αίτημα απέτυχε."
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
-msgstr "ΠÏοεπεξεÏγάσου!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
+msgstr "Το αίτημα απέτυχε, πάÏα πολλές ανακατευθήνσεις"
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
+msgstr "Î’Ïόχος ανακατευθήνσεων."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Απέτυχε:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
-"ΕπαναφοÏά της Ï€ÏοεπεξεÏγασίας του Î¿ÎºÏ„Î±Î´Î¹ÎºÎ¿Ï Î´Î­Î½Ï„Ïου του χάÏτη φωτός "
-"(Εκκίνηση από την αÏχή)."
+"Εσφαλμένος κωδικός κατακεÏματισμοÏ, θα θεωÏηθεί ότι το αÏχείο έχει αλοιωθεί."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr "Αναμενόμενο:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr "Δοσμένο:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr "Η δοκιμή κατακεÏÎ¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï sha256 απέτυχε"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr "Σφάλμα λήψης:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr "Λήψη:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr "Επίλυση..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting.."
+msgstr "ΣÏνδεση.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr "Γίνεται αίτημα.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
+msgstr "Σφάλμα κατά την Ï€Ïαγματοποίηση αιτήματος"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr "ΑνενεÏγό"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr "Ξαναδοκίμασε"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr "Σφάλμα λήψης"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr "Η λήψη είναι ήδη σε εξέλιξη!"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr "ΠÏώτο"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr "ΠÏοηγοÏμενο"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr "Επόμενο"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr "ΠÏοηγοÏμενο"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "Όλα"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr "ΠÏόσθετα"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "Ταξινόμηση:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr "ΑντιστÏοφή"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "ΚατηγοÏία:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "ΔιεÏθυνση:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr "ΥποστήÏιξη.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "Επίσημα"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr "Δοκιμιμαστικά"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr "ΑÏχείο ZIP των Asset"
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr "ΠÏοεπισκόπηση"
@@ -3763,12 +3266,18 @@ msgid "Edit CanvasItem"
msgstr "ΕπεξεÏγασία στοιχείου κανβά"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+#, fuzzy
+msgid "Anchors only"
+msgstr "ΆγκυÏα"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Change Anchors and Margins"
msgstr "Αλλαγή αγκυÏών"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
-msgstr "Μεγέθυνση (%):"
+msgid "Change Anchors"
+msgstr "Αλλαγή αγκυÏών"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Paste Pose"
@@ -3822,60 +3331,78 @@ msgid "Pan Mode"
msgstr "ΛειτουÏγία Μετακίνησης κάμεÏας"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
-msgstr "Κλείδωμα του επιλεγμένου αντικείμένου (Δεν μποÏεί να μετακινηθεί)."
+#, fuzzy
+msgid "Toggles snapping"
+msgstr "Εναλλαγή σημείου διακοπής"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
-msgstr "Ξεκλείδωμα του επιλεγμένου αντικείμένου (ΜποÏεί να μετακινηθεί)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
+msgstr "ΧÏήση κουμπώματος"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
-msgstr "ΣιγουÏεÏεται ότι τα παιδιά του αντικειμένου δεν μποÏοÏν να επιλεχθοÏν."
+#, fuzzy
+msgid "Snapping options"
+msgstr "Επιλογές κίνησης"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
-msgstr "ΕπαναφέÏει την δυνατότητα των παιδιών του αντικειμένου να επιλεγοÏν."
+#, fuzzy
+msgid "Snap to grid"
+msgstr "ΛειτουÏγία κουμπώματος:"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "ΕπεξεÏγασία"
+msgid "Use Rotation Snap"
+msgstr "ΧÏήση κουμπώματος πεÏιστÏοφής"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
-msgstr "ΧÏήση κουμπώματος"
+#, fuzzy
+msgid "Configure Snap..."
+msgstr "ΔιαμόÏφωση κουμπώματος.."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
-msgstr "Εμφάνιση πλέγματος"
+msgid "Snap Relative"
+msgstr "Σχετικό κοÏμπωμα"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
-msgstr "ΧÏήση κουμπώματος πεÏιστÏοφής"
+msgid "Use Pixel Snap"
+msgstr "ΧÏήση κουμπώματος εικονοστοιχείου"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
-msgstr "Σχετικό κοÏμπωμα"
+msgid "Smart snapping"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
-msgstr "ΔιαμόÏφωση κουμπώματος.."
+#, fuzzy
+msgid "Snap to parent"
+msgstr "Επικάλυψη γονέα"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
-msgstr "ΧÏήση κουμπώματος εικονοστοιχείου"
+msgid "Snap to node anchor"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr "Κλείδωμα του επιλεγμένου αντικείμένου (Δεν μποÏεί να μετακινηθεί)."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr "Ξεκλείδωμα του επιλεγμένου αντικείμένου (ΜποÏεί να μετακινηθεί)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
-msgstr "Σκελετός.."
+msgid "Makes sure the object's children are not selectable."
+msgstr "ΣιγουÏεÏεται ότι τα παιδιά του αντικειμένου δεν μποÏοÏν να επιλεχθοÏν."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
+msgstr "ΕπαναφέÏει την δυνατότητα των παιδιών του αντικειμένου να επιλεγοÏν."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Make Bones"
@@ -3903,12 +3430,19 @@ msgid "View"
msgstr "ΚάμεÏα"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
-msgstr "ΕπαναφοÏά μεγέθυνσης"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr "Εμφάνιση πλέγματος"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
-msgstr "ΟÏισμός μεγέθυνσης.."
+#, fuzzy
+msgid "Show helpers"
+msgstr "Εμφάνιση οστών"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Show rulers"
+msgstr "Εμφάνιση οστών"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -3919,8 +3453,9 @@ msgid "Frame Selection"
msgstr "Πλαισίωμα επιλογής"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
-msgstr "ΆγκυÏα"
+#, fuzzy
+msgid "Layout"
+msgstr "Αποθήκευση διάταξης"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Keys"
@@ -3943,12 +3478,21 @@ msgid "Clear Pose"
msgstr "ΕκκαθάÏιση στάσης"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
-msgstr "ΟÏισμός τιμής"
+msgid "Drag pivot from mouse position"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
-msgstr "ΚοÏμπωμα (Εικονοστοιχεία):"
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "ΟÏισμός θέσης εξόδου καμπÏλης"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Divide grid step by 2"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
@@ -3958,24 +3502,29 @@ msgstr "ΠÏόσθεσε %s"
msgid "Adding %s..."
msgstr "ΠÏοσθήκη %s..."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr "ΔημιουÏγία κόμβου"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr "Σφάλμα κατά την αÏχικοποίηση σκηνής από %s"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr "Εντάξει :("
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr ""
"Δεν υπάÏχει γονέας στον οποίο μποÏεί να γίνει αÏχικοποίηση του παιδιοÏ."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr "Αυτή η λειτουÏγία απαιτεί έναν μόνο επιλεγμένο κόμβο."
@@ -3991,45 +3540,6 @@ msgstr ""
"ΣÏÏσιμο & απόθεση + Shift: ΠÏοσθήκη του κόμβου ως αδελφό\n"
"ΣÏÏσιμο & απόθεση + Alt: Αλλαγή του Ï„Ïπου του κόμβου"
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr "Δημιουγία πολυγώνου"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr "ΕπεγεÏγασία πολυγώνου"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr "ΕπεγεÏγασία πολυγώνου (ΑφαίÏεση σημείου)"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "ΔημιουÏγία νέου πολυγώνου από την αÏχή."
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "ΔημιουÏγία πολυγώνου 3D"
@@ -4039,14 +3549,6 @@ msgid "Set Handle"
msgstr "ΟÏισμός λαβής"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr "ΔημιουÏγία βιβλιοθήκης πλεγμάτων"
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr "ΜικÏογÏαφία.."
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr "ΑφαίÏεση του στοιχείου %d?"
@@ -4069,19 +3571,38 @@ msgid "Update from Scene"
msgstr "ΑναπÏοσαÏμογή από την σκηνή"
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
-msgid "Modify Curve Point"
-msgstr "ΤÏοποπίηση καμπÏλης"
+msgid "Ease in"
+msgstr "Ομαλή κίνηση Ï€Ïος τα μέσα"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Ease out"
+msgstr "Ομαλή κίνηση Ï€Ïος τα έξω"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr "ΤÏοποπίηση σημείου καμπÏλης"
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Tangent"
-msgstr "ΤÏοποποίηση χάÏτη καμπÏλης"
+msgstr "ΤÏοποπίηση εφαπτομένης καμπÏλης"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Load Curve Preset"
-msgstr "ΦόÏτωση Ï€ÏοκαθοÏισμένης"
+msgstr "ΦόÏτωση Ï€ÏοκαθοÏισμένης καμπÏλης"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Add point"
@@ -4092,31 +3613,28 @@ msgid "Remove point"
msgstr "ΑφαίÏεση σημείου"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Left linear"
-msgstr "ΓÏαμμική"
+msgstr "ΑÏιστεÏή γÏαμμική"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Right linear"
-msgstr "Δεξιά όψη"
+msgstr "Δεξιά γÏαμμική"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
-msgstr "ΦόÏτωση Ï€ÏοκαθοÏισμένης"
+msgstr "ΦόÏτωση διαμόÏφωσης"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Remove Curve Point"
-msgstr "ΑφαίÏεση σημείου διαδÏομής"
+msgstr "ΑφαίÏεση σημείου καμπÏλης"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Toggle Curve Linear Tangent"
-msgstr ""
+msgstr "Εναλλαγή γÏαμμικής εφαπτομένης καμπÏλης"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Hold Shift to edit tangents individually"
-msgstr ""
+msgstr "Πατήστε το Shift για να επεξεÏγαστείτε εφαπτομένες μεμονωμένα"
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -4144,28 +3662,26 @@ msgid ""
"No OccluderPolygon2D resource on this node.\n"
"Create and assign one?"
msgstr ""
+"Δεν υπάÏχει πόÏος OccluderPolygon2D σε αυτόν τον κόμβο.\n"
+"Îα δημιουÏγία και να οÏισθεί ένας;"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "ΔημιουÏγία πολυγώνου εμποδίου"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr "ΕπεξεÏγασία υπαÏÎºÏ„Î¿Ï Ï€Î¿Î»Ï…Î³ÏŽÎ½Î¿Ï…:"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr "ΑÏιστεÏÏŒ κλίκ: ΜΕτακίνηση σημείου."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr "Ctrl+ΑÏιστεÏÏŒ κλικ: ΔιαχωÏσμός τμήματος."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr "Δεξί κλικ: ΔιαγÏαφή σημείου."
@@ -4266,6 +3782,10 @@ msgid "Create Outline"
msgstr "ΔημιουÏγία πεÏιγÏάμματος"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr "Πλέγμα"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr "ΔημιουÏγία ÏƒÏ„Î±Ï„Î¹ÎºÎ¿Ï ÏƒÏŽÎ¼Î±Ï„Î¿Ï‚ πλέγματος Ï„Ïιγώνων"
@@ -4395,14 +3915,83 @@ msgstr "Τυχαία κλιμάκωση:"
msgid "Populate"
msgstr "ΣυμπλήÏωση"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr "ΠÏοεπεξεÏγάσου!"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+#, fuzzy
+msgid "Bake the navigation mesh.\n"
+msgstr "ΔημιουÏγία πλέγματος πλοήγησης"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+#, fuzzy
+msgid "Clear the navigation mesh."
+msgstr "ΔημιουÏγία πλέγματος πλοήγησης"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating heightfield..."
+msgstr "ΔημιουÏγία Î¿ÎºÏ„Î±Î´Î¹ÎºÎ¿Ï Î´Î­Î½Ï„Ïου φωτός"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Marking walkable triangles..."
+msgstr "ΜεταφÏάσιμες συμβολοσειÏές..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Partitioning..."
+msgstr "ΠÏοειδοποίηση"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating contours..."
+msgstr "ΔημιουÏγία υφής Î¿ÎºÏ„Î±Î´Î¹ÎºÎ¿Ï Î´Î­Î½Ï„Ïου"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating polymesh..."
+msgstr "ΔημιουÏγία πλέγματος πεÏιγÏάμματος.."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Converting to native navigation mesh..."
+msgstr "ΔημιουÏγία πλέγματος πλοήγησης"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Parsing Geometry..."
+msgstr "Ανάλυση γεωμετÏίας"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
+msgstr ""
+
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Create Navigation Polygon"
msgstr "ΔημιουÏγία πολυγώνου πλοήγησης"
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
-msgstr "ΑφαίÏεση πολυγώνου και σημείου"
-
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Clear Emission Mask"
msgstr "ΕκκαθάÏιση μάσκας εκπομπής"
@@ -4440,9 +4029,8 @@ msgstr "ΦόÏτωση μάσκας εκπομπής"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Particles"
-msgstr "ΚοÏυφές"
+msgstr "Σωματίδια"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
@@ -4577,14 +4165,17 @@ msgid "Curve Point #"
msgstr "Σημείο καμπÏλης #"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
msgstr "ΟÏισμός θέσης σημείου καμπÏλης"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
msgstr "ΟÏισμός θέσης εισόδου καμπÏλης"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
msgstr "ΟÏισμός θέσης εξόδου καμπÏλης"
@@ -4645,6 +4236,14 @@ msgid "Scale Polygon"
msgstr "Κλιμάκωση πολυγώνου"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "ΕπεξεÏγασία"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr "ΠολÏγωνο -> UV"
@@ -4699,63 +4298,10 @@ msgstr "ΦόÏτωση πόÏου"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "Επικόληση"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr "Ανάλυση BBCode"
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr "Μήκος:"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr "Άνοιγμα αÏχείων δειγμάτων"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr "ΣΦΑΛΜΑ: Δεν ήταν δυνατή η φόÏτωση δείγματος!"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr "ΠÏοσθήκη δείγματος"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr "Μετονομασία δείγματος"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr "ΔιαγÏαφή δείγματος"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr "16 Δυαδικά ψηφία"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr "8 Δυαδικά ψηφία"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr "ΣτεÏεοφωνικό"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr "Μονοφωνικό"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr "ΜοÏφή"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr "Τόνος"
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr "ΕκκαθάÏιση Ï€Ïόσφατων αÏχείων"
@@ -4765,6 +4311,8 @@ msgid ""
"Close and save changes?\n"
"\""
msgstr ""
+"Κλείσιμο και αποθήκευση αλλαγών;\n"
+"\""
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4792,7 +4340,7 @@ msgstr "Αποθήκευση θέματος ως.."
#: editor/plugins/script_editor_plugin.cpp
msgid " Class Reference"
-msgstr ""
+msgstr " ΑναφοÏά κλασεων"
#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
@@ -4846,10 +4394,13 @@ msgstr "Κλείσιμο τεκμηÏίωσης"
msgid "Close All"
msgstr "Κλείσιμο όλων"
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr "Εκτέλεση"
+
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Toggle Scripts Panel"
-msgstr "Εναλλαγή αγαπημένου"
+msgstr "Εναλλαγή πλαισίου δεσμών ενεÏγειών"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -4875,7 +4426,8 @@ msgstr "Βήμα μέσα"
msgid "Break"
msgstr "Διακοπή"
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr "Συνέχιση"
@@ -4884,21 +4436,8 @@ msgid "Keep Debugger Open"
msgstr "ΔιατήÏησε τον αποσφαλματωτή ανοιχτό"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Debug with external editor"
-msgstr "Άνοιγμα του επόμενου επεξεÏγαστή"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr "ΠαÏάθυÏο"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr "Μετκίνιση αÏιστεÏά"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr "Μετακίνηση δεξιά"
+msgstr "Αποσφαλμάτωση με εξωτεÏικό επεξεÏγαστή"
#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
@@ -4957,7 +4496,7 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
-msgstr ""
+msgstr "Μόνο οι πόÏοι από το σÏστημα αÏχείων μποÏοÏν να διαγÏαφοÏν."
#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
@@ -4986,8 +4525,9 @@ msgid "Cut"
msgstr "Αποκοπή"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "ΑντιγÏαφή"
@@ -5006,9 +4546,8 @@ msgid "Move Down"
msgstr "Μετακίνηση κάτω"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Delete Line"
-msgstr "ΔιαγÏαφή σημείου"
+msgstr "ΔιαγÏαφή γÏαμμής"
#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
@@ -5251,10 +4790,6 @@ msgid "View Plane Transform."
msgstr "Μετασχηματισμός στο επίπεδο θέασης."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr "Κλιμάκωση to %s%%."
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr "ΠεÏιστÏοφή %s μοίÏες."
@@ -5271,10 +4806,6 @@ msgid "Top View."
msgstr "Πάνω όψη."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr "Πάνω"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr "Πίσω όψη."
@@ -5376,9 +4907,8 @@ msgid "Audio Listener"
msgstr "ΑκÏοατής ήχου"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Doppler Enable"
-msgstr "ΕνεÏγοποίηση"
+msgstr "ΕνεÏγοποίηση φαινομένου dollper"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
@@ -5409,7 +4939,6 @@ msgid "Freelook Speed Modifier"
msgstr "ΤαχÏτητα ελεÏθεÏου κοιτάγματος"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "preview"
msgstr "ΠÏοεπισκόπηση"
@@ -5418,17 +4947,18 @@ msgid "XForm Dialog"
msgstr "Διάλογος XForm"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Select Mode (Q)\n"
-msgstr "Επιλογή λειτουÏγίας"
+msgstr "Επιλογή λειτουÏγίας (Q)\n"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid ""
"Drag: Rotate\n"
"Alt+Drag: Move\n"
"Alt+RMB: Depth list selection"
-msgstr "Alt+Δεξί κλικ: Επιλογή λίστας βάθους"
+msgstr ""
+"Μετακίνηση: ΠεÏιστÏοφή\n"
+"Alt + ΣÏÏσιμο: Μετακίνηση\n"
+"Alt + Δεξί κλικ: Επιλογή λίστας βάθους"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
@@ -5507,6 +5037,10 @@ msgid "Transform"
msgstr "Μετασχηματισμός"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr "ΔιαμόÏφωση κουμπώματος.."
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr "Τοπικές συντεταγμένες"
@@ -5652,6 +5186,10 @@ msgid "Speed (FPS):"
msgstr "ΤαχÏτητα (FPS):"
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr "Επανάληψη"
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr "ΚαÏέ κίνησης"
@@ -5664,21 +5202,22 @@ msgid "Insert Empty (After)"
msgstr "Εισαγωγή άδειου (Μετά)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr "Πάνω"
+#, fuzzy
+msgid "Move (Before)"
+msgstr "Μετακίνηση κόμβων"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
-msgstr "Κάτω"
+#, fuzzy
+msgid "Move (After)"
+msgstr "Μετκίνιση αÏιστεÏά"
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "ΠÏοεπισκόπηση StyleBox:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#, fuzzy
msgid "Set Region Rect"
-msgstr "ΠεÏιοχή υφής"
+msgstr "ΟÏισμός οÏθογωνίου πεÏιοχής"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
@@ -5738,18 +5277,20 @@ msgid "Remove Item"
msgstr "ΑφαίÏεση στοιχείου"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All Items"
-msgstr "ΑφαίÏεση στοιχείων κλάσης"
+msgstr "ΑφαίÏεση όλων των στοιχείων"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All"
-msgstr "ΑφαίÏεση"
+msgstr "ΑφαίÏεση όλων"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
-msgstr "Θέμα"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Class Items"
@@ -5833,11 +5374,14 @@ msgid "Style"
msgstr "Στυλ"
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr "ΓÏαμματοσειÏά"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr "ΧÏώμα"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase Selection"
msgstr "ΔιαγÏαφή επιλογής"
@@ -5846,18 +5390,16 @@ msgid "Paint TileMap"
msgstr "Βάψιμο TileMap"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Line Draw"
-msgstr "ΓÏαμμική"
+msgstr "Σχεδιασμός γÏαμμής"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rectangle Paint"
-msgstr ""
+msgstr "ΧÏωματοσμός οÏθογωνίου"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Bucket Fill"
-msgstr "Κουβάς"
+msgstr "Γέμισμα κουβά"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -5884,8 +5426,9 @@ msgid "Mirror Y"
msgstr "ΣυμμετÏία στον άξονα Î¥"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
-msgstr "Κουβάς"
+#, fuzzy
+msgid "Paint Tile"
+msgstr "Βάψιμο TileMap"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Pick Tile"
@@ -5948,6 +5491,11 @@ msgid "Delete preset '%s'?"
msgstr "ΔιαγÏαφή διαμόÏφωσης '%s';"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr "Τα Ï€Ïότυπα εξαγωγής για αυτή την πλατφόÏτμα λείπουν:"
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr "ΔιαμοÏφώσεις"
@@ -6002,53 +5550,80 @@ msgid "Make Patch"
msgstr "ΔημιουÏγία ενημέÏωσης"
#: editor/project_export.cpp
-#, fuzzy
msgid "Features"
-msgstr "Υφή"
+msgstr "Δυνατότητες"
#: editor/project_export.cpp
msgid "Custom (comma-separated):"
-msgstr ""
+msgstr "ΠÏοσαÏομένο (χωÏισμός με κόμμα):"
#: editor/project_export.cpp
-#, fuzzy
msgid "Feature List:"
-msgstr "Λίστα συναÏτήσεων:"
+msgstr "Λίστα δυνατοτήτων:"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export PCK/Zip"
-msgstr "Εξαγωγή"
+msgstr "Εξαγωγή PCK/ZIP"
#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
msgstr "Τα Ï€Ïότυπα εξαγωγής για αυτή την πλατφόÏτμα λείπουν:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr "Τα Ï€Ïότυπα εξαγωγής για αυτή την πλατφόÏτμα λείπουν:"
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr "Εξαγωγή με αποσφαλμάτωση"
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
-msgstr "Μη έγκυÏη διαδÏομή έÏγου, η διαδÏομή Ï€Ïέπει να υπάÏχει!"
+#, fuzzy
+msgid "The path does not exist."
+msgstr "Το αÏχείο δεν υπάÏχει."
+
+#: editor/project_manager.cpp
+msgid "Please choose a 'project.godot' file."
+msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
-msgstr "Μη έγκυÏη διαδÏομή έÏγου, το project.godot δεν Ï€Ïέπει να υπάÏχει."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
+msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
-msgstr "Μη έγκυÏη διαδÏομή έÏγου, το project.godot Ï€Ïέπει να υπάÏχει."
+msgid "Please choose a folder that does not contain a 'project.godot' file."
+msgstr ""
#: editor/project_manager.cpp
msgid "Imported Project"
msgstr "Εισαγμένο έÏγο"
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr "Μη έγκυÏη διαδÏομή έÏγου (Αλλάξατε τίποτα;)."
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't get project.godot in project path."
+msgstr "Δεν ήταν δυνατή η δημιουÏγία του project.godot στη διαδÏομή έÏγου."
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't edit project.godot in project path."
+msgstr "Δεν ήταν δυνατή η δημιουÏγία του project.godot στη διαδÏομή έÏγου."
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr "Δεν ήταν δυνατή η δημιουÏγία του project.godot στη διαδÏομή έÏγου."
@@ -6057,38 +5632,49 @@ msgid "The following files failed extraction from package:"
msgstr "Η εξαγωγή των ακόλουθων αÏχείων από το πακέτο απέτυχε:"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Rename Project"
+msgstr "Ανώνυμο έÏγο"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't get project.godot in the project path."
+msgstr "Δεν ήταν δυνατή η δημιουÏγία του project.godot στη διαδÏομή έÏγου."
+
+#: editor/project_manager.cpp
+msgid "New Game Project"
+msgstr "Îέο έÏγο παιχνιδιοÏ"
+
+#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "Εισαγωγή υπαÏÎºÏ„Î¿Ï Î­Ïγου"
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
-msgstr "ΔιαδÏομή έÏγου (ΠÏέπει να υπάÏχει):"
+msgid "Create New Project"
+msgstr "ΔημιουÏγία νέου έÏγου"
+
+#: editor/project_manager.cpp
+msgid "Install Project:"
+msgstr "Εγκατάσταση έÏγου:"
#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Όνομα έÏγου:"
#: editor/project_manager.cpp
-msgid "Create New Project"
-msgstr "ΔημιουÏγία νέου έÏγου"
+#, fuzzy
+msgid "Create folder"
+msgstr "ΔημιουÏγία φακέλου"
#: editor/project_manager.cpp
msgid "Project Path:"
msgstr "ΔιαδÏομή έÏγου:"
#: editor/project_manager.cpp
-msgid "Install Project:"
-msgstr "Εγκατάσταση έÏγου:"
-
-#: editor/project_manager.cpp
msgid "Browse"
msgstr "ΠεÏιήγηση"
#: editor/project_manager.cpp
-msgid "New Game Project"
-msgstr "Îέο έÏγο παιχνιδιοÏ"
-
-#: editor/project_manager.cpp
msgid "That's a BINGO!"
msgstr "Αυτό είναι ένα «ΕÏÏηκα»!"
@@ -6097,25 +5683,31 @@ msgid "Unnamed Project"
msgstr "Ανώνυμο έÏγο"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't open project"
+msgstr "Δεν είναι δυνατή η εκτέλεση του έÏγου"
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr "Είστε σίγουÏοι πως θέλετε να ανοίξετε πεÏισσότεÏα από ένα έÏγα;"
#: editor/project_manager.cpp
-#, fuzzy
msgid ""
"Can't run project: no main scene defined.\n"
"Please edit the project and set the main scene in \"Project Settings\" under "
"the \"Application\" category."
msgstr ""
-"Δεν έχει καθοÏιστεί κÏÏια σκηνή, θέλετε να επιλέξετε μία;\n"
-"ΜποÏείτε να την αλλάξετε αÏγότεÏα στις «Ρυθμίσεις έÏγου» κάτω από την "
-"κατηγοÏία «ΕφαÏμογή»."
+"Δεν είναι δυνατή η εκτέλεση του έÏγου: Δεν έχει καθοÏιστεί κÏÏια σκηνή.\n"
+"ΠαÏακαλώ επεξεÏγαστείτε το έÏγο και οÏίστε την κÏÏια σκηνή στις «Ρυθμίσεις "
+"έÏγου» κάτω από την κατηγοÏία «ΕφαÏμογή»."
#: editor/project_manager.cpp
msgid ""
"Can't run project: Assets need to be imported.\n"
"Please edit the project to trigger the initial import."
msgstr ""
+"Δεν είναι δυνατή η εκτέλεση του έÏγου: Τα asset Ï€Ïέπει να εισαχθοÏν.\n"
+"ΠαÏακαλώ επεξεÏγαστείτε το έÏγο για να γίνει η αÏχική εισαγωγή."
#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
@@ -6129,6 +5721,12 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
"You are about the scan %s folders for existing Godot projects. Do you "
"confirm?"
msgstr ""
@@ -6139,10 +5737,6 @@ msgid "Project List"
msgstr "Λίστα έÏγων"
#: editor/project_manager.cpp
-msgid "Run"
-msgstr "Εκτέλεση"
-
-#: editor/project_manager.cpp
msgid "Scan"
msgstr "ΣάÏωση"
@@ -6164,8 +5758,12 @@ msgstr "Έξοδος"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Restart Now"
+msgstr "Επανεκκίνηση (δευτεÏόλεπτα):"
+
+#: editor/project_manager.cpp
msgid "Can't run project"
-msgstr "Δεν ήταν δυνατή η σÏνδεση."
+msgstr "Δεν είναι δυνατή η εκτέλεση του έÏγου"
#: editor/project_settings_editor.cpp
msgid "Key "
@@ -6200,17 +5798,14 @@ msgid "Add Input Action Event"
msgstr "ΠÏοσθήκη συμβάντος εισόδου"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
@@ -6271,7 +5866,7 @@ msgstr "Αλλαγή"
msgid "Joypad Axis Index:"
msgstr "ΑÏιθμός άξονα Joypad:"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "Άξονας"
@@ -6291,57 +5886,64 @@ msgstr "ΔιαγÏαφή συμβάντος ενέÏγειας εισόδου"
msgid "Add Event"
msgstr "ΠÏοσθήκη συμβάντος"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "Συσκευή"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "Κουμπί"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "ΑÏιστεÏÏŒ κουμπί."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "Δεξί κουμπί."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "Μεσαίο κουμπί."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr "Ροδέλα πάνω."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr "Ροδέλα κάτω."
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Add Global Property"
-msgstr "ΠÏοσθέστε ιδιότητα Getter"
+msgstr "ΠÏοσθήκη καθολικής ιδιότητας"
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
-msgstr ""
+#, fuzzy
+msgid "Select a setting item first!"
+msgstr "Επιλέξτε ένα αντικείμενο ÏÏθμισης Ï€Ïώτα!"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "No property '"
-msgstr "Ιδιότητα:"
+msgstr "Δεν υπάÏχει ιδιότητα '"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Setting '"
-msgstr "Ρυθμίσεις"
+msgstr "Ρυθμίση '"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Delete Item"
-msgstr "ΔιαγÏαφή εισόδου"
+msgstr "ΔιαγÏαφή αντικειμένου"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Can't contain '/' or ':'"
+msgstr "Δεν ήταν δυνατή η σÏνδεση στον κεντÏικό υπολογιστή:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Already existing"
+msgstr "Η ενέÏγεια '%s' υπάÏχει ήδη!"
#: editor/project_settings_editor.cpp
msgid "Error saving settings."
@@ -6353,7 +5955,7 @@ msgstr "Οι Ïυθμίσεις αποθηκεÏτικαν εντάξει."
#: editor/project_settings_editor.cpp
msgid "Override for Feature"
-msgstr ""
+msgstr "ΠαÏάκαμψη για δυνατότητα"
#: editor/project_settings_editor.cpp
msgid "Add Translation"
@@ -6384,6 +5986,15 @@ msgid "Remove Resource Remap Option"
msgstr "ΑφαίÏεση επιλογής ανακατεÏθυνσης πόÏου"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Changed Locale Filter"
+msgstr "Αλλαγή χÏόνου ανάμειξης"
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr "Ρυθμίσεις έÏγου (project.godot)"
@@ -6397,7 +6008,7 @@ msgstr "Ιδιότητα:"
#: editor/project_settings_editor.cpp
msgid "Override For.."
-msgstr ""
+msgstr "ΠαÏάκαμψη για..."
#: editor/project_settings_editor.cpp
msgid "Input Map"
@@ -6444,6 +6055,30 @@ msgid "Locale"
msgstr "ΠεÏιοχή"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales Filter"
+msgstr "ΠεÏιοχή"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Show all locales"
+msgstr "Εμφάνιση οστών"
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "ΦιλτÏάÏισμα κόμβων"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales:"
+msgstr "ΠεÏιοχή"
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "Αυτόματη φόÏτωση"
@@ -6484,26 +6119,34 @@ msgid "Assign"
msgstr "Ανάθεση"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Select Node"
-msgstr "Επιλέξτε έναν κόμβο"
+msgstr "Επιλογή κόμβου"
#: editor/property_editor.cpp
msgid "New Script"
msgstr "Îεα δεσμή ενεÏγειών"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Make Unique"
+msgstr "ΔημιουÏγία οστών"
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr "Εμφάνιση στο σÏστημα αÏχείων"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Convert To %s"
+msgstr "ΜετατÏοπή σε..."
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr "Σφάλμα κατά την φόÏτωση αÏχείου: Δεν είναι πόÏος!"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Selected node is not a Viewport!"
-msgstr "Επιλέξτε κόμβους για εισαγωγή"
+msgstr "Ο επιλεγμένος κόμβος δεν είναι Viewport!"
#: editor/property_editor.cpp
msgid "Pick a Node"
@@ -6534,6 +6177,11 @@ msgid "Select Property"
msgstr "Επιλογή ιδιότητας"
#: editor/property_selector.cpp
+#, fuzzy
+msgid "Select Virtual Method"
+msgstr "Επιλογή μεθόδου"
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr "Επιλογή μεθόδου"
@@ -6563,26 +6211,6 @@ msgstr "ΔιατήÏηση παγκόσμιου μετασχηματισμοÏ"
msgid "Reparent"
msgstr "ΕπαναπÏοσδιοÏισμός γονέα"
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr "ΔημιουÏγία νέου πόÏου"
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr "Άνοιγμα πόÏου"
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr "Αποθήκευση πόÏου"
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr "ΕÏγαλεία πόÏων"
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr "Κάνε τοπικό"
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr "ΛειτουÏγία εκτέλεσης:"
@@ -6717,14 +6345,6 @@ msgid "Sub-Resources:"
msgstr "Yπο-ΠόÏοι:"
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr "ΕπεξεÏγασία Ομάδων"
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr "ΕπεξεÏγασία συνδέσεων"
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr "ΕκκαθάÏιση κληÏονομικότητας"
@@ -6785,9 +6405,8 @@ msgstr ""
"υπάÏχει πηγαίος κόμβος."
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Filter nodes"
-msgstr "ΦίλτÏα"
+msgstr "ΦιλτÏάÏισμα κόμβων"
#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
@@ -6882,18 +6501,16 @@ msgid "Scene Tree (Nodes):"
msgstr "ΔέντÏο σκηνής (Κόμβοι):"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Node Configuration Warning!"
-msgstr "ΠÏοειδοποίηση διαμόÏφωσης κόμβου:"
+msgstr "ΠÏοειδοποίηση διαμόÏφωσης κόμβου!"
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
msgstr "Επιλέξτε έναν κόμβο"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Error loading template '%s'"
-msgstr "Σφάλμα κατά την φόÏτωση εικόνας:"
+msgstr "Σφάλμα κατά την φόÏτωση Ï€ÏοτÏπου '%s'"
#: editor/script_create_dialog.cpp
msgid "Error - Could not create script in filesystem."
@@ -6921,6 +6538,15 @@ msgid "Invalid base path"
msgstr "Μη έγκυÏη βασική διαδÏομή"
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "File exists, will be reused"
+msgstr "Το αÏχείο υπάÏχει. Θέλετε να το αντικαταστήσετε;"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr "Μη έγκυÏη επέκταση"
@@ -6961,6 +6587,10 @@ msgid "Load existing script file"
msgstr "ΦόÏτωση υπαÏÎºÏ„Î¿Ï Î±Ïχείου δεσμής ενεÏγειών"
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr "Γλώσσα"
+
+#: editor/script_create_dialog.cpp
msgid "Inherits"
msgstr "ΚληÏονομεί"
@@ -7001,6 +6631,10 @@ msgid "Function:"
msgstr "ΣυνάÏτηση:"
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr "Σφάλματα"
@@ -7081,6 +6715,10 @@ msgid "Type"
msgstr "ΤÏπος"
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr "ΜοÏφή"
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr "ΧÏήση"
@@ -7114,7 +6752,7 @@ msgstr "Αλλαγή διαμέτÏου φωτός"
#: editor/spatial_editor_gizmos.cpp
msgid "Change AudioStreamPlayer3D Emission Angle"
-msgstr ""
+msgstr "Αλλαγή γωνίας εκπομπής του AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
@@ -7156,13 +6794,31 @@ msgstr "Αλλαγή AABB σωματιδίων"
msgid "Change Probe Extents"
msgstr "Αλλαγή διαστάσεων αισθητήÏα"
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Library"
+msgstr "Βιβλιοθήκη πλεγμάτων..."
+
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Status"
+msgstr "Κατάσταση:"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr ""
"Μη έγκυÏη παÏάμετÏος στην convert(). ΧÏησιμοποιήστε τις σταθεÏές TYPE_*."
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Δεν υπάÏχουν αÏκετά byte για την αποκωδικοποίηση, ή άκυÏη μοÏφή."
@@ -7203,133 +6859,112 @@ msgstr "ΆκυÏη μοÏφή Î»ÎµÎ¾Î¹ÎºÎ¿Ï ÏƒÏ„Î¹Î³Î¼Î¹Î¿Ï„Ïπων (άκυÏÎ
#: modules/gdscript/gd_functions.cpp
msgid "Object can't provide a length."
-msgstr ""
+msgstr "Το αντικείμενο δεν έχει μήκος."
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Delete Selection"
-msgstr "ΔιαγÏαφή επιλεγμένου"
+msgstr "GridMap ΔιαγÏαφή επιλογής"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Duplicate Selection"
-msgstr "Διπλασιασμός επιλογής"
+msgstr "GridMap Διπλασιασμός επιλογής"
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Snap View"
-msgstr "Πάνω όψη"
+msgstr "ΚοÏμπωμα όψης"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
msgid "Prev Level (%sDown Wheel)"
-msgstr ""
+msgstr "ΠÏοηγοÏμενο επίπεδο ("
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
msgid "Next Level (%sUp Wheel)"
-msgstr ""
+msgstr "Επόμενο επίπεδο ("
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Clip Disabled"
-msgstr "ΑπενεÏγοποιημένο"
+msgstr "Η πεÏικοπή είναι απενεÏγοποιημένη"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clip Above"
-msgstr ""
+msgstr "ΠεÏικοπή πάνω"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clip Below"
-msgstr ""
+msgstr "ΠεÏικοπή κάτω"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit X Axis"
-msgstr ""
+msgstr "ΕπεξεÏγασία άξονα Χ"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Y Axis"
-msgstr ""
+msgstr "ΕπεξεÏγασία άξονα Î¥"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Z Axis"
-msgstr ""
+msgstr "ΕπεξεÏγασία άξονα Ζ"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate X"
-msgstr "Ctrl: ΠεÏιστÏοφή"
+msgstr "ΔÏομέας πεÏιστÏοφή Χ"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate Y"
-msgstr "Ctrl: ΠεÏιστÏοφή"
+msgstr "ΔÏομέας πεÏιστÏοφή Î¥"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate Z"
-msgstr "Ctrl: ΠεÏιστÏοφή"
+msgstr "ΔÏομέας πεÏιστÏοφή Ζ"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate X"
-msgstr ""
+msgstr "Πίσω δÏομέας πεÏιστÏοφή Χ"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate Y"
-msgstr ""
+msgstr "Πίσω δÏομέας πεÏιστÏοφή Î¥"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate Z"
-msgstr ""
+msgstr "Πίσω δÏομέας πεÏιστÏοφή Ζ"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Clear Rotation"
-msgstr ""
+msgstr "ΕκκαθάÏιση πεÏιστÏοφής δÏομέα"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Create Area"
-msgstr "ΔημιουÏγία νέου"
+msgstr "ΔημιουÏγία πεÏιοχής"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Create Exterior Connector"
-msgstr "ΔημιουÏγία νέου έÏγου"
+msgstr "ΔημιουÏγία εξωτεÏικής σÏνδεσης"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase Area"
-msgstr "ΔιαγÏαφή TileMap"
+msgstr "ΔιαγÏαφή πεÏσιοχής"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Selection -> Duplicate"
-msgstr "Μόνο στην επιλογή"
+msgstr "Επιλογή -> Διπλασιασμός"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Selection -> Clear"
-msgstr "Μόνο στην επιλογή"
+msgstr "Επιλογή -> ΕκκαθάÏιση"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Settings"
-msgstr "Ρυθμίσεις κουμπώματος"
+msgstr "Ρυθμίσεις GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Pick Distance:"
-msgstr "Στιγμιότυπο:"
+msgstr "Επιλογή απόστασης:"
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr " ΑÏχεία"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7371,29 +7006,24 @@ msgid "Stack overflow with stack depth: "
msgstr "ΥπεÏχείλιση στοίβας με βάθος στοίβας: "
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Signal Arguments"
-msgstr "ΕπεξεÏγασία παÏαμέτÏων σήματος:"
+msgstr "Αλλαγή παÏαμέτÏων σήματος"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Argument Type"
-msgstr "Αλλαγή Ï„Ïπου τιμής πίνακα"
+msgstr "Αλλαγή Ï„Ïπου παÏαμέτÏου"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Argument name"
-msgstr "Αλλαγή ονόματος εισόδου"
+msgstr "Αλλαγή ονόματος παÏαμέτÏου"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Set Variable Default Value"
-msgstr "Αλλαγή Ï€Ïοεπιλλεγμένης τιμής"
+msgstr "ΟÏισμός Ï€Ïοεπιλλεγμένης τιμής μεταβλητής"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Set Variable Type"
-msgstr "ΕπεξεÏγασία μεταβλητής:"
+msgstr "ΟÏισμός Ï„Ïπου μεταβλητής"
#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
@@ -7444,14 +7074,12 @@ msgid "Add Node"
msgstr "ΠÏοσθήκη κόμβου"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Remove VisualScript Nodes"
-msgstr "ΑφαίÏεση άκυÏων κλειδιών"
+msgstr "ΑφαίÏεση κόμβων VisualScript"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Duplicate VisualScript Nodes"
-msgstr "Διπλασιασμός κόμβων γÏαφήματος"
+msgstr "Διπλασιασμός κόμβων VisualScript"
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
@@ -7502,24 +7130,20 @@ msgid "Add Setter Property"
msgstr "ΠÏοσθέστε ιδιότητα Setter"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Base Type"
-msgstr "Αλλαγή Ï„Ïπου"
+msgstr "Αλλαγή Î²Î±ÏƒÎ¹ÎºÎ¿Ï Ï„Ïπου"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Move Node(s)"
-msgstr "ΑφαίÏεση κόμβων"
+msgstr "Μετακίνηση κόμβων"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Remove VisualScript Node"
-msgstr "ΑφαίÏεση κόμβου γÏαφήματος"
+msgstr "ΑφαίÏεση κόμβου VisualScript"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Connect Nodes"
-msgstr "ΣÏνδεση στον κόμβο:"
+msgstr "ΣÏνδεση κόμβων"
#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
@@ -7546,46 +7170,48 @@ msgid "Return"
msgstr "ΕπιστÏοφή"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr "Κλήση"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr "ΠάÏε"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
-msgstr "Αλλαγή ονόματος εισόδου"
+msgstr "Αλλαγή τιμής εισόδου"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Can't copy the function node."
-msgstr "ΑδÏνατη η λειτουÏγία στο '..'"
+msgstr "ΑδÏνατη η αντιγÏαφή του κόμβου συνάÏτησης."
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Clipboard is empty!"
-msgstr "Το Ï€ÏόχειÏο πόÏων είναι άδειο!"
+msgstr "Το Ï€ÏόχειÏο είναι άδειο!"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Paste VisualScript Nodes"
-msgstr "Επικόλληση κόμβων"
+msgstr "Επικόλληση κόμβων VisualScript"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Function"
msgstr "ΑφαίÏεση συνάÏτησης"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Edit Variable"
-msgstr "ΕπεξεÏγασία μεταβλητής:"
+msgstr "ΕπεξεÏγασία μεταβλητής"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Variable"
msgstr "ΑφαίÏεση μεταβλητής"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Edit Signal"
-msgstr "ΕπεξεÏγασία σήματος:"
+msgstr "ΕπεξεÏγασία σήματος"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Signal"
@@ -7827,6 +7453,9 @@ msgid ""
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"Αλλαγές στο μέγεθος του RigidBody2D (στις λειτουÏγίες character ή rigid) θα "
+"αντικατασταθοÏνε από την μηχανή φυσικής κατά την εκτέλεση.\n"
+"Αλλάξτε μέγεθος στα σχήματα σÏγκÏουσης των παιδιών."
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
@@ -7860,31 +7489,35 @@ msgstr ""
#: scene/3d/arvr_nodes.cpp
msgid "ARVRCamera must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "Η ARVRCamera Ï€Ïέπει να έχει έναν κόμβο ARVROrigin ως γονέα"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRController must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "Ο ARVRController Ï€Ïέπει να έχει έναν κόμβο ARVROrigin ως γονέα"
#: scene/3d/arvr_nodes.cpp
msgid ""
"The controller id must not be 0 or this controller will not be bound to an "
"actual controller"
msgstr ""
+"Ο δείκτης χειÏιστή δεν Ï€Ïέπει να είναι 0 για να είναι συνδεδεμένος αυτός ο "
+"χειÏιστής με έναν υπαÏκτό χειÏιστή"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRAnchor must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "Ο ARVRAnchor Ï€Ïέπει να έχει έναν κόμβο ARVROrigin ως γονέα"
#: 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 ""
+"Ο δείκτης άγκυÏας δεν Ï€Ïέπει να είναι 0 για να είναι συνδεδεμένη αυτή η "
+"άγκυÏα με μία υπαÏκτή άγκυÏα"
#: scene/3d/arvr_nodes.cpp
msgid "ARVROrigin requires an ARVRCamera child node"
-msgstr ""
+msgstr "Το ARVROrigin απαιτεί έναν κόμβο ARVRCamera ως παιδί"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7946,6 +7579,9 @@ msgid ""
"the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"Αλλαγές στο μέγεθος του RigidBody (στις λειτουÏγίες character ή rigid) θα "
+"αντικατασταθοÏνε από την μηχανή φυσικής κατά την εκτέλεση.\n"
+"Αλλάξτε μέγεθος στα σχήματα σÏγκÏουσης των παιδιών."
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
@@ -7968,16 +7604,25 @@ msgstr ""
"Ένας πόÏος SpriteFrames Ï€Ïέπει να δημιουÏγηθεί ή οÏισθεί στην ιδιότητα "
"'Frames' για να δείξει frames το AnimatedSprite3D."
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
-#, fuzzy
msgid "Raw Mode"
-msgstr "ΛειτουÏγία Μετακίνησης κάμεÏας"
+msgstr "Ωμή λειτουÏγία"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
msgstr "ΠÏοσθήκη του Ï„Ïέχοντος χÏώματος ως Ï€ÏοκαθοÏισμένο"
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "ΑκÏÏωση"
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr "Ειδοποίηση!"
@@ -7985,10 +7630,6 @@ msgstr "Ειδοποίηση!"
msgid "Please Confirm..."
msgstr "ΠαÏακαλώ επιβεβαιώστε..."
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -8030,6 +7671,647 @@ msgstr ""
"μέγεθος. Αλλιώς, κάντε το ένα RenderTarget και οÏίστε το internal texture σε "
"έναν κόμβο για απεικόνιση."
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr "Σφάλμα κατά την αÏχικοποίηση του FreeType."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "Άγνωστη μοÏφή γÏαμματοσειÏάς."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "Σφάλμα κατά την φόÏτωση της γÏαμματοσειÏάς."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr "Μη έγκυÏο μέγεθος γÏαμματοσειÏάς."
+
+#~ msgid "Filter:"
+#~ msgstr "ΦίλτÏο:"
+
+#~ msgid "' parsing of config failed."
+#~ msgstr "' απέτυχε η ανάλυση του αÏγείου παÏαμέτÏων."
+
+#~ msgid "Theme"
+#~ msgstr "Θέμα"
+
+#~ msgid "Method List For '%s':"
+#~ msgstr "Λίστα συναÏτήσεων για '%s':"
+
+#~ msgid "Arguments:"
+#~ msgstr "ΠαÏάμετÏοι:"
+
+#~ msgid "Return:"
+#~ msgstr "ΕπιστÏέφει:"
+
+#~ msgid "Added:"
+#~ msgstr "ΠÏοστέθηκαν:"
+
+#~ msgid "Removed:"
+#~ msgstr "ΑφαιÏέθηκαν:"
+
+#~ msgid "Error saving atlas:"
+#~ msgstr "Σφάλμα κατά την αποθήκευση άτλαντα:"
+
+#~ msgid "Could not save atlas subtexture:"
+#~ msgstr "ΑδÏνατη η αποθήκευση υπό-εικόνας άτλαντα:"
+
+#~ msgid "Exporting for %s"
+#~ msgstr "Εξαγωγή για %s"
+
+#~ msgid "Setting Up.."
+#~ msgstr "ΑÏχικοποίηση.."
+
+#~ msgid "Error loading scene."
+#~ msgstr "Σφάλμα κατά τη φόÏτωση σκηνής."
+
+#~ msgid "Re-Import"
+#~ msgstr "Επανεισαγωγή"
+
+#~ msgid "Please wait for scan to complete."
+#~ msgstr "ΠαÏακαλώ πεÏιμένετε να ολοκληÏωθεί η σάÏωση."
+
+#~ msgid "Current scene must be saved to re-import."
+#~ msgstr "Η Ï„Ïέχουσα σκηνή Ï€Ïέπει να αποθηκευτεί για να επαν-εισάγετε."
+
+#~ msgid "Save & Re-Import"
+#~ msgstr "Αποθήκευση & Επανεισαγωγή"
+
+#~ msgid "Re-Importing"
+#~ msgstr "Επανεισαγωγή"
+
+#~ msgid "Re-Import Changed Resources"
+#~ msgstr "Επανεισαγωγή Ï„Ïοποπιημένων πόÏων"
+
+#~ msgid "Loading Export Templates"
+#~ msgstr "ΦόÏτωση Ï€ÏοτÏπων εξαγωγής"
+
+#~ msgid ""
+#~ "\n"
+#~ "Status: Needs Re-Import"
+#~ msgstr ""
+#~ "\n"
+#~ "Κατάσταση: ΧÏειάζεται επανεισαγωγή"
+
+#~ msgid "Same source and destination files, doing nothing."
+#~ msgstr "Ίδια αÏχεία πηγής και Ï€ÏοοÏισμοÏ, παÏάλειψη ενέÏγειας."
+
+#~ msgid "Target file exists, can't overwrite. Delete first."
+#~ msgstr ""
+#~ "Το αÏχείο Ï€ÏοοÏÎ¹ÏƒÎ¼Î¿Ï Ï…Ï€Î¬Ïχει, όμως είναι αδÏνατη η αντικατάσταση. "
+#~ "ΔιαγÏάψτε το Ï€Ïώτα."
+
+#~ msgid "Same source and destination paths, doing nothing."
+#~ msgstr "Ίδιες διαδÏομές πηγής και Ï€ÏοοÏισμοÏ, παÏάλειψη ενέÏγειας."
+
+#~ msgid "Can't move directories to within themselves."
+#~ msgstr "ΑδÏνατη η μετακίνηση καταλόγων μέσα στους εαυτοÏÏ‚ τους."
+
+#~ msgid "Can't rename deps for:\n"
+#~ msgstr "Δεν είναι δυνατή η μετονομασία εξαÏτήσεων για:\n"
+
+#~ msgid "Error moving file:\n"
+#~ msgstr "Σφάλμα κατά την μετακίνηση αÏχείου:\n"
+
+#~ msgid "Pick New Name and Location For:"
+#~ msgstr "Επιλέξτε νέο όνομα και θέση για:"
+
+#~ msgid "No files selected!"
+#~ msgstr "Δεν επιλέχθηκαν αÏχεία!"
+
+#~ msgid "Info"
+#~ msgstr "ΠληÏοφοÏίες"
+
+#~ msgid "Re-Import.."
+#~ msgstr "Εκ νέου εισαγωγή..."
+
+#~ msgid "No bit masks to import!"
+#~ msgstr "Δεν υπάÏχουν μάσκες bit για εισαγωγή!"
+
+#~ msgid "Target path is empty."
+#~ msgstr "Η διαδÏομή Ï€ÏοοÏÎ¹ÏƒÎ¼Î¿Ï ÎµÎ¯Î½Î±Î¹ άδεια."
+
+#~ msgid "Target path must be a complete resource path."
+#~ msgstr "Η διαδÏομή Ï€ÏοοÏÎ¹ÏƒÎ¼Î¿Ï Ï€Ïέπει να είναι μία πλήÏης διαδÏομή σε πόÏο."
+
+#~ msgid "Target path must exist."
+#~ msgstr "Η διαδÏομή Ï€ÏοοÏÎ¹ÏƒÎ¼Î¿Ï Ï€Ïέπει να υπάÏχει."
+
+#~ msgid "Save path is empty!"
+#~ msgstr "Η διαδÏομή αποθήκευσης είναι άδεια!"
+
+#~ msgid "Import BitMasks"
+#~ msgstr "Εισαγωγή μάσκας bit"
+
+#~ msgid "Source Texture(s):"
+#~ msgstr "Πηγαίες υφές:"
+
+#~ msgid "Target Path:"
+#~ msgstr "ΔιαδÏομή Ï€ÏοοÏισμοÏ:"
+
+#~ msgid "Accept"
+#~ msgstr "Αποδοχή"
+
+#~ msgid "Bit Mask"
+#~ msgstr "Μάσκα bit"
+
+#~ msgid "No source font file!"
+#~ msgstr "Δεν δόθηκε πηγαίο αÏχείο γÏαμματοσειÏάς!"
+
+#~ msgid "No target font resource!"
+#~ msgstr "Δε δόθηκε πόÏος γÏαμματοσειÏάς Ï€ÏοοÏισμοÏ!"
+
+#~ msgid ""
+#~ "Invalid file extension.\n"
+#~ "Please use .font."
+#~ msgstr ""
+#~ "ΆκυÏη επέκταση αÏχείου.\n"
+#~ "ΠαÏακαλώ χÏησιμοποιήστε .font."
+
+#~ msgid "Couldn't save font."
+#~ msgstr "Δεν ήταν δυνατή η αποθήκευση της γÏαμματοσειÏάς."
+
+#~ msgid "Source Font:"
+#~ msgstr "Πηγαία γÏαμματοσειÏά:"
+
+#~ msgid "Source Font Size:"
+#~ msgstr "Μέγεθος πηγαίας γÏαμματοσειÏάς:"
+
+#~ msgid "Dest Resource:"
+#~ msgstr "ΠόÏος Ï€ÏοοÏισμοÏ:"
+
+#~ msgid "The quick brown fox jumps over the lazy dog."
+#~ msgstr "Γαζέες καὶ μυÏτιὲς δὲν θὰ βÏá¿¶ πιὰ στὸ χÏυσαφὶ ξέφωτο."
+
+#~ msgid "Test:"
+#~ msgstr "Δοκιμή:"
+
+#~ msgid "Options:"
+#~ msgstr "Επιλογές:"
+
+#~ msgid "Font Import"
+#~ msgstr "Εισαγωγή γÏαμματοσειÏάς"
+
+#~ msgid ""
+#~ "This file is already a Godot font file, please supply a BMFont type file "
+#~ "instead."
+#~ msgstr ""
+#~ "Αυτό το αÏχείο είναι ήδη ένα αÏχείο γÏαμματοσειÏάς της Godot, παÏακαλώ "
+#~ "υποβάλετε ένα αÏχείο Ï„Ïπου BMFont."
+
+#~ msgid "Failed opening as BMFont file."
+#~ msgstr "Απέτυχε το άνοιγμα ως αÏχείο BMFont."
+
+#~ msgid "Invalid font custom source."
+#~ msgstr "ΆκυÏη Ï€ÏοσαÏμοσμένη πηγή γÏαμματοσειÏάς."
+
+#~ msgid "No meshes to import!"
+#~ msgstr "Δεν υπάÏχουν πλέγματα για εισαγωγή!"
+
+#~ msgid "Single Mesh Import"
+#~ msgstr "Εισαγωγή ενός πλέγματος"
+
+#~ msgid "Source Mesh(es):"
+#~ msgstr "Πηγαία πλέγματα:"
+
+#~ msgid "Surface %d"
+#~ msgstr "Επιφάνεια %d"
+
+#~ msgid "No samples to import!"
+#~ msgstr "Δεν υπάÏχουν δείγματα για εισαγωγή!"
+
+#~ msgid "Import Audio Samples"
+#~ msgstr "Εισαγωγή δειγμάτων ήχου"
+
+#~ msgid "Source Sample(s):"
+#~ msgstr "Πηγαία δείγματα:"
+
+#~ msgid "Audio Sample"
+#~ msgstr "Δείγμα ήχου"
+
+#~ msgid "New Clip"
+#~ msgstr "Îέο απόσπασμα"
+
+#~ msgid "Flags"
+#~ msgstr "Σημαίες"
+
+#~ msgid "Bake FPS:"
+#~ msgstr "Ψήστε FPS:"
+
+#~ msgid "Optimizer"
+#~ msgstr "ΕÏγαλείο βελτιστοποίησης"
+
+#~ msgid "Max Linear Error"
+#~ msgstr "Μέγιστο γÏαμμικό σφάλμα"
+
+#~ msgid "Max Angular Error"
+#~ msgstr "Μέγιστο γωνιακό σφάλμα"
+
+#~ msgid "Max Angle"
+#~ msgstr "Ανώτατη Γωνία"
+
+#~ msgid "Clips"
+#~ msgstr "Αποσπάσματα"
+
+#~ msgid "Start(s)"
+#~ msgstr "ΑÏχή"
+
+#~ msgid "End(s)"
+#~ msgstr "Τέλος"
+
+#~ msgid "Filters"
+#~ msgstr "ΦίλτÏα"
+
+#~ msgid "Source path is empty."
+#~ msgstr "Η διαδÏομή Ï€Ïοέλευσης είναι άδεια."
+
+#~ msgid "Couldn't load post-import script."
+#~ msgstr "Δεν ήταν δυνατή η φόÏτωση της δεσμής ενεÏγειών μετ-εισαγωγής."
+
+#~ msgid "Invalid/broken script for post-import."
+#~ msgstr ""
+#~ "ΆκυÏη / χαλασμένη δεσμή ενεÏγειών για την διαδικασία της μετ-εισαγωγής."
+
+#~ msgid "Error importing scene."
+#~ msgstr "Σφάλμα κατά την εισαγωγή της σκηνής."
+
+#~ msgid "Import 3D Scene"
+#~ msgstr "Εισαγωγή 3D σκηνής"
+
+#~ msgid "Source Scene:"
+#~ msgstr "Σκηνή Ï€Ïοέλευσης:"
+
+#~ msgid "Same as Target Scene"
+#~ msgstr "Το ίδιο με την στοχευμένη σκηνή"
+
+#~ msgid "Shared"
+#~ msgstr "ΚοινόχÏηστο"
+
+#~ msgid "Target Texture Folder:"
+#~ msgstr "Επιλεγμένος φάκλος υφών:"
+
+#~ msgid "Post-Process Script:"
+#~ msgstr "Δεσμή ενεÏγειών μετ-επεξεÏγασίας:"
+
+#~ msgid "Custom Root Node Type:"
+#~ msgstr "ΠÏοσαÏμοσμένος Ï„Ïπος ÏÎ¹Î¶Î¹ÎºÎ¿Ï ÎºÏŒÎ¼Î²Î¿Ï…:"
+
+#~ msgid "Auto"
+#~ msgstr "Αυτόματο"
+
+#~ msgid "Root Node Name:"
+#~ msgstr "Όνομα ÏÎ¹Î¶Î¹ÎºÎ¿Ï ÎºÏŒÎ¼Î²Î¿Ï…:"
+
+#~ msgid "The Following Files are Missing:"
+#~ msgstr "Τα ακόλουθα αÏχεία λείπουν:"
+
+#~ msgid "Import Anyway"
+#~ msgstr "Εισαγωγή οÏτως ή άλλως"
+
+#~ msgid "Import & Open"
+#~ msgstr "Εισαγωγή & Άνοιγμα"
+
+#~ msgid "Edited scene has not been saved, open imported scene anyway?"
+#~ msgstr ""
+#~ "Η Ï„Ïέχουσα σκηνή δεν έχει αποθηκευτεί, άνοιγμα της εισαγμένης σκηνής "
+#~ "οÏτως ή άλλως;"
+
+#~ msgid "Import Image:"
+#~ msgstr "Εισαγωγή εικόνας:"
+
+#~ msgid "Couldn't localize path: %s (already local)"
+#~ msgstr ""
+#~ "Δεν είναι δυνατή η μετατÏοπή της διαδÏομής σε τοπική: %s (είναι ήδη "
+#~ "τοπικό)"
+
+#~ msgid "3D Scene Animation"
+#~ msgstr "Κίνηση Ï„Ïισδιάστατης σκηνής"
+
+#~ msgid "Uncompressed"
+#~ msgstr "Ασυμπίεστο"
+
+#~ msgid "Compress Lossless (PNG)"
+#~ msgstr "Συμπίεση χωÏίς απώλειες (PNG)"
+
+#~ msgid "Compress Lossy (WebP)"
+#~ msgstr "Συμπίεση με απώλειες (WebP)"
+
+#~ msgid "Compress (VRAM)"
+#~ msgstr "Συμπίεση (VRAM)"
+
+#~ msgid "Texture Format"
+#~ msgstr "ΜοÏφή υφής"
+
+#~ msgid "Texture Compression Quality (WebP):"
+#~ msgstr "Ποιότητα συμπίεσης υφής (WebP):"
+
+#~ msgid "Texture Options"
+#~ msgstr "Επιλογές υφής"
+
+#~ msgid "Please specify some files!"
+#~ msgstr "ΠαÏακαλώ καθοÏίστε κάποια αÏχεία!"
+
+#~ msgid "At least one file needed for Atlas."
+#~ msgstr "Τουλάχιστον ένα αÏχείο απαιτείται για τον άτλαντα."
+
+#~ msgid "Error importing:"
+#~ msgstr "Σφάλμα κατά την εισαγωγή:"
+
+#~ msgid "Only one file is required for large texture."
+#~ msgstr "Μόνο ένα αÏχείο είναι απαÏαίτητη για μεγάλη υφή."
+
+#~ msgid "Max Texture Size:"
+#~ msgstr "Μέγιστο μέγεθος υφής:"
+
+#~ msgid "Import Textures for Atlas (2D)"
+#~ msgstr "Εισαγωγή υφών για τον άτλαντα (2D)"
+
+#~ msgid "Cell Size:"
+#~ msgstr "Μέγεθος κελιοÏ:"
+
+#~ msgid "Large Texture"
+#~ msgstr "Μεγάλη υφή"
+
+#~ msgid "Import Large Textures (2D)"
+#~ msgstr "Εισαγωγής Μεγάλων Υφών (2D)"
+
+#~ msgid "Source Texture"
+#~ msgstr "Υφή Ï€Ïοέλευσης"
+
+#~ msgid "Base Atlas Texture"
+#~ msgstr "Βασική υφή άτλαντα"
+
+#~ msgid "Source Texture(s)"
+#~ msgstr "Υφές Ï€Ïοέλευσης"
+
+#~ msgid "Import Textures for 2D"
+#~ msgstr "Εισαγωγή υφών για 2 διαστάσεις"
+
+#~ msgid "Import Textures for 3D"
+#~ msgstr "Εισαγωγή υφών για 3 διαστάσεις"
+
+#~ msgid "Import Textures"
+#~ msgstr "Εισαγωγή υφών"
+
+#~ msgid "2D Texture"
+#~ msgstr "Υφή 2 διαστάσεων"
+
+#~ msgid "3D Texture"
+#~ msgstr "Υφή 3 διαστάσεων"
+
+#~ msgid "Atlas Texture"
+#~ msgstr "Υφή άτλαντα"
+
+#~ msgid ""
+#~ "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files "
+#~ "to the project."
+#~ msgstr ""
+#~ "ΣΗΜΕΙΩΣΗ: Η εισαγωγή δισδιάστατων υφών δεν είναι υποχÏεωτική. Απλά "
+#~ "αντιγÏάψτε τα αÏχεία png/jpg στο έÏγο."
+
+#~ msgid "Crop empty space."
+#~ msgstr "ΠεÏικοπή άδειου χώÏου."
+
+#~ msgid "Texture"
+#~ msgstr "Υφή"
+
+#~ msgid "Import Large Texture"
+#~ msgstr "Εισαγωγή μεγάλης υφής"
+
+#~ msgid "Load Source Image"
+#~ msgstr "ΦόÏτωση εικόνας Ï€Ïοέλευσης"
+
+#~ msgid "Slicing"
+#~ msgstr "Κατάτμηση"
+
+#~ msgid "Saving"
+#~ msgstr "Αποθήκευση"
+
+#~ msgid "Couldn't save large texture:"
+#~ msgstr "Δεν ήταν δυνατή η αποθήκευση μεγάλης υφής:"
+
+#~ msgid "Build Atlas For:"
+#~ msgstr "Κατασκευή άτλαντα για:"
+
+#~ msgid "Loading Image:"
+#~ msgstr "ΦόÏτωση εικόνας:"
+
+#~ msgid "Couldn't load image:"
+#~ msgstr "Δεν ήταν δυνατή η φόÏτωση της εικόνας:"
+
+#~ msgid "Converting Images"
+#~ msgstr "ΜετατÏοπή Εικόνων"
+
+#~ msgid "Cropping Images"
+#~ msgstr "ΠεÏικοπή Εικόνων"
+
+#~ msgid "Blitting Images"
+#~ msgstr "Συνδυασμός εικόνων"
+
+#~ msgid "Couldn't save atlas image:"
+#~ msgstr "Δεν ήταν δυνατή η αποθήκευση εικόνας άτλαντα:"
+
+#~ msgid "Couldn't save converted texture:"
+#~ msgstr "Δεν ήταν δυνατή η αποθήκευση υφής που έχει μετατÏαπεί:"
+
+#~ msgid "Invalid source!"
+#~ msgstr "Μη έγκυÏη πηγή!"
+
+#~ msgid "Invalid translation source!"
+#~ msgstr "Μη έγκυÏη πηγή μετάφÏασης!"
+
+#~ msgid "Column"
+#~ msgstr "Στήλη"
+
+#~ msgid "No items to import!"
+#~ msgstr "Δεν υπάÏχουν στοιχεία για εισαγωγή!"
+
+#~ msgid "No target path!"
+#~ msgstr "Καμία διαδÏομή Ï€ÏοοÏισμοÏ!"
+
+#~ msgid "Import Translations"
+#~ msgstr "Εισαγωγή μεταφÏάσεων"
+
+#~ msgid "Couldn't import!"
+#~ msgstr "Δεν ήταν δυνατή η εισαγωγή!"
+
+#~ msgid "Import Translation"
+#~ msgstr "Εισαγωγή μετάφÏασης"
+
+#~ msgid "Source CSV:"
+#~ msgstr "CSV Ï€Ïοέλευσης:"
+
+#~ msgid "Ignore First Row"
+#~ msgstr "Αγνόησε την Ï€Ïώτη γÏαμμή"
+
+#~ msgid "Compress"
+#~ msgstr "Συμπίεση"
+
+#~ msgid "Add to Project (project.godot)"
+#~ msgstr "ΠÏόσθεσε στο έÏγο (project.godot)"
+
+#~ msgid "Import Languages:"
+#~ msgstr "Εισαγωγή γλωσσών:"
+
+#~ msgid "Translation"
+#~ msgstr "ΜετάφÏαση"
+
+#~ msgid "Parsing %d Triangles:"
+#~ msgstr "Ανάλυση %d ΤÏιγώνων:"
+
+#~ msgid "Triangle #"
+#~ msgstr "ΤÏίγωνο #"
+
+#~ msgid "Light Baker Setup:"
+#~ msgstr "ΡÏθμιση Ï€ÏοεπεγεÏγαστή φωτός:"
+
+#~ msgid "Fixing Lights"
+#~ msgstr "ΔιόÏθωση φώτων"
+
+#~ msgid "Making BVH"
+#~ msgstr "ΔημιουÏγία BVH"
+
+#~ msgid "Transfer to Lightmaps:"
+#~ msgstr "ΜεταφοÏά στους χάÏτες φωτός:"
+
+#~ msgid "Allocating Texture #"
+#~ msgstr "Δέσμευση υφής #"
+
+#~ msgid "Baking Triangle #"
+#~ msgstr "ΠÏοεπεξεÏγασία Ï„Ïιγώνου #"
+
+#~ msgid "Post-Processing Texture #"
+#~ msgstr "ΜετεπεξεÏγασία υφής #"
+
+#~ msgid "Reset the lightmap octree baking process (start over)."
+#~ msgstr ""
+#~ "ΕπαναφοÏά της Ï€ÏοεπεξεÏγασίας του Î¿ÎºÏ„Î±Î´Î¹ÎºÎ¿Ï Î´Î­Î½Ï„Ïου του χάÏτη φωτός "
+#~ "(Εκκίνηση από την αÏχή)."
+
+#~ msgid "Zoom (%):"
+#~ msgstr "Μεγέθυνση (%):"
+
+#~ msgid "Skeleton.."
+#~ msgstr "Σκελετός.."
+
+#~ msgid "Zoom Reset"
+#~ msgstr "ΕπαναφοÏά μεγέθυνσης"
+
+#~ msgid "Zoom Set.."
+#~ msgstr "ΟÏισμός μεγέθυνσης.."
+
+#~ msgid "Set a Value"
+#~ msgstr "ΟÏισμός τιμής"
+
+#~ msgid "Snap (Pixels):"
+#~ msgstr "ΚοÏμπωμα (Εικονοστοιχεία):"
+
+#~ msgid "Parse BBCode"
+#~ msgstr "Ανάλυση BBCode"
+
+#~ msgid "Length:"
+#~ msgstr "Μήκος:"
+
+#~ msgid "Open Sample File(s)"
+#~ msgstr "Άνοιγμα αÏχείων δειγμάτων"
+
+#~ msgid "ERROR: Couldn't load sample!"
+#~ msgstr "ΣΦΑΛΜΑ: Δεν ήταν δυνατή η φόÏτωση δείγματος!"
+
+#~ msgid "Add Sample"
+#~ msgstr "ΠÏοσθήκη δείγματος"
+
+#~ msgid "Rename Sample"
+#~ msgstr "Μετονομασία δείγματος"
+
+#~ msgid "Delete Sample"
+#~ msgstr "ΔιαγÏαφή δείγματος"
+
+#~ msgid "16 Bits"
+#~ msgstr "16 Δυαδικά ψηφία"
+
+#~ msgid "8 Bits"
+#~ msgstr "8 Δυαδικά ψηφία"
+
+#~ msgid "Stereo"
+#~ msgstr "ΣτεÏεοφωνικό"
+
+#~ msgid "Mono"
+#~ msgstr "Μονοφωνικό"
+
+#~ msgid "Pitch"
+#~ msgstr "Τόνος"
+
+#~ msgid "Window"
+#~ msgstr "ΠαÏάθυÏο"
+
+#~ msgid "Move Right"
+#~ msgstr "Μετακίνηση δεξιά"
+
+#~ msgid "Scaling to %s%%."
+#~ msgstr "Κλιμάκωση to %s%%."
+
+#~ msgid "Up"
+#~ msgstr "Πάνω"
+
+#~ msgid "Down"
+#~ msgstr "Κάτω"
+
+#~ msgid "Bucket"
+#~ msgstr "Κουβάς"
+
+#~ msgid "Invalid project path, the path must exist!"
+#~ msgstr "Μη έγκυÏη διαδÏομή έÏγου, η διαδÏομή Ï€Ïέπει να υπάÏχει!"
+
+#~ msgid "Invalid project path, project.godot must not exist."
+#~ msgstr "Μη έγκυÏη διαδÏομή έÏγου, το project.godot δεν Ï€Ïέπει να υπάÏχει."
+
+#~ msgid "Invalid project path, project.godot must exist."
+#~ msgstr "Μη έγκυÏη διαδÏομή έÏγου, το project.godot Ï€Ïέπει να υπάÏχει."
+
+#~ msgid "Project Path (Must Exist):"
+#~ msgstr "ΔιαδÏομή έÏγου (ΠÏέπει να υπάÏχει):"
+
+#~ msgid "Create New Resource"
+#~ msgstr "ΔημιουÏγία νέου πόÏου"
+
+#~ msgid "Open Resource"
+#~ msgstr "Άνοιγμα πόÏου"
+
+#~ msgid "Save Resource"
+#~ msgstr "Αποθήκευση πόÏου"
+
+#~ msgid "Resource Tools"
+#~ msgstr "ΕÏγαλεία πόÏων"
+
+#~ msgid "Make Local"
+#~ msgstr "Κάνε τοπικό"
+
+#~ msgid "Edit Groups"
+#~ msgstr "ΕπεξεÏγασία Ομάδων"
+
+#~ msgid "Edit Connections"
+#~ msgstr "ΕπεξεÏγασία συνδέσεων"
+
+#~ msgid "GridMap Paint"
+#~ msgstr "GridMap ΖωγÏαφική"
+
+#~ msgid "Tiles"
+#~ msgstr "Πλακίδια"
+
+#~ msgid "Areas"
+#~ msgstr "ΠεÏιοχές"
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl+"
+
+#~ msgid "Down Wheel)"
+#~ msgstr "Κάτω Ïοδέλα)"
+
+#~ msgid "Up Wheel)"
+#~ msgstr "Πάνω Ïοδέλα)"
+
#~ msgid "Close scene? (Unsaved changes will be lost)"
#~ msgstr "Κλείσιμο σκηνής; (Οι μη αποθηκευμένες αλλαγές θα χαθοÏν)"
@@ -8043,9 +8325,6 @@ msgstr ""
#~ msgid "Close Goto Prev. Scene"
#~ msgstr "Κλείσιμο και μετάβαση στην Ï€ÏοηγοÏμενη σκηνή"
-#~ msgid "Expand to Parent"
-#~ msgstr "Επικάλυψη γονέα"
-
#~ msgid "Del"
#~ msgstr "ΔιαγÏαφή"
@@ -8209,8 +8488,5 @@ msgstr ""
#~ msgid "Save Translatable Strings"
#~ msgstr "Αποθήκευση μεταφÏάσιμων συμβολοσειÏών"
-#~ msgid "Translatable Strings.."
-#~ msgstr "ΜεταφÏάσιμες συμβολοσειÏές..."
-
#~ msgid "Install Export Templates"
#~ msgstr "Εγκατάσταση Ï€ÏοτÏπων εξαγωγής"
diff --git a/editor/translations/es.po b/editor/translations/es.po
index 8b2cab5fb9..dd4b811bff 100644
--- a/editor/translations/es.po
+++ b/editor/translations/es.po
@@ -1,5 +1,6 @@
# Spanish translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# Addiel Lucena Perez <addiell2017@gmail.com>, 2017.
@@ -7,6 +8,7 @@
# BLaDoM GUY <simplybladom@gmail.com>, 2017.
# Carlos López <genetita@gmail.com>, 2016.
# Lisandro Lorea <lisandrolorea@gmail.com>, 2016-2017.
+# Rabid Orange <theorangerabid@gmail.com>, 2017.
# Roger BR <drai_kin@hotmail.com>, 2016.
# Sebastian Silva <sebastian@fuentelibre.org>, 2016.
# Swyter <swyterzone@gmail.com>, 2016-2017.
@@ -15,8 +17,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-07-08 01:05+0000\n"
-"Last-Translator: BLaDoM GUY <simplybladom@gmail.com>\n"
+"PO-Revision-Date: 2017-10-23 01:48+0000\n"
+"Last-Translator: Lisandro Lorea <lisandrolorea@gmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/"
"godot/es/>\n"
"Language: es\n"
@@ -24,7 +26,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 2.16-dev\n"
+"X-Generator: Weblate 2.17\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -198,13 +200,12 @@ msgstr "¿Quieres crear una NUEVA pista para %s e insertar clave?"
#: editor/animation_editor.cpp
msgid "Create %d NEW tracks and insert keys?"
-msgstr "¿Quieres crear %d NUEVOS pistas e insertar claves?"
+msgstr "¿Quieres crear %d NUEVAS pistas e insertar claves?"
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -369,272 +370,6 @@ msgstr "Cambiar tipo de valor del «array»"
msgid "Change Array Value"
msgstr "Cambiar valor del «array»"
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr "Libre"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr "Versión:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Contents:"
-msgstr "Constantes:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "View Files"
-msgstr "Archivo"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr "Descripción:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr "Instalar"
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "Cerrar"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr "No se ha podido resolver el nombre de Dominio:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "No se ha podido resolver."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr "Error de conexion, por favor intente otra vez."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect."
-msgstr "Conectar.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect to host:"
-msgstr "Conectar a nodo:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr "No hay respuesta desde el host:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "No responde."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Request failed, return code:"
-msgstr "Formato de archivo desconocido:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr "Solicitud fallida."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Request failed, too many redirects"
-msgstr "Solicitud fallida, ha redireccionado demasiado"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr "Bucle de redireccionamiento."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Fallido:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr "Error de descarga, al pareser el archivo ha sido manipulado."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr "Esperado:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr "Tiene:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr "Error en la descarga del asset:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr "Finalizado!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr "Buscando:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Resolving.."
-msgstr "Guardando…"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Connecting.."
-msgstr "Conectar.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Requesting.."
-msgstr "Prueba"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Error making request"
-msgstr "¡Hubo un error al guardar el recurso!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr "Inactivo"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr "Reintente"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Download Error"
-msgstr "Abajo"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr "Este asset ya esta descargandose!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr "primero"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr "anterior"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr "siguiente"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr "ultimo"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "Todos"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "Buscar:"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Buscar"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr "Importar"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr "Plugins"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "Ordenar:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr "Invertir"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "Categoría:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "Sitio:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr "Soporte.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr "Oficial"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "Comunidad"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr "Prueba"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr "Archivo ZIP de elementos"
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr "Lista de métodos Para '%s':"
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "Llamada"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr "Lista de métodos:"
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr "Argumentos:"
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr "Devuelve:"
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr "Ir a línea"
@@ -648,9 +383,8 @@ msgid "No Matches"
msgstr "Sin soincidencias"
#: editor/code_editor.cpp
-#, fuzzy
msgid "Replaced %d occurrence(s)."
-msgstr "%d ocurrencias reemplazadas."
+msgstr "%d ocurrencia/s reemplazadas."
#: editor/code_editor.cpp
msgid "Replace"
@@ -672,6 +406,14 @@ msgstr "Palabras completas"
msgid "Selection Only"
msgstr "Sólo selección"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Buscar"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr "Búsqueda"
@@ -704,11 +446,11 @@ msgstr "Preguntar antes de reemplazar"
msgid "Skip"
msgstr "Saltar"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "Acercar"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr "Alejar"
@@ -779,6 +521,20 @@ msgstr "Diferido"
msgid "Oneshot"
msgstr "Una vez"
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "Cerrar"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr "Conectar"
@@ -804,7 +560,7 @@ msgstr "Conectar.."
msgid "Disconnect"
msgstr "Desconectar"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr "Señales"
@@ -821,12 +577,25 @@ msgstr "Favoritos:"
msgid "Recent:"
msgstr "Recientes:"
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "Buscar:"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr "Coincidencias:"
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "Descripción:"
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr "Buscar reemplazo para:"
@@ -886,6 +655,12 @@ msgid "Owners Of:"
msgstr "Dueños de:"
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr ""
+"¿Quieres quitar los archivos seleccionados del proyecto? (No puedes "
+"deshacerlo)"
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -896,10 +671,9 @@ msgstr ""
"¿Seguro que quieres quitarlos? (No puedes deshacerlo)"
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
-msgstr ""
-"¿Quieres quitar los archivos seleccionados del proyecto? (No puedes "
-"deshacerlo)"
+#, fuzzy
+msgid "Cannot remove:\n"
+msgstr "No se ha podido resolver."
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -966,11 +740,6 @@ msgstr "Contribuidores de Godot"
#: editor/editor_about.cpp
#, fuzzy
-msgid "Authors"
-msgstr "Autor:"
-
-#: editor/editor_about.cpp
-#, fuzzy
msgid "Project Founders"
msgstr "Administrador de proyectos"
@@ -988,20 +757,58 @@ msgid "Developers"
msgstr "Desarrolladores"
#: editor/editor_about.cpp
-msgid "License"
+#, fuzzy
+msgid "Authors"
+msgstr "Autor:"
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
msgstr ""
#: editor/editor_about.cpp
-msgid "Thirdparty License"
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
msgstr ""
#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Bronze Donors"
+msgstr "Clonar hacia abajo"
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr "Licencia"
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr "Licencia de terceros"
+
+#: editor/editor_about.cpp
msgid ""
"Godot Engine relies on a number of thirdparty free and open source "
"libraries, all compatible with the terms of its MIT license. The following "
"is an exhaustive list of all such thirdparty components with their "
"respective copyright statements and license terms."
msgstr ""
+"Godot Engine se basa en una serie de bibliotecas libres y de código abierto "
+"de terceros, todas ellas compatibles con los términos de su licencia MIT. La "
+"siguiente es una lista exhaustiva de todos estos componentes de terceros con "
+"sus respectivas declaraciones de derechos de autor y términos de licencia."
#: editor/editor_about.cpp
#, fuzzy
@@ -1015,11 +822,11 @@ msgstr "Constantes:"
#: editor/editor_about.cpp
msgid "Licenses"
-msgstr ""
+msgstr "Licencias"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Error opening package file, not in zip format."
-msgstr ""
+msgstr "Error al abrir el paquete, no se encuentra en formato zip."
#: editor/editor_asset_installer.cpp
#, fuzzy
@@ -1031,13 +838,23 @@ msgid "Package Installed Successfully!"
msgstr "¡El paquete se ha instalado correctamente!"
#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr "Finalizado!"
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr "Instalar"
+
+#: editor/editor_asset_installer.cpp
#, fuzzy
msgid "Package Installer"
msgstr "¡El paquete se ha instalado correctamente!"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
-msgstr ""
+msgstr "Altavoces"
#: editor/editor_audio_buses.cpp
#, fuzzy
@@ -1060,20 +877,24 @@ msgid "Toggle Audio Bus Mute"
msgstr "Abrir diseño del Audio Bus"
#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Toggle Audio Bus Bypass Effects"
-msgstr ""
+msgstr "Cambiar efectos de bypass del Bus de Audio"
#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Select Audio Bus Send"
-msgstr ""
+msgstr "Seleccionar Bus de audio de envío"
#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Add Audio Bus Effect"
-msgstr ""
+msgstr "Añadir Efecto de Bus de Audio"
#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Move Bus Effect"
-msgstr ""
+msgstr "Mover Efecto de Bus"
#: editor/editor_audio_buses.cpp
#, fuzzy
@@ -1081,25 +902,28 @@ msgid "Delete Bus Effect"
msgstr "Quitar seleccionados"
#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Audio Bus, Drag and Drop to rearrange."
-msgstr ""
+msgstr "Bus de Audio, arrastra y suelta para reordenar."
#: editor/editor_audio_buses.cpp
#, fuzzy
-msgid "Bus options"
-msgstr "Opciones de depuración"
-
-#: editor/editor_audio_buses.cpp
msgid "Solo"
-msgstr ""
+msgstr "Solo"
#: editor/editor_audio_buses.cpp
msgid "Mute"
-msgstr ""
+msgstr "Silenciar"
#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Bypass"
-msgstr ""
+msgstr "Bypass"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "Opciones de depuración"
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
@@ -1108,6 +932,11 @@ msgstr "Duplicar"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Volume"
+msgstr "Restablecer zoom"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Delete Effect"
msgstr "Quitar seleccionados"
@@ -1118,7 +947,7 @@ msgstr "Añadir todos"
#: editor/editor_audio_buses.cpp
msgid "Master bus can't be deleted!"
-msgstr ""
+msgstr "¡El Bus Maestro no puede ser borrado!"
#: editor/editor_audio_buses.cpp
#, fuzzy
@@ -1132,6 +961,11 @@ msgstr "Duplicar animación"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Bus Volume"
+msgstr "Restablecer zoom"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Move Audio Bus"
msgstr "Mover acción"
@@ -1148,8 +982,9 @@ msgid "Open Audio Bus Layout"
msgstr "Abrir diseño del Audio Bus"
#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "There is no 'res://default_bus_layout.tres' file."
-msgstr ""
+msgstr "No existe el archivo 'res://default_bus_layout.tres'."
#: editor/editor_audio_buses.cpp
#, fuzzy
@@ -1168,7 +1003,8 @@ msgstr "Añadir todos"
msgid "Create a new Bus Layout."
msgstr "Crear recurso nuevo"
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr "Cargar"
@@ -1193,8 +1029,9 @@ msgid "Load Default"
msgstr "Predeterminado"
#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Load the default Bus Layout."
-msgstr ""
+msgstr "Cargar el Diseño del Bus por defecto."
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
@@ -1267,7 +1104,7 @@ msgid "Rearrange Autoloads"
msgstr "Reordenar «Autoloads»"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "Ruta:"
@@ -1275,9 +1112,7 @@ msgstr "Ruta:"
msgid "Node Name:"
msgstr "Nombre del nodo:"
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr "Nombre"
@@ -1311,18 +1146,19 @@ msgid "Choose a Directory"
msgstr "Elige una carpeta"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "Crear carpeta"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "Nombre:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "No se pudo crear la carpeta."
@@ -1343,30 +1179,6 @@ msgstr "Empaquetando"
msgid "Template file not found:\n"
msgstr "No se encontró archivo de base:\n"
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr "Añadido:"
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr "Eliminado:"
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr "Error al guardar atlas:"
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr "No se pudo guardar la subtextura del altas:"
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr "Exportando para %s"
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr "Configurando…"
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "El archivo ya existe, ¿quieres sobreescribirlo?"
@@ -1451,6 +1263,11 @@ msgstr "Subir favorito"
msgid "Move Favorite Down"
msgstr "Bajar favorito"
+#: editor/editor_file_dialog.cpp
+#, fuzzy
+msgid "Go to parent folder"
+msgstr "No se pudo crear la carpeta."
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "Carpetas y archivos:"
@@ -1465,10 +1282,6 @@ msgid "File:"
msgstr "Archivo:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "Filtro:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "Debe ser una extensión válida."
@@ -1494,6 +1307,10 @@ msgstr "Lista de clases:"
msgid "Search Classes"
msgstr "Buscar clases"
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr "Cima"
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr "Clase:"
@@ -1510,15 +1327,30 @@ msgstr "Heredada por:"
msgid "Brief Description:"
msgstr "Descripción breve:"
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Members"
+msgstr "Miembros:"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "Miembros:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Public Methods"
+msgstr "Métodos públicos:"
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr "Métodos públicos:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "GUI Theme Items"
+msgstr "Elementos de tema de interfaz:"
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr "Elementos de tema de interfaz:"
@@ -1528,12 +1360,23 @@ msgstr "Señales:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Enumerations"
+msgstr "Animaciones"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Enumerations:"
msgstr "Animaciones"
#: editor/editor_help.cpp
+#, fuzzy
msgid "enum "
-msgstr ""
+msgstr "enum "
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Constants"
+msgstr "Constantes:"
#: editor/editor_help.cpp
msgid "Constants:"
@@ -1541,14 +1384,41 @@ msgstr "Constantes:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Description"
+msgstr "Descripción:"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Properties"
+msgstr "Propiedades:"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Property Description:"
msgstr "Descripción breve:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Methods"
+msgstr "Lista de métodos:"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr "Descripción de métodos:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr "Texto de búsqueda"
@@ -1558,26 +1428,24 @@ msgid "Output:"
msgstr " Salida:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "Borrar todo"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr "¡Hubo un error al guardar el recurso!"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
-msgstr "Guardar recurso como…"
+msgstr "Guardar recurso como.."
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+#, fuzzy
msgid "I see.."
-msgstr "Muy bien…"
+msgstr "Ya veo.."
#: editor/editor_node.cpp
msgid "Can't open file for writing:"
@@ -1592,6 +1460,30 @@ msgid "Error while saving."
msgstr "Error al guardar."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Can't open '%s'."
+msgstr "No se puede operar en «…»"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while parsing '%s'."
+msgstr "Error al guardar."
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Missing '%s' or its dependencies."
+msgstr "La escena «%s» tiene dependencias rotas:"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while loading '%s'."
+msgstr "Error al guardar."
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr "Guardar escena"
@@ -1652,6 +1544,33 @@ msgid "Restored default layout to base settings."
msgstr "Se han restaurado los ajustes predeterminados."
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr "Copiar parámetros"
@@ -1734,11 +1653,11 @@ msgstr "Abrir escena base"
#: editor/editor_node.cpp
msgid "Quick Open Scene.."
-msgstr "Apertura rápida de escena…"
+msgstr "Apertura rápida de escena.."
#: editor/editor_node.cpp
msgid "Quick Open Script.."
-msgstr "Apertura rápida de script…"
+msgstr "Apertura rápida de script.."
#: editor/editor_node.cpp
#, fuzzy
@@ -1746,12 +1665,13 @@ msgid "Save & Close"
msgstr "Guardar un archivo"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Save changes to '%s' before closing?"
-msgstr ""
+msgstr "¿Guardar cambios a '%s' antes de cerrar?"
#: editor/editor_node.cpp
msgid "Save Scene As.."
-msgstr "Guardar escena como…"
+msgstr "Guardar escena como.."
#: editor/editor_node.cpp
#, fuzzy
@@ -1802,7 +1722,7 @@ msgstr "Esta acción es irreversible. ¿Quieres revertirla de todos modos?"
#: editor/editor_node.cpp
msgid "Quick Run Scene.."
-msgstr "Ejecución rápida de escena…"
+msgstr "Ejecución rápida de escena.."
#: editor/editor_node.cpp
msgid "Quit"
@@ -1824,31 +1744,52 @@ msgstr "Guardar un archivo"
#: editor/editor_node.cpp
msgid "Save changes to the following scene(s) before quitting?"
-msgstr ""
+msgstr "¿Guardar cambios a la(s) siguiente(s) escena(s) antes de salir?"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
+"¿Guardar cambios a la(s) siguiente(s) escena(s) antes de abrir el Gestor de "
+"Proyectos?"
+
+#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Elige una escena principal"
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
-msgstr ""
+#, fuzzy
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
+msgstr "No se pudo activar el plugin addon en: '"
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+#, fuzzy
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
+"No se pudo encontrar el campo del script para el plugin addon en: 'res://"
+"addons/"
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
-msgstr ""
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "No se pudo cargar el script addon desde la ruta: '"
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
-msgstr ""
+#, fuzzy
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
+msgstr "No se pudo cargar el script addon desde la ruta: '"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
+msgstr "No se pudo cargar el script addon desde la ruta: '"
#: editor/editor_node.cpp
msgid ""
@@ -1860,7 +1801,7 @@ msgstr ""
"Para poder modificarla, se tiene que crear una nueva escena heredada."
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr "Vaya"
@@ -1874,14 +1815,15 @@ msgstr ""
"la ruta del proyecto."
#: editor/editor_node.cpp
-msgid "Error loading scene."
-msgstr "Hubo un error al cargar la escena."
-
-#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
msgstr "La escena «%s» tiene dependencias rotas:"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Clear Recent Scenes"
+msgstr "Reestablecer huesos"
+
+#: editor/editor_node.cpp
msgid "Save Layout"
msgstr "Guardar ajustes"
@@ -1915,7 +1857,7 @@ msgstr "Modo sin distracciones"
msgid "Toggle distraction-free mode."
msgstr "Modo sin distracciones"
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr "Escena"
@@ -1946,7 +1888,7 @@ msgstr "Nueva escena"
#: editor/editor_node.cpp
msgid "New Inherited Scene.."
-msgstr "Nueva escena heredada…"
+msgstr "Nueva escena heredada.."
#: editor/editor_node.cpp
msgid "Open Scene.."
@@ -1970,15 +1912,16 @@ msgstr "Abrir reciente"
#: editor/editor_node.cpp
msgid "Convert To.."
-msgstr "Convertir a…"
+msgstr "Convertir a.."
#: editor/editor_node.cpp
msgid "MeshLibrary.."
-msgstr "MeshLibrary…"
+msgstr "MeshLibrary.."
#: editor/editor_node.cpp
+#, fuzzy
msgid "TileSet.."
-msgstr "TileSet…"
+msgstr "TileSet.."
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp scene/gui/line_edit.cpp
@@ -2159,6 +2102,10 @@ msgstr "P&R"
msgid "Issue Tracker"
msgstr "Registros de problemas"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "Comunidad"
+
#: editor/editor_node.cpp
msgid "About"
msgstr "Acerca de"
@@ -2167,7 +2114,7 @@ msgstr "Acerca de"
msgid "Play the project."
msgstr "Inicia el proyecto para poder jugarlo."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr "Reproducir"
@@ -2183,7 +2130,7 @@ msgstr "Pausar la escena"
msgid "Stop the scene."
msgstr "Detener la escena."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr "Detener"
@@ -2238,7 +2185,7 @@ msgstr "Guardar el recurso editado actualmente."
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Save As.."
-msgstr "Guardar como…"
+msgstr "Guardar como.."
#: editor/editor_node.cpp
msgid "Go to the previous edited object in history."
@@ -2257,6 +2204,16 @@ msgid "Object properties."
msgstr "Propiedades del objeto."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Changes may be lost!"
+msgstr "Cambiar grupo de imágenes"
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr "Importar"
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr "SistDeArchivos"
@@ -2270,15 +2227,7 @@ msgstr "Salida"
#: editor/editor_node.cpp
msgid "Don't Save"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr "Reimportar"
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr "Actualizar"
+msgstr "No guardar"
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
@@ -2347,11 +2296,29 @@ msgstr "Abrir en el editor"
msgid "Open the previous Editor"
msgstr "Abrir en el editor"
+#: editor/editor_plugin.cpp
+#, fuzzy
+msgid "Creating Mesh Previews"
+msgstr "Crear biblioteca de modelos 3D"
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr "Miniatura.."
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr "Plugins instalados:"
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr "Actualizar"
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Versión:"
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr "Autor:"
@@ -2384,7 +2351,8 @@ msgid "Frame %"
msgstr "% de cuadro"
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+#, fuzzy
+msgid "Physics Frame %"
msgstr "% de cuadro fijo"
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2403,35 +2371,19 @@ msgstr "Propio"
msgid "Frame #:"
msgstr "Nº de cuadro:"
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr "Espera a que termine el análisis."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr "La escena actual debe ser guardada para reimportar."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr "Guardar y reimportar"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr "Reimportando"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr "Reimportar recursos cambiados"
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
-msgstr ""
+msgstr "Seleccionar dispositivo de la lista"
#: editor/editor_run_native.cpp
+#, fuzzy
msgid ""
"No runnable export preset found for this platform.\n"
"Please add a runnable preset in the export menu."
msgstr ""
+"No se ha encontrado un preset ejecutable de exportación para esta "
+"plataforma.\n"
+"Por favor, añade un preset ejecutable en el menú de exportación."
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
@@ -2447,7 +2399,7 @@ msgstr "No se pudo instanciar el script:"
#: editor/editor_run_script.cpp
msgid "Did you forget the 'tool' keyword?"
-msgstr "Te olvidaste de la palabra clave 'tool'?"
+msgstr "Has olvidado la palabra clave 'tool'?"
#: editor/editor_run_script.cpp
msgid "Couldn't run script:"
@@ -2524,7 +2476,7 @@ msgstr ""
#: editor/export_template_manager.cpp
msgid "No version.txt found inside templates."
-msgstr ""
+msgstr "No se ha encontrado el archivo version.txt dentro de las plantillas."
#: editor/export_template_manager.cpp
#, fuzzy
@@ -2541,10 +2493,6 @@ msgid "Importing:"
msgstr "Importando:"
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr "Cargando plantillas de exportación"
-
-#: editor/export_template_manager.cpp
#, fuzzy
msgid "Current Version:"
msgstr "Escena actual"
@@ -2582,14 +2530,21 @@ msgstr ""
#: editor/filesystem_dock.cpp
msgid "Cannot navigate to '"
+msgstr "No se puede navegar a '"
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid ""
"\n"
-"Status: Needs Re-Import"
-msgstr "Guardar y reimportar"
+"Status: Import of file failed. Please fix file and reimport manually."
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
@@ -2599,48 +2554,57 @@ msgid ""
msgstr "Fuente:"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
-msgstr ""
-"Los archivos de origen y destino son iguales, no se realizará ninguna acción."
+#, fuzzy
+msgid "Cannot move/rename resources root."
+msgstr "No se puede cargar/procesar la tipografía elegida."
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
-msgstr ""
+#, fuzzy
+msgid "Cannot move a folder into itself.\n"
+msgstr "No se puede importar un archivo sobre si mismo:"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
-msgstr ""
-"Las rutas de origen y destino son iguales, no se realizará ninguna acción."
+#, fuzzy
+msgid "Error moving:\n"
+msgstr "Hubo un error al importar:"
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
-msgstr "No se pueden mover carpetas dentro de si mismas."
+#, fuzzy
+msgid "Unable to update dependencies:\n"
+msgstr "La escena «%s» tiene dependencias rotas:"
+
+#: editor/filesystem_dock.cpp
+msgid "No name provided"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving file:\n"
-msgstr "Error al cargar la imagen:"
+msgid "No name provided."
+msgstr "Renombrar o mover.."
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "Hubo un error al importar:"
+msgid "Name contains invalid characters."
+msgstr "Letras válidas:"
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
-msgstr "No se puede operar en «…»"
+#, fuzzy
+msgid "A file or folder with this name already exists."
+msgstr "¡El nombre de grupo ya existe!"
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
-msgstr "Elige un nombre nuevo y ubicación para:"
+#, fuzzy
+msgid "Renaming file:"
+msgstr "Renombrar variable"
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
-msgstr "¡No has seleccionado ningún archivo!"
+#, fuzzy
+msgid "Renaming folder:"
+msgstr "Renombrar nodo"
#: editor/filesystem_dock.cpp
#, fuzzy
@@ -2649,43 +2613,42 @@ msgstr "Expandir al padre"
#: editor/filesystem_dock.cpp
msgid "Collapse all"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
-msgstr "Mostrar en el navegador de archivos"
+msgstr "Colapsar todo"
#: editor/filesystem_dock.cpp
-msgid "Instance"
-msgstr "Instanciar"
+msgid "Copy Path"
+msgstr "Copiar ruta"
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
-msgstr "Editar dependencias…"
+#, fuzzy
+msgid "Rename.."
+msgstr "Renombrar"
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
-msgstr "Ver dueños…"
+msgid "Move To.."
+msgstr "Mover a.."
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr "Copiar ruta"
+#, fuzzy
+msgid "New Folder.."
+msgstr "Crear carpeta"
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
-msgstr "Renombrar o mover…"
+msgid "Show In File Manager"
+msgstr "Mostrar en el navegador de archivos"
#: editor/filesystem_dock.cpp
-msgid "Move To.."
-msgstr "Mover a…"
+msgid "Instance"
+msgstr "Instanciar"
#: editor/filesystem_dock.cpp
-msgid "Info"
-msgstr "Info"
+msgid "Edit Dependencies.."
+msgstr "Editar dependencias.."
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
-msgstr "Reimportando…"
+#, fuzzy
+msgid "View Owners.."
+msgstr "Ver propietarios.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2713,11 +2676,18 @@ msgid ""
"Scanning Files,\n"
"Please Wait.."
msgstr ""
+"Escaneando archivos,\n"
+"Por favor, espere..."
#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "Mover"
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr "Renombrar"
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr "Añadir al grupo"
@@ -2732,16 +2702,37 @@ msgid "Import as Single Scene"
msgstr "Importando escena…"
#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Animations"
+msgstr "Importar con materiales separados"
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
-msgstr ""
+msgstr "Importar con materiales separados"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects"
-msgstr ""
+msgstr "Importar con objetos separados"
#: editor/import/resource_importer_scene.cpp
+#, fuzzy
msgid "Import with Separate Objects+Materials"
-msgstr ""
+msgstr "Importar con objetos y materiales separados"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Objects+Animations"
+msgstr "Importar con objetos y materiales separados"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Materials+Animations"
+msgstr "Importar con materiales separados"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr "Importar con objetos y materiales separados"
#: editor/import/resource_importer_scene.cpp
#, fuzzy
@@ -2750,52 +2741,45 @@ msgstr "Importar escena 3D"
#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes+Materials"
-msgstr ""
+msgstr "Importar como escenas y materiales múltiples"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr "Importar escena"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
-msgstr "Importando escena…"
+msgstr "Importando escena.."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
-msgstr "Ejecutando script personalizado…"
+msgstr "Ejecutando script personalizado.."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr "No se pudo cargar el script posimportación:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
"El script de posimportación no es correcto o está roto. (revisa la consola):"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr "Error ejecutando el script de posimportacion:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
-msgstr "Guardando…"
+msgstr "Guardando.."
#: editor/import_dock.cpp
msgid "Set as Default for '%s'"
-msgstr ""
+msgstr "Configurar por defecto para '%s'"
#: editor/import_dock.cpp
msgid "Clear Default for '%s'"
-msgstr ""
+msgstr "Borrar por defecto para '%s'"
#: editor/import_dock.cpp
#, fuzzy
@@ -2809,598 +2793,67 @@ msgstr "Importar"
#: editor/import_dock.cpp editor/property_editor.cpp
msgid "Preset.."
-msgstr "Ajuste…"
+msgstr "Ajuste.."
#: editor/import_dock.cpp
#, fuzzy
msgid "Reimport"
msgstr "Reimportar"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr "¡Sin máscaras de bits para importar!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr "La ruta de destino está vacía."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr "La ruta de destino debe ser una ruta de recursos completa."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr "La ruta de destino debe existir."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr "La ruta de guardado esta vacía!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr "Importar BitMasks"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr "Texturas de origen:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr "Ruta de destino:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr "Aceptar"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr "Máscara de bits"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr "¡No se ha elegido ningún archivo de tipografías!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr "¡No se ha elegido ningún recurso de tipografías!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-"La extensión del archivo no es correcta.\n"
-"Prueba con la extensión .fnt."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr "No se puede cargar/procesar la tipografía elegida."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr "No se pudo guardar la tipografía."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr "Tipografía elegida:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr "Tamaño de la tipografía elegida:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr "Recurso de destino:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr "El veloz murciélago hindú comía feliz cardillo y kiwi."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr "Prueba:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr "Opciones:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr "Importar tipografías"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-"Este archivo ya es un archivo de tipografías de Godot, tienes que utilizar "
-"un archivo de tipo BMFont."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr "Error al abrir como archivo BMFont."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr "Error al arrancar FreeType."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "Formato de tipografía desconocido."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "Error al cargar la tipografía."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr "Tamaño de tipografía incorrecto."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr "El origen personalizado de tipografía no es correcto."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Tipografía"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr "¡No hay ningún modelo que se pueda importar!"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr "Importar modelo individual"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr "Modelo/s elegidos:"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr "Modelos 3D"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "Superficie %d"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr "¡No hay ningún sonido a importar!"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr "Importar archivo de sonido"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr "Muestra(s) de Origen:"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr "Archivo de sonido"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr "Nuevo clip"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr "Opciones de Animación"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr "Identificadores"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr "Hacer Bake de FPS:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr "Optimizar"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr "Error lineal máximo"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr "Error angular máximo"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr "Ãngulo máximo"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr "Clips"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr "Inicios"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr "Finales"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr "Repetir"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr "Filtros"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr "La ruta de origen esta vacía."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr "No se pudo cargar el script post-importación."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr "El script de postimportación no es correcto o está roto."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr "Error al importar escena."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr "Importar escena 3D"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr "Escena de origen:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr "Igual que escena de destino"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr "Compartido"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
+msgstr "Establecer multinodo"
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr "Carpeta de texturas elegida:"
+#: editor/node_dock.cpp
+msgid "Groups"
+msgstr "Grupos"
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr "Script de posprocesado:"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
+msgstr "Selecciona un nodo para editar señales y grupos."
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr "Tipo de Nodo Raiz Customizado:"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
+msgstr "Crear polígono"
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr "Auto"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Editar polígono"
-#: editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
#, fuzzy
-msgid "Root Node Name:"
-msgstr "Nombre del nodo:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr "Faltan los siguientes archivos:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr "Importar de todos modos"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr "Importar y abrir"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-"La escena editada no se ha guardado, ¿Quieres abrir la escena importada de "
-"todos modos?"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr "Importar imagen:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr "No se puede importar un archivo sobre si mismo:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr "No se pudo encontrar la ruta: %s (ya es local)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr "Animación de escena 3D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr "Sin comprimir"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr "Compresión sin pérdidas (PNG)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr "Compresión con pérdidas (WebP)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr "Comprimir (VRAM)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr "Formato de textura"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr "Calidad de compresión de textura (WebP):"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr "Opciones de textura"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr "¡Selecciona algunos archivos!"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr "Se necesita al menos un archivo para el atlas."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr "Hubo un error al importar:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr "Solo se requiere un archivo para textura grande."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr "Tamaño máximo de textura:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr "Importar texturas para atlas (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr "Tamaño de celda:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr "Textura grande"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr "Importar texturas grandes (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
-msgstr "Textura de origen"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
-msgstr "Textura base de atlas"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
-msgstr "Texturas de origen"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
-msgstr "Importar texturas para 2D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
-msgstr "Importar texturas para 3D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
-msgstr "Importar texturas"
+msgid "Insert Point"
+msgstr "Insertando"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
-msgstr "Textura 2D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Editar polígono (quitar punto)"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
-msgstr "Textura 3D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
+msgstr "Quitar polígono y punto"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
-msgstr "Textura de atlas"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
+msgstr "Crea un nuevo polígono desde cero."
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
-"AVISO: No es necesario importar texturas 2D. Limítate a copia los archivos "
-"png/jpg al proyecto."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr "Recortar espacio vacío."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr "Textura"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr "Importar textura grande"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr "Cargar imagen de origen"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr "Troceando"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr "Insertando"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr "Guardando"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr "No se pudo guardar la textura grande:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr "Construir atlas para:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr "Cargando imagen:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr "No se pudo cargar la imagen:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr "Convirtiendo imágenes"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr "Recortando imágenes"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr "Copiando datos de imágenes"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr "No se pudo guardar la imagen de atlas:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr "No se pudo guardar la textura convertida:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr "¡Origen incorrecto!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr "¡Origen de traducción incorrecto!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr "Columna"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr "Idioma"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr "Sin elementos para importar!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr "¡El objetivo no tiene ruta!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr "Importar traducciones"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr "¡No se pudo importar!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr "Importar traducción"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr "CSV de origen:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr "Ignorar Primera Columna"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr "Comprimir"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
-msgid "Add to Project (project.godot)"
-msgstr "Añadir al proyecto (engine.cfg)"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr "Importar idiomas:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr "Traducción"
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr "Establecer multinodo"
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr "Grupos"
-
-#: editor/node_dock.cpp
-msgid "Select a Node to edit Signals and Groups."
-msgstr "Selecciona un nodo para editar señales y grupos."
+"Editar polígono existente:\n"
+"Click izquierdo: Mover punto.\n"
+"Control + Click izquierdo: Dividir segmento.\n"
+"Click derecho: Borrar punto."
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Toggle Autoplay"
@@ -3558,7 +3011,6 @@ msgstr "Nombre de Animación:"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3669,10 +3121,6 @@ msgid "Delete Input"
msgstr "Eliminar entrada"
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr "Renombrar"
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr "El árbol de animación es correcto."
@@ -3718,7 +3166,7 @@ msgstr "Nodo de transición"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Import Animations.."
-msgstr "Importar animaciones…"
+msgstr "Importar animaciones.."
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Edit Node Filters"
@@ -3726,68 +3174,187 @@ msgstr "Editar filtros de nodo"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Filters.."
-msgstr "Filtros…"
+msgstr "Filtros.."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
-msgstr "Leyendo %d triángulos:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr "Libre"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
-msgstr "Nº de triángulos"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
+msgstr "Contenido:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
-msgstr "Configuración de Baker de Luces:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
+msgstr "Ver Archivos"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
-msgstr "Leyendo geometría"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
+msgstr "No se ha podido resolver el nombre de Dominio:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
-msgstr "Procesando luces"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
+msgstr "No se ha podido resolver."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
-msgstr "Creando BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
+msgstr "Error de conexion, por favor intente otra vez."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
-msgstr "Creando octree de luces"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "No se puede conectar."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
-msgstr "Creando octree de texturas"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Can't connect to host:"
+msgstr "No se puede conectar al host:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
-msgstr "Transfiriendo a «lightmaps»:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
+msgstr "No hay respuesta desde el host:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
-msgstr "Asignando nº de textura"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "No responde."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
-msgstr "Quemando nº de triángulo"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Request failed, return code:"
+msgstr "Petición falida, código de retorno:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
-msgstr "Posprocesando nº de textura"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
+msgstr "Solicitud fallida."
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
-msgstr "¡Quemar!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Request failed, too many redirects"
+msgstr "Petición fallida, demasiadas redirecciones"
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
-msgstr ""
-"Restablece el proceso de «bake» del «octree» del «lightmap» (empezar de "
-"nuevo)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
+msgstr "Bucle de redireccionamiento."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Fallido:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr "Error de descarga, al pareser el archivo ha sido manipulado."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr "Esperado:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr "Tiene:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr "Fallo en la comprobación del hash sha256"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr "Error en la descarga del asset:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr "Buscando:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Resolving.."
+msgstr "Guardando…"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting.."
+msgstr "Conectando.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr "Solicitando.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
+msgstr "Error al realizar la solicitud"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr "Inactivo"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr "Reintente"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr "Error de Descarga"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr "Este asset ya esta descargandose!"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr "primero"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr "anterior"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr "siguiente"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr "ultimo"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "Todos"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr "Plugins"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "Ordenar:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr "Invertir"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "Categoría:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "Sitio:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr "Soporte.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "Oficial"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr "Prueba"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr "Archivo ZIP de elementos"
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr "Vista previa"
@@ -3830,12 +3397,18 @@ msgid "Edit CanvasItem"
msgstr "Editar CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+#, fuzzy
+msgid "Anchors only"
+msgstr "Ancla"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Change Anchors and Margins"
msgstr "Cambiar anclas"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
-msgstr "Zoom (%):"
+msgid "Change Anchors"
+msgstr "Cambiar anclas"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Paste Pose"
@@ -3889,60 +3462,78 @@ msgid "Pan Mode"
msgstr "Modo desplazamiento lateral"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
-msgstr "Inmovilizar el objeto."
+#, fuzzy
+msgid "Toggles snapping"
+msgstr "Des/activar «breakpoint»"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
-msgstr "Liberar el objeto."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
+msgstr "Fijar a cuadrícula"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
-msgstr "Asegurarse que los hijos de un objeto no sean seleccionables."
+#, fuzzy
+msgid "Snapping options"
+msgstr "Opciones de Animación"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
-msgstr "Restaurar la habilidad de seleccionar los hijos de un objeto."
+#, fuzzy
+msgid "Snap to grid"
+msgstr "Modo de fijado:"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "Editar"
+msgid "Use Rotation Snap"
+msgstr "Fijar rotación"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
-msgstr "Fijar a cuadrícula"
+#, fuzzy
+msgid "Configure Snap..."
+msgstr "Configurar fijado.."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
-msgstr "Mostrar rejilla"
+msgid "Snap Relative"
+msgstr "Fijado relativo"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
-msgstr "Fijar rotación"
+msgid "Use Pixel Snap"
+msgstr "Adherir a píxeles"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
-msgstr "Fijado relativo"
+msgid "Smart snapping"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
-msgstr "Configurar fijado…"
+#, fuzzy
+msgid "Snap to parent"
+msgstr "Expandir al padre"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
-msgstr "Adherir a píxeles"
+msgid "Snap to node anchor"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr "Inmovilizar el objeto."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr "Liberar el objeto."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
-msgstr "Esqueleto…"
+msgid "Makes sure the object's children are not selectable."
+msgstr "Asegurarse que los hijos de un objeto no sean seleccionables."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+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
msgid "Make Bones"
@@ -3971,12 +3562,19 @@ msgid "View"
msgstr "Ver"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
-msgstr "Restablecer zoom"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr "Mostrar rejilla"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
-msgstr "Ajustar zoom…"
+#, fuzzy
+msgid "Show helpers"
+msgstr "Crear huesos"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Show rulers"
+msgstr "Crear huesos"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -3987,8 +3585,9 @@ msgid "Frame Selection"
msgstr "Encuadrar selección"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
-msgstr "Ancla"
+#, fuzzy
+msgid "Layout"
+msgstr "Guardar ajustes"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Keys"
@@ -4011,12 +3610,21 @@ msgid "Clear Pose"
msgstr "Restablecer pose"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
-msgstr "Establecer valor"
+msgid "Drag pivot from mouse position"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "Establecer pos. de salida de curva"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
-msgstr "Fijar (Pixeles):"
+msgid "Divide grid step by 2"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
@@ -4028,23 +3636,28 @@ msgstr "Añadir todos"
msgid "Adding %s..."
msgstr "Añadiendo %s..."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr "Crear nodo"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr "Error al instanciar escena desde %s"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr "Muy bien :("
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr "No hay padre al que instanciarle un hijo."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr "Esta operación requiere un solo nodo seleccionado."
@@ -4062,45 +3675,6 @@ msgstr ""
"Arrastrar y soltar + Mayús: Añadir nodo como hermano\n"
"Arrastrar y soltar + Alt: Cambiar tipo de nodo"
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr "Crear polígono"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr "Editar polígono"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr "Editar polígono (quitar punto)"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Crea un nuevo polígono desde cero."
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "Crear Poly3D"
@@ -4110,14 +3684,6 @@ msgid "Set Handle"
msgstr "Establecer handle"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr "Crear biblioteca de modelos 3D"
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr "Miniatura…"
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr "¿Quieres borrar el elemento %d?"
@@ -4140,6 +3706,28 @@ msgid "Update from Scene"
msgstr "Actualizar desde escena"
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Ease in"
+msgstr "Transición entrada"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Ease out"
+msgstr "Transición salida"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
msgid "Modify Curve Point"
msgstr "Modificar Mapa de Curvas"
@@ -4185,12 +3773,13 @@ msgid "Remove Curve Point"
msgstr "Quitar Punto de ruta"
#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
msgid "Toggle Curve Linear Tangent"
-msgstr ""
+msgstr "Cambiar tangente de curva lineal"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Hold Shift to edit tangents individually"
-msgstr ""
+msgstr "Mantén Mayus para editar las tangentes individualmente"
#: editor/plugins/gradient_editor_plugin.cpp
#, fuzzy
@@ -4219,28 +3808,26 @@ msgid ""
"No OccluderPolygon2D resource on this node.\n"
"Create and assign one?"
msgstr ""
+"No se ha encontrado el recurso OccluderPolygon2D en este nodo.\n"
+"¿Crear uno y asignarlo?"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Crear polígono oclusor"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr "Editar polígono existente:"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr "Clic izquierdo: Mover punto."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr "Ctrl + LMB: Partir segmento."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr "Clic derecho: Borrar punto."
@@ -4346,6 +3933,10 @@ msgid "Create Outline"
msgstr "Crear contorno"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr "Modelos 3D"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr "Crear colisión estática triangular"
@@ -4363,7 +3954,7 @@ msgstr "Crear colisión hermanada convexa"
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh.."
-msgstr "Crear modelo 3D de contorno…"
+msgstr "Crear modelo 3D de contorno.."
#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Outline Mesh"
@@ -4477,14 +4068,83 @@ msgstr "Escala al azar:"
msgid "Populate"
msgstr "Rellenar"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr "¡Quemar!"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+#, fuzzy
+msgid "Bake the navigation mesh.\n"
+msgstr "Crear modelo de navegación 3D"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+#, fuzzy
+msgid "Clear the navigation mesh."
+msgstr "Crear modelo de navegación 3D"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating heightfield..."
+msgstr "Creando octree de luces"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Marking walkable triangles..."
+msgstr "Cadenas traducibles…"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Partitioning..."
+msgstr "Advertencia"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating contours..."
+msgstr "Creando octree de texturas"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating polymesh..."
+msgstr "Crear modelo 3D de contorno.."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Converting to native navigation mesh..."
+msgstr "Crear modelo de navegación 3D"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Parsing Geometry..."
+msgstr "Leyendo geometría"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
+msgstr ""
+
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Create Navigation Polygon"
msgstr "Crear polígono de navegación"
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
-msgstr "Quitar polígono y punto"
-
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Clear Emission Mask"
msgstr "Borrar máscara de emisión"
@@ -4496,17 +4156,20 @@ msgid "Generating AABB"
msgstr "Generar AABB"
#: editor/plugins/particles_2d_editor_plugin.cpp
+#, fuzzy
msgid "Can only set point into a ParticlesMaterial process material"
msgstr ""
+"Solo se puede asignar el punto a un material procesado del tipo "
+"ParticlesMaterial."
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Error loading image:"
msgstr "Error al cargar la imagen:"
#: editor/plugins/particles_2d_editor_plugin.cpp
+#, fuzzy
msgid "No pixels with transparency > 128 in image.."
-msgstr ""
-"No hay píxeles que tengan menos de un 128/255 de transparencia en la imagen…"
+msgstr "No hay píxeles con una transparencia mayor que 128 en la imagen.."
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Set Emission Mask"
@@ -4514,7 +4177,7 @@ msgstr "Establecer máscara de emisión"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generate Visibility Rect"
-msgstr ""
+msgstr "Generar rectángulo de visibilidad"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Load Emission Mask"
@@ -4561,7 +4224,7 @@ msgstr "El nodo no contiene geometría (caras)."
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
-msgstr ""
+msgstr "Se requiere un material procesador del tipo 'ParticlesMaterial'."
#: editor/plugins/particles_editor_plugin.cpp
msgid "Faces contain no area!"
@@ -4604,8 +4267,9 @@ msgid "Surface Points"
msgstr "Superficie %d"
#: editor/plugins/particles_editor_plugin.cpp
+#, fuzzy
msgid "Surface Points+Normal (Directed)"
-msgstr ""
+msgstr "Puntos de superficio + Normal (Dirigida)"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Volume"
@@ -4672,14 +4336,17 @@ msgid "Curve Point #"
msgstr "Nº de punto en curva"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
msgstr "Establecer pos. de punto de curva"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
msgstr "Establecer pos. de entrada de curva"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
msgstr "Establecer pos. de salida de curva"
@@ -4742,6 +4409,14 @@ msgid "Scale Polygon"
msgstr "Escalar polígono"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "Editar"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr "Polígono->UV"
@@ -4796,63 +4471,10 @@ msgstr "Cargar recurso"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "Pegar"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr "Leer BBCode"
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr "Duración:"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr "Abrir archivos de sonido"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr "¡ERROR: No se pudo cargar el archivo de sonido!"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr "Añadir archivo de sonido"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr "Renombrar archivo de sonido"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr "Eliminar archivo de sonido"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr "16 bits"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr "8 bits"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr "Estéreo"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr "Mono"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr "Formato"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr "Altura"
-
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Clear Recent Files"
@@ -4863,6 +4485,8 @@ msgid ""
"Close and save changes?\n"
"\""
msgstr ""
+"¿Cerrar y guardar cambios?\n"
+"\""
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4886,11 +4510,11 @@ msgstr "Importar tema"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As.."
-msgstr "Guardar tema como…"
+msgstr "Guardar tema como.."
#: editor/plugins/script_editor_plugin.cpp
msgid " Class Reference"
-msgstr ""
+msgstr " Referencia de clase"
#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
@@ -4945,6 +4569,10 @@ msgstr "Cerrar documentación"
msgid "Close All"
msgstr "Cerrar"
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr "Ejecutar"
+
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Toggle Scripts Panel"
@@ -4954,7 +4582,7 @@ msgstr "Añadir/quitar favorito"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
-msgstr "Buscar…"
+msgstr "Buscar.."
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -4974,7 +4602,8 @@ msgstr "Step Into"
msgid "Break"
msgstr "Break"
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr "Continuar"
@@ -4988,18 +4617,6 @@ msgid "Debug with external editor"
msgstr "Abrir en el editor"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr "Ventana"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr "Mover a la izquierda"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr "Mover a la derecha"
-
-#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Open Godot online documentation"
msgstr "Buscar en la documentación de referencia."
@@ -5057,8 +4674,9 @@ msgstr ""
"pertenecen está cargada"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
msgid "Only resources from filesystem can be dropped."
-msgstr ""
+msgstr "Solo se pueden soltar recursos del sistema."
#: editor/plugins/script_text_editor.cpp
#, fuzzy
@@ -5072,15 +4690,15 @@ msgstr "Convirtiendo imágenes"
#: editor/plugins/script_text_editor.cpp
msgid "Uppercase"
-msgstr ""
+msgstr "Mayúscula"
#: editor/plugins/script_text_editor.cpp
msgid "Lowercase"
-msgstr ""
+msgstr "Minúscula"
#: editor/plugins/script_text_editor.cpp
msgid "Capitalize"
-msgstr ""
+msgstr "Insertar mayúsculas"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp scene/gui/line_edit.cpp
@@ -5089,8 +4707,9 @@ msgid "Cut"
msgstr "Cortar"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "Copiar"
@@ -5139,11 +4758,12 @@ msgstr "Borrar espacios sobrantes al final"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent To Spaces"
-msgstr ""
+msgstr "Convertir Indentación a Espacios"
#: editor/plugins/script_text_editor.cpp
+#, fuzzy
msgid "Convert Indent To Tabs"
-msgstr ""
+msgstr "Convertir Indentación a Tabuladores"
#: editor/plugins/script_text_editor.cpp
msgid "Auto Indent"
@@ -5184,16 +4804,16 @@ msgstr "Buscar anterior"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Replace.."
-msgstr "Reemplazar…"
+msgstr "Reemplazar.."
#: editor/plugins/script_text_editor.cpp
msgid "Goto Function.."
-msgstr "Ir a función…"
+msgstr "Ir a función.."
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Goto Line.."
-msgstr "Ir a línea…"
+msgstr "Ir a línea.."
#: editor/plugins/script_text_editor.cpp
msgid "Contextual Help"
@@ -5201,7 +4821,7 @@ msgstr "Ayuda contextual"
#: editor/plugins/shader_editor_plugin.cpp
msgid "Shader"
-msgstr ""
+msgstr "Shader"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Scalar Constant"
@@ -5358,10 +4978,6 @@ msgid "View Plane Transform."
msgstr "Ver transformación en plano."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr "Escalando al %s%%."
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr "Girando %s grados."
@@ -5378,10 +4994,6 @@ msgid "Top View."
msgstr "Vista superior."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr "Cima"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr "Vista anterior."
@@ -5422,8 +5034,9 @@ msgid "Animation Key Inserted."
msgstr "Clave de animación insertada."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Objects Drawn"
-msgstr ""
+msgstr "Objetos dibujados"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
@@ -5441,8 +5054,9 @@ msgid "Surface Changes"
msgstr "Actualizar cambios"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Draw Calls"
-msgstr ""
+msgstr "Llamadas de dibujado"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
@@ -5482,7 +5096,7 @@ msgstr "Gizmos"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Information"
-msgstr ""
+msgstr "Ver información"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Audio Listener"
@@ -5494,12 +5108,14 @@ msgid "Doppler Enable"
msgstr "Activar"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Freelook Left"
-msgstr ""
+msgstr "Vista libre izquierda"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Freelook Right"
-msgstr ""
+msgstr "Vista libre derecha"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
@@ -5512,8 +5128,9 @@ msgid "Freelook Backwards"
msgstr "Hacia atrás"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Freelook Up"
-msgstr ""
+msgstr "Vista libre superior"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
@@ -5521,8 +5138,9 @@ msgid "Freelook Down"
msgstr "Rueda hacia abajo."
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
msgid "Freelook Speed Modifier"
-msgstr ""
+msgstr "Modificador de velocidad de la vista libre"
#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
@@ -5628,12 +5246,16 @@ msgid "Transform"
msgstr "Transformar"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr "Configurar fijado.."
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr "Coordenadas locales"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Dialog.."
-msgstr "Ventana de transformación…"
+msgstr "Ventana de transformación.."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "1 Viewport"
@@ -5773,6 +5395,10 @@ msgid "Speed (FPS):"
msgstr "Velocidad (FPS):"
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr "Repetir"
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr "Cuadros de animación"
@@ -5785,12 +5411,14 @@ msgid "Insert Empty (After)"
msgstr "Insertar vacío (después)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr "Arriba"
+#, fuzzy
+msgid "Move (Before)"
+msgstr "Borrar nodos"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
-msgstr "Abajo"
+#, fuzzy
+msgid "Move (After)"
+msgstr "Mover a la izquierda"
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
@@ -5869,9 +5497,12 @@ msgid "Remove All"
msgstr "Quitar"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Theme"
-msgstr "Guardar tema"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Class Items"
@@ -5955,6 +5586,10 @@ msgid "Style"
msgstr "Estilo"
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr "Tipografía"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr "Color"
@@ -5973,8 +5608,9 @@ msgid "Line Draw"
msgstr "Lineal"
#: editor/plugins/tile_map_editor_plugin.cpp
+#, fuzzy
msgid "Rectangle Paint"
-msgstr ""
+msgstr "Rectángulo de pintura"
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
@@ -6006,8 +5642,9 @@ msgid "Mirror Y"
msgstr "Voltear verticalmente"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
-msgstr "Cubo"
+#, fuzzy
+msgid "Paint Tile"
+msgstr "Pintar TileMap"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Pick Tile"
@@ -6074,12 +5711,17 @@ msgstr "¿Quieres eliminar los archivos seleccionados?"
#: editor/project_export.cpp
#, fuzzy
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr "Faltan las siguientes plantillas de exportación para esta plataforma:"
+
+#: editor/project_export.cpp
+#, fuzzy
msgid "Presets"
msgstr "Ajuste…"
#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
-msgstr "Añadir…"
+msgstr "Añadir.."
#: editor/project_export.cpp
msgid "Resources"
@@ -6141,8 +5783,9 @@ msgid "Features"
msgstr "Textura"
#: editor/project_export.cpp
+#, fuzzy
msgid "Custom (comma-separated):"
-msgstr ""
+msgstr "Personalizado (separado por comas):"
#: editor/project_export.cpp
#, fuzzy
@@ -6154,8 +5797,14 @@ msgid "Export PCK/Zip"
msgstr "Exportar PCK/Zip"
#: editor/project_export.cpp
+#, fuzzy
msgid "Export templates for this platform are missing:"
-msgstr ""
+msgstr "Faltan las siguientes plantillas de exportación para esta plataforma:"
+
+#: editor/project_export.cpp
+#, fuzzy
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr "Faltan las siguientes plantillas de exportación para esta plataforma:"
#: editor/project_export.cpp
#, fuzzy
@@ -6163,29 +5812,53 @@ msgid "Export With Debug"
msgstr "Exportar Tile Set"
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
-msgstr "¡La ruta del proyecto no es correcta, tiene que existir!"
+#, fuzzy
+msgid "The path does not exist."
+msgstr "El archivo existe."
#: editor/project_manager.cpp
#, fuzzy
-msgid "Invalid project path, project.godot must not exist."
-msgstr "La ruta del proyecto no es correcta, engine.cfg no debe existir."
+msgid "Please choose a 'project.godot' file."
+msgstr "¡Prueba exportando fuera de la carpeta del proyecto!"
#: editor/project_manager.cpp
-#, fuzzy
-msgid "Invalid project path, project.godot must exist."
-msgstr "¡La ruta del proyecto no es correcta, engine.cfg debe existir."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose a folder that does not contain a 'project.godot' file."
+msgstr ""
#: editor/project_manager.cpp
msgid "Imported Project"
msgstr "Proyecto importado"
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr "La ruta del proyecto no es correcta (¿has cambiado algo?)."
#: editor/project_manager.cpp
#, fuzzy
+msgid "Couldn't get project.godot in project path."
+msgstr "No se pudo crear engine.cfg en la ruta de proyecto."
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't edit project.godot in project path."
+msgstr "No se pudo crear engine.cfg en la ruta de proyecto."
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Couldn't create project.godot in project path."
msgstr "No se pudo crear engine.cfg en la ruta de proyecto."
@@ -6194,38 +5867,49 @@ msgid "The following files failed extraction from package:"
msgstr "Los siguientes archivos no se pudieron extraer del paquete:"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Rename Project"
+msgstr "Proyecto sin nombre"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't get project.godot in the project path."
+msgstr "No se pudo crear engine.cfg en la ruta de proyecto."
+
+#: editor/project_manager.cpp
+msgid "New Game Project"
+msgstr "Nuevo proyecto de juego"
+
+#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "Importar proyecto existente"
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
-msgstr "Ruta del proyecto (debe existir):"
+msgid "Create New Project"
+msgstr "Crear proyecto nuevo"
+
+#: editor/project_manager.cpp
+msgid "Install Project:"
+msgstr "Instalar proyecto:"
#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Nombre del proyecto:"
#: editor/project_manager.cpp
-msgid "Create New Project"
-msgstr "Crear proyecto nuevo"
+#, fuzzy
+msgid "Create folder"
+msgstr "Crear carpeta"
#: editor/project_manager.cpp
msgid "Project Path:"
msgstr "Ruta del proyecto:"
#: editor/project_manager.cpp
-msgid "Install Project:"
-msgstr "Instalar proyecto:"
-
-#: editor/project_manager.cpp
msgid "Browse"
msgstr "Examinar"
#: editor/project_manager.cpp
-msgid "New Game Project"
-msgstr "Nuevo proyecto de juego"
-
-#: editor/project_manager.cpp
msgid "That's a BINGO!"
msgstr "BINGO!"
@@ -6234,6 +5918,11 @@ msgid "Unnamed Project"
msgstr "Proyecto sin nombre"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't open project"
+msgstr "Conectar.."
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr "¿Seguro que quieres abrir más de un proyecto?"
@@ -6249,10 +5938,13 @@ msgstr ""
"«aplicación»."
#: editor/project_manager.cpp
+#, fuzzy
msgid ""
"Can't run project: Assets need to be imported.\n"
"Please edit the project to trigger the initial import."
msgstr ""
+"No se puede ejecutar el proyecto: Los assets necesitan ser importados.\n"
+"Por favor, edita el proyecto para activar el importado inicial."
#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
@@ -6266,6 +5958,12 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
"You are about the scan %s folders for existing Godot projects. Do you "
"confirm?"
msgstr ""
@@ -6277,10 +5975,6 @@ msgid "Project List"
msgstr "Lista de proyectos"
#: editor/project_manager.cpp
-msgid "Run"
-msgstr "Ejecutar"
-
-#: editor/project_manager.cpp
msgid "Scan"
msgstr "Analizar"
@@ -6303,6 +5997,11 @@ msgstr "Salir"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Restart Now"
+msgstr "Reiniciar (s):"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Can't run project"
msgstr "Conectar.."
@@ -6339,17 +6038,14 @@ msgid "Add Input Action Event"
msgstr "Añadir evento de acción de entrada"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Mayús+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
@@ -6359,7 +6055,7 @@ msgstr "Control+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "Press a Key.."
-msgstr "Presiona una tecla…"
+msgstr "Presiona una tecla.."
#: editor/project_settings_editor.cpp
msgid "Mouse Button Index:"
@@ -6411,7 +6107,7 @@ msgstr "Cambiar"
msgid "Joypad Axis Index:"
msgstr "Ãndice de ejes del mando:"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "Eje"
@@ -6433,31 +6129,31 @@ msgstr "Borrar evento de acción de entrada"
msgid "Add Event"
msgstr "Añadir elemento vacío"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "Dispositivo"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "Botón"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "Botón izquierdo."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "Botón derecho."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "Botón central."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr "Rueda hacia arriba."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr "Rueda hacia abajo."
@@ -6467,8 +6163,9 @@ msgid "Add Global Property"
msgstr "Añadir propiedad «Getter»"
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
-msgstr ""
+#, fuzzy
+msgid "Select a setting item first!"
+msgstr "¡Selecciona un item primero!"
#: editor/project_settings_editor.cpp
#, fuzzy
@@ -6486,6 +6183,16 @@ msgid "Delete Item"
msgstr "Eliminar entrada"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Can't contain '/' or ':'"
+msgstr "No se puede conectar al host:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Already existing"
+msgstr "Des/activar persistencia"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "Error al guardar los ajustes."
@@ -6494,8 +6201,9 @@ msgid "Settings saved OK."
msgstr "Los ajustes se han guardado correctamente."
#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Override for Feature"
-msgstr ""
+msgstr "Sobreescribir para esta característica"
#: editor/project_settings_editor.cpp
msgid "Add Translation"
@@ -6527,6 +6235,15 @@ msgstr "Quitar opción de remapeo de recursos"
#: editor/project_settings_editor.cpp
#, fuzzy
+msgid "Changed Locale Filter"
+msgstr "Cambiar tiempo de mezcla"
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Project Settings (project.godot)"
msgstr "Ajustes de proyecto (engine.cfg)"
@@ -6539,8 +6256,9 @@ msgid "Property:"
msgstr "Propiedad:"
#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Override For.."
-msgstr ""
+msgstr "Sobreescribir para.."
#: editor/project_settings_editor.cpp
msgid "Input Map"
@@ -6587,6 +6305,30 @@ msgid "Locale"
msgstr "Idioma"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales Filter"
+msgstr "Filtrado de imágenes:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Show all locales"
+msgstr "Crear huesos"
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "Filtros"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales:"
+msgstr "Idioma"
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "AutoLoad"
@@ -6617,11 +6359,11 @@ msgstr "Transición salida-entrada"
#: editor/property_editor.cpp
msgid "File.."
-msgstr "Archivo…"
+msgstr "Archivo.."
#: editor/property_editor.cpp
msgid "Dir.."
-msgstr "Dir…"
+msgstr "Directorio.."
#: editor/property_editor.cpp
msgid "Assign"
@@ -6639,10 +6381,20 @@ msgstr "Script siguiente"
#: editor/property_editor.cpp
#, fuzzy
+msgid "Make Unique"
+msgstr "Crear huesos"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "Show in File System"
msgstr "SistDeArchivos"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Convert To %s"
+msgstr "Convertir a.."
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr "Error al cargar el archivo: ¡No es un recurso!"
@@ -6683,6 +6435,11 @@ msgstr "Seleccionar puntos"
#: editor/property_selector.cpp
#, fuzzy
+msgid "Select Virtual Method"
+msgstr "Modo de selección"
+
+#: editor/property_selector.cpp
+#, fuzzy
msgid "Select Method"
msgstr "Modo de selección"
@@ -6711,26 +6468,6 @@ msgstr "Mantener transformación global"
msgid "Reparent"
msgstr "Reemparentar"
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr "Crear recurso nuevo"
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr "Abrir recurso"
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr "Guardar recurso"
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr "Herramientas de recursos"
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr "Crear local"
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr "Modo de ejecución:"
@@ -6801,8 +6538,9 @@ msgid "Delete Node(s)?"
msgstr "¿Quieres borrar los nodos?"
#: editor/scene_tree_dock.cpp
+#, fuzzy
msgid "Can not perform with the root node."
-msgstr ""
+msgstr "No se puede efectuar con el nodo raíz."
#: editor/scene_tree_dock.cpp
msgid "This operation can't be done on instanced scenes."
@@ -6810,7 +6548,7 @@ msgstr "Esta operación no puede realizarse en escenas instanciadas."
#: editor/scene_tree_dock.cpp
msgid "Save New Scene As.."
-msgstr "Guardar nueva escena como…"
+msgstr "Guardar nueva escena como.."
#: editor/scene_tree_dock.cpp
msgid "Editable Children"
@@ -6862,14 +6600,6 @@ msgid "Sub-Resources:"
msgstr "Recursos:"
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr "Editar grupos"
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr "Editar conexiones"
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr "Limpiar heredado"
@@ -6964,26 +6694,35 @@ msgid "Toggle CanvasItem Visible"
msgstr "Act/Desact. CanvasItem Visible"
#: editor/scene_tree_editor.cpp
+#, fuzzy
msgid "Node configuration warning:"
-msgstr ""
+msgstr "Alerta de configuración de Nodos:"
#: editor/scene_tree_editor.cpp
+#, fuzzy
msgid ""
"Node has connection(s) and group(s)\n"
"Click to show signals dock."
msgstr ""
+"El nodo tiene conexion(es) y grupo(s)\n"
+"Haz click para mostrar el panel de señales."
#: editor/scene_tree_editor.cpp
+#, fuzzy
msgid ""
"Node has connections.\n"
"Click to show signals dock."
msgstr ""
+"El nodo tiene conexiones.\n"
+"Haz click para mostrar el panel de señales."
#: editor/scene_tree_editor.cpp
msgid ""
"Node is in group(s).\n"
"Click to show groups dock."
msgstr ""
+"El nodo está en el/los grupo(s).\n"
+"Click para mostrar el panel de grupos."
#: editor/scene_tree_editor.cpp
msgid "Instance:"
@@ -6999,12 +6738,16 @@ msgid ""
"Node is locked.\n"
"Click to unlock"
msgstr ""
+"El nodo está bloqueado.\n"
+"Click para desbloquear"
#: editor/scene_tree_editor.cpp
msgid ""
"Children are not selectable.\n"
"Click to make selectable"
msgstr ""
+"Los hijos no son seleccionables.\n"
+"Haz click para hacerlos seleccionables"
#: editor/scene_tree_editor.cpp
#, fuzzy
@@ -7026,7 +6769,7 @@ msgstr "Ãrbol de escenas (nodos):"
#: editor/scene_tree_editor.cpp
msgid "Node Configuration Warning!"
-msgstr ""
+msgstr "¡Alerta de configuración de nodos!"
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
@@ -7064,12 +6807,22 @@ msgid "Invalid base path"
msgstr "Ruta base incorrecta"
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "File exists, will be reused"
+msgstr "El archivo ya existe, ¿quieres sobreescribirlo?"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr "La extensión no es correcta"
#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Wrong extension chosen"
-msgstr ""
+msgstr "Extensión seleccionada errónea"
#: editor/script_create_dialog.cpp
#, fuzzy
@@ -7092,11 +6845,12 @@ msgstr "Script"
#: editor/script_create_dialog.cpp
msgid "Allowed: a-z, A-Z, 0-9 and _"
-msgstr ""
+msgstr "Permitido: a-z, A-Z, 0-9 y _"
#: editor/script_create_dialog.cpp
+#, fuzzy
msgid "Built-in script (into scene file)"
-msgstr ""
+msgstr "Script integrado (en el archivo de escena)"
#: editor/script_create_dialog.cpp
#, fuzzy
@@ -7109,6 +6863,10 @@ msgid "Load existing script file"
msgstr "Script siguiente"
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr "Idioma"
+
+#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Inherits"
msgstr "Hereda:"
@@ -7154,6 +6912,10 @@ msgid "Function:"
msgstr "Función:"
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr "Errores"
@@ -7234,6 +6996,10 @@ msgid "Type"
msgstr "Tipo"
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr "Formato"
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr "Uso"
@@ -7267,7 +7033,7 @@ msgstr "Cambiar Radio de Luces"
#: editor/spatial_editor_gizmos.cpp
msgid "Change AudioStreamPlayer3D Emission Angle"
-msgstr ""
+msgstr "Cambiar el ángulo de emisión de AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
@@ -7303,13 +7069,31 @@ msgstr "Cambiar Alcances de Notificadores"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Particles AABB"
-msgstr ""
+msgstr "Cambiar partículas AABB"
#: editor/spatial_editor_gizmos.cpp
#, fuzzy
msgid "Change Probe Extents"
msgstr "Cambiar Alcances de Notificadores"
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Library"
+msgstr "MeshLibrary.."
+
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Status"
+msgstr "Estado:"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
@@ -7317,7 +7101,7 @@ msgstr ""
"El argumento para convert() no es correcto, prueba utilizando constantes "
"TYPE_*."
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr ""
@@ -7362,7 +7146,7 @@ msgstr "El diccionario de instancias no es correcto (subclases erróneas)"
#: modules/gdscript/gd_functions.cpp
msgid "Object can't provide a length."
-msgstr ""
+msgstr "El objeto no puede proporcionar una longitud."
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
@@ -7375,21 +7159,19 @@ msgid "GridMap Duplicate Selection"
msgstr "Duplicar selección"
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Snap View"
msgstr "Vista superior"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
msgid "Prev Level (%sDown Wheel)"
-msgstr ""
+msgstr "Nivel anterior ("
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
msgid "Next Level (%sUp Wheel)"
-msgstr ""
+msgstr "Siguiente nivel ("
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
@@ -7397,24 +7179,26 @@ msgid "Clip Disabled"
msgstr "Desactivado"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
msgid "Clip Above"
-msgstr ""
+msgstr "Clip superior"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
msgid "Clip Below"
-msgstr ""
+msgstr "Clip inferior"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit X Axis"
-msgstr ""
+msgstr "Editar eje X"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Y Axis"
-msgstr ""
+msgstr "Editar eje Y"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Z Axis"
-msgstr ""
+msgstr "Editar eje Z"
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
@@ -7432,20 +7216,24 @@ msgid "Cursor Rotate Z"
msgstr "Ctrl: Rotar"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
msgid "Cursor Back Rotate X"
-msgstr ""
+msgstr "Rotar cursor trasero X"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
msgid "Cursor Back Rotate Y"
-msgstr ""
+msgstr "Rotar cursor trasero Y"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
msgid "Cursor Back Rotate Z"
-msgstr ""
+msgstr "Rotar cursor trasero Z"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
msgid "Cursor Clear Rotation"
-msgstr ""
+msgstr "Quitar rotación del cursor"
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
@@ -7482,13 +7270,8 @@ msgstr "Ajustes de fijado"
msgid "Pick Distance:"
msgstr "Instancia:"
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr "Archivo"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7705,10 +7488,18 @@ msgid "Return"
msgstr "Devuelve"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr "Llamada"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr "Obtener"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Input Value"
msgstr "Cambiar Nombre de Entrada"
@@ -7867,7 +7658,7 @@ msgstr "Examinar"
#: platform/javascript/export/export.cpp
msgid "Run exported HTML in the system's default browser."
-msgstr ""
+msgstr "Ejecutar HTML exportado en el navegador por defecto del sistema."
#: platform/javascript/export/export.cpp
#, fuzzy
@@ -7975,10 +7766,13 @@ msgstr ""
"ParallaxBackground."
#: scene/2d/particles_2d.cpp scene/3d/particles.cpp
+#, fuzzy
msgid ""
"A material to process the particles is not assigned, so no behavior is "
"imprinted."
msgstr ""
+"No se ha asignado un material para procesar las partículas, por lo que no se "
+"ha grabado ningún comportamiento."
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
@@ -7986,11 +7780,15 @@ msgstr ""
"PathFollow2D solo funciona cuando está seteado como hijo de un nodo Path2D."
#: scene/2d/physics_body_2d.cpp
+#, fuzzy
msgid ""
"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"Los cambios en el tamaño del RigidBody2D (en el personaje o modos rígidos) "
+"serán sobreescritas por el engine de físicas cuando se ejecute.\n"
+"En vez de eso, cambia el tamaño en las formas de colisión hijas."
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
@@ -8022,31 +7820,37 @@ msgstr ""
#: scene/3d/arvr_nodes.cpp
msgid "ARVRCamera must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRCamera tiene que tener un nodo ARVROrigin como padre"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRController must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRController tiene que tener un nodo ARVROrigin como padre"
#: scene/3d/arvr_nodes.cpp
+#, fuzzy
msgid ""
"The controller id must not be 0 or this controller will not be bound to an "
"actual controller"
msgstr ""
+"El id del controlador no puede ser 0 o este controlador no se asignará a un "
+"controlador de verdad."
#: scene/3d/arvr_nodes.cpp
msgid "ARVRAnchor must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRAnchor tiene que tener un nodo ARVROrigin como padre"
#: scene/3d/arvr_nodes.cpp
+#, fuzzy
msgid ""
"The anchor id must not be 0 or this anchor will not be bound to an actual "
"anchor"
msgstr ""
+"El id del ancla no puede ser 0 o este ancla no se asignará a un ancla de "
+"verdad"
#: scene/3d/arvr_nodes.cpp
msgid "ARVROrigin requires an ARVRCamera child node"
-msgstr ""
+msgstr "ARVROrigin necesita un nodo ARVCamera hijo"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -8095,16 +7899,23 @@ msgstr ""
"que sólo proporciona los datos de navegación."
#: scene/3d/particles.cpp
+#, fuzzy
msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+"Nada es visible porque los modelos 3D no se han asignado a las pasadas de "
+"dibujo."
#: scene/3d/physics_body.cpp
+#, fuzzy
msgid ""
"Size changes to RigidBody (in character or rigid modes) will be overriden by "
"the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"Los cambios en el tamaño del RigidBody (en el personaje o modos rígidos) "
+"serán sobreescritas por el engine de físicas cuando se ejecute.\n"
+"En vez de eso, cambia el tamaño en las formas de colisión hijas."
#: scene/3d/remote_transform.cpp
#, fuzzy
@@ -8127,6 +7938,12 @@ msgstr ""
"Un recurso SpriteFrames debe ser creado o asignado en la propiedad 'Frames' "
"para que AnimatedSprite3D pueda mostrar frames."
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
#, fuzzy
msgid "Raw Mode"
@@ -8134,7 +7951,11 @@ msgstr "Modo desplazamiento lateral"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
-msgstr ""
+msgstr "Añadir el color actual como predefinido"
+
+#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Cancelar"
#: scene/gui/dialogs.cpp
msgid "Alert!"
@@ -8144,10 +7965,6 @@ msgstr "Alerta!"
msgid "Please Confirm..."
msgstr "Confirmar decisión…"
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -8159,17 +7976,24 @@ msgstr ""
"hacerlos visibles para editar, aunque se esconderán al ejecutar."
#: scene/gui/scroll_container.cpp
+#, fuzzy
msgid ""
"ScrollContainer is intended to work with a single child control.\n"
"Use a container as child (VBox,HBox,etc), or a Control and set the custom "
"minimum size manually."
msgstr ""
+"ScrollContainer debe funcionar con un único control de hijos.\n"
+"Usa un container como hijo (VBox,HBox,etc), o un Control y ajusta el tamaño "
+"mínimo personalizado manualmente."
#: scene/main/scene_tree.cpp
+#, fuzzy
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
msgstr ""
+"El entorno por defecto especificado en los Ajustes del Proyecto (Renderizado "
+"-> Ventana -> Entorno por Defecto) no se ha podido cargar."
#: scene/main/viewport.cpp
msgid ""
@@ -8183,6 +8007,658 @@ msgstr ""
"que pueda obtener un tamaño. Alternativamente, hacelo un RenderTarget y "
"asigná su textura interna a algún otro nodo para mostrar."
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr "Error al arrancar FreeType."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "Formato de tipografía desconocido."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "Error al cargar la tipografía."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr "Tamaño de tipografía incorrecto."
+
+#~ msgid "Filter:"
+#~ msgstr "Filtro:"
+
+#, fuzzy
+#~ msgid "' parsing of config failed."
+#~ msgstr "' análisis de config fallido."
+
+#, fuzzy
+#~ msgid "Theme"
+#~ msgstr "Guardar tema"
+
+#~ msgid "Method List For '%s':"
+#~ msgstr "Lista de métodos Para '%s':"
+
+#~ msgid "Arguments:"
+#~ msgstr "Argumentos:"
+
+#~ msgid "Return:"
+#~ msgstr "Devuelve:"
+
+#~ msgid "Added:"
+#~ msgstr "Añadido:"
+
+#~ msgid "Removed:"
+#~ msgstr "Eliminado:"
+
+#~ msgid "Error saving atlas:"
+#~ msgstr "Error al guardar atlas:"
+
+#~ msgid "Could not save atlas subtexture:"
+#~ msgstr "No se pudo guardar la subtextura del altas:"
+
+#~ msgid "Exporting for %s"
+#~ msgstr "Exportando para %s"
+
+#~ msgid "Setting Up.."
+#~ msgstr "Configurando.."
+
+#~ msgid "Error loading scene."
+#~ msgstr "Hubo un error al cargar la escena."
+
+#~ msgid "Re-Import"
+#~ msgstr "Reimportar"
+
+#~ msgid "Please wait for scan to complete."
+#~ msgstr "Espera a que termine el análisis."
+
+#~ msgid "Current scene must be saved to re-import."
+#~ msgstr "La escena actual debe ser guardada para reimportar."
+
+#~ msgid "Save & Re-Import"
+#~ msgstr "Guardar y reimportar"
+
+#~ msgid "Re-Importing"
+#~ msgstr "Reimportando"
+
+#~ msgid "Re-Import Changed Resources"
+#~ msgstr "Reimportar recursos cambiados"
+
+#~ msgid "Loading Export Templates"
+#~ msgstr "Cargando plantillas de exportación"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Status: Needs Re-Import"
+#~ msgstr "Guardar y reimportar"
+
+#~ msgid "Same source and destination files, doing nothing."
+#~ msgstr ""
+#~ "Los archivos de origen y destino son iguales, no se realizará ninguna "
+#~ "acción."
+
+#~ msgid "Target file exists, can't overwrite. Delete first."
+#~ msgstr ""
+#~ "El archivo objetivo ya existe, no se puede sobreescribir. Bórralo primero."
+
+#~ msgid "Same source and destination paths, doing nothing."
+#~ msgstr ""
+#~ "Las rutas de origen y destino son iguales, no se realizará ninguna acción."
+
+#~ msgid "Can't move directories to within themselves."
+#~ msgstr "No se pueden mover carpetas dentro de si mismas."
+
+#, fuzzy
+#~ msgid "Can't rename deps for:\n"
+#~ msgstr "No se pueden renombrar las dependencias para:\n"
+
+#, fuzzy
+#~ msgid "Error moving file:\n"
+#~ msgstr "Error al cargar la imagen:"
+
+#~ msgid "Pick New Name and Location For:"
+#~ msgstr "Elige un nombre nuevo y ubicación para:"
+
+#~ msgid "No files selected!"
+#~ msgstr "¡No has seleccionado ningún archivo!"
+
+#~ msgid "Info"
+#~ msgstr "Info"
+
+#~ msgid "Re-Import.."
+#~ msgstr "Reimportar.."
+
+#~ msgid "No bit masks to import!"
+#~ msgstr "¡Sin máscaras de bits para importar!"
+
+#~ msgid "Target path is empty."
+#~ msgstr "La ruta de destino está vacía."
+
+#~ msgid "Target path must be a complete resource path."
+#~ msgstr "La ruta de destino debe ser una ruta de recursos completa."
+
+#~ msgid "Target path must exist."
+#~ msgstr "La ruta de destino debe existir."
+
+#~ msgid "Save path is empty!"
+#~ msgstr "La ruta de guardado esta vacía!"
+
+#~ msgid "Import BitMasks"
+#~ msgstr "Importar BitMasks"
+
+#~ msgid "Source Texture(s):"
+#~ msgstr "Texturas de origen:"
+
+#~ msgid "Target Path:"
+#~ msgstr "Ruta de destino:"
+
+#~ msgid "Accept"
+#~ msgstr "Aceptar"
+
+#~ msgid "Bit Mask"
+#~ msgstr "Máscara de bits"
+
+#~ msgid "No source font file!"
+#~ msgstr "¡No se ha elegido ningún archivo de tipografías!"
+
+#~ msgid "No target font resource!"
+#~ msgstr "¡No se ha elegido ningún recurso de tipografías!"
+
+#, fuzzy
+#~ msgid ""
+#~ "Invalid file extension.\n"
+#~ "Please use .font."
+#~ msgstr ""
+#~ "La extensión del archivo no es correcta.\n"
+#~ "Prueba con la extensión .fnt."
+
+#~ msgid "Couldn't save font."
+#~ msgstr "No se pudo guardar la tipografía."
+
+#~ 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:"
+
+#~ msgid "The quick brown fox jumps over the lazy dog."
+#~ msgstr "El veloz murciélago hindú comía feliz cardillo y kiwi."
+
+#~ msgid "Test:"
+#~ msgstr "Prueba:"
+
+#~ msgid "Options:"
+#~ msgstr "Opciones:"
+
+#~ msgid "Font Import"
+#~ msgstr "Importar tipografías"
+
+#~ msgid ""
+#~ "This file is already a Godot font file, please supply a BMFont type file "
+#~ "instead."
+#~ msgstr ""
+#~ "Este archivo ya es un archivo de tipografías de Godot, tienes que "
+#~ "utilizar un archivo de tipo BMFont."
+
+#~ msgid "Failed opening as BMFont file."
+#~ msgstr "Error al abrir como archivo BMFont."
+
+#~ msgid "Invalid font custom source."
+#~ msgstr "El origen personalizado de tipografía no es correcto."
+
+#~ msgid "No meshes to import!"
+#~ msgstr "¡No hay ningún modelo que se pueda importar!"
+
+#~ msgid "Single Mesh Import"
+#~ msgstr "Importar modelo individual"
+
+#~ msgid "Source Mesh(es):"
+#~ msgstr "Modelo/s elegidos:"
+
+#~ msgid "Surface %d"
+#~ msgstr "Superficie %d"
+
+#~ msgid "No samples to import!"
+#~ msgstr "¡No hay ningún sonido a importar!"
+
+#~ msgid "Import Audio Samples"
+#~ msgstr "Importar archivo de sonido"
+
+#~ msgid "Source Sample(s):"
+#~ msgstr "Muestra(s) de Origen:"
+
+#~ msgid "Audio Sample"
+#~ msgstr "Archivo de sonido"
+
+#~ msgid "New Clip"
+#~ msgstr "Nuevo clip"
+
+#~ msgid "Flags"
+#~ msgstr "Identificadores"
+
+#~ msgid "Bake FPS:"
+#~ msgstr "Hacer Bake de FPS:"
+
+#~ msgid "Optimizer"
+#~ msgstr "Optimizar"
+
+#~ msgid "Max Linear Error"
+#~ msgstr "Error lineal máximo"
+
+#~ msgid "Max Angular Error"
+#~ msgstr "Error angular máximo"
+
+#~ msgid "Max Angle"
+#~ msgstr "Ãngulo máximo"
+
+#~ msgid "Clips"
+#~ msgstr "Clips"
+
+#~ msgid "Start(s)"
+#~ msgstr "Inicios"
+
+#~ msgid "End(s)"
+#~ msgstr "Finales"
+
+#~ msgid "Filters"
+#~ msgstr "Filtros"
+
+#~ msgid "Source path is empty."
+#~ msgstr "La ruta de origen esta vacía."
+
+#~ msgid "Couldn't load post-import script."
+#~ msgstr "No se pudo cargar el script post-importación."
+
+#~ msgid "Invalid/broken script for post-import."
+#~ msgstr "El script de postimportación no es correcto o está roto."
+
+#~ msgid "Error importing scene."
+#~ msgstr "Error al importar escena."
+
+#~ msgid "Import 3D Scene"
+#~ msgstr "Importar escena 3D"
+
+#~ msgid "Source Scene:"
+#~ msgstr "Escena de origen:"
+
+#~ msgid "Same as Target Scene"
+#~ msgstr "Igual que escena de destino"
+
+#~ msgid "Shared"
+#~ msgstr "Compartido"
+
+#~ msgid "Target Texture Folder:"
+#~ msgstr "Carpeta de texturas elegida:"
+
+#~ msgid "Post-Process Script:"
+#~ msgstr "Script de posprocesado:"
+
+#~ msgid "Custom Root Node Type:"
+#~ msgstr "Tipo de Nodo Raiz Customizado:"
+
+#~ msgid "Auto"
+#~ msgstr "Auto"
+
+#, fuzzy
+#~ msgid "Root Node Name:"
+#~ msgstr "Nombre del nodo:"
+
+#~ msgid "The Following Files are Missing:"
+#~ msgstr "Faltan los siguientes archivos:"
+
+#~ msgid "Import Anyway"
+#~ msgstr "Importar de todos modos"
+
+#~ msgid "Import & Open"
+#~ msgstr "Importar y abrir"
+
+#~ msgid "Edited scene has not been saved, open imported scene anyway?"
+#~ msgstr ""
+#~ "La escena editada no se ha guardado, ¿Quieres abrir la escena importada "
+#~ "de todos modos?"
+
+#~ msgid "Import Image:"
+#~ msgstr "Importar imagen:"
+
+#~ msgid "Couldn't localize path: %s (already local)"
+#~ msgstr "No se pudo encontrar la ruta: %s (ya es local)"
+
+#~ msgid "3D Scene Animation"
+#~ msgstr "Animación de escena 3D"
+
+#~ msgid "Uncompressed"
+#~ msgstr "Sin comprimir"
+
+#~ msgid "Compress Lossless (PNG)"
+#~ msgstr "Compresión sin pérdidas (PNG)"
+
+#~ msgid "Compress Lossy (WebP)"
+#~ msgstr "Compresión con pérdidas (WebP)"
+
+#~ msgid "Compress (VRAM)"
+#~ msgstr "Comprimir (VRAM)"
+
+#~ msgid "Texture Format"
+#~ msgstr "Formato de textura"
+
+#~ msgid "Texture Compression Quality (WebP):"
+#~ msgstr "Calidad de compresión de textura (WebP):"
+
+#~ msgid "Texture Options"
+#~ msgstr "Opciones de textura"
+
+#~ msgid "Please specify some files!"
+#~ msgstr "¡Selecciona algunos archivos!"
+
+#~ msgid "At least one file needed for Atlas."
+#~ msgstr "Se necesita al menos un archivo para el atlas."
+
+#~ msgid "Error importing:"
+#~ msgstr "Hubo un error al importar:"
+
+#~ msgid "Only one file is required for large texture."
+#~ msgstr "Solo se requiere un archivo para textura grande."
+
+#~ msgid "Max Texture Size:"
+#~ msgstr "Tamaño máximo de textura:"
+
+#~ msgid "Import Textures for Atlas (2D)"
+#~ msgstr "Importar texturas para atlas (2D)"
+
+#~ msgid "Cell Size:"
+#~ msgstr "Tamaño de celda:"
+
+#~ msgid "Large Texture"
+#~ msgstr "Textura grande"
+
+#~ msgid "Import Large Textures (2D)"
+#~ msgstr "Importar texturas grandes (2D)"
+
+#~ msgid "Source Texture"
+#~ msgstr "Textura de origen"
+
+#~ msgid "Base Atlas Texture"
+#~ msgstr "Textura base de atlas"
+
+#~ msgid "Source Texture(s)"
+#~ msgstr "Texturas de origen"
+
+#~ msgid "Import Textures for 2D"
+#~ msgstr "Importar texturas para 2D"
+
+#~ msgid "Import Textures for 3D"
+#~ msgstr "Importar texturas para 3D"
+
+#~ msgid "Import Textures"
+#~ msgstr "Importar texturas"
+
+#~ msgid "2D Texture"
+#~ msgstr "Textura 2D"
+
+#~ msgid "3D Texture"
+#~ msgstr "Textura 3D"
+
+#~ msgid "Atlas Texture"
+#~ msgstr "Textura de atlas"
+
+#~ msgid ""
+#~ "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files "
+#~ "to the project."
+#~ msgstr ""
+#~ "AVISO: No es necesario importar texturas 2D. Limítate a copia los "
+#~ "archivos png/jpg al proyecto."
+
+#~ msgid "Crop empty space."
+#~ msgstr "Recortar espacio vacío."
+
+#~ msgid "Texture"
+#~ msgstr "Textura"
+
+#~ msgid "Import Large Texture"
+#~ msgstr "Importar textura grande"
+
+#~ msgid "Load Source Image"
+#~ msgstr "Cargar imagen de origen"
+
+#~ msgid "Slicing"
+#~ msgstr "Troceando"
+
+#~ msgid "Saving"
+#~ msgstr "Guardando"
+
+#~ msgid "Couldn't save large texture:"
+#~ msgstr "No se pudo guardar la textura grande:"
+
+#~ msgid "Build Atlas For:"
+#~ msgstr "Construir atlas para:"
+
+#~ msgid "Loading Image:"
+#~ msgstr "Cargando imagen:"
+
+#~ msgid "Couldn't load image:"
+#~ msgstr "No se pudo cargar la imagen:"
+
+#~ msgid "Converting Images"
+#~ msgstr "Convirtiendo imágenes"
+
+#~ msgid "Cropping Images"
+#~ msgstr "Recortando imágenes"
+
+#~ msgid "Blitting Images"
+#~ msgstr "Copiando datos de imágenes"
+
+#~ msgid "Couldn't save atlas image:"
+#~ msgstr "No se pudo guardar la imagen de atlas:"
+
+#~ msgid "Couldn't save converted texture:"
+#~ msgstr "No se pudo guardar la textura convertida:"
+
+#~ msgid "Invalid source!"
+#~ msgstr "¡Origen incorrecto!"
+
+#~ msgid "Invalid translation source!"
+#~ msgstr "¡Origen de traducción incorrecto!"
+
+#~ msgid "Column"
+#~ msgstr "Columna"
+
+#~ msgid "No items to import!"
+#~ msgstr "Sin elementos para importar!"
+
+#~ msgid "No target path!"
+#~ msgstr "¡El objetivo no tiene ruta!"
+
+#~ msgid "Import Translations"
+#~ msgstr "Importar traducciones"
+
+#~ msgid "Couldn't import!"
+#~ msgstr "¡No se pudo importar!"
+
+#~ msgid "Import Translation"
+#~ msgstr "Importar traducción"
+
+#~ msgid "Source CSV:"
+#~ msgstr "CSV de origen:"
+
+#~ msgid "Ignore First Row"
+#~ msgstr "Ignorar Primera Columna"
+
+#~ msgid "Compress"
+#~ msgstr "Comprimir"
+
+#, fuzzy
+#~ msgid "Add to Project (project.godot)"
+#~ msgstr "Añadir al proyecto (engine.cfg)"
+
+#~ msgid "Import Languages:"
+#~ msgstr "Importar idiomas:"
+
+#~ msgid "Translation"
+#~ msgstr "Traducción"
+
+#~ msgid "Parsing %d Triangles:"
+#~ msgstr "Leyendo %d triángulos:"
+
+#~ msgid "Triangle #"
+#~ msgstr "Nº de triángulos"
+
+#~ msgid "Light Baker Setup:"
+#~ msgstr "Configuración de Baker de Luces:"
+
+#~ msgid "Fixing Lights"
+#~ msgstr "Procesando luces"
+
+#~ msgid "Making BVH"
+#~ msgstr "Creando BVH"
+
+#~ msgid "Transfer to Lightmaps:"
+#~ msgstr "Transfiriendo a «lightmaps»:"
+
+#~ msgid "Allocating Texture #"
+#~ msgstr "Asignando nº de textura"
+
+#~ msgid "Baking Triangle #"
+#~ msgstr "Quemando nº de triángulo"
+
+#~ msgid "Post-Processing Texture #"
+#~ msgstr "Posprocesando nº de textura"
+
+#~ msgid "Reset the lightmap octree baking process (start over)."
+#~ msgstr ""
+#~ "Restablece el proceso de «bake» del «octree» del «lightmap» (empezar de "
+#~ "nuevo)."
+
+#~ msgid "Zoom (%):"
+#~ msgstr "Zoom (%):"
+
+#~ msgid "Skeleton.."
+#~ msgstr "Esqueleto.."
+
+#~ msgid "Zoom Reset"
+#~ msgstr "Restablecer zoom"
+
+#~ msgid "Zoom Set.."
+#~ msgstr "Ajustar zoom.."
+
+#~ msgid "Set a Value"
+#~ msgstr "Establecer valor"
+
+#~ msgid "Snap (Pixels):"
+#~ msgstr "Fijar (Pixeles):"
+
+#~ msgid "Parse BBCode"
+#~ msgstr "Leer BBCode"
+
+#~ msgid "Length:"
+#~ msgstr "Duración:"
+
+#~ msgid "Open Sample File(s)"
+#~ msgstr "Abrir archivos de sonido"
+
+#~ msgid "ERROR: Couldn't load sample!"
+#~ msgstr "¡ERROR: No se pudo cargar el archivo de sonido!"
+
+#~ msgid "Add Sample"
+#~ msgstr "Añadir archivo de sonido"
+
+#~ msgid "Rename Sample"
+#~ msgstr "Renombrar archivo de sonido"
+
+#~ msgid "Delete Sample"
+#~ msgstr "Eliminar archivo de sonido"
+
+#~ msgid "16 Bits"
+#~ msgstr "16 bits"
+
+#~ msgid "8 Bits"
+#~ msgstr "8 bits"
+
+#~ msgid "Stereo"
+#~ msgstr "Estéreo"
+
+#~ msgid "Mono"
+#~ msgstr "Mono"
+
+#~ msgid "Pitch"
+#~ msgstr "Altura"
+
+#~ msgid "Window"
+#~ msgstr "Ventana"
+
+#~ msgid "Move Right"
+#~ msgstr "Mover a la derecha"
+
+#~ msgid "Scaling to %s%%."
+#~ msgstr "Escalando al %s%%."
+
+#~ msgid "Up"
+#~ msgstr "Arriba"
+
+#~ msgid "Down"
+#~ msgstr "Abajo"
+
+#~ msgid "Bucket"
+#~ msgstr "Cubo"
+
+#~ msgid "Invalid project path, the path must exist!"
+#~ msgstr "¡La ruta del proyecto no es correcta, tiene que existir!"
+
+#, fuzzy
+#~ msgid "Invalid project path, project.godot must not exist."
+#~ msgstr "La ruta del proyecto no es correcta, engine.cfg no debe existir."
+
+#, fuzzy
+#~ msgid "Invalid project path, project.godot must exist."
+#~ msgstr "¡La ruta del proyecto no es correcta, engine.cfg debe existir."
+
+#~ msgid "Project Path (Must Exist):"
+#~ msgstr "Ruta del proyecto (debe existir):"
+
+#~ msgid "Create New Resource"
+#~ msgstr "Crear recurso nuevo"
+
+#~ msgid "Open Resource"
+#~ msgstr "Abrir recurso"
+
+#~ msgid "Save Resource"
+#~ msgstr "Guardar recurso"
+
+#~ msgid "Resource Tools"
+#~ msgstr "Herramientas de recursos"
+
+#~ msgid "Make Local"
+#~ msgstr "Crear local"
+
+#~ msgid "Edit Groups"
+#~ msgstr "Editar grupos"
+
+#~ msgid "Edit Connections"
+#~ msgstr "Editar conexiones"
+
+#, fuzzy
+#~ msgid "GridMap Paint"
+#~ msgstr "Coloreado de GridMap"
+
+#, fuzzy
+#~ msgid "Tiles"
+#~ msgstr "Archivo"
+
+#~ msgid "Areas"
+#~ msgstr "Ãreas"
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl+"
+
+#, fuzzy
+#~ msgid "Down Wheel)"
+#~ msgstr "Rueda de ratón hacia abajo)"
+
+#, fuzzy
+#~ msgid "Up Wheel)"
+#~ msgstr "Rueda de ratón hacia arriba)"
+
#~ msgid "Close scene? (Unsaved changes will be lost)"
#~ msgstr "¿Quieres cerrar la escena? (Los cambios sin guardar se perderán)"
@@ -8196,9 +8672,6 @@ msgstr ""
#~ msgid "Close Goto Prev. Scene"
#~ msgstr "Cerrar e ir a escena anterior"
-#~ msgid "Expand to Parent"
-#~ msgstr "Expandir al padre"
-
#~ msgid "Del"
#~ msgstr "Eliminar"
@@ -8387,18 +8860,12 @@ msgstr ""
#~ msgid "Save Translatable Strings"
#~ msgstr "Guardar cadenas traducibles"
-#~ msgid "Translatable Strings.."
-#~ msgstr "Cadenas traducibles…"
-
#~ msgid "Install Export Templates"
#~ msgstr "Instalar plantillas de exportación"
#~ msgid "Edit Script Options"
#~ msgstr "Editar opciones de script"
-#~ msgid "Please export outside the project folder!"
-#~ msgstr "¡Prueba exportando fuera de la carpeta del proyecto!"
-
#~ msgid "Error exporting project!"
#~ msgstr "¡Error al exportar el proyecto!"
@@ -8464,18 +8931,12 @@ msgstr ""
#~ msgid "Include"
#~ msgstr "Incluir"
-#~ msgid "Change Image Group"
-#~ msgstr "Cambiar grupo de imágenes"
-
#~ msgid "Group name can't be empty!"
#~ msgstr "¡El nombre del grupo no puede estar vacío!"
#~ msgid "Invalid character in group name!"
#~ msgstr "¡El nombre del grupo contiene una letra no permitida!"
-#~ msgid "Group name already exists!"
-#~ msgstr "¡El nombre de grupo ya existe!"
-
#~ msgid "Add Image Group"
#~ msgstr "Añadir grupo de imágenes"
@@ -8554,9 +9015,6 @@ msgstr ""
#~ msgid "Preview Atlas"
#~ msgstr "Vista previa del atlas"
-#~ msgid "Image Filter:"
-#~ msgstr "Filtrado de imágenes:"
-
#~ msgid "Images:"
#~ msgstr "Imágenes:"
@@ -8623,9 +9081,6 @@ msgstr ""
#~ msgid "Lighting"
#~ msgstr "Iluminación"
-#~ msgid "Toggle Persisting"
-#~ msgstr "Des/activar persistencia"
-
#~ msgid "Global"
#~ msgstr "Global"
diff --git a/editor/translations/es_AR.po b/editor/translations/es_AR.po
index dd5f8ad597..3d0c4ee410 100644
--- a/editor/translations/es_AR.po
+++ b/editor/translations/es_AR.po
@@ -1,5 +1,6 @@
# Spanish (Argentina) translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# Lisandro Lorea <lisandrolorea@gmail.com>, 2016-2017.
@@ -10,7 +11,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-06-29 19:59+0000\n"
+"PO-Revision-Date: 2017-10-23 00:50+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"
@@ -19,7 +20,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 2.15-dev\n"
+"X-Generator: Weblate 2.17\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -195,10 +196,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr "Crear %d NUEVOS tracks e insertar claves?"
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -361,261 +361,6 @@ msgstr "Cambiar Tipo de Valor del Array"
msgid "Change Array Value"
msgstr "Cambiar Valor del Array"
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr "Libre"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr "Version:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr "Contenido:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr "Ver Archivos"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr "Descripción:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr "Instalar"
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "Cerrar"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr "No se ha podido resolver el nombre del host:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "No se ha podido resolver."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr "Error de conexión, por favor intentá de nuevo."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "No se puede conectar."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr "No se puede conectar al host:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr "No hay respuesta desde el host:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Sin respuesta."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Solicitud fallida. Código de retorno:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr "Solicitud fallida."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr "Solicitud fallida, demasiadas redireccinoes"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr "Bucle de redireccionamiento."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Fallido:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr "Hash de descarga incorrecto, asumiendo que el archivo fue manipulado."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr "Esperado:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr "Recibido:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr "Fallo el chequeo del hash sha256"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr "Error de Descarga del Asset:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr "Conseguido!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr "Obteniendo:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr "Resolviendo.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connecting.."
-msgstr "Conectando.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Requesting.."
-msgstr "Solicitando.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Error making request"
-msgstr "Error al realizar la solicitud"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr "Desocupado"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr "Reintentar"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr "Error de Descarga"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr "La descarga de este asset ya esta en progreso!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr "primero"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr "anterior"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr "siguiente"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr "último"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "Todos"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "Buscar:"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Buscar"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr "Importar"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr "Plugins"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "Ordenar:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr "Invertir"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "Categoría:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "Sitio:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr "Soporte.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr "Oficial"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "Comunidad"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr "Testeo"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr "Archivo ZIP de Assets"
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr "Lista de Métodos Para '%s':"
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "Llamar"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr "Lista de Métodos:"
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr "Argumentos:"
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr "Retornar:"
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr "Ir a Línea"
@@ -652,6 +397,14 @@ msgstr "Palabras Completas"
msgid "Selection Only"
msgstr "Solo Selección"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Buscar"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr "Encontrar"
@@ -684,11 +437,11 @@ msgstr "Preguntar Antes de Reemplazar"
msgid "Skip"
msgstr "Saltear"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "Zoom In"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr "Zoom Out"
@@ -757,6 +510,20 @@ msgstr "Diferido"
msgid "Oneshot"
msgstr "Oneshot"
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "Cerrar"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr "Conectar"
@@ -782,7 +549,7 @@ msgstr "Conectar.."
msgid "Disconnect"
msgstr "Desconectar"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr "Señales"
@@ -799,12 +566,25 @@ msgstr "Favoritos:"
msgid "Recent:"
msgstr "Recientes:"
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "Buscar:"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr "Coincidencias:"
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "Descripción:"
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr "Buscar Reemplazo Para:"
@@ -862,6 +642,10 @@ msgid "Owners Of:"
msgstr "Dueños De:"
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr "Quitar los archivos seleccionados del proyecto? (imposible deshacer)"
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -872,8 +656,8 @@ msgstr ""
"Quitarlos de todos modos? (imposible deshacer)"
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
-msgstr "Quitar los archivos seleccionados del proyecto? (imposible deshacer)"
+msgid "Cannot remove:\n"
+msgstr "No se puede remover:\n"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -940,19 +724,12 @@ msgid "Godot Engine contributors"
msgstr "Colaboradores de Godot Engine"
#: editor/editor_about.cpp
-#, fuzzy
-msgid "Authors"
-msgstr "Autor:"
-
-#: editor/editor_about.cpp
-#, fuzzy
msgid "Project Founders"
-msgstr "Gestor de Proyectos"
+msgstr "Fundadores del Proyecto"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Lead Developer"
-msgstr "Desarrolladores"
+msgstr "Desarrollador Principal"
#: editor/editor_about.cpp editor/project_manager.cpp
msgid "Project Manager"
@@ -963,12 +740,44 @@ msgid "Developers"
msgstr "Desarrolladores"
#: editor/editor_about.cpp
+msgid "Authors"
+msgstr "Autores"
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr "Sponsor Platino"
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr "Sponsor Oro"
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr "Mini Sponsors"
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr "Donantes Oro"
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr "Donantes Plata"
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr "Donantes Bronce"
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr "Donantes"
+
+#: editor/editor_about.cpp
msgid "License"
-msgstr ""
+msgstr "Licencia"
#: editor/editor_about.cpp
msgid "Thirdparty License"
-msgstr ""
+msgstr "Licencia de Terceros"
#: editor/editor_about.cpp
msgid ""
@@ -977,104 +786,108 @@ msgid ""
"is an exhaustive list of all such thirdparty components with their "
"respective copyright statements and license terms."
msgstr ""
+"Godot Engine depende de un número de licencias de terceros, libres y de "
+"código abierto, todas compatibles con los términos de su licencia MIT. La "
+"siguiente es una lista exhaustiva de los mencionados componentes de terceros "
+"con sus respectivas declaraciones de copyright y términos de licencia."
#: editor/editor_about.cpp
-#, fuzzy
msgid "All Components"
-msgstr "Contenido:"
+msgstr "Todos los Componentes"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Components"
-msgstr "Contenido:"
+msgstr "Componentes"
#: editor/editor_about.cpp
msgid "Licenses"
-msgstr ""
+msgstr "Licencias"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Error opening package file, not in zip format."
-msgstr ""
+msgstr "Error al abrir el archivo de paquete. No está en formato zip."
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Uncompressing Assets"
-msgstr "Sin Comprimir"
+msgstr "Descomprimiendo Assets"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Package Installed Successfully!"
msgstr "El Paquete se Instaló Exitosamente!"
#: editor/editor_asset_installer.cpp
-#, fuzzy
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr "Conseguido!"
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr "Instalar"
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
-msgstr "El Paquete se Instaló Exitosamente!"
+msgstr "Instalador de Paquetes"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
-msgstr ""
+msgstr "Parlantes"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Effect"
-msgstr "Agregar Evento"
+msgstr "Agregar Efecto"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Rename Audio Bus"
-msgstr "Abrir Layout de Bus de Audio"
+msgstr "Renombrar Bus de Audio"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Toggle Audio Bus Solo"
-msgstr "Abrir Layout de Bus de Audio"
+msgstr "Act./Desact. Solo de Bus de Audio"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Toggle Audio Bus Mute"
-msgstr "Abrir Layout de Bus de Audio"
+msgstr "Slienciar/Desilenciar Bus de Audio"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Bypass Effects"
-msgstr ""
+msgstr "Act./Desact. Bypass de Efectos de Audio Bus"
#: editor/editor_audio_buses.cpp
msgid "Select Audio Bus Send"
-msgstr ""
+msgstr "Seleccionar Envío de Audio Bus"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus Effect"
-msgstr ""
+msgstr "Agregar Efecto de Audio Bus"
#: editor/editor_audio_buses.cpp
msgid "Move Bus Effect"
-msgstr ""
+msgstr "Mover Efecto de Bus"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Bus Effect"
-msgstr "Eliminar Seleccionados"
+msgstr "Eliminar Efecto de Bus"
#: editor/editor_audio_buses.cpp
msgid "Audio Bus, Drag and Drop to rearrange."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-#, fuzzy
-msgid "Bus options"
-msgstr "Opciones de Subescena"
+msgstr "Audio Bus, Arrastrar y Soltar para reordenar."
#: editor/editor_audio_buses.cpp
msgid "Solo"
-msgstr ""
+msgstr "Solo"
#: editor/editor_audio_buses.cpp
msgid "Mute"
-msgstr ""
+msgstr "Silenciado"
#: editor/editor_audio_buses.cpp
msgid "Bypass"
-msgstr ""
+msgstr "Bypass"
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr "Opciones de Bus"
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
@@ -1082,33 +895,36 @@ msgid "Duplicate"
msgstr "Duplicar"
#: editor/editor_audio_buses.cpp
-#, fuzzy
+msgid "Reset Volume"
+msgstr "Resetear Volumen"
+
+#: editor/editor_audio_buses.cpp
msgid "Delete Effect"
-msgstr "Eliminar Seleccionados"
+msgstr "Eliminar Efecto"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Audio Bus"
-msgstr "Agregar Bus"
+msgstr "Agregar Bus de Audio"
#: editor/editor_audio_buses.cpp
msgid "Master bus can't be deleted!"
-msgstr ""
+msgstr "El bus maestro no puede ser eliminado!"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Audio Bus"
-msgstr "Eliminar Layout"
+msgstr "Eliminar Bus de Audio"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Duplicate Audio Bus"
-msgstr "Duplicar Animación"
+msgstr "Duplicar Bus de Audio"
+
+#: editor/editor_audio_buses.cpp
+msgid "Reset Bus Volume"
+msgstr "Resetear Volumen de Bus"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Move Audio Bus"
-msgstr "Mover Acción"
+msgstr "Mover Bus de Audio"
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
@@ -1124,32 +940,28 @@ msgstr "Abrir Layout de Bus de Audio"
#: editor/editor_audio_buses.cpp
msgid "There is no 'res://default_bus_layout.tres' file."
-msgstr ""
+msgstr "No hay nigún archivo 'res://default_bus_layout.tres'."
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Invalid file, not an audio bus layout."
-msgstr ""
-"Extension de archivo inválida.\n"
-"Usá .fnt, por favor."
+msgstr "Archivo inválido. No es un layout de bus de audio."
#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr "Agregar Bus"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Create a new Bus Layout."
-msgstr "Crear Nuevo Recurso"
+msgstr "Crear un nuevo Layout Bus."
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr "Cargar"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Load an existing Bus Layout."
-msgstr "Cargar un recurso existente desde disco y editarlo."
+msgstr "Cargar un Bus Layout existente."
#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -1157,18 +969,16 @@ msgid "Save As"
msgstr "Guardar Como"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Save this Bus Layout to a file."
-msgstr "Guardar Layout de Bus de Audio Como.."
+msgstr "Guardar este Bus Layout a un archivo."
#: editor/editor_audio_buses.cpp editor/import_dock.cpp
-#, fuzzy
msgid "Load Default"
-msgstr "Por Defecto"
+msgstr "Cargar Valores por Defecto"
#: editor/editor_audio_buses.cpp
msgid "Load the default Bus Layout."
-msgstr ""
+msgstr "Cargar el Bus Layout predeterminado."
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
@@ -1241,7 +1051,7 @@ msgid "Rearrange Autoloads"
msgstr "Reordenar Autoloads"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "Ruta:"
@@ -1249,9 +1059,7 @@ msgstr "Ruta:"
msgid "Node Name:"
msgstr "Nombre de Nodo:"
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr "Nombre"
@@ -1276,27 +1084,27 @@ msgid "Updating scene.."
msgstr "Actualizando escena.."
#: editor/editor_dir_dialog.cpp
-#, fuzzy
msgid "Please select a base directory first"
-msgstr "Por favor guardá la escena primero."
+msgstr "Por favor elegí un directorio base primero"
#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "Elegí un Directorio"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "Crear Carpeta"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "Nombre:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "No se pudo crear la carpeta."
@@ -1316,30 +1124,6 @@ msgstr "Empaquetando"
msgid "Template file not found:\n"
msgstr "Plantilla no encontrada:\n"
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr "Agregado:"
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr "Removido:"
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr "Error al guardar atlas:"
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr "No se pudo guardar la subtextura de altas:"
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr "Exportando para %s"
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr "Configurando.."
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "El Archivo Existe, Sobreescribir?"
@@ -1424,6 +1208,10 @@ msgstr "Subir Favorito"
msgid "Move Favorite Down"
msgstr "Bajar Favorito"
+#: editor/editor_file_dialog.cpp
+msgid "Go to parent folder"
+msgstr "Ir a carpeta padre"
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "Directorios y Archivos:"
@@ -1438,10 +1226,6 @@ msgid "File:"
msgstr "Archivo:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "Filtro:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "Debe ser una extensión válida."
@@ -1466,6 +1250,10 @@ msgstr "Lista de Clases:"
msgid "Search Classes"
msgstr "Buscar Clases"
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr "Cima"
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr "Clase:"
@@ -1482,15 +1270,27 @@ msgstr "Heredada por:"
msgid "Brief Description:"
msgstr "Descripción Breve:"
+#: editor/editor_help.cpp
+msgid "Members"
+msgstr "Miembros"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "Miembros:"
#: editor/editor_help.cpp
+msgid "Public Methods"
+msgstr "Métodos Públicos"
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr "Métodos Públicos:"
#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr "Items de Tema de la GUI"
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr "Items de Tema de la GUI:"
@@ -1499,54 +1299,85 @@ msgid "Signals:"
msgstr "Señales:"
#: editor/editor_help.cpp
-#, fuzzy
+msgid "Enumerations"
+msgstr "Enumeraciones"
+
+#: editor/editor_help.cpp
msgid "Enumerations:"
-msgstr "Animaciones"
+msgstr "Enumeraciones:"
#: editor/editor_help.cpp
msgid "enum "
-msgstr ""
+msgstr "enum "
+
+#: editor/editor_help.cpp
+msgid "Constants"
+msgstr "Constantes"
#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Constantes:"
#: editor/editor_help.cpp
+msgid "Description"
+msgstr "Descripción"
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr "Propiedades"
+
+#: editor/editor_help.cpp
msgid "Property Description:"
msgstr "Descripción de Propiedad:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"Actualmente no existe descripción para esta propiedad. Por favor ayudanos "
+"[color=$color][url=$url]contribuyendo una[/url][/color]!"
+
+#: editor/editor_help.cpp
+msgid "Methods"
+msgstr "Métodos"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr "Descripción de Métodos:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"Actualmente no existe descripción para este método. Por favor ayudanos "
+"[color=$color][url=$url]contribuyendo una[/url][/color]!"
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr "Texto de Búsqueda"
#: editor/editor_log.cpp
-#, fuzzy
msgid "Output:"
-msgstr " Salida:"
+msgstr "Salida:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "Limpiar"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr "Error al guardar el recurso!"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr "Guardar Recurso Como.."
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Ya Veo.."
@@ -1563,6 +1394,26 @@ msgid "Error while saving."
msgstr "Error al grabar."
#: editor/editor_node.cpp
+msgid "Can't open '%s'."
+msgstr "No se puede abrir '%s'."
+
+#: editor/editor_node.cpp
+msgid "Error while parsing '%s'."
+msgstr "Error parsear '%s'."
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr "Final de archivo inesperado en '%s'."
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
+msgstr "No se encuentra '%s' o sus dependecias."
+
+#: editor/editor_node.cpp
+msgid "Error while loading '%s'."
+msgstr "Error al cargar '%s'."
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr "Guardar Escena"
@@ -1575,9 +1426,8 @@ msgid "Creating Thumbnail"
msgstr "Creando Miniatura"
#: editor/editor_node.cpp
-#, fuzzy
msgid "This operation can't be done without a tree root."
-msgstr "Esta operación no puede hacerse sin una escena."
+msgstr "Esta operación no puede hacerse sin una raíz de árbol."
#: editor/editor_node.cpp
msgid ""
@@ -1623,6 +1473,46 @@ msgid "Restored default layout to base settings."
msgstr "Se restauró el layout por defecto a sus seteos base."
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+"Este recurso pertenece a una escena que fue importada, por lo tanto no es "
+"editable.\n"
+"Por favor leé la documentación relevante a importar escenas para entender "
+"mejor este workflow."
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+"Este recurso pertenece a una escena que fue instanciada o heredada.\n"
+"Los cambios que se le realicen no perduraran al guardar la escena actual."
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+"Este recurso fue importado, por ende no es editable. Cambiá sus ajustes en "
+"el panel de importación y luego reimportá."
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+"Esta escena fue importada, por ende los cambios que se le realicen no "
+"perduraran.\n"
+"Instanciá o hereda para poder realizar cambios.\n"
+"Por favor leé la documentación relevante a importar escenas para entender "
+"mejor este workflow."
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr "Copiar Params"
@@ -1711,13 +1601,12 @@ msgid "Quick Open Script.."
msgstr "Abrir Script Rapido.."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Close"
-msgstr "Guardar un Archivo"
+msgstr "Guardar y Cerrar"
#: editor/editor_node.cpp
msgid "Save changes to '%s' before closing?"
-msgstr ""
+msgstr "Guardar cambios a '%s' antes de cerrar?"
#: editor/editor_node.cpp
msgid "Save Scene As.."
@@ -1748,9 +1637,8 @@ msgid "Export Tile Set"
msgstr "Exportar Tile Set"
#: editor/editor_node.cpp
-#, fuzzy
msgid "This operation can't be done without a selected node."
-msgstr "Esta operación no puede hacerse sin una escena."
+msgstr "Esta operación no puede hacerse sin un nodo seleccionado."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1781,42 +1669,62 @@ msgid "Exit the editor?"
msgstr "Salir del editor?"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Project Manager?"
-msgstr "Gestor de Proyectos"
+msgstr "Abrir Gestor de Proyectos?"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Quit"
-msgstr "Guardar un Archivo"
+msgstr "Guardar y Salir"
#: editor/editor_node.cpp
msgid "Save changes to the following scene(s) before quitting?"
-msgstr ""
+msgstr "Guardar cambios a la(s) siguiente(s) escena(s) antes de salir?"
#: editor/editor_node.cpp
msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
+"Guardar cambios a la(s) siguiente(s) escena(s) antes de abrir el Gestor de "
+"Proyectos?"
+
+#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+"Esta opción esta deprecada. Las situaciones donde se debe forzar un refresco "
+"son ahora consideradas bugs. Por favor reportalo."
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Elegí una Escena Principal"
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
-msgstr ""
+#, fuzzy
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
+msgstr "No se pudo activar el plugin de addon en : '"
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+#, fuzzy
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
+"No se pudo encontrar el campo script para el plugin de addon en: 'res://"
+"addons/"
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
-msgstr ""
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "No se pudo cargar el script de addon desde la ruta: '"
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
-msgstr ""
+#, fuzzy
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
+msgstr "No se pudo cargar el script de addon desde la ruta: '"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
+msgstr "No se pudo cargar el script de addon desde la ruta: '"
#: editor/editor_node.cpp
msgid ""
@@ -1828,7 +1736,7 @@ msgstr ""
"Para realizar cambios, se debe crear una nueva escena heredada."
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr "Ugh"
@@ -1842,14 +1750,14 @@ msgstr ""
"proyecto."
#: editor/editor_node.cpp
-msgid "Error loading scene."
-msgstr "Error al cargar la escena."
-
-#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
msgstr "La escena '%s' tiene dependencias rotas:"
#: editor/editor_node.cpp
+msgid "Clear Recent Scenes"
+msgstr "Reestablecer Escenas Recientes"
+
+#: editor/editor_node.cpp
msgid "Save Layout"
msgstr "Guardar Layout"
@@ -1879,11 +1787,10 @@ msgid "Distraction Free Mode"
msgstr "Modo Sin Distracciones"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Toggle distraction-free mode."
-msgstr "Modo Sin Distracciones"
+msgstr "Act./Desact. modo sin distracciones."
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr "Escena"
@@ -2122,6 +2029,10 @@ msgstr "Q&A"
msgid "Issue Tracker"
msgstr "Issue Tracker"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "Comunidad"
+
#: editor/editor_node.cpp
msgid "About"
msgstr "Acerca de"
@@ -2130,7 +2041,7 @@ msgstr "Acerca de"
msgid "Play the project."
msgstr "Reproducir el proyecto."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr "Reproducir"
@@ -2146,7 +2057,7 @@ msgstr "Pausar la Escena"
msgid "Stop the scene."
msgstr "Parar la escena."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr "Detener"
@@ -2219,6 +2130,15 @@ msgid "Object properties."
msgstr "Propiedades del objeto."
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr "Podrían perderse los cambios!"
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr "Importar"
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr "FileSystem"
@@ -2232,15 +2152,7 @@ msgstr "Salida"
#: editor/editor_node.cpp
msgid "Don't Save"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr "Reimportar"
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr "Actualizar"
+msgstr "No Guardar"
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
@@ -2267,9 +2179,8 @@ msgid "Open & Run a Script"
msgstr "Abrir y Correr un Script"
#: editor/editor_node.cpp
-#, fuzzy
msgid "New Inherited"
-msgstr "Nueva Escena Heredada.."
+msgstr "Nuevo Heredado"
#: editor/editor_node.cpp
msgid "Load Errors"
@@ -2303,11 +2214,28 @@ msgstr "Abrir el Editor siguiente"
msgid "Open the previous Editor"
msgstr "Abrir el Editor anterior"
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr "Creando Vistas Previas de Mesh/es"
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr "Miniatura.."
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr "Plugins Instalados:"
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr "Actualizar"
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Version:"
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr "Autor:"
@@ -2340,7 +2268,8 @@ msgid "Frame %"
msgstr "Frame %"
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+#, fuzzy
+msgid "Physics Frame %"
msgstr "Fixed Frame %"
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2359,35 +2288,18 @@ msgstr "Propio"
msgid "Frame #:"
msgstr "Frame #:"
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr "Por favor aguarda a que el scan termine."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr "La escena actual debe ser guardada para reimportar."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr "Guardar y Reimportar"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr "Reimportando"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr "Reimportar Recursos Cambiados"
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
-msgstr ""
+msgstr "Seleccionar dispositivo de la lista"
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
"Please add a runnable preset in the export menu."
msgstr ""
+"No se encontró ningún preset de exportación ejecutable para esta "
+"plataforma.\n"
+"Por favor agregá un preset ejecutable en el menú de exportación."
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
@@ -2490,10 +2402,6 @@ msgid "Importing:"
msgstr "Importando:"
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr "Cargando Plantillas de Exportación"
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Version Actual:"
@@ -2528,60 +2436,73 @@ msgid "Cannot navigate to '"
msgstr "No se puede navegar a '"
#: editor/filesystem_dock.cpp
-#, fuzzy
+msgid "View items as a grid of thumbnails"
+msgstr "Ver items como una grilla de miniaturas"
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr "Ver items como una lista"
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
-msgstr "Guardar y Reimportar"
+"Status: Import of file failed. Please fix file and reimport manually."
+msgstr ""
+"\n"
+"Estado: Fallo la importación del archivo. Por favor arreglá el archivo y "
+"reimportá manualmente."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid ""
"\n"
"Source: "
-msgstr "Fuente:"
+msgstr ""
+"\n"
+"Fuente: "
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
-msgstr "Archivos de origen y destino iguales, no se realizará ninguna acción."
+msgid "Cannot move/rename resources root."
+msgstr "No se puede mover/renombrar la raiz de recursos."
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
-msgstr ""
+msgid "Cannot move a folder into itself.\n"
+msgstr "No se puede mover una carpeta dento de si misma.\n"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
-msgstr "Ruta de origen y destino iguales, no se realizará ninguna acción."
+msgid "Error moving:\n"
+msgstr "Error al mover:\n"
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
-msgstr "No se pueden mover directorios dentro de si mismos."
+msgid "Unable to update dependencies:\n"
+msgstr "No se pudieron actualizar las dependencias:\n"
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
-msgstr ""
+msgid "No name provided"
+msgstr "No se indicó ningún nombre"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error moving file:\n"
-msgstr "Error al cargar la imagen:"
+msgid "Provided name contains invalid characters"
+msgstr "El nombre indicado contiene caracteres inválidos"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "Error al importar:"
+msgid "No name provided."
+msgstr "No se indicó ningún nombre."
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
-msgstr "No se puede operar en '..'"
+msgid "Name contains invalid characters."
+msgstr "El nombre indicado contiene caracteres inválidos."
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
-msgstr "Elejí un Nuevo Nombre y Ubicación Para:"
+msgid "A file or folder with this name already exists."
+msgstr "Un archivo o carpeta con este nombre ya existe."
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
-msgstr "Ningún Archivo seleccionado!"
+msgid "Renaming file:"
+msgstr "Renombrando archivo:"
+
+#: editor/filesystem_dock.cpp
+msgid "Renaming folder:"
+msgstr "Renombrar carpeta:"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2592,40 +2513,36 @@ msgid "Collapse all"
msgstr "Colapsar todos"
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
-msgstr "Mostrar en Gestor de Archivos"
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
-msgstr "Instancia"
+msgid "Copy Path"
+msgstr "Copiar Ruta"
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
-msgstr "Editar Dependencias.."
+msgid "Rename.."
+msgstr "Renombrar.."
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
-msgstr "Ver Dueños.."
+msgid "Move To.."
+msgstr "Mover A.."
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr "Copiar Ruta"
+msgid "New Folder.."
+msgstr "Nueva Carpeta.."
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
-msgstr "Renombrar o Mover.."
+msgid "Show In File Manager"
+msgstr "Mostrar en Gestor de Archivos"
#: editor/filesystem_dock.cpp
-msgid "Move To.."
-msgstr "Mover A.."
+msgid "Instance"
+msgstr "Instancia"
#: editor/filesystem_dock.cpp
-msgid "Info"
-msgstr "Info"
+msgid "Edit Dependencies.."
+msgstr "Editar Dependencias.."
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
-msgstr "Reimportando.."
+msgid "View Owners.."
+msgstr "Ver Dueños.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2653,11 +2570,18 @@ msgid ""
"Scanning Files,\n"
"Please Wait.."
msgstr ""
+"Examinando Archivos,\n"
+"Aguardá, por favor."
#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "Mover"
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr "Renombrar"
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr "Agregar al Grupo"
@@ -2667,74 +2591,81 @@ msgid "Remove from Group"
msgstr "Quitar del Grupo"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Import as Single Scene"
-msgstr "Importando Escena.."
+msgstr "Importar como Escena Única"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr "Importar con Animaciones Separadas"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
-msgstr ""
+msgstr "Importar con Materiales Separados"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects"
-msgstr ""
+msgstr "Importar con Objetos Separados"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects+Materials"
-msgstr ""
+msgstr "Importar con Objetos+Materiales Separados"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr "Importar con Objetos+Animaciones Separados"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr "Importar con Materiales+Animaciones Separados"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr "Importar con Objetos+Materiales+Animaciones Separados"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Import as Multiple Scenes"
-msgstr "Importar Escena 3D"
+msgstr "Importar como Escenas Múltiples"
#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes+Materials"
-msgstr ""
+msgstr "Importar como Escenas+Materiales Múltiples"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr "Importar Escena"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr "Importando Escena.."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr "Ejecutando Script Personalizado.."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr "No se pudo cargar el script post importación:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr "Script para post importación inválido/roto (revisá la consola):"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr "Error ejecutando el script de post-importacion:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr "Guardando.."
#: editor/import_dock.cpp
msgid "Set as Default for '%s'"
-msgstr ""
+msgstr "Asignar como Predeterminado para '%s'"
#: editor/import_dock.cpp
msgid "Clear Default for '%s'"
-msgstr ""
+msgstr "Reestablecer Predeterminados para '%s'"
#: editor/import_dock.cpp
msgid " Files"
@@ -2752,577 +2683,6 @@ msgstr "Preseteo.."
msgid "Reimport"
msgstr "Reimportar"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr "Sin máscaras de bits para importar!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr "La ruta de destino está vacía."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr "La ruta de destino debe ser una ruta de recursos completa."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr "La ruta de destino debe existir."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr "La ruta de guardado esta vacía!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr "Importar BitMasks"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr "Textura(s) de Origen:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr "Ruta de Destino:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr "Aceptar"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr "Máscara de Bits"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr "Sin archivo de tipografías de origen!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr "Sin recurso de tipografías de destino!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-"Extension de archivo inválida.\n"
-"Usá .fnt, por favor."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr "No se puede cargar/procesar la tipografía de origen."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr "No se pudo guardar la tipografía."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr "Tipografía de Origen:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr "Tamaño de la Tipografía de Origen:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr "Recurso de Dest:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr "El veloz murciélago hindú comía feliz cardillo y kiwi."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr "Prueba:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr "Opciones:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr "Importar Tipografías"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-"Este archivo ya es un archivo de tipografías de Godot, por favor suministrar "
-"un archivo tipo BMFont."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr "Error al abrir como archivo BMFont."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr "Error inicializando FreeType."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "Formato de tipografía desconocido."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "Error cargando tipografía."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr "Tamaño de tipografía inválido."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr "Origen personalizado de tipografía inválido."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Tipografía"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr "Sin meshes para importar!"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr "Importar Mesh Individual"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr "Importar Mesh(es) de Origen:"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr "Mesh"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "Superficie %d"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr "Sin muestras que importar!"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr "Importar Muestras de Audio"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr "Muestra(s) de Origen:"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr "Muestra de Audio"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr "Nuevo Clip"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr "Opciones de Animación"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr "Flags"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr "Hacer Bake de FPS:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr "Optimizar"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr "Error Lineal Máximo"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr "Error Angular Máximo"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr "Angulo Máximo"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr "Clips"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr "Comienzo(s)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr "Fin(es)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr "Loop"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr "Filtros"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr "La ruta de origen esta vacía."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr "No se pudo cargar el script post-importación."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr "Script post-importación inválido o roto."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr "Error al importar escena."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr "Importar Escena 3D"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr "Escena de Origen:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr "Igual que Escena de Destino"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr "Compartido"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr "Carpeta de Textura de Destino:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr "Script de Postprocesado:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr "Tipo de Nodo Raiz Customizado:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr "Auto"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr "Nombre del Nodo Raíz:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr "Los Siguientes Archivos estan Faltando:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr "Importar de Todos Modos"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr "Importar y Abrir"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-"La escena editada no ha sido guardada, abrir la escena importada de todos "
-"modos?"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr "Importar Imagen:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr "No se puede importar un archivo sobre si mismo:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr "No se pudo localizar la ruta: %s (ya es local)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr "Animacion de Escena 3D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr "Sin Comprimir"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr "Compresión Sin Pérdidas (PNG)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr "Compresión con Pérdidas (WebP)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr "Comprimir (VRAM)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr "Formato de Textura"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr "Calidad de Compresión de Textura (WebP):"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr "Opciones de Textura"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr "Por favor especificá algunos archivos!"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr "Se necesita al menos un archivo para el Atlas."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr "Error al importar:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr "Solo se requiere un archivo para textura grande."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr "Tamaño Max. de Textura:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr "Importar Texturas para Atlas (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr "Tamaño de Celda:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr "Textura Grande"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr "Importar Texturas Grandes (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
-msgstr "Textura de Origen"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
-msgstr "Textura Base de Atlas"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
-msgstr "Textura(s) de Origen"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
-msgstr "Importar Texturas para 2D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
-msgstr "Importar Texturas para 3D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
-msgstr "Importar Texturas"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
-msgstr "Textura 2D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
-msgstr "Textura 3D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
-msgstr "Textura de Atlas"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-"AVISO: Importar texturas 2D no es obligatorio. Simplemente copiá los "
-"archivos png/jpg al proyecto."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr "Cropear espacio vacio."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr "Textura"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr "Importar Textura Grande"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr "Cargar Imagen de Origen"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr "Rebanar"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr "Insertando"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr "Guardando"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr "No se pudo guardar la textura grande:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr "Construir Atlar Para:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr "Cargando Imagen:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr "No se pudo cargar la imagen:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr "Convirtiendo Imágenes"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr "Cropeando Imágenes"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr "Haciendo Blitting de Imágenes"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr "No se pudo guardar la imagen de atlas:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr "No se pudo guardar la textura convertida:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr "Fuente inválida!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr "Fuente de traducción inválida!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr "Columna"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr "Lenguaje"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr "Sin elementos para importar!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr "Sin ruta de destino!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr "Importar Traducciones"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr "No se pudo importar!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr "Importar Traducción"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr "CSV de Origen:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr "Ignorar Primera Columna"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr "Comprimir"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr "Agregar al Proyecto (project.godot)"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr "Importar Lenguajes:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr "Traducción"
-
#: editor/multi_node_edit.cpp
msgid "MultiNode Set"
msgstr "Setear MultiNodo"
@@ -3335,6 +2695,48 @@ msgstr "Grupos"
msgid "Select a Node to edit Signals and Groups."
msgstr "Seleccionar un Nodo para editar Señales y Grupos."
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
+msgstr "Crear Polígono"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Editar Polígono"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
+msgstr "Insertar Punto"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Editar Polígono (Remover Punto)"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
+msgstr "Remover Polígono y Punto"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
+msgstr "Crear un nuevo polígono de cero."
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+"Editar polígono existente:\n"
+"Click izq: Mover Punto.\n"
+"Ctrl+Click izq: Dividir Segmento.\n"
+"Click der: Eliminar Punto."
+
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Toggle Autoplay"
msgstr "Activar/Desact. Autoplay"
@@ -3490,7 +2892,6 @@ msgstr "Nombre de Animación:"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3518,9 +2919,8 @@ msgid "New name:"
msgstr "Nuevo nombre:"
#: editor/plugins/animation_tree_editor_plugin.cpp
-#, fuzzy
msgid "Edit Filters"
-msgstr "Editar Filtros de Nodo"
+msgstr "Editar Filtros"
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
@@ -3601,10 +3001,6 @@ msgid "Delete Input"
msgstr "Eliminar Entrada"
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr "Renombrar"
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr "El árbol de animación es válido."
@@ -3660,65 +3056,181 @@ msgstr "Editar Filtros de Nodo"
msgid "Filters.."
msgstr "Filtros.."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
-msgstr "Parseando %d Triángulos:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr "Libre"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
-msgstr "Triangulo #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
+msgstr "Contenido:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
-msgstr "Configuración de Baker de Luces:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
+msgstr "Ver Archivos"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
-msgstr "Parseando Geometría"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
+msgstr "No se ha podido resolver el nombre del host:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
-msgstr "Fijando/Corrigiendo Luces"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
+msgstr "No se ha podido resolver."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
-msgstr "Creando BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
+msgstr "Error de conexión, por favor intentá de nuevo."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
-msgstr "Creando Octree de Luces"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "No se puede conectar."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
-msgstr "Creando Octree de Texturas"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
+msgstr "No se puede conectar al host:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
-msgstr "Transferencia a Lightmaps:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
+msgstr "No hay respuesta desde el host:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
-msgstr "Asignando Textura #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Sin respuesta."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
-msgstr "Haciendo Bake de Triangulo #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
+msgstr "Solicitud fallida. Código de retorno:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
-msgstr "Postprocesando Textura #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
+msgstr "Solicitud fallida."
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
-msgstr "Hacer Bake!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
+msgstr "Solicitud fallida, demasiadas redireccinoes"
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
-msgstr ""
-"Resetear el proceso de bake del octree de mapa de luces (empezar de nuevo)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
+msgstr "Bucle de redireccionamiento."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Fallido:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr "Hash de descarga incorrecto, asumiendo que el archivo fue manipulado."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr "Esperado:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr "Recibido:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr "Fallo el chequeo del hash sha256"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr "Error de Descarga del Asset:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr "Obteniendo:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr "Resolviendo.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting.."
+msgstr "Conectando.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr "Solicitando.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
+msgstr "Error al realizar la solicitud"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr "Desocupado"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr "Reintentar"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr "Error de Descarga"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr "La descarga de este asset ya esta en progreso!"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr "primero"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr "anterior"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr "siguiente"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr "último"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "Todos"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr "Plugins"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "Ordenar:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr "Invertir"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "Categoría:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "Sitio:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr "Soporte.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "Oficial"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr "Testeo"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr "Archivo ZIP de Assets"
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr "Vista Previa"
@@ -3761,12 +3273,16 @@ msgid "Edit CanvasItem"
msgstr "Editar CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
-msgstr "Cambiar Anclas"
+msgid "Anchors only"
+msgstr "Solo anclas"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
-msgstr "Zoom (%):"
+msgid "Change Anchors and Margins"
+msgstr "Cambiar Anclas y Márgenes"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors"
+msgstr "Cambiar Anclas"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Paste Pose"
@@ -3820,60 +3336,73 @@ msgid "Pan Mode"
msgstr "Modo Paneo"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
-msgstr "Inmovilizar Objeto."
+msgid "Toggles snapping"
+msgstr "Act/Desact. alineado"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
-msgstr "Desinmovilizar Objeto."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
+msgstr "Usar Snap"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
-msgstr "Asegurarse que los hijos de un objeto no sean seleccionables."
+msgid "Snapping options"
+msgstr "Opciones de alineado"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
-msgstr "Restaurar la habilidad de seleccionar los hijos de un objeto."
+msgid "Snap to grid"
+msgstr "Alinear a la grilla"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "Editar"
+msgid "Use Rotation Snap"
+msgstr "Usar Snap de Rotación"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
-msgstr "Usar Snap"
+msgid "Configure Snap..."
+msgstr "Configurar alineado.."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
-msgstr "Mostrar la Grilla"
+msgid "Snap Relative"
+msgstr "Usar Snap Relativo"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
-msgstr "Usar Snap de Rotación"
+msgid "Use Pixel Snap"
+msgstr "Usar Pixel Snap"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
-msgstr "Usar Snap Relativo"
+msgid "Smart snapping"
+msgstr "Alineado inteligente"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
-msgstr "Configurar Snap.."
+msgid "Snap to parent"
+msgstr "Alinear al Padre"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
-msgstr "Usar Pixel Snap"
+msgid "Snap to node anchor"
+msgstr "Alinear al ancla de nodo"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to node sides"
+msgstr "Alinear a lados de nodo"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr "Alinear a otros nodos"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr "Inmovilizar Objeto."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr "Desinmovilizar Objeto."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
-msgstr "Esqueleto.."
+msgid "Makes sure the object's children are not selectable."
+msgstr "Asegurarse que los hijos de un objeto no sean seleccionables."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+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
msgid "Make Bones"
@@ -3901,12 +3430,17 @@ msgid "View"
msgstr "Ver"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
-msgstr "Resetear Zoom"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr "Mostrar la Grilla"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show helpers"
+msgstr "Mostrar ayudantes"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
-msgstr "Setear Zoom.."
+msgid "Show rulers"
+msgstr "Mostrar reglas"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -3917,8 +3451,8 @@ msgid "Frame Selection"
msgstr "Encuadrar Selección"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
-msgstr "Anchor"
+msgid "Layout"
+msgstr "Layout"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Keys"
@@ -3941,12 +3475,20 @@ msgid "Clear Pose"
msgstr "Reestablecer Pose"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
-msgstr "Setear un Valor"
+msgid "Drag pivot from mouse position"
+msgstr "Arrastrar pivote desde la posición del mouse"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
-msgstr "Snap (Pixeles):"
+msgid "Set pivot at mouse position"
+msgstr "Setear pivote a la posición del mouse"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr "Multiplicar ingremento de grilla por 2"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Divide grid step by 2"
+msgstr "Dividir incremento de grilla por 2"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
@@ -3956,23 +3498,28 @@ msgstr "Agregar %s"
msgid "Adding %s..."
msgstr "Agregando %s..."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr "Crear Nodo"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr "Error al instanciar escena desde %s"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr "OK :("
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr "No hay padre al que instanciarle un hijo."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr "Esta operación requiere un solo nodo seleccionado."
@@ -3988,45 +3535,6 @@ msgstr ""
"Drag & drop + Shift : Agregar nodo como hermano\n"
"Drag & drop + Alt : Cambiar tipo de nodo"
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr "Crear Polígono"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr "Editar Polígono"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr "Editar Polígono (Remover Punto)"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Crear un nuevo polígono de cero."
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "Crear Poly3D"
@@ -4036,14 +3544,6 @@ msgid "Set Handle"
msgstr "Setear Handle"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr "Crear Librería de Meshes"
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr "Miniatura.."
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr "Remover item %d?"
@@ -4066,19 +3566,36 @@ msgid "Update from Scene"
msgstr "Acutalizar desde Escena"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
+msgid "Flat0"
+msgstr "Flat0"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr "Flat1"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease in"
+msgstr "Ease in"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr "Ease out"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr "Smoothstep"
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
-msgstr "Modificar Curva"
+msgstr "Modificar Punto de Curva"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Modify Curve Tangent"
-msgstr "Modificar Mapa de Curvas"
+msgstr "Modificar Tangente de Curva"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Load Curve Preset"
-msgstr "Cargar preset"
+msgstr "Cargar Preset de Curva"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Add point"
@@ -4089,31 +3606,28 @@ msgid "Remove point"
msgstr "Quitar punto"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Left linear"
-msgstr "Lineal"
+msgstr "Lineal izquierda"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Right linear"
-msgstr "Vista Derecha"
+msgstr "Lineal derecha"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
msgstr "Cargar preset"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Remove Curve Point"
-msgstr "Quitar Punto del Path"
+msgstr "Quitar Punto de Curva"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Toggle Curve Linear Tangent"
-msgstr ""
+msgstr "Act./Desact. Tangente Lineal de Curva"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Hold Shift to edit tangents individually"
-msgstr ""
+msgstr "Mantené Shift para editar tangentes individualmente"
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -4141,28 +3655,26 @@ msgid ""
"No OccluderPolygon2D resource on this node.\n"
"Create and assign one?"
msgstr ""
+"No hay ningún recurso OccluderPolygon2D en este nodo.\n"
+"Crear y asignar uno?"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Crear Polígono Oclusor"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr "Editar polígono existente:"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr "Click. Izq: Mover Punto."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr "Ctrl+Click Izq.: Partir Segmento en Dos."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr "Click Der.: Borrar Punto."
@@ -4263,6 +3775,10 @@ msgid "Create Outline"
msgstr "Crear Outline"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr "Mesh"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr "Crear Body Estático Trimesh"
@@ -4391,14 +3907,75 @@ msgstr "Escala al Azar:"
msgid "Populate"
msgstr "Poblar"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr "Hacer Bake!"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr "Hacer bake de mesh de navegación.\n"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr "Reestablecer mesh de navegación."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr "Seteando Configuración..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr "Calculando tamaño de grilla..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr "Creando campo de alturas..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Marking walkable triangles..."
+msgstr "Marcando triangulos caminables..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr "Construyendo campo de alturas compacto..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr "Erocionando area caminable..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Partitioning..."
+msgstr "Particionando..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr "Creando contornos..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr "Creando polymesh..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr "Convirtiendo a mesh de navegación nativa..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr "Setup de Generador de Meshes de Navegación:"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr "Parseando Geometría..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
+msgstr "Hecho!"
+
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Create Navigation Polygon"
msgstr "Crear Polígono de Navegación"
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
-msgstr "Remover Polígono y Punto"
-
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Clear Emission Mask"
msgstr "Limpiar Máscara de Emisión"
@@ -4435,9 +4012,8 @@ msgstr "Cargar Máscara de Emisión"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Particles"
-msgstr "Vértices"
+msgstr "Partículas"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
@@ -4573,15 +4149,15 @@ msgstr "Punto # de Curva"
#: editor/plugins/path_editor_plugin.cpp
msgid "Set Curve Point Position"
-msgstr "Setear Pos. de Punto de Curva"
+msgstr "Setear Posición de Punto de Curva"
#: editor/plugins/path_editor_plugin.cpp
msgid "Set Curve In Position"
-msgstr "Setear Pos. In de Curva"
+msgstr "Setear Posición de Entrada de Curva"
#: editor/plugins/path_editor_plugin.cpp
msgid "Set Curve Out Position"
-msgstr "Setear Pos. Out de Curva"
+msgstr "Setear Posición de Salida de Curva"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4640,6 +4216,14 @@ msgid "Scale Polygon"
msgstr "Escalar Polígono"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "Editar"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr "Polígono->UV"
@@ -4694,63 +4278,10 @@ msgstr "Cargar Recurso"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "Pegar"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr "Parsear BBCode"
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr "Largo:"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr "Abrir Archivo(s) de Muestra"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr "ERROR: No se pudo cargar la muestra!"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr "Agregar Muestra"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr "Renombrar Muestra"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr "Eliminar Muestra"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr "16 Bits"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr "8 Bits"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr "Estereo"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr "Mono"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr "Formato"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr "Altura"
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr "Reestablecer Archivos Recientes"
@@ -4760,6 +4291,8 @@ msgid ""
"Close and save changes?\n"
"\""
msgstr ""
+"Cerrar y guardar cambios?\n"
+"\""
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4787,7 +4320,7 @@ msgstr "Guardar Tema Como.."
#: editor/plugins/script_editor_plugin.cpp
msgid " Class Reference"
-msgstr ""
+msgstr " Referencia de Clases"
#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
@@ -4841,10 +4374,13 @@ msgstr "Cerrar Docs"
msgid "Close All"
msgstr "Cerrar Todos"
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr "Ejecutar"
+
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Toggle Scripts Panel"
-msgstr "Act/Desact. Favorito"
+msgstr "Act/Desact. Panel de Scripts"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -4870,7 +4406,8 @@ msgstr "Step Into"
msgid "Break"
msgstr "Break"
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr "Continuar"
@@ -4879,21 +4416,8 @@ msgid "Keep Debugger Open"
msgstr "Mantener el Debugger Abierto"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Debug with external editor"
-msgstr "Abrir el Editor siguiente"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr "Ventana"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr "Mover a la Izquierda"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr "Mover a la Derecha"
+msgstr "Debuguear con editor externo"
#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
@@ -4952,7 +4476,7 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
-msgstr ""
+msgstr "Solo se pueden depositar recursos del sistema de archivos."
#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
@@ -4981,8 +4505,9 @@ msgid "Cut"
msgstr "Cortar"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "Copiar"
@@ -5001,9 +4526,8 @@ msgid "Move Down"
msgstr "Bajar"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Delete Line"
-msgstr "Eliminar Punto"
+msgstr "Eliminar Línea"
#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
@@ -5246,10 +4770,6 @@ msgid "View Plane Transform."
msgstr "Ver Transformación en Plano."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr "Escalando a %s%%."
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr "Torando %s grados."
@@ -5266,10 +4786,6 @@ msgid "Top View."
msgstr "Vista Superior."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr "Cima"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr "Vista Anterior."
@@ -5370,9 +4886,8 @@ msgid "Audio Listener"
msgstr "Oyente de Audio"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Doppler Enable"
-msgstr "Activar"
+msgstr "Activar Doppler"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
@@ -5403,26 +4918,26 @@ msgid "Freelook Speed Modifier"
msgstr "Modificador de Velocidad de Vista Libre"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "preview"
-msgstr "Vista Previa"
+msgstr "vista previa"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Dialogo XForm"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Select Mode (Q)\n"
-msgstr "Modo Seleccionar"
+msgstr "Modo Seleccionar (Q)\n"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid ""
"Drag: Rotate\n"
"Alt+Drag: Move\n"
"Alt+RMB: Depth list selection"
-msgstr "Alt+Click Der.: Selección en depth list"
+msgstr ""
+"Arrastrar: Rotar\n"
+"Alt+Arrastrar: Mover\n"
+"Alt+Click Der.: Selección en depth list"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
@@ -5501,6 +5016,10 @@ msgid "Transform"
msgstr "Transformar"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr "Configurar Snap.."
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr "Coordenadas Locales"
@@ -5646,6 +5165,10 @@ msgid "Speed (FPS):"
msgstr "Velocidad (FPS):"
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr "Loop"
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr "Cuadros de Animación"
@@ -5658,21 +5181,20 @@ msgid "Insert Empty (After)"
msgstr "Insertar Vacío (Después)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr "Arriba"
+msgid "Move (Before)"
+msgstr "Mover (Antes)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
-msgstr "Abajo"
+msgid "Move (After)"
+msgstr "Mover (Despues)"
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "Vista Previa de StyleBox:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#, fuzzy
msgid "Set Region Rect"
-msgstr "Setear region_rect"
+msgstr "Setear Region Rect"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
@@ -5732,18 +5254,20 @@ msgid "Remove Item"
msgstr "Remover Item"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All Items"
-msgstr "Quitar Items de Clases"
+msgstr "Quitar Todos los Ãtems"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All"
-msgstr "Quitar"
+msgstr "Quitar Todos"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Edit theme.."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
-msgstr "Tema"
+msgid "Theme editing menu."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Class Items"
@@ -5827,11 +5351,14 @@ msgid "Style"
msgstr "Estilo"
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr "Tipografía"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr "Color"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase Selection"
msgstr "Eliminar Selección"
@@ -5840,16 +5367,14 @@ msgid "Paint TileMap"
msgstr "Pintar TileMap"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Line Draw"
-msgstr "Lineal"
+msgstr "Dibujar Línea"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rectangle Paint"
-msgstr ""
+msgstr "Pintar Rectángulo"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Bucket Fill"
msgstr "Balde"
@@ -5878,8 +5403,8 @@ msgid "Mirror Y"
msgstr "Espejar Y"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
-msgstr "Balde"
+msgid "Paint Tile"
+msgstr "Pintar Tile"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Pick Tile"
@@ -5942,6 +5467,12 @@ msgid "Delete preset '%s'?"
msgstr "Eliminar preset '%s'?"
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+"Las plantillas de exportación para esta plataforma estan faltando o "
+"corruptas: "
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr "Presets"
@@ -5996,18 +5527,16 @@ msgid "Make Patch"
msgstr "Crear Parche"
#: editor/project_export.cpp
-#, fuzzy
msgid "Features"
-msgstr "Textura"
+msgstr "Características"
#: editor/project_export.cpp
msgid "Custom (comma-separated):"
-msgstr ""
+msgstr "Personalizado (separado por comas):"
#: editor/project_export.cpp
-#, fuzzy
msgid "Feature List:"
-msgstr "Lista de Métodos:"
+msgstr "Lista de Características:"
#: editor/project_export.cpp
msgid "Export PCK/Zip"
@@ -6018,30 +5547,61 @@ msgid "Export templates for this platform are missing:"
msgstr "Faltan las plantillas de exportación para esta plataforma:"
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+"Las plantillas de exportación para esta plataforma estan faltando o "
+"corruptas:"
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr "Exportar Como Debug"
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
-msgstr "Ruta de proyecto inválida, la ruta debe existir!"
+msgid "The path does not exist."
+msgstr "La ruta no existe."
+
+#: editor/project_manager.cpp
+msgid "Please choose a 'project.godot' file."
+msgstr "Por favor elegí un archivo 'project.godot'."
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
-msgstr "Ruta de proyecto inválida, project.godot no debe existir."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
+msgstr ""
+"Tu proyecto será creado en una carpeta no vacía (podrías preferir crear una "
+"carpeta nueva)."
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
-msgstr "Ruta de proyecto inválida, project.godot debe existir."
+msgid "Please choose a folder that does not contain a 'project.godot' file."
+msgstr ""
+"Por favor elegí una carpeta que no contenga un archivo 'project.godot'."
#: editor/project_manager.cpp
msgid "Imported Project"
msgstr "Proyecto Importado"
#: editor/project_manager.cpp
+msgid " "
+msgstr " "
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr "Sería buena idea darle un nombre a tu proyecto."
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr "Ruta de proyecto inválida (cambiaste algo?)."
#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in project path."
+msgstr "No se pudo obtener project.godot en la ruta de proyecto."
+
+#: editor/project_manager.cpp
+msgid "Couldn't edit project.godot in project path."
+msgstr "No se pudo editar project.godot en la ruta de proyecto."
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr "No se pudo crear project.godot en la ruta de proyecto."
@@ -6050,38 +5610,46 @@ msgid "The following files failed extraction from package:"
msgstr "Los siguientes archivos no se pudieron extraer del paquete:"
#: editor/project_manager.cpp
+msgid "Rename Project"
+msgstr "Renombrar Proyecto"
+
+#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in the project path."
+msgstr "No se pudo obtener project.godot en la ruta de proyecto."
+
+#: editor/project_manager.cpp
+msgid "New Game Project"
+msgstr "Nuevo Proyecto de Juego"
+
+#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "Importar Proyecto Existente"
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
-msgstr "Ruta del Proyecto (Debe Existir):"
+msgid "Create New Project"
+msgstr "Crear Proyecto Nuevo"
+
+#: editor/project_manager.cpp
+msgid "Install Project:"
+msgstr "Instalar Proyecto:"
#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Nombre del Proyecto:"
#: editor/project_manager.cpp
-msgid "Create New Project"
-msgstr "Crear Proyecto Nuevo"
+msgid "Create folder"
+msgstr "Crear carpeta"
#: editor/project_manager.cpp
msgid "Project Path:"
msgstr "Ruta del Proyecto:"
#: editor/project_manager.cpp
-msgid "Install Project:"
-msgstr "Instalar Proyecto:"
-
-#: editor/project_manager.cpp
msgid "Browse"
msgstr "Examinar"
#: editor/project_manager.cpp
-msgid "New Game Project"
-msgstr "Nuevo Proyecto de Juego"
-
-#: editor/project_manager.cpp
msgid "That's a BINGO!"
msgstr "BINGO!"
@@ -6090,25 +5658,31 @@ msgid "Unnamed Project"
msgstr "Proyecto Sin Nombre"
#: editor/project_manager.cpp
+msgid "Can't open project"
+msgstr "No se pudo abrir el proyecto"
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr "¿Estás seguro/a que querés abrir mas de un proyecto?"
#: editor/project_manager.cpp
-#, fuzzy
msgid ""
"Can't run project: no main scene defined.\n"
"Please edit the project and set the main scene in \"Project Settings\" under "
"the \"Application\" category."
msgstr ""
-"No se ha definido ninguna escena principal, ¿elegir una?\n"
-"Es posible cambiarla más tarde en \"Ajustes del Proyecto\" bajo la categoría "
-"'aplicación'."
+"No sé puede ejecutar el proyecto: No se ha definido ninguna escena "
+"principal.\n"
+"Por favor editá el proyecto y seteá la escena principal en \"Ajustes de "
+"Proyecto\" bajo la categoría 'Aplicación'."
#: editor/project_manager.cpp
msgid ""
"Can't run project: Assets need to be imported.\n"
"Please edit the project to trigger the initial import."
msgstr ""
+"No sé puede ejecutar el proyecto: Es necesario importar los assets.\n"
+"Por favor editá el proyecto para provocar la importación inicial."
#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
@@ -6122,6 +5696,12 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
"You are about the scan %s folders for existing Godot projects. Do you "
"confirm?"
msgstr ""
@@ -6133,10 +5713,6 @@ msgid "Project List"
msgstr "Listado de Proyectos"
#: editor/project_manager.cpp
-msgid "Run"
-msgstr "Ejecutar"
-
-#: editor/project_manager.cpp
msgid "Scan"
msgstr "Escanear"
@@ -6158,8 +5734,12 @@ msgstr "Salir"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Restart Now"
+msgstr "Reiniciar (s):"
+
+#: editor/project_manager.cpp
msgid "Can't run project"
-msgstr "No se puede conectar."
+msgstr "No se puede ejecutar el proyecto"
#: editor/project_settings_editor.cpp
msgid "Key "
@@ -6194,17 +5774,14 @@ msgid "Add Input Action Event"
msgstr "Agregar Evento de Acción de Entrada"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
@@ -6265,7 +5842,7 @@ msgstr "Cambiar"
msgid "Joypad Axis Index:"
msgstr "Indice del Eje del Gamepad:"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "Eje"
@@ -6285,57 +5862,61 @@ msgstr "Borrar Evento de Acción de Entrada"
msgid "Add Event"
msgstr "Agregar Evento"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "Dispositivo"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "Botón"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "Botón Izquierdo."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "Botón Derecho."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "Botón del Medio."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr "Rueda Arriba."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr "Rueda Abajo."
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Add Global Property"
-msgstr "Agregar Propiedad Getter"
+msgstr "Agregar Propiedad Global"
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
-msgstr ""
+msgid "Select a setting item first!"
+msgstr "Selecciona un ítem primero!"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "No property '"
-msgstr "Propiedad:"
+msgstr "No existe la propiedad '"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Setting '"
-msgstr "Configuración"
+msgstr "Ajuste '"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Delete Item"
-msgstr "Eliminar Entrada"
+msgstr "Eliminar Ãtem"
+
+#: editor/project_settings_editor.cpp
+msgid "Can't contain '/' or ':'"
+msgstr "No puede contener '/' o ':'"
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr "Ya existe"
#: editor/project_settings_editor.cpp
msgid "Error saving settings."
@@ -6347,7 +5928,7 @@ msgstr "Ajustes guardados satisfactoriamente."
#: editor/project_settings_editor.cpp
msgid "Override for Feature"
-msgstr ""
+msgstr "Sobreescribir para Característica"
#: editor/project_settings_editor.cpp
msgid "Add Translation"
@@ -6378,6 +5959,15 @@ msgid "Remove Resource Remap Option"
msgstr "Remover Opción de Remapeo de Recursos"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Changed Locale Filter"
+msgstr "Cambiar Tiempo de Blend"
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr "Configuración de Proyecto (project.godot)"
@@ -6391,7 +5981,7 @@ msgstr "Propiedad:"
#: editor/project_settings_editor.cpp
msgid "Override For.."
-msgstr ""
+msgstr "Sobreescribir Para.."
#: editor/project_settings_editor.cpp
msgid "Input Map"
@@ -6438,6 +6028,30 @@ msgid "Locale"
msgstr "Locale"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales Filter"
+msgstr "Filtro de Imágenes:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Show all locales"
+msgstr "Mostrar Huesos"
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "Filtrar nodos"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales:"
+msgstr "Locale"
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "AutoLoad"
@@ -6478,26 +6092,32 @@ msgid "Assign"
msgstr "Asignar"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Select Node"
-msgstr "Seleccionar un Nodo"
+msgstr "Seleccionar Nodo"
#: editor/property_editor.cpp
msgid "New Script"
msgstr "Nuevo Script"
#: editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Convertir en Unico"
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr "Mostrar en Sistema de Archivos"
#: editor/property_editor.cpp
+msgid "Convert To %s"
+msgstr "Convertir A %s"
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr "Error al cargar el archivo: No es un recurso!"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Selected node is not a Viewport!"
-msgstr "Seleccionar Nodo(s) para Importar"
+msgstr "El nodo seleccionado no es un Viewport!"
#: editor/property_editor.cpp
msgid "Pick a Node"
@@ -6528,6 +6148,10 @@ msgid "Select Property"
msgstr "Seleccionar Propiedad"
#: editor/property_selector.cpp
+msgid "Select Virtual Method"
+msgstr "Seleccionar Método Virtual"
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr "Seleccionar Método"
@@ -6556,26 +6180,6 @@ msgstr "Mantener Transformación Global"
msgid "Reparent"
msgstr "Reemparentar"
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr "Crear Nuevo Recurso"
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr "Abrir Recurso"
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr "Guardar Recurso"
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr "Herramientas de Recursos"
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr "Crear Local"
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr "Modo de Ejecución:"
@@ -6707,14 +6311,6 @@ msgid "Sub-Resources:"
msgstr "Sub-Recursos:"
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr "Editar Grupos"
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr "Editar Conexiones"
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr "Limpiar Herencia"
@@ -6775,9 +6371,8 @@ msgstr ""
"existe ningún nodo raíz."
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Filter nodes"
-msgstr "Filtros"
+msgstr "Filtrar nodos"
#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
@@ -6872,18 +6467,16 @@ msgid "Scene Tree (Nodes):"
msgstr "Arbol de Escenas (Nodos):"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Node Configuration Warning!"
-msgstr "Advertencia de configuración de nodo:"
+msgstr "Advertencia de Configuración de Nodo!"
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
msgstr "Seleccionar un Nodo"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Error loading template '%s'"
-msgstr "Error al cargar la imagen:"
+msgstr "Error al cargar la plantilla '%s'"
#: editor/script_create_dialog.cpp
msgid "Error - Could not create script in filesystem."
@@ -6910,6 +6503,14 @@ msgid "Invalid base path"
msgstr "Ruta base inválida"
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr "Existe un directorio con el mismo nombre"
+
+#: editor/script_create_dialog.cpp
+msgid "File exists, will be reused"
+msgstr "El archivo existe, será reutilizado"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr "Extensión invalida"
@@ -6950,6 +6551,10 @@ msgid "Load existing script file"
msgstr "Cargar script existente"
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr "Lenguaje"
+
+#: editor/script_create_dialog.cpp
msgid "Inherits"
msgstr "Hereda"
@@ -6990,6 +6595,10 @@ msgid "Function:"
msgstr "Funcion:"
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr "Elegir uno o mas items de la lista para mostrar el gráfico."
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr "Errores"
@@ -7070,6 +6679,10 @@ msgid "Type"
msgstr "Tipo"
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr "Formato"
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr "Uso"
@@ -7103,7 +6716,7 @@ msgstr "Cambiar Radio de Luces"
#: editor/spatial_editor_gizmos.cpp
msgid "Change AudioStreamPlayer3D Emission Angle"
-msgstr ""
+msgstr "Cambiar el Ãngulo de Emisión del AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
@@ -7145,12 +6758,28 @@ msgstr "Cambiar Particulas AABB"
msgid "Change Probe Extents"
msgstr "Cambiar Extensión de Sonda"
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Library"
+msgstr "Biblioteca"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Status"
+msgstr "Estado"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr "Bibliotecas: "
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr "GDNative"
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr "Argumento de tipo inválido para convert(), usá constantes TYPE_*."
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr ""
@@ -7193,134 +6822,111 @@ msgstr "Diccionario de instancias inválido (subclases inválidas)"
#: modules/gdscript/gd_functions.cpp
msgid "Object can't provide a length."
-msgstr ""
+msgstr "El objeto no puede proveer un largo."
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Delete Selection"
-msgstr "Eliminar Seleccionados"
+msgstr "Eliminar Seleccionados en GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Duplicate Selection"
-msgstr "Duplicar Selección"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
+msgstr "Duplicar Selección en GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Snap View"
-msgstr "Vista Superior"
+msgstr "Anclar Vista"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Prev Level (%sDown Wheel)"
-msgstr ""
+msgstr "Nivel Previo (%sRueda Abajo)"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Level (%sUp Wheel)"
-msgstr ""
+msgstr "Nivel Siguiente (%sRueda Arriba)"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Clip Disabled"
-msgstr "Desactivado"
+msgstr "Clip Desactivado"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clip Above"
-msgstr ""
+msgstr "Clip Arriba"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clip Below"
-msgstr ""
+msgstr "Clip Debajo"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit X Axis"
-msgstr ""
+msgstr "Editar Eje X"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Y Axis"
-msgstr ""
+msgstr "Editar Eje Y"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Z Axis"
-msgstr ""
+msgstr "Editar Eje Z"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate X"
-msgstr "Ctrl: Rotar"
+msgstr "Rotar X en Cursor"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate Y"
-msgstr "Ctrl: Rotar"
+msgstr "Rotar Y en Cursor"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate Z"
-msgstr "Ctrl: Rotar"
+msgstr "Rotar Z en Cursor"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate X"
-msgstr ""
+msgstr "Rotación Inversa X en Cursor"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate Y"
-msgstr ""
+msgstr "Rotación Inversa Y en Cursor"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate Z"
-msgstr ""
+msgstr "Rotación Inversa Z en Cursor"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Clear Rotation"
-msgstr ""
+msgstr "Restablecer Rotación en Cursor"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Create Area"
-msgstr "Crear Nuevo"
+msgstr "Crear Ãrea"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Create Exterior Connector"
-msgstr "Crear Proyecto Nuevo"
+msgstr "Crear Conector Exterior"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase Area"
-msgstr "Borrar TileMap"
+msgstr "Borrar Ãrea"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Selection -> Duplicate"
-msgstr "Solo Selección"
+msgstr "Selección -> Duplicar"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Selection -> Clear"
-msgstr "Solo Selección"
+msgstr "Selección -> Restablecer"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Settings"
-msgstr "Ajustes de Snap"
+msgstr "Ajustes de GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Pick Distance:"
-msgstr "Instancia:"
+msgstr "Elegir Instancia:"
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr " Archivos"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
-msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
+msgstr "Builds"
#: modules/visual_script/visual_script.cpp
msgid ""
@@ -7360,29 +6966,24 @@ msgid "Stack overflow with stack depth: "
msgstr "Stack overflow con la profundidad del stack: "
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Signal Arguments"
-msgstr "Editar Argumentos de Señal:"
+msgstr "Editar Argumentos de Señal"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Argument Type"
-msgstr "Cambiar Tipo de Valor del Array"
+msgstr "Cambiar Tipo de Argumento"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Argument name"
-msgstr "Cambiar Nombre de Entrada"
+msgstr "Cambiar Nombre de Argumento"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Set Variable Default Value"
-msgstr "Cambiar Valor por Defecto"
+msgstr "Asignar Valor Predeterminado de Variable"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Set Variable Type"
-msgstr "Editar Variable:"
+msgstr "Editar Tipo de Variable"
#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
@@ -7433,14 +7034,12 @@ msgid "Add Node"
msgstr "Agregar Nodo"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Remove VisualScript Nodes"
-msgstr "Quitar claves inválidas"
+msgstr "Quitar Nodos VisualScript"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Duplicate VisualScript Nodes"
-msgstr "Duplicar Nodo(s) de Gráfico"
+msgstr "Duplicar Nodos VisualScript"
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
@@ -7487,24 +7086,20 @@ msgid "Add Setter Property"
msgstr "Agregar Propiedad Setter"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Base Type"
-msgstr "Cambiar Tipo"
+msgstr "Cambiar Tipo Base"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Move Node(s)"
-msgstr "Quitar Nodo(s)"
+msgstr "Mover Nodo(s)"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Remove VisualScript Node"
-msgstr "Quitar Nodo de Gráfico de Shaders"
+msgstr "Quitar Nodo de VisualScript"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Connect Nodes"
-msgstr "Conectar a Nodo:"
+msgstr "Conectar Nodos"
#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
@@ -7531,46 +7126,48 @@ msgid "Return"
msgstr "Retornar"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr "Llamar"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr "Obtener"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
+msgid "Script already has function '%s'"
+msgstr "El script ya tiene una función '%s'"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
-msgstr "Cambiar Nombre de Entrada"
+msgstr "Cambiar Valor de Entrada"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Can't copy the function node."
-msgstr "No se puede operar en '..'"
+msgstr "No se puede copiar el nodo de función."
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Clipboard is empty!"
-msgstr "Clipboard de Recursos vacío!"
+msgstr "El portapapeles está vacío!"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Paste VisualScript Nodes"
-msgstr "Pegar Nodos"
+msgstr "Pegar Nodos de VisualScript"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Function"
msgstr "Quitar Función"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Edit Variable"
-msgstr "Editar Variable:"
+msgstr "Editar Variable"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Variable"
msgstr "Quitar Variable"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Edit Signal"
-msgstr "Editando Señal:"
+msgstr "Editar Señal"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Signal"
@@ -7811,6 +7408,9 @@ msgid ""
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"Los cambios de tamaño a un RigidBody2D (en modos character o rigid) serán "
+"sobreescritos por el motor de física al ejecutar.\n"
+"Cambiá el tamaño de los collision shapes hijos."
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
@@ -7842,31 +7442,35 @@ msgstr ""
#: scene/3d/arvr_nodes.cpp
msgid "ARVRCamera must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRCamera debe tener un nodo ARVROrigin como su padre"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRController must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRController debe tener un nodo ARVROrigin como su padre"
#: scene/3d/arvr_nodes.cpp
msgid ""
"The controller id must not be 0 or this controller will not be bound to an "
"actual controller"
msgstr ""
+"El id de controlador no debe ser 0 o este controlador no será vinculado a un "
+"controlador real"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRAnchor must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRAnchor debe tener un nodo ARVROrigin como su padre"
#: 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 ""
+"El id de anclaje no debe ser 0 o este anclaje no podrá ser vinculado a un "
+"anclaje real"
#: scene/3d/arvr_nodes.cpp
msgid "ARVROrigin requires an ARVRCamera child node"
-msgstr ""
+msgstr "ARVROrigin requiere un nodo hijo ARVRCamera"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7924,6 +7528,9 @@ msgid ""
"the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"Los cambios de tamaño a RigidBody (en modo character o rigid) seran "
+"sobreescritos por el motor de física al ejecutar.\n"
+"Cambiá el tamaño de los collision shapes hijos."
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
@@ -7945,16 +7552,27 @@ msgstr ""
"Un recurso SpriteFrames debe ser creado o asignado en la propiedad 'Frames' "
"para que AnimatedSprite3D pueda mostrar frames."
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+"VehicleWheel sirve para proveer un sistema de ruedas a VehicleBody. Por "
+"favor usálo como hijo de VehicleBody."
+
#: scene/gui/color_picker.cpp
-#, fuzzy
msgid "Raw Mode"
-msgstr "Modo Paneo"
+msgstr "Modo Raw"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
msgstr "Agregar color actual como preset"
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr "Alerta!"
@@ -7962,10 +7580,6 @@ msgstr "Alerta!"
msgid "Please Confirm..."
msgstr "Confirmá, por favor..."
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -8006,6 +7620,644 @@ msgstr ""
"que pueda obtener un tamaño. Alternativamente, hacelo un RenderTarget y "
"asigná su textura interna a algún otro nodo para mostrar."
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr "Error inicializando FreeType."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "Formato de tipografía desconocido."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "Error cargando tipografía."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr "Tamaño de tipografía inválido."
+
+#~ msgid "Filter:"
+#~ msgstr "Filtro:"
+
+#~ msgid "' parsing of config failed."
+#~ msgstr "' falló el parseo de la configuración."
+
+#~ msgid "Theme"
+#~ msgstr "Tema"
+
+#~ msgid "Method List For '%s':"
+#~ msgstr "Lista de Métodos Para '%s':"
+
+#~ msgid "Arguments:"
+#~ msgstr "Argumentos:"
+
+#~ msgid "Return:"
+#~ msgstr "Retornar:"
+
+#~ msgid "Added:"
+#~ msgstr "Agregado:"
+
+#~ msgid "Removed:"
+#~ msgstr "Removido:"
+
+#~ msgid "Error saving atlas:"
+#~ msgstr "Error al guardar atlas:"
+
+#~ msgid "Could not save atlas subtexture:"
+#~ msgstr "No se pudo guardar la subtextura de altas:"
+
+#~ msgid "Exporting for %s"
+#~ msgstr "Exportando para %s"
+
+#~ msgid "Setting Up.."
+#~ msgstr "Configurando.."
+
+#~ msgid "Error loading scene."
+#~ msgstr "Error al cargar la escena."
+
+#~ msgid "Re-Import"
+#~ msgstr "Reimportar"
+
+#~ msgid "Please wait for scan to complete."
+#~ msgstr "Por favor aguarda a que el scan termine."
+
+#~ msgid "Current scene must be saved to re-import."
+#~ msgstr "La escena actual debe ser guardada para reimportar."
+
+#~ msgid "Save & Re-Import"
+#~ msgstr "Guardar y Reimportar"
+
+#~ msgid "Re-Importing"
+#~ msgstr "Reimportando"
+
+#~ msgid "Re-Import Changed Resources"
+#~ msgstr "Reimportar Recursos Cambiados"
+
+#~ msgid "Loading Export Templates"
+#~ msgstr "Cargando Plantillas de Exportación"
+
+#~ msgid ""
+#~ "\n"
+#~ "Status: Needs Re-Import"
+#~ msgstr ""
+#~ "\n"
+#~ "Estado: Necesita Reimportación"
+
+#~ msgid "Same source and destination files, doing nothing."
+#~ msgstr ""
+#~ "Archivos de origen y destino iguales, no se realizará ninguna acción."
+
+#~ msgid "Target file exists, can't overwrite. Delete first."
+#~ msgstr ""
+#~ "El archivo destino existe; no sé puede sobreescribir. Eliminalo primero."
+
+#~ msgid "Same source and destination paths, doing nothing."
+#~ msgstr "Ruta de origen y destino iguales, no se realizará ninguna acción."
+
+#~ msgid "Can't move directories to within themselves."
+#~ msgstr "No se pueden mover directorios dentro de si mismos."
+
+#~ msgid "Can't rename deps for:\n"
+#~ msgstr "No se pueden renombrar las dependencias para:\n"
+
+#~ msgid "Error moving file:\n"
+#~ msgstr "Error al mover el archivo:\n"
+
+#~ msgid "Pick New Name and Location For:"
+#~ msgstr "Elejí un Nuevo Nombre y Ubicación Para:"
+
+#~ msgid "No files selected!"
+#~ msgstr "Ningún Archivo seleccionado!"
+
+#~ msgid "Info"
+#~ msgstr "Info"
+
+#~ msgid "Re-Import.."
+#~ msgstr "Reimportando.."
+
+#~ msgid "No bit masks to import!"
+#~ msgstr "Sin máscaras de bits para importar!"
+
+#~ msgid "Target path is empty."
+#~ msgstr "La ruta de destino está vacía."
+
+#~ msgid "Target path must be a complete resource path."
+#~ msgstr "La ruta de destino debe ser una ruta de recursos completa."
+
+#~ msgid "Target path must exist."
+#~ msgstr "La ruta de destino debe existir."
+
+#~ msgid "Save path is empty!"
+#~ msgstr "La ruta de guardado esta vacía!"
+
+#~ msgid "Import BitMasks"
+#~ msgstr "Importar BitMasks"
+
+#~ msgid "Source Texture(s):"
+#~ msgstr "Textura(s) de Origen:"
+
+#~ msgid "Target Path:"
+#~ msgstr "Ruta de Destino:"
+
+#~ msgid "Accept"
+#~ msgstr "Aceptar"
+
+#~ msgid "Bit Mask"
+#~ msgstr "Máscara de Bits"
+
+#~ msgid "No source font file!"
+#~ msgstr "Sin archivo de tipografías de origen!"
+
+#~ msgid "No target font resource!"
+#~ msgstr "Sin recurso de tipografías de destino!"
+
+#~ msgid ""
+#~ "Invalid file extension.\n"
+#~ "Please use .font."
+#~ msgstr ""
+#~ "Extension de archivo inválida.\n"
+#~ "Usá .fnt, por favor."
+
+#~ msgid "Couldn't save font."
+#~ msgstr "No se pudo guardar la tipografía."
+
+#~ 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:"
+
+#~ msgid "The quick brown fox jumps over the lazy dog."
+#~ msgstr "El veloz murciélago hindú comía feliz cardillo y kiwi."
+
+#~ msgid "Test:"
+#~ msgstr "Prueba:"
+
+#~ msgid "Options:"
+#~ msgstr "Opciones:"
+
+#~ msgid "Font Import"
+#~ msgstr "Importar Tipografías"
+
+#~ msgid ""
+#~ "This file is already a Godot font file, please supply a BMFont type file "
+#~ "instead."
+#~ msgstr ""
+#~ "Este archivo ya es un archivo de tipografías de Godot, por favor "
+#~ "suministrar un archivo tipo BMFont."
+
+#~ msgid "Failed opening as BMFont file."
+#~ msgstr "Error al abrir como archivo BMFont."
+
+#~ msgid "Invalid font custom source."
+#~ msgstr "Origen personalizado de tipografía inválido."
+
+#~ msgid "No meshes to import!"
+#~ msgstr "Sin meshes para importar!"
+
+#~ msgid "Single Mesh Import"
+#~ msgstr "Importar Mesh Individual"
+
+#~ msgid "Source Mesh(es):"
+#~ msgstr "Importar Mesh(es) de Origen:"
+
+#~ msgid "Surface %d"
+#~ msgstr "Superficie %d"
+
+#~ msgid "No samples to import!"
+#~ msgstr "Sin muestras que importar!"
+
+#~ msgid "Import Audio Samples"
+#~ msgstr "Importar Muestras de Audio"
+
+#~ msgid "Source Sample(s):"
+#~ msgstr "Muestra(s) de Origen:"
+
+#~ msgid "Audio Sample"
+#~ msgstr "Muestra de Audio"
+
+#~ msgid "New Clip"
+#~ msgstr "Nuevo Clip"
+
+#~ msgid "Flags"
+#~ msgstr "Flags"
+
+#~ msgid "Bake FPS:"
+#~ msgstr "Hacer Bake de FPS:"
+
+#~ msgid "Optimizer"
+#~ msgstr "Optimizar"
+
+#~ msgid "Max Linear Error"
+#~ msgstr "Error Lineal Máximo"
+
+#~ msgid "Max Angular Error"
+#~ msgstr "Error Angular Máximo"
+
+#~ msgid "Max Angle"
+#~ msgstr "Angulo Máximo"
+
+#~ msgid "Clips"
+#~ msgstr "Clips"
+
+#~ msgid "Start(s)"
+#~ msgstr "Comienzo(s)"
+
+#~ msgid "End(s)"
+#~ msgstr "Fin(es)"
+
+#~ msgid "Filters"
+#~ msgstr "Filtros"
+
+#~ msgid "Source path is empty."
+#~ msgstr "La ruta de origen esta vacía."
+
+#~ msgid "Couldn't load post-import script."
+#~ msgstr "No se pudo cargar el script post-importación."
+
+#~ msgid "Invalid/broken script for post-import."
+#~ msgstr "Script post-importación inválido o roto."
+
+#~ msgid "Error importing scene."
+#~ msgstr "Error al importar escena."
+
+#~ msgid "Import 3D Scene"
+#~ msgstr "Importar Escena 3D"
+
+#~ msgid "Source Scene:"
+#~ msgstr "Escena de Origen:"
+
+#~ msgid "Same as Target Scene"
+#~ msgstr "Igual que Escena de Destino"
+
+#~ msgid "Shared"
+#~ msgstr "Compartido"
+
+#~ msgid "Target Texture Folder:"
+#~ msgstr "Carpeta de Textura de Destino:"
+
+#~ msgid "Post-Process Script:"
+#~ msgstr "Script de Postprocesado:"
+
+#~ msgid "Custom Root Node Type:"
+#~ msgstr "Tipo de Nodo Raiz Customizado:"
+
+#~ msgid "Auto"
+#~ msgstr "Auto"
+
+#~ msgid "Root Node Name:"
+#~ msgstr "Nombre del Nodo Raíz:"
+
+#~ msgid "The Following Files are Missing:"
+#~ msgstr "Los Siguientes Archivos estan Faltando:"
+
+#~ msgid "Import Anyway"
+#~ msgstr "Importar de Todos Modos"
+
+#~ msgid "Import & Open"
+#~ msgstr "Importar y Abrir"
+
+#~ msgid "Edited scene has not been saved, open imported scene anyway?"
+#~ msgstr ""
+#~ "La escena editada no ha sido guardada, abrir la escena importada de todos "
+#~ "modos?"
+
+#~ msgid "Import Image:"
+#~ msgstr "Importar Imagen:"
+
+#~ msgid "Couldn't localize path: %s (already local)"
+#~ msgstr "No se pudo localizar la ruta: %s (ya es local)"
+
+#~ msgid "3D Scene Animation"
+#~ msgstr "Animacion de Escena 3D"
+
+#~ msgid "Uncompressed"
+#~ msgstr "Sin Comprimir"
+
+#~ msgid "Compress Lossless (PNG)"
+#~ msgstr "Compresión Sin Pérdidas (PNG)"
+
+#~ msgid "Compress Lossy (WebP)"
+#~ msgstr "Compresión con Pérdidas (WebP)"
+
+#~ msgid "Compress (VRAM)"
+#~ msgstr "Comprimir (VRAM)"
+
+#~ msgid "Texture Format"
+#~ msgstr "Formato de Textura"
+
+#~ msgid "Texture Compression Quality (WebP):"
+#~ msgstr "Calidad de Compresión de Textura (WebP):"
+
+#~ msgid "Texture Options"
+#~ msgstr "Opciones de Textura"
+
+#~ msgid "Please specify some files!"
+#~ msgstr "Por favor especificá algunos archivos!"
+
+#~ msgid "At least one file needed for Atlas."
+#~ msgstr "Se necesita al menos un archivo para el Atlas."
+
+#~ msgid "Error importing:"
+#~ msgstr "Error al importar:"
+
+#~ msgid "Only one file is required for large texture."
+#~ msgstr "Solo se requiere un archivo para textura grande."
+
+#~ msgid "Max Texture Size:"
+#~ msgstr "Tamaño Max. de Textura:"
+
+#~ msgid "Import Textures for Atlas (2D)"
+#~ msgstr "Importar Texturas para Atlas (2D)"
+
+#~ msgid "Cell Size:"
+#~ msgstr "Tamaño de Celda:"
+
+#~ msgid "Large Texture"
+#~ msgstr "Textura Grande"
+
+#~ msgid "Import Large Textures (2D)"
+#~ msgstr "Importar Texturas Grandes (2D)"
+
+#~ msgid "Source Texture"
+#~ msgstr "Textura de Origen"
+
+#~ msgid "Base Atlas Texture"
+#~ msgstr "Textura Base de Atlas"
+
+#~ msgid "Source Texture(s)"
+#~ msgstr "Textura(s) de Origen"
+
+#~ msgid "Import Textures for 2D"
+#~ msgstr "Importar Texturas para 2D"
+
+#~ msgid "Import Textures for 3D"
+#~ msgstr "Importar Texturas para 3D"
+
+#~ msgid "Import Textures"
+#~ msgstr "Importar Texturas"
+
+#~ msgid "2D Texture"
+#~ msgstr "Textura 2D"
+
+#~ msgid "3D Texture"
+#~ msgstr "Textura 3D"
+
+#~ msgid "Atlas Texture"
+#~ msgstr "Textura de Atlas"
+
+#~ msgid ""
+#~ "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files "
+#~ "to the project."
+#~ msgstr ""
+#~ "AVISO: Importar texturas 2D no es obligatorio. Simplemente copiá los "
+#~ "archivos png/jpg al proyecto."
+
+#~ msgid "Crop empty space."
+#~ msgstr "Cropear espacio vacio."
+
+#~ msgid "Texture"
+#~ msgstr "Textura"
+
+#~ msgid "Import Large Texture"
+#~ msgstr "Importar Textura Grande"
+
+#~ msgid "Load Source Image"
+#~ msgstr "Cargar Imagen de Origen"
+
+#~ msgid "Slicing"
+#~ msgstr "Rebanar"
+
+#~ msgid "Saving"
+#~ msgstr "Guardando"
+
+#~ msgid "Couldn't save large texture:"
+#~ msgstr "No se pudo guardar la textura grande:"
+
+#~ msgid "Build Atlas For:"
+#~ msgstr "Construir Atlar Para:"
+
+#~ msgid "Loading Image:"
+#~ msgstr "Cargando Imagen:"
+
+#~ msgid "Couldn't load image:"
+#~ msgstr "No se pudo cargar la imagen:"
+
+#~ msgid "Converting Images"
+#~ msgstr "Convirtiendo Imágenes"
+
+#~ msgid "Cropping Images"
+#~ msgstr "Cropeando Imágenes"
+
+#~ msgid "Blitting Images"
+#~ msgstr "Haciendo Blitting de Imágenes"
+
+#~ msgid "Couldn't save atlas image:"
+#~ msgstr "No se pudo guardar la imagen de atlas:"
+
+#~ msgid "Couldn't save converted texture:"
+#~ msgstr "No se pudo guardar la textura convertida:"
+
+#~ msgid "Invalid source!"
+#~ msgstr "Fuente inválida!"
+
+#~ msgid "Invalid translation source!"
+#~ msgstr "Fuente de traducción inválida!"
+
+#~ msgid "Column"
+#~ msgstr "Columna"
+
+#~ msgid "No items to import!"
+#~ msgstr "Sin elementos para importar!"
+
+#~ msgid "No target path!"
+#~ msgstr "Sin ruta de destino!"
+
+#~ msgid "Import Translations"
+#~ msgstr "Importar Traducciones"
+
+#~ msgid "Couldn't import!"
+#~ msgstr "No se pudo importar!"
+
+#~ msgid "Import Translation"
+#~ msgstr "Importar Traducción"
+
+#~ msgid "Source CSV:"
+#~ msgstr "CSV de Origen:"
+
+#~ msgid "Ignore First Row"
+#~ msgstr "Ignorar Primera Columna"
+
+#~ msgid "Compress"
+#~ msgstr "Comprimir"
+
+#~ msgid "Add to Project (project.godot)"
+#~ msgstr "Agregar al Proyecto (project.godot)"
+
+#~ msgid "Import Languages:"
+#~ msgstr "Importar Lenguajes:"
+
+#~ msgid "Translation"
+#~ msgstr "Traducción"
+
+#~ msgid "Parsing %d Triangles:"
+#~ msgstr "Parseando %d Triángulos:"
+
+#~ msgid "Triangle #"
+#~ msgstr "Triangulo #"
+
+#~ msgid "Light Baker Setup:"
+#~ msgstr "Configuración de Baker de Luces:"
+
+#~ msgid "Fixing Lights"
+#~ msgstr "Fijando/Corrigiendo Luces"
+
+#~ msgid "Making BVH"
+#~ msgstr "Creando BVH"
+
+#~ msgid "Transfer to Lightmaps:"
+#~ msgstr "Transferencia a Lightmaps:"
+
+#~ msgid "Allocating Texture #"
+#~ msgstr "Asignando Textura #"
+
+#~ msgid "Baking Triangle #"
+#~ msgstr "Haciendo Bake de Triangulo #"
+
+#~ msgid "Post-Processing Texture #"
+#~ msgstr "Postprocesando Textura #"
+
+#~ msgid "Reset the lightmap octree baking process (start over)."
+#~ msgstr ""
+#~ "Resetear el proceso de bake del octree de mapa de luces (empezar de "
+#~ "nuevo)."
+
+#~ msgid "Zoom (%):"
+#~ msgstr "Zoom (%):"
+
+#~ msgid "Skeleton.."
+#~ msgstr "Esqueleto.."
+
+#~ msgid "Zoom Reset"
+#~ msgstr "Resetear Zoom"
+
+#~ msgid "Zoom Set.."
+#~ msgstr "Setear Zoom.."
+
+#~ msgid "Set a Value"
+#~ msgstr "Setear un Valor"
+
+#~ msgid "Snap (Pixels):"
+#~ msgstr "Snap (Pixeles):"
+
+#~ msgid "Parse BBCode"
+#~ msgstr "Parsear BBCode"
+
+#~ msgid "Length:"
+#~ msgstr "Largo:"
+
+#~ msgid "Open Sample File(s)"
+#~ msgstr "Abrir Archivo(s) de Muestra"
+
+#~ msgid "ERROR: Couldn't load sample!"
+#~ msgstr "ERROR: No se pudo cargar la muestra!"
+
+#~ msgid "Add Sample"
+#~ msgstr "Agregar Muestra"
+
+#~ msgid "Rename Sample"
+#~ msgstr "Renombrar Muestra"
+
+#~ msgid "Delete Sample"
+#~ msgstr "Eliminar Muestra"
+
+#~ msgid "16 Bits"
+#~ msgstr "16 Bits"
+
+#~ msgid "8 Bits"
+#~ msgstr "8 Bits"
+
+#~ msgid "Stereo"
+#~ msgstr "Estereo"
+
+#~ msgid "Mono"
+#~ msgstr "Mono"
+
+#~ msgid "Pitch"
+#~ msgstr "Altura"
+
+#~ msgid "Window"
+#~ msgstr "Ventana"
+
+#~ msgid "Move Right"
+#~ msgstr "Mover a la Derecha"
+
+#~ msgid "Scaling to %s%%."
+#~ msgstr "Escalando a %s%%."
+
+#~ msgid "Up"
+#~ msgstr "Arriba"
+
+#~ msgid "Down"
+#~ msgstr "Abajo"
+
+#~ msgid "Bucket"
+#~ msgstr "Balde"
+
+#~ msgid "Invalid project path, the path must exist!"
+#~ msgstr "Ruta de proyecto inválida, la ruta debe existir!"
+
+#~ msgid "Invalid project path, project.godot must not exist."
+#~ msgstr "Ruta de proyecto inválida, project.godot no debe existir."
+
+#~ msgid "Invalid project path, project.godot must exist."
+#~ msgstr "Ruta de proyecto inválida, project.godot debe existir."
+
+#~ msgid "Project Path (Must Exist):"
+#~ msgstr "Ruta del Proyecto (Debe Existir):"
+
+#~ msgid "Create New Resource"
+#~ msgstr "Crear Nuevo Recurso"
+
+#~ msgid "Open Resource"
+#~ msgstr "Abrir Recurso"
+
+#~ msgid "Save Resource"
+#~ msgstr "Guardar Recurso"
+
+#~ msgid "Resource Tools"
+#~ msgstr "Herramientas de Recursos"
+
+#~ msgid "Make Local"
+#~ msgstr "Crear Local"
+
+#~ msgid "Edit Groups"
+#~ msgstr "Editar Grupos"
+
+#~ msgid "Edit Connections"
+#~ msgstr "Editar Conexiones"
+
+#~ msgid "GridMap Paint"
+#~ msgstr "Pintar GridMap"
+
+#~ msgid "Tiles"
+#~ msgstr "Tiles"
+
+#~ msgid "Areas"
+#~ msgstr "Ãreas"
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl+"
+
+#~ msgid "Down Wheel)"
+#~ msgstr "Rueda Abajo)"
+
+#~ msgid "Up Wheel)"
+#~ msgstr "Rueda Arriba)"
+
#~ msgid "Close scene? (Unsaved changes will be lost)"
#~ msgstr "Cerrar escena? (Los cambios sin guardar se perderán)"
@@ -8017,9 +8269,6 @@ msgstr ""
#~ msgid "Close Goto Prev. Scene"
#~ msgstr "Cerrar e Ir a Escena Prev."
-#~ msgid "Expand to Parent"
-#~ msgstr "Expandir al Padre"
-
#~ msgid "Del"
#~ msgstr "Eliminar"
@@ -8194,18 +8443,12 @@ msgstr ""
#~ msgid "Save Translatable Strings"
#~ msgstr "Guardar Strings Traducibles"
-#~ msgid "Translatable Strings.."
-#~ msgstr "Strings Traducibles.."
-
#~ msgid "Install Export Templates"
#~ msgstr "Instalar Templates de Exportación"
#~ msgid "Edit Script Options"
#~ msgstr "Editar Opciones de Script"
-#~ msgid "Please export outside the project folder!"
-#~ msgstr "Por favor exportá afuera de la carpeta de proyecto!"
-
#~ msgid "Error exporting project!"
#~ msgstr "Error al exportar el proyecto!"
@@ -8264,18 +8507,12 @@ msgstr ""
#~ msgid "Include"
#~ msgstr "Incluir"
-#~ msgid "Change Image Group"
-#~ msgstr "Cambiar Grupo de Imágenes"
-
#~ msgid "Group name can't be empty!"
#~ msgstr "El nombre del grupo no puede estar vacío!"
#~ msgid "Invalid character in group name!"
#~ msgstr "Caracter invalido en el nombre de grupo!"
-#~ msgid "Group name already exists!"
-#~ msgstr "El nombre de grupo ya existe!"
-
#~ msgid "Add Image Group"
#~ msgstr "Agregar Grupo de Imágenes"
@@ -8354,9 +8591,6 @@ msgstr ""
#~ msgid "Preview Atlas"
#~ msgstr "Vista Previa de Atlas"
-#~ msgid "Image Filter:"
-#~ msgstr "Filtro de Imágenes:"
-
#~ msgid "Images:"
#~ msgstr "Imágenes:"
@@ -8423,9 +8657,6 @@ msgstr ""
#~ msgid "Lighting"
#~ msgstr "Iluminación"
-#~ msgid "Toggle Persisting"
-#~ msgstr "Act/Desact. Persistente"
-
#~ msgid "Global"
#~ msgstr "Global"
diff --git a/editor/translations/fa.po b/editor/translations/fa.po
index 7b77165a53..87e473d49c 100644
--- a/editor/translations/fa.po
+++ b/editor/translations/fa.po
@@ -1,5 +1,6 @@
# Persian translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# alabd14313 <alabd14313@yahoo.com>, 2016.
@@ -195,10 +196,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr "تعداد d% ترک جدید ایجاد، و کلیدها را درج کن؟"
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -361,269 +361,6 @@ msgstr "نوع مقدار آرایه را تغییر بده"
msgid "Change Array Value"
msgstr "مقدار آرایه را تغییر بده"
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr "نسخه:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Contents:"
-msgstr "مستمر"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "View Files"
-msgstr "پرونده:"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr "توضیح:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "بستن"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect."
-msgstr "در حال اتصال..."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect to host:"
-msgstr "اتصال به گره:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Connecting.."
-msgstr "در حال اتصال..."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Requesting.."
-msgstr "آزمودن"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Error making request"
-msgstr "خطای بارگذاری قلم."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Download Error"
-msgstr "خطاهای بارگذاری"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "همه"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "جستجو:"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "جستجو"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "مرتب‌سازی:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr "معکوس"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "طبقه‌بندی:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "تارنما:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr "پشتیبانی.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr "Ø¯ÙØªØ±ÛŒ"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "انجمن"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr "آزمودن"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr "ÙØ§ÛŒÙ„ های ZIP‌ منابع بازی"
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr "لیست متد برای 's%' :"
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "ÙØ±Ø§Ø®ÙˆØ§Ù†ÛŒ"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr "Ùهرست متدها:"
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr "نشانوندها:"
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr "بازگشت:"
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr "برو به خط"
@@ -661,6 +398,14 @@ msgstr "عین کلمات (بدون هیچ کم و کاستی)"
msgid "Selection Only"
msgstr "تنها در قسمت انتخاب شده"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "جستجو"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr "ÛŒØ§ÙØªÙ†"
@@ -693,11 +438,11 @@ msgstr "موقع جایگزینی از کاربر بپرس"
msgid "Skip"
msgstr "رد کردن"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "بزرگنمایی بیشتر"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr "بزرگنمایی کمتر"
@@ -765,6 +510,20 @@ msgstr "معوق"
msgid "Oneshot"
msgstr "تک شات"
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "بستن"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr "اتصال"
@@ -790,7 +549,7 @@ msgstr "در حال اتصال..."
msgid "Disconnect"
msgstr "عدم اتصال"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr "سیگنال‌ها"
@@ -807,12 +566,25 @@ msgstr ""
msgid "Recent:"
msgstr ""
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "جستجو:"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr "تطبیق‌ها:"
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "توضیح:"
+
#: editor/dependency_editor.cpp
#, fuzzy
msgid "Search Replacement For:"
@@ -873,6 +645,10 @@ msgid "Owners Of:"
msgstr "مالکانÙ:"
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr "آیا پرونده‌های انتخاب شده از پروژه حذ٠شوند؟ (بدون undo)"
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -883,8 +659,8 @@ msgstr ""
"آیا در هر صورت حذ٠شوند (بدون undo)؟"
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
-msgstr "آیا پرونده‌های انتخاب شده از پروژه حذ٠شوند؟ (بدون undo)"
+msgid "Cannot remove:\n"
+msgstr ""
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -952,11 +728,6 @@ msgstr ""
#: editor/editor_about.cpp
#, fuzzy
-msgid "Authors"
-msgstr "خالق:"
-
-#: editor/editor_about.cpp
-#, fuzzy
msgid "Project Founders"
msgstr "صادر کردن پروژه"
@@ -973,6 +744,39 @@ msgid "Developers"
msgstr ""
#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "خالق:"
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
msgid "License"
msgstr ""
@@ -1016,6 +820,16 @@ msgid "Package Installed Successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
msgstr ""
@@ -1066,10 +880,6 @@ msgid "Audio Bus, Drag and Drop to rearrange."
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
msgid "Solo"
msgstr ""
@@ -1081,6 +891,10 @@ msgstr ""
msgid "Bypass"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
msgid "Duplicate"
@@ -1088,6 +902,11 @@ msgstr ""
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Volume"
+msgstr "بازنشانی بزرگنمایی"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Delete Effect"
msgstr "انتخاب شده را حذ٠کن"
@@ -1111,6 +930,11 @@ msgstr "انتخاب شده را به دو تا تکثیر کن"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Bus Volume"
+msgstr "بازنشانی بزرگنمایی"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Move Audio Bus"
msgstr "کلید Add را جابجا کن"
@@ -1142,7 +966,8 @@ msgstr ""
msgid "Create a new Bus Layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
@@ -1233,7 +1058,7 @@ msgid "Rearrange Autoloads"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "مسیر:"
@@ -1241,9 +1066,7 @@ msgstr "مسیر:"
msgid "Node Name:"
msgstr ""
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr ""
@@ -1276,18 +1099,19 @@ msgid "Choose a Directory"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "پوشه ایجاد کن"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "نام:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "نمی‌تواند یک پوشه ایجاد شود."
@@ -1307,30 +1131,6 @@ msgstr ""
msgid "Template file not found:\n"
msgstr ""
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr "Ø§ÙØ²ÙˆØ¯Ù‡ شده:"
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr "برداشته شده:"
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr ""
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "ÙØ§ÛŒÙ„ وجود دارد، آیا بازنویسی شود؟"
@@ -1415,6 +1215,11 @@ msgstr ""
msgid "Move Favorite Down"
msgstr ""
+#: editor/editor_file_dialog.cpp
+#, fuzzy
+msgid "Go to parent folder"
+msgstr "نمی‌تواند یک پوشه ایجاد شود."
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "پوشه‌ها و پرونده‌ها:"
@@ -1429,10 +1234,6 @@ msgid "File:"
msgstr "پرونده:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "صاÙÛŒ:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "باید از یک پسوند معتبر Ø§Ø³ØªÙØ§Ø¯Ù‡ شود."
@@ -1458,6 +1259,10 @@ msgstr "Ùهرست کلاس:"
msgid "Search Classes"
msgstr "جستجوی کلاسها"
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr ""
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr "کلاس:"
@@ -1474,15 +1279,29 @@ msgstr "به ارث رسیده به وسیله:"
msgid "Brief Description:"
msgstr "خلاصه توضیحات:"
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Members"
+msgstr "عضوها:"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "عضوها:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Public Methods"
+msgstr "انتخاب حالت"
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr ""
#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr ""
@@ -1492,6 +1311,11 @@ msgstr "سیگنال ها:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Enumerations"
+msgstr "وظایÙ:"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Enumerations:"
msgstr "وظایÙ:"
@@ -1500,19 +1324,50 @@ msgid "enum "
msgstr ""
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Constants"
+msgstr "ثابت"
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
#: editor/editor_help.cpp
#, fuzzy
+msgid "Description"
+msgstr "توضیح:"
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr ""
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Property Description:"
msgstr "خلاصه توضیحات:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Methods"
+msgstr "Ùهرست متدها:"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr "جستجوی متن"
@@ -1522,24 +1377,21 @@ msgid "Output:"
msgstr " خروجی:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "پاک کردن"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr ""
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr "ذخیره منبع از ..."
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "من میبینم ..."
@@ -1556,6 +1408,29 @@ msgid "Error while saving."
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Can't open '%s'."
+msgstr "در حال اتصال..."
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while parsing '%s'."
+msgstr "خطای بارگذاری قلم."
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while loading '%s'."
+msgstr "خطای بارگذاری قلم."
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr "ذخیره سازی صحنه"
@@ -1613,6 +1488,33 @@ msgid "Restored default layout to base settings."
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr ""
@@ -1776,23 +1678,35 @@ msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "خطای بارگذاری قلم."
+
+#: editor/editor_node.cpp
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -1802,7 +1716,7 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr ""
@@ -1813,11 +1727,11 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp
-msgid "Error loading scene."
+msgid "Scene '%s' has broken dependencies:"
msgstr ""
#: editor/editor_node.cpp
-msgid "Scene '%s' has broken dependencies:"
+msgid "Clear Recent Scenes"
msgstr ""
#: editor/editor_node.cpp
@@ -1853,7 +1767,7 @@ msgstr ""
msgid "Toggle distraction-free mode."
msgstr ""
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr "صحنه"
@@ -2075,6 +1989,10 @@ msgstr ""
msgid "Issue Tracker"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "انجمن"
+
#: editor/editor_node.cpp
msgid "About"
msgstr "معرÙÛŒ"
@@ -2083,7 +2001,7 @@ msgstr "معرÙÛŒ"
msgid "Play the project."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr "پخش"
@@ -2099,7 +2017,7 @@ msgstr ""
msgid "Stop the scene."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr ""
@@ -2172,6 +2090,15 @@ msgid "Object properties."
msgstr ""
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr ""
@@ -2187,14 +2114,6 @@ msgstr "خروجی"
msgid "Don't Save"
msgstr ""
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr "بروز رسانی"
-
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "واردکردن قالب ها از درون یک ÙØ§ÛŒÙ„ ZIP"
@@ -2261,11 +2180,28 @@ msgstr "ویرایشگر بستگی"
msgid "Open the previous Editor"
msgstr ""
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr ""
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr "Ø§ÙØ²ÙˆÙ†Ù‡ های نصب شده:"
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr "بروز رسانی"
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "نسخه:"
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr "خالق:"
@@ -2298,7 +2234,7 @@ msgid "Frame %"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+msgid "Physics Frame %"
msgstr ""
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2317,26 +2253,6 @@ msgstr ""
msgid "Frame #:"
msgstr ""
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr "در حال وارد کردن دوباره..."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr ""
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2447,10 +2363,6 @@ msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
#, fuzzy
msgid "Current Version:"
msgstr "نسخه:"
@@ -2487,9 +2399,17 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
+"Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2500,45 +2420,51 @@ msgid ""
msgstr "منبع"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
+msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
+msgid "Cannot move a folder into itself.\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
-msgstr ""
+#, fuzzy
+msgid "Error moving:\n"
+msgstr "خطا در بارگذاری:"
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
+#, fuzzy
+msgid "Unable to update dependencies:\n"
+msgstr "خطا در بارگذاری صحنه به دلیل بستگی‌های Ù…Ùقود:"
+
+#: editor/filesystem_dock.cpp
+msgid "No name provided"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error moving file:\n"
-msgstr "خطا در بارگذاری:"
+msgid "No name provided."
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "خطا در بارگذاری:"
+msgid "Name contains invalid characters."
+msgstr "کاراکترهای معتبر:"
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
+msgid "A file or folder with this name already exists."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
-msgstr ""
+#, fuzzy
+msgid "Renaming file:"
+msgstr "تغییر متغیر"
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
+msgid "Renaming folder:"
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2550,39 +2476,36 @@ msgid "Collapse all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
+msgid "Copy Path"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Instance"
+msgid "Rename.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "View Owners.."
+msgid "Move To.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr ""
+#, fuzzy
+msgid "New Folder.."
+msgstr "پوشه ایجاد کن"
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
+msgid "Show In File Manager"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move To.."
+msgid "Instance"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Info"
+msgid "Edit Dependencies.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
+msgid "View Owners.."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2615,6 +2538,11 @@ msgstr ""
msgid "Move"
msgstr ""
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr ""
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr ""
@@ -2628,6 +2556,10 @@ msgid "Import as Single Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -2640,6 +2572,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
msgstr ""
@@ -2648,38 +2592,31 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr ""
@@ -2709,581 +2646,54 @@ msgstr ""
msgid "Reimport"
msgstr "در حال وارد کردن دوباره..."
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
-"کلاغ ÙØ±Ø² Ùˆ چابک، ظهر هر روز با صدای ضخیم Ùˆ عذاب‌آورش بـه جستجوی یک مثقال گنج "
-"پنهان در حیاط رژه Ù…ÛŒ Ø±ÙØª."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr "خطا در ارزش‌دهی آغارین به FreeType."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "ÙØ±Ù…ت قلم ناشناخته."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "خطای بارگذاری قلم."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr "اندازه‌ی قلم نامعتبر."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "لغو"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
+#: editor/node_dock.cpp
+msgid "Groups"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr ""
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Select a Node to edit Signals and Groups."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -3440,7 +2850,6 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3551,10 +2960,6 @@ msgid "Delete Input"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr ""
@@ -3610,64 +3015,189 @@ msgstr ""
msgid "Filters.."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Contents:"
+msgstr "مستمر"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "View Files"
+msgstr "پرونده:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Can't connect."
+msgstr "در حال اتصال..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Can't connect to host:"
+msgstr "اتصال به گره:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Connecting.."
+msgstr "در حال اتصال..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Requesting.."
+msgstr "آزمودن"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Error making request"
+msgstr "خطای بارگذاری قلم."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Download Error"
+msgstr "خطاهای بارگذاری"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "همه"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "مرتب‌سازی:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr "معکوس"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "طبقه‌بندی:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "تارنما:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr "پشتیبانی.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "Ø¯ÙØªØ±ÛŒ"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr "آزمودن"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr "ÙØ§ÛŒÙ„ های ZIP‌ منابع بازی"
+
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3710,11 +3240,15 @@ msgid "Edit CanvasItem"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+msgid "Anchors only"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors and Margins"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
+msgid "Change Anchors"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3765,59 +3299,73 @@ msgid "Pan Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
+#, fuzzy
+msgid "Toggles snapping"
+msgstr "یک Breakpoint درج کن"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
+msgid "Snapping options"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
+msgid "Snap to grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
+msgid "Use Rotation Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "ویرایش کردن"
+msgid "Configure Snap..."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Snap Relative"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
+msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
+msgid "Smart snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
+msgid "Snap to parent"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
+msgid "Snap to node anchor"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
+msgid "Makes sure the object's children are not selectable."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3846,11 +3394,16 @@ msgid "View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
+msgid "Show helpers"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show rulers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3862,7 +3415,7 @@ msgid "Frame Selection"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
+msgid "Layout"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3886,11 +3439,20 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
+msgid "Drag pivot from mouse position"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "برداشتن موج"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Divide grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3901,23 +3463,28 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr ""
@@ -3932,45 +3499,6 @@ msgid ""
"Drag & drop + Alt : Change node type"
msgstr ""
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3980,14 +3508,6 @@ msgid "Set Handle"
msgstr ""
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr ""
@@ -4010,6 +3530,27 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Ease in"
+msgstr "انتخاب شده را تغییر مقیاس بده"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
msgstr ""
@@ -4091,22 +3632,18 @@ msgid "Create Occluder Polygon"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr ""
@@ -4208,6 +3745,10 @@ msgid "Create Outline"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr ""
@@ -4335,12 +3876,72 @@ msgstr ""
msgid "Populate"
msgstr ""
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create Navigation Polygon"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Marking walkable triangles..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Partitioning..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
msgstr ""
#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
+msgid "Create Navigation Polygon"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -4514,16 +4115,19 @@ msgid "Curve Point #"
msgstr ""
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
-msgstr ""
+msgstr "برداشتن موج"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
-msgstr ""
+msgstr "برداشتن موج"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
-msgstr ""
+msgstr "برداشتن موج"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4583,6 +4187,14 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "ویرایش کردن"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr ""
@@ -4637,63 +4249,10 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "چسباندن"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr ""
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr ""
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
@@ -4785,6 +4344,10 @@ msgstr ""
msgid "Close All"
msgstr "بستن"
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
msgstr ""
@@ -4813,7 +4376,8 @@ msgstr ""
msgid "Break"
msgstr ""
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr ""
@@ -4827,18 +4391,6 @@ msgid "Debug with external editor"
msgstr "ویرایشگر بستگی"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
msgstr ""
@@ -4921,8 +4473,9 @@ msgid "Cut"
msgstr "بریدن"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "کپی کردن"
@@ -5187,10 +4740,6 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr ""
@@ -5207,10 +4756,6 @@ msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr ""
@@ -5443,6 +4988,10 @@ msgid "Transform"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr ""
@@ -5588,6 +5137,10 @@ msgid "Speed (FPS):"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr ""
@@ -5600,11 +5153,12 @@ msgid "Insert Empty (After)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr ""
+#, fuzzy
+msgid "Move (Before)"
+msgstr "مسیر به سمت گره:"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
+msgid "Move (After)"
msgstr ""
#: editor/plugins/style_box_editor_plugin.cpp
@@ -5683,7 +5237,11 @@ msgid "Remove All"
msgstr "برداشتن"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
@@ -5768,6 +5326,10 @@ msgid "Style"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr ""
@@ -5818,7 +5380,7 @@ msgid "Mirror Y"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
+msgid "Paint Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5884,6 +5446,10 @@ msgid "Delete preset '%s'?"
msgstr "آیا پرونده‌های انتخاب شده حذ٠شود؟"
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr ""
@@ -5956,19 +5522,30 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
+#, fuzzy
+msgid "The path does not exist."
+msgstr "پرونده موجود نیست."
+
+#: editor/project_manager.cpp
+msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
+msgid "Please choose a folder that does not contain a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
@@ -5976,10 +5553,26 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't edit project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr ""
@@ -5988,15 +5581,20 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Import Existing Project"
+#, fuzzy
+msgid "Rename Project"
+msgstr "صادر کردن پروژه"
+
+#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in the project path."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
+msgid "New Game Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Name:"
+msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
@@ -6004,19 +5602,24 @@ msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path:"
+msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Install Project:"
+msgid "Project Name:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Browse"
+#, fuzzy
+msgid "Create folder"
+msgstr "پوشه ایجاد کن"
+
+#: editor/project_manager.cpp
+msgid "Project Path:"
msgstr ""
#: editor/project_manager.cpp
-msgid "New Game Project"
+msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
@@ -6028,6 +5631,11 @@ msgid "Unnamed Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't open project"
+msgstr "در حال اتصال..."
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr ""
@@ -6054,6 +5662,12 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
"You are about the scan %s folders for existing Godot projects. Do you "
"confirm?"
msgstr ""
@@ -6065,10 +5679,6 @@ msgid "Project List"
msgstr ""
#: editor/project_manager.cpp
-msgid "Run"
-msgstr ""
-
-#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
@@ -6090,6 +5700,10 @@ msgid "Exit"
msgstr ""
#: editor/project_manager.cpp
+msgid "Restart Now"
+msgstr ""
+
+#: editor/project_manager.cpp
#, fuzzy
msgid "Can't run project"
msgstr "در حال اتصال..."
@@ -6127,17 +5741,14 @@ msgid "Add Input Action Event"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "+Meta"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "+Shift"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "+Alt"
@@ -6198,7 +5809,7 @@ msgstr "تغییر بده"
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "محور"
@@ -6218,31 +5829,31 @@ msgstr ""
msgid "Add Event"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "دستگاه"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "دکمه"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "دکمه‌ی چپ."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "دکمه‌ی راست."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "دکمه‌ی وسط."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr "غلطاندن به بالا."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr "غلطاندن به پایین."
@@ -6252,7 +5863,7 @@ msgid "Add Global Property"
msgstr "دارایی Getter را اضاÙÙ‡ Ú©Ù†"
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6270,6 +5881,15 @@ msgid "Delete Item"
msgstr "حذ٠کن"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Can't contain '/' or ':'"
+msgstr "اتصال به گره:"
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
@@ -6310,6 +5930,15 @@ msgid "Remove Resource Remap Option"
msgstr ""
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Changed Locale Filter"
+msgstr "نوع مقدار آرایه را تغییر بده"
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
@@ -6370,6 +5999,27 @@ msgid "Locale"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Locales Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show all locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "صاÙÛŒ:"
+
+#: editor/project_settings_editor.cpp
+msgid "Locales:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -6420,10 +6070,19 @@ msgid "New Script"
msgstr "صحنه جدید"
#: editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr ""
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Convert To %s"
+msgstr "اتصال به گره:"
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr ""
@@ -6463,6 +6122,11 @@ msgstr "دارایی Setter را اضاÙÙ‡ Ú©Ù†"
#: editor/property_selector.cpp
#, fuzzy
+msgid "Select Virtual Method"
+msgstr "انتخاب حالت"
+
+#: editor/property_selector.cpp
+#, fuzzy
msgid "Select Method"
msgstr "انتخاب حالت"
@@ -6490,26 +6154,6 @@ msgstr ""
msgid "Reparent"
msgstr ""
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr ""
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr ""
@@ -6637,14 +6281,6 @@ msgid "Sub-Resources:"
msgstr "منبع"
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr ""
@@ -6832,6 +6468,15 @@ msgid "Invalid base path"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "File exists, will be reused"
+msgstr "ÙØ§ÛŒÙ„ وجود دارد، آیا بازنویسی شود؟"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr ""
@@ -6875,6 +6520,10 @@ msgid "Load existing script file"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Inherits"
msgstr "میراث:"
@@ -6919,6 +6568,10 @@ msgid "Function:"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr ""
@@ -6999,6 +6652,10 @@ msgid "Type"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr ""
@@ -7074,6 +6731,24 @@ msgstr ""
msgid "Change Probe Extents"
msgstr ""
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Library"
+msgstr "صادکردن ÙØ§ÛŒÙ„ کتابخانه ای"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Status"
+msgstr "وضعیت:"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
@@ -7081,7 +6756,7 @@ msgstr ""
"نوع آرگومان برای متد ()convert ‌ نامعتبر است ،‌ از ثابت های *_TYPE‌ Ø§Ø³ØªÙØ§Ø¯Ù‡ "
"کنید ."
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr ""
@@ -7138,10 +6813,6 @@ msgid "GridMap Duplicate Selection"
msgstr "انتخاب شده را به دو تا تکثیر کن"
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Snap View"
msgstr ""
@@ -7238,13 +6909,8 @@ msgstr "ترجیحات"
msgid "Pick Distance:"
msgstr ""
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr "پرونده:"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7455,10 +7121,18 @@ msgid "Return"
msgstr "بازگشت:"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr "ÙØ±Ø§Ø®ÙˆØ§Ù†ÛŒ"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Input Value"
msgstr "مقدار آرایه را تغییر بده"
@@ -7874,6 +7548,12 @@ msgstr ""
"یک منبع SpriteFrames باید در دارایی Frames ایجاد شده باشد تا "
"AnimatedSprite3D ÙØ±ÛŒÙ…‌ها را نمایش دهد."
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -7883,6 +7563,10 @@ msgid "Add current color as a preset"
msgstr ""
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "لغو"
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr "هشدار!"
@@ -7890,10 +7574,6 @@ msgstr "هشدار!"
msgid "Please Confirm..."
msgstr "Ù„Ø·ÙØ§ تأیید کنید..."
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "+Ctrl"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -7929,6 +7609,59 @@ msgstr ""
"تا بتواند یک اندازه بگیرد. در غیر اینصورت، آن را یک RenderTarget قرار دهید و "
"Ø¨Ø§ÙØª داخلی آن را برای نمایش به تعدادی گره تخصیص دهید."
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr "خطا در ارزش‌دهی آغارین به FreeType."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "ÙØ±Ù…ت قلم ناشناخته."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "خطای بارگذاری قلم."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr "اندازه‌ی قلم نامعتبر."
+
+#~ msgid "Filter:"
+#~ msgstr "صاÙÛŒ:"
+
+#~ msgid "Method List For '%s':"
+#~ msgstr "لیست متد برای 's%' :"
+
+#~ msgid "Arguments:"
+#~ msgstr "نشانوندها:"
+
+#~ msgid "Return:"
+#~ msgstr "بازگشت:"
+
+#~ msgid "Added:"
+#~ msgstr "Ø§ÙØ²ÙˆØ¯Ù‡ شده:"
+
+#~ msgid "Removed:"
+#~ msgstr "برداشته شده:"
+
+#~ msgid "Re-Importing"
+#~ msgstr "در حال وارد کردن دوباره..."
+
+#, fuzzy
+#~ msgid "Error moving file:\n"
+#~ msgstr "خطا در بارگذاری:"
+
+#~ msgid "The quick brown fox jumps over the lazy dog."
+#~ msgstr ""
+#~ "کلاغ ÙØ±Ø² Ùˆ چابک، ظهر هر روز با صدای ضخیم Ùˆ عذاب‌آورش بـه جستجوی یک مثقال "
+#~ "گنج پنهان در حیاط رژه Ù…ÛŒ Ø±ÙØª."
+
+#, fuzzy
+#~ msgid "Tiles"
+#~ msgstr "پرونده:"
+
+#~ msgid "Ctrl+"
+#~ msgstr "+Ctrl"
+
#, fuzzy
#~ msgid "Invalid unique name."
#~ msgstr "نام نامعتبر."
diff --git a/editor/translations/fi.po b/editor/translations/fi.po
index af1d46eae0..12cafa85fc 100644
--- a/editor/translations/fi.po
+++ b/editor/translations/fi.po
@@ -1,5 +1,6 @@
# Finnish translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# ekeimaja <ekeimaja@gmail.com>, 2017.
@@ -195,10 +196,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr ""
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -361,272 +361,6 @@ msgstr "Vaihda taulukon arvon tyyppiä"
msgid "Change Array Value"
msgstr "Vaihda taulukon arvoa"
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr "Versio:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Contents:"
-msgstr "Vakiot:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "View Files"
-msgstr " Tiedostot"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr "Kuvaus:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr "Asenna"
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "Sulje"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect."
-msgstr "Yhdistä..."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect to host:"
-msgstr "Yhdistä Nodeen:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Request failed, return code:"
-msgstr "Pyydetty tiedostomuoto tuntematon:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Resolving.."
-msgstr "Tallennetaan..."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Connecting.."
-msgstr "Yhdistä..."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Requesting.."
-msgstr "Testaus"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Error making request"
-msgstr "Virhe tallennettaessa resurssia!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Download Error"
-msgstr "Lataa"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "Kaikki"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "Hae:"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Hae"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr "Tuo"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "Lajittele:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr "Käänteinen"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "Kategoria:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "Sivu:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr "Tuki..."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr "Virallinen"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "Yhteisö"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Testing"
-msgstr "Testaus"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr ""
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "Kutsu"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr "Metodilista:"
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr "Argumentit:"
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr "Palaa:"
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr "Mene riville"
@@ -663,6 +397,14 @@ msgstr "Kokonaisia sanoja"
msgid "Selection Only"
msgstr "Pelkkä valinta"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Hae"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr "Etsi"
@@ -695,11 +437,11 @@ msgstr ""
msgid "Skip"
msgstr "Ohita"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "Lähennä"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr "Loitonna"
@@ -767,6 +509,20 @@ msgstr "Lykätty"
msgid "Oneshot"
msgstr "Ainoa"
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "Sulje"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr "Yhdistä"
@@ -792,7 +548,7 @@ msgstr "Yhdistä..."
msgid "Disconnect"
msgstr "Katkaise yhteys"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr "Signaalit"
@@ -810,12 +566,25 @@ msgstr "Suosikit:"
msgid "Recent:"
msgstr "Viimeaikainen / Viimeaikaiset:"
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "Hae:"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr "Osumat:"
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "Kuvaus:"
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr "Hae korvattava:"
@@ -875,6 +644,10 @@ msgid "Owners Of:"
msgstr ""
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr "Poista valitut tiedostot projektista? (ei voi kumota)"
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -882,8 +655,8 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
-msgstr "Poista valitut tiedostot projektista? (ei voi kumota)"
+msgid "Cannot remove:\n"
+msgstr ""
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -952,11 +725,6 @@ msgstr ""
#: editor/editor_about.cpp
#, fuzzy
-msgid "Authors"
-msgstr "Tekijä:"
-
-#: editor/editor_about.cpp
-#, fuzzy
msgid "Project Founders"
msgstr "Projektinhallinta"
@@ -973,6 +741,40 @@ msgid "Developers"
msgstr ""
#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "Tekijä:"
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Bronze Donors"
+msgstr "Kloonaa alas"
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
msgid "License"
msgstr ""
@@ -1016,6 +818,16 @@ msgid "Package Installed Successfully!"
msgstr "Paketti asennettu onnistuneesti!"
#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr "Asenna"
+
+#: editor/editor_asset_installer.cpp
#, fuzzy
msgid "Package Installer"
msgstr "Paketti asennettu onnistuneesti!"
@@ -1068,11 +880,6 @@ msgid "Audio Bus, Drag and Drop to rearrange."
msgstr ""
#: editor/editor_audio_buses.cpp
-#, fuzzy
-msgid "Bus options"
-msgstr "Debug-asetukset"
-
-#: editor/editor_audio_buses.cpp
msgid "Solo"
msgstr ""
@@ -1084,6 +891,11 @@ msgstr ""
msgid "Bypass"
msgstr ""
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "Debug-asetukset"
+
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
msgid "Duplicate"
@@ -1091,6 +903,11 @@ msgstr "Monista"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Volume"
+msgstr "Nollaa lähennys"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Delete Effect"
msgstr "Poista valitut"
@@ -1115,6 +932,11 @@ msgstr "Monista animaatio"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Bus Volume"
+msgstr "Nollaa lähennys"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Move Audio Bus"
msgstr "Siirrä lisäyspainiketta"
@@ -1149,7 +971,8 @@ msgstr "Lisää väylä"
msgid "Create a new Bus Layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr "Lataa"
@@ -1241,7 +1064,7 @@ msgid "Rearrange Autoloads"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "Polku:"
@@ -1249,9 +1072,7 @@ msgstr "Polku:"
msgid "Node Name:"
msgstr "Noden nimi:"
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr "Nimi"
@@ -1284,18 +1105,19 @@ msgid "Choose a Directory"
msgstr "Valitse hakemisto"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "Luo kansio"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "Nimi:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "Kansiota ei voitu luoda."
@@ -1315,30 +1137,6 @@ msgstr "Pakataan"
msgid "Template file not found:\n"
msgstr "Mallitiedostoa ei löytynyt:\n"
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr "Lisätty:"
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr "Poistettu:"
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr "Virhe tallennettaessa atlas-kuvaa:"
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr ""
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "Tiedosto on jo olemassa, korvaa?"
@@ -1425,6 +1223,11 @@ msgstr "Siirrä suosikkia ylös"
msgid "Move Favorite Down"
msgstr "Siirrä suosikkia alas"
+#: editor/editor_file_dialog.cpp
+#, fuzzy
+msgid "Go to parent folder"
+msgstr "Kansiota ei voitu luoda."
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "Hakemistot & tiedostot:"
@@ -1439,10 +1242,6 @@ msgid "File:"
msgstr "Tiedosto:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "Suodatin:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
#, fuzzy
msgid "Must use a valid extension."
msgstr "Käytä sopivaa laajennusta"
@@ -1469,6 +1268,10 @@ msgstr "Luokkaluettelo:"
msgid "Search Classes"
msgstr "Etsi luokkia"
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr "Pinta"
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr "Luokka:"
@@ -1486,15 +1289,29 @@ msgstr "Peritty:"
msgid "Brief Description:"
msgstr "Lyhyt kuvaus:"
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Members"
+msgstr "Jäsenet:"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "Jäsenet:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Public Methods"
+msgstr "Julkiset metodit:"
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr "Julkiset metodit:"
#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr ""
@@ -1504,6 +1321,11 @@ msgstr ""
#: editor/editor_help.cpp
#, fuzzy
+msgid "Enumerations"
+msgstr "Animaatiot"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Enumerations:"
msgstr "Animaatiot"
@@ -1512,19 +1334,51 @@ msgid "enum "
msgstr ""
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Constants"
+msgstr "Vakiot:"
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Vakiot:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Description"
+msgstr "Kuvaus:"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Properties"
+msgstr "Ominaisuudet:"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Property Description:"
msgstr "Ominaisuuden kuvaus:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Methods"
+msgstr "Metodilista:"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr "Metodin kuvaus:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr "Hae tekstiä"
@@ -1534,24 +1388,21 @@ msgid "Output:"
msgstr " Tuloste:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "Tyhjennä"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr "Virhe tallennettaessa resurssia!"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr "Tallenna resurssi nimellä..."
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Ymmärrän..."
@@ -1568,6 +1419,30 @@ msgid "Error while saving."
msgstr "Virhe tallennettaessa."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Can't open '%s'."
+msgstr "Yhdistä..."
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while parsing '%s'."
+msgstr "Virhe tallennettaessa."
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Missing '%s' or its dependencies."
+msgstr "Scenellä '%s' on rikkinäisiä riippuvuuksia:"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while loading '%s'."
+msgstr "Virhe tallennettaessa."
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr "Tallennetaan sceneä"
@@ -1626,6 +1501,33 @@ msgid "Restored default layout to base settings."
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr "Kopioi parametrit"
@@ -1801,23 +1703,35 @@ msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Valitse pääscene"
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "Virhe ladattaessa skripti %s:stä"
+
+#: editor/editor_node.cpp
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -1829,7 +1743,7 @@ msgstr ""
"Muokataksesi sitä voit luoda uuden perityn Scenen."
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr "Äh"
@@ -1842,14 +1756,15 @@ msgstr ""
"toimintoa avataksesi Scenen ja tallenna se projektin polkuun."
#: editor/editor_node.cpp
-msgid "Error loading scene."
-msgstr "Virhe ladatessa Sceneä."
-
-#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
msgstr "Scenellä '%s' on rikkinäisiä riippuvuuksia:"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Clear Recent Scenes"
+msgstr "Tyhjennä luut"
+
+#: editor/editor_node.cpp
msgid "Save Layout"
msgstr "Tallenna Layout"
@@ -1883,7 +1798,7 @@ msgstr ""
msgid "Toggle distraction-free mode."
msgstr ""
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr "Scene"
@@ -2105,6 +2020,10 @@ msgstr ""
msgid "Issue Tracker"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "Yhteisö"
+
#: editor/editor_node.cpp
msgid "About"
msgstr "Tietoja"
@@ -2114,7 +2033,7 @@ msgstr "Tietoja"
msgid "Play the project."
msgstr "Toista projekti"
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
#, fuzzy
msgid "Play"
msgstr "Toista"
@@ -2131,7 +2050,7 @@ msgstr "Pysäytä Scene"
msgid "Stop the scene."
msgstr "Lopeta Scene."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr "Pysäytä"
@@ -2204,6 +2123,16 @@ msgid "Object properties."
msgstr "Objektin ominaisuudet."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Changes may be lost!"
+msgstr "Vaihda säteen muodon pituutta"
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr "Tuo"
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr "Tiedostojärjestelmä"
@@ -2219,14 +2148,6 @@ msgstr "Tuloste"
msgid "Don't Save"
msgstr ""
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr "Tuo uudelleen"
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr "Päivitä"
-
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "Tuo mallit ZIP-tiedostosta"
@@ -2294,11 +2215,28 @@ msgstr "Avaa editorissa"
msgid "Open the previous Editor"
msgstr "Avaa editorissa"
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr "Pienoiskuva..."
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr "Asennetut lisäosat:"
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr "Päivitä"
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Versio:"
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr "Tekijä:"
@@ -2332,7 +2270,8 @@ msgid "Frame %"
msgstr "Frame %"
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+#, fuzzy
+msgid "Physics Frame %"
msgstr "Kiinteä Frame %"
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2351,27 +2290,6 @@ msgstr "Itse"
msgid "Frame #:"
msgstr ""
-#: editor/editor_reimport_dialog.cpp
-#, fuzzy
-msgid "Please wait for scan to complete."
-msgstr "Ole hyvä ja odota läpikäynnin valmistumista."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr "Nykyinen Scene täytyy tallentaa, jotta se voidaan tuoda uudelleen."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr "Tallenna & tuo uudelleen"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr "Tuodaan uudelleen"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr "Tuo uudelleen vaihtuneet resurssit"
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2481,10 +2399,6 @@ msgid "Importing:"
msgstr "Tuodaan:"
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Nykyinen versio:"
@@ -2517,11 +2431,18 @@ msgid "Cannot navigate to '"
msgstr "Ei voida navigoida '"
#: editor/filesystem_dock.cpp
-#, fuzzy
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
-msgstr "Tallenna & tuo uudelleen"
+"Status: Import of file failed. Please fix file and reimport manually."
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
@@ -2531,46 +2452,55 @@ msgid ""
msgstr "Lähde:"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
-msgstr "Sama lähde ja kohdetiedosto, ei toimenpiteitä."
+msgid "Cannot move/rename resources root."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Cannot move a folder into itself.\n"
+msgstr "Tiedostoa ei voi tuoda itseensä:"
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
-msgstr ""
+#, fuzzy
+msgid "Error moving:\n"
+msgstr "Virhe tuotaessa:"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
-msgstr "Sama lähde ja kohdepolku, ei toimenpiteitä."
+#, fuzzy
+msgid "Unable to update dependencies:\n"
+msgstr "Scenellä '%s' on rikkinäisiä riippuvuuksia:"
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
-msgstr "Hakemisto(j)a ei voida siirtää itseensä."
+msgid "No name provided"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving file:\n"
-msgstr "Virhe ladattaessa kuvaa:"
+msgid "No name provided."
+msgstr "Nimeä uudelleen tai siirrä..."
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "Virhe tuotaessa:"
+msgid "Name contains invalid characters."
+msgstr "Kelvolliset merkit:"
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
+msgid "A file or folder with this name already exists."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
-msgstr "Valitse uusi nimi ja sijainti:"
+#, fuzzy
+msgid "Renaming file:"
+msgstr "Nimeä muuttuja uudelleen"
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
-msgstr "Ei valittuja tiedostoja!"
+#, fuzzy
+msgid "Renaming folder:"
+msgstr "Nimeä Node uudelleen"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2581,40 +2511,38 @@ msgid "Collapse all"
msgstr "Pienennä kaikki"
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
-msgstr "Näytä tiedostonhallinnassa"
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
-msgstr "Instanssi"
+msgid "Copy Path"
+msgstr "Kopioi polku"
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
-msgstr "Muokkaa riippuvuuksia..."
+#, fuzzy
+msgid "Rename.."
+msgstr "Nimeä uudelleen"
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
-msgstr "Tarkastele omistajia..."
+msgid "Move To.."
+msgstr "Siirrä..."
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr "Kopioi polku"
+#, fuzzy
+msgid "New Folder.."
+msgstr "Luo kansio"
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
-msgstr "Nimeä uudelleen tai siirrä..."
+msgid "Show In File Manager"
+msgstr "Näytä tiedostonhallinnassa"
#: editor/filesystem_dock.cpp
-msgid "Move To.."
-msgstr "Siirrä..."
+msgid "Instance"
+msgstr "Instanssi"
#: editor/filesystem_dock.cpp
-msgid "Info"
-msgstr "Tietoja"
+msgid "Edit Dependencies.."
+msgstr "Muokkaa riippuvuuksia..."
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
-msgstr "Tuo uudelleen..."
+msgid "View Owners.."
+msgstr "Tarkastele omistajia..."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2646,6 +2574,11 @@ msgstr ""
msgid "Move"
msgstr "Siirrä"
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr "Nimeä uudelleen"
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr "Lisää ryhmään"
@@ -2660,6 +2593,11 @@ msgid "Import as Single Scene"
msgstr "Tuodaan Scene..."
#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Animations"
+msgstr "Tuo animaatiot..."
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -2672,6 +2610,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
#, fuzzy
msgid "Import as Multiple Scenes"
msgstr "Tuo 3D Scene"
@@ -2681,38 +2631,31 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr "Tuo Scene"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr "Tuodaan Scene..."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr "Tallennetaan..."
@@ -2741,595 +2684,55 @@ msgstr "Esiasetus..."
msgid "Reimport"
msgstr "Tuo uudelleen"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr "Kohdepolku on tyhjä."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr "Kohdepolku täytyy olla olemassa."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr "Tallennuspolku on tyhjä!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr "Kohdepolku:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr "Hyväksy"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr "Ei fontin lähdetiedostoa!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-"Virheellinen tiedostolaajennus.\n"
-"Käytä .fnt -tiedostoa."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr "Fonttia ei voitu tallentaa."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr "Ovela kettu punaturkki laiskan koiran takaa kurkki."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr "Asetukset:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr "Fontin tuonti"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-"Tämä tiedosto on jo Godotin fonttitiedosto, ole hyvä ja syötä BMFont -"
-"tiedosto."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr "BMFont -tiedoston avaus epäonnistui."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr "Virhe FreetType:n alustamisessa."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "Tuntematon fonttimuoto."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "Virhe fontin latauksessa."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr "Virheellinen fonttikoko."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr "Virheellinen fontin lähde."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Fontti"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr "Uusi klippi"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr "Animaation asetukset"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr "Liput"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr "Optimoija"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr "Enimmäiskulma"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr "Klippejä"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Start(s)"
-msgstr "Alkaa"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "End(s)"
-msgstr "Loppu(u)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
-msgid "Loop"
-msgstr "Toisto"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr "Suodattimet"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr "Lähdepolku on tyhjä."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
msgstr ""
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr "Virhe tuotaessa Sceneä."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr "Tuo 3D Scene"
+#: editor/node_dock.cpp
+msgid "Groups"
+msgstr "Ryhmät"
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
msgstr ""
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr "Sama kuin kohdescene"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
+msgstr "Luo polygoni"
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr "Jaettu"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Muokkaa polygonia"
-#: editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
#, fuzzy
-msgid "Target Texture Folder:"
-msgstr "Kohdetekstuurin kansio:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr "Seuraavat tiedostot puuttuvat:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr "Tuo joka tapauksessa"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Peru"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr "Tuo & Avaa"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-"Muokattua Sceneä ei ole tallennettu, avaa tuotu Scene joka tapauksessa?"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr "Tuo kuva:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr "Tiedostoa ei voi tuoda itseensä:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr "Purettu"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr "Pakkaa häviötön (PNG)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr "Pakkaa häviöllinen (WebP)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr "Pakkaa (VRAM)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr "Tekstuurin pakkauksen latu (WebP):"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr "Tekstuurin asetukset"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr "Ainakin yksi tiedosto tarvitaan Atlas-kuvaa varten."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr "Virhe tuotaessa:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr "Vain yksi tiedosto vaaditaan suurikokoiselle tekstuurille."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr "Tekstuurin enimmäiskoko:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr "Tuo tekstuuri Atlakselle (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr "Solun koko:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr "Suurikokoinen tekstuuri"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr "Tuo suurikokoisia tekstuureita (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
-msgstr "Lähdetekstuuri"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
-msgstr "Lähdetekstuuri(t)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
-msgstr "Tuo tekstuurit"
+msgid "Insert Point"
+msgstr "Poista piste"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
-msgstr "2D tekstuuri"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Muokkaa polygonia (poista piste)"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
-msgstr "Kolmiulotteinen tekstuuri"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
+msgstr "Poista polygoni ja piste"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
-msgstr "Atlastekstuuri"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
+msgstr "Luo uusi piste tyhjästä."
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-"HUOMAA: 2D tekstuurin tuonti ei ole pakollista. Voit kopioida png/jpg -"
-"tiedostot projektiin."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr "Leikkaa pois tyhjä tila."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr "Tekstuuri"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr "Tuo suurikokoinen tekstuuri"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr "Lataa lähdekuva"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Slicing"
-msgstr "Siivutus"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr "Isoa tekstuuria ei voitu tallentaa:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Build Atlas For:"
-msgstr "Luo atlas:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr "Ladataan kuvaa:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr "Kuvaa ei voitu ladata:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr "Muunnetaan kuvia"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr "Atlas-kuvaa ei voitu tallentaa:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr "Virheellinen lähde!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr "Kolumni"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr "Kieli"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
-msgid "No items to import!"
-msgstr "Ei tuotavia asioita!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr "Ei kohdepolkua!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr "Tuo käännökset"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr "Ei voitu tuoda!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr "Tuo käännös"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr "Sivuuta ensimmäinen rivi"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr "Tiivistä"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
-msgid "Add to Project (project.godot)"
-msgstr "Lisää projektiin (godot.cfg)"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr "Tuo kielet:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr "Siirtymä"
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr "Ryhmät"
-
-#: editor/node_dock.cpp
-msgid "Select a Node to edit Signals and Groups."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -3485,7 +2888,6 @@ msgstr "Animaation nimi:"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3596,10 +2998,6 @@ msgid "Delete Input"
msgstr "Poista syöte"
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr "Nimeä uudelleen"
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr "Animaatiopuu on kelvollinen."
@@ -3655,64 +3053,192 @@ msgstr ""
msgid "Filters.."
msgstr "Suodattimet..."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Contents:"
+msgstr "Vakiot:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "View Files"
+msgstr " Tiedostot"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Can't connect."
+msgstr "Yhdistä..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Can't connect to host:"
+msgstr "Yhdistä Nodeen:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Request failed, return code:"
+msgstr "Pyydetty tiedostomuoto tuntematon:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
-msgstr "Muunna Lightmapiksi:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Resolving.."
+msgstr "Tallennetaan..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Connecting.."
+msgstr "Yhdistä..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Requesting.."
+msgstr "Testaus"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Error making request"
+msgstr "Virhe tallennettaessa resurssia!"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Download Error"
+msgstr "Lataa"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "Kaikki"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "Lajittele:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr "Käänteinen"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "Kategoria:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "Sivu:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr "Tuki..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "Virallinen"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Testing"
+msgstr "Testaus"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr "Esikatselu"
@@ -3755,12 +3281,18 @@ msgid "Edit CanvasItem"
msgstr "Muokkaa CanvasItemiä"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+#, fuzzy
+msgid "Anchors only"
+msgstr "Ankkuri"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Change Anchors and Margins"
msgstr "Muuta ankkureita"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
-msgstr "Lähennä (%):"
+msgid "Change Anchors"
+msgstr "Muuta ankkureita"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Paste Pose"
@@ -3812,60 +3344,75 @@ msgid "Pan Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
-msgstr "Lukitse valitut objektit paikalleen (ei voi liikutella)."
+msgid "Toggles snapping"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
-msgstr "Poista valittujen objektien lukitus (voi liikutella)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
-msgstr "Varmistaa ettei objektin lapsia voi valita."
+#, fuzzy
+msgid "Snapping options"
+msgstr "Animaation asetukset"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
+msgid "Snap to grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "Muokkaa"
+msgid "Use Rotation Snap"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Configure Snap..."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
-msgstr "Näytä ruudukko"
+msgid "Snap Relative"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
+msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
+msgid "Smart snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
+#, fuzzy
+msgid "Snap to parent"
+msgstr "Laajenna Parentiin"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to node anchor"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
-msgstr "Luuranko..."
+msgid "Lock the selected object in place (can't be moved)."
+msgstr "Lukitse valitut objektit paikalleen (ei voi liikutella)."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr "Poista valittujen objektien lukitus (voi liikutella)."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
+msgstr "Varmistaa ettei objektin lapsia voi valita."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Make Bones"
@@ -3894,12 +3441,19 @@ msgid "View"
msgstr "Näytä/Tarkastele"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
-msgstr "Palauta lähennys"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr "Näytä ruudukko"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Show helpers"
+msgstr "Näytä luut"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
-msgstr "Aseta Zoomaus..."
+#, fuzzy
+msgid "Show rulers"
+msgstr "Näytä luut"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -3910,8 +3464,9 @@ msgid "Frame Selection"
msgstr "Framen valinta"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
-msgstr "Ankkuri"
+#, fuzzy
+msgid "Layout"
+msgstr "Tallenna Layout"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Keys"
@@ -3934,11 +3489,20 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
-msgstr "Aseta arvo"
+msgid "Drag pivot from mouse position"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "Siirrä pistettä"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
+msgid "Divide grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3949,23 +3513,28 @@ msgstr "Lisää %s"
msgid "Adding %s..."
msgstr "Lisätään %s..."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr "Luo Node"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr "Asia kunnossa :("
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr ""
@@ -3981,45 +3550,6 @@ msgstr ""
"Vedä & pudota + Shift: Lisää Node sisarena\n"
"Vedä & pudota + Alt: Muuta Noden tyyppiä"
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr "Luo polygoni"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr "Muokkaa polygonia"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr "Muokkaa polygonia (poista piste)"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Luo uusi piste tyhjästä."
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "Luo Poly3D"
@@ -4029,14 +3559,6 @@ msgid "Set Handle"
msgstr ""
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr "Pienoiskuva..."
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr ""
@@ -4061,6 +3583,27 @@ msgid "Update from Scene"
msgstr "Päivitä Scenestä"
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Ease in"
+msgstr "Framen valinta"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
msgid "Modify Curve Point"
msgstr "Muokkaa käyrää"
@@ -4145,22 +3688,18 @@ msgid "Create Occluder Polygon"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr "Muokkaa olemassaolevaa polygonia:"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr "VHP: Siirrä pistettä."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr "OHP: Pyyhi piste."
@@ -4262,6 +3801,10 @@ msgid "Create Outline"
msgstr "Luo ääriviivat"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr ""
@@ -4390,13 +3933,75 @@ msgstr "Satunnainen skaalaus:"
msgid "Populate"
msgstr ""
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create Navigation Polygon"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Marking walkable triangles..."
+msgstr "Varastoidaan paikalliset muutokset..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Partitioning..."
+msgstr "Varoitus"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
msgstr ""
#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
-msgstr "Poista polygoni ja piste"
+msgid "Create Navigation Polygon"
+msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Clear Emission Mask"
@@ -4577,16 +4182,19 @@ msgid "Curve Point #"
msgstr ""
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
-msgstr ""
+msgstr "Siirrä pistettä"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
-msgstr ""
+msgstr "Siirrä pistettä"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
-msgstr ""
+msgstr "Siirrä pistettä"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4648,6 +4256,14 @@ msgid "Scale Polygon"
msgstr "Skaalaa polygonia"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "Muokkaa"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr ""
@@ -4702,63 +4318,10 @@ msgstr "Lataa resurssi"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "Liitä"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr "Liitä BBCode"
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr "Pituus:"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr "Avaa Sample-tiedosto(t)"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr "VIRHE: Samplea ei voitu ladata!"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr "Lisää Sample"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr "Nimeä Sample uudelleen"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr "Poista Sample"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr "16 bittiä"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr "8 bittiä"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr "Muoto"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr "Sävelkorkeus"
-
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Clear Recent Files"
@@ -4850,6 +4413,10 @@ msgstr "Sulje dokumentaatio"
msgid "Close All"
msgstr "Sulje kaikki"
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr "Aja"
+
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Toggle Scripts Panel"
@@ -4880,7 +4447,8 @@ msgstr ""
msgid "Break"
msgstr "Keskeytä"
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr "Jatka"
@@ -4894,18 +4462,6 @@ msgid "Debug with external editor"
msgstr "Avaa editorissa"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr "Ikkuna"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr "Siirry vasemmalle"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr "Siirry oikealle"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
msgstr ""
@@ -4992,8 +4548,9 @@ msgid "Cut"
msgstr "Leikkaa"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "Kopioi"
@@ -5259,10 +4816,6 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr "Kierto %s astetta."
@@ -5279,10 +4832,6 @@ msgid "Top View."
msgstr "Pintanäkymä."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr "Pinta"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr "Takanäkymä."
@@ -5528,6 +5077,10 @@ msgid "Transform"
msgstr "Muunna"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr "Paikalliset koordinaatit"
@@ -5673,6 +5226,11 @@ msgid "Speed (FPS):"
msgstr "Nopeus (FPS):"
#: editor/plugins/sprite_frames_editor_plugin.cpp
+#, fuzzy
+msgid "Loop"
+msgstr "Toisto"
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr "Animaatioframet"
@@ -5685,12 +5243,14 @@ msgid "Insert Empty (After)"
msgstr "Syötä tyhjä (jälkeen)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr "Ylös"
+#, fuzzy
+msgid "Move (Before)"
+msgstr "Poista Node(t)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
-msgstr "Alas"
+#, fuzzy
+msgid "Move (After)"
+msgstr "Siirry vasemmalle"
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
@@ -5770,8 +5330,12 @@ msgid "Remove All"
msgstr "Poista"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
-msgstr "Teema"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Class Items"
@@ -5858,6 +5422,10 @@ msgid "Style"
msgstr "Tyyli"
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr "Fontti"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr "Väri"
@@ -5909,8 +5477,9 @@ msgid "Mirror Y"
msgstr "Peilaa Y"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
-msgstr "Sanko"
+#, fuzzy
+msgid "Paint Tile"
+msgstr "Poimi tile"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Pick Tile"
@@ -5973,6 +5542,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr ""
@@ -6046,34 +5619,60 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr "Vie debugaten"
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
-msgstr "Virheellinen projektin polku, polku täytyy olla olemassa!"
+#, fuzzy
+msgid "The path does not exist."
+msgstr "Tiedostoa ei ole olemassa."
#: editor/project_manager.cpp
-#, fuzzy
-msgid "Invalid project path, project.godot must not exist."
-msgstr "Virheellinen projektin polku, godot.cfg -tiedostoa ei saa olla."
+msgid "Please choose a 'project.godot' file."
+msgstr ""
#: editor/project_manager.cpp
-#, fuzzy
-msgid "Invalid project path, project.godot must exist."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose a folder that does not contain a 'project.godot' file."
msgstr ""
-"Virheellinen projektin polku, godot.cfg -tiedosto täytyy olla olemassa."
#: editor/project_manager.cpp
msgid "Imported Project"
msgstr "Tuotu projekti"
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr "Virheellinen projektin polku (muuttuiko mikään?)."
#: editor/project_manager.cpp
#, fuzzy
+msgid "Couldn't get project.godot in project path."
+msgstr "Ei voitu luoda godot.cfg -tiedostoa projektin polkuun."
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't edit project.godot in project path."
+msgstr "Ei voitu luoda godot.cfg -tiedostoa projektin polkuun."
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Couldn't create project.godot in project path."
msgstr "Ei voitu luoda godot.cfg -tiedostoa projektin polkuun."
@@ -6082,38 +5681,49 @@ msgid "The following files failed extraction from package:"
msgstr "Seuraavien tiedostojen purku paketista epäonnistui:"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Rename Project"
+msgstr "Nimetön projekti"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't get project.godot in the project path."
+msgstr "Ei voitu luoda godot.cfg -tiedostoa projektin polkuun."
+
+#: editor/project_manager.cpp
+msgid "New Game Project"
+msgstr "Uusi peliprojekti"
+
+#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "Tuo olemassaoleva projekti"
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
-msgstr "Projektin polku (täytyy olla olemassa):"
+msgid "Create New Project"
+msgstr "Luo uusi projekti"
+
+#: editor/project_manager.cpp
+msgid "Install Project:"
+msgstr "Asenna projekti:"
#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Projektin nimi:"
#: editor/project_manager.cpp
-msgid "Create New Project"
-msgstr "Luo uusi projekti"
+#, fuzzy
+msgid "Create folder"
+msgstr "Luo kansio"
#: editor/project_manager.cpp
msgid "Project Path:"
msgstr "Projektin polku:"
#: editor/project_manager.cpp
-msgid "Install Project:"
-msgstr "Asenna projekti:"
-
-#: editor/project_manager.cpp
msgid "Browse"
msgstr "Selaa"
#: editor/project_manager.cpp
-msgid "New Game Project"
-msgstr "Uusi peliprojekti"
-
-#: editor/project_manager.cpp
msgid "That's a BINGO!"
msgstr ""
@@ -6122,6 +5732,11 @@ msgid "Unnamed Project"
msgstr "Nimetön projekti"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't open project"
+msgstr "Yhdistä..."
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr "Haluatko varmasti avata useamman kuin yhden projektin?"
@@ -6151,6 +5766,12 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
"You are about the scan %s folders for existing Godot projects. Do you "
"confirm?"
msgstr ""
@@ -6160,10 +5781,6 @@ msgid "Project List"
msgstr "Projektiluettelo"
#: editor/project_manager.cpp
-msgid "Run"
-msgstr "Aja"
-
-#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
@@ -6186,6 +5803,11 @@ msgstr "Poistu"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Restart Now"
+msgstr "Käynnistä uudelleen (s):"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Can't run project"
msgstr "Yhdistä..."
@@ -6222,17 +5844,14 @@ msgid "Add Input Action Event"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
@@ -6293,7 +5912,7 @@ msgstr "Muuta"
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "Akseli"
@@ -6314,31 +5933,31 @@ msgstr ""
msgid "Add Event"
msgstr "Lisää tyhjä"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "Laite"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "Painike"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "Vasen painike."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "Oikea painike."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "Keskimmäinen painike."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr "Rulla ylös."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr "Rulla alas."
@@ -6347,7 +5966,7 @@ msgid "Add Global Property"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6365,6 +5984,15 @@ msgid "Delete Item"
msgstr "Poista syöte"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Can't contain '/' or ':'"
+msgstr "Yhdistä Nodeen:"
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "Virhe tallennettaessa asetuksia."
@@ -6406,6 +6034,15 @@ msgstr ""
#: editor/project_settings_editor.cpp
#, fuzzy
+msgid "Changed Locale Filter"
+msgstr "Muuta kameran kokoa"
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Project Settings (project.godot)"
msgstr "Projektin asetukset"
@@ -6466,6 +6103,29 @@ msgid "Locale"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Locales Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Show all locales"
+msgstr "Näytä luut"
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "Suodattimet"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales:"
+msgstr "Skaalaus:"
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -6515,10 +6175,20 @@ msgid "New Script"
msgstr ""
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Make Unique"
+msgstr "Tee luut"
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr ""
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Convert To %s"
+msgstr "Muunna..."
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr ""
@@ -6556,6 +6226,11 @@ msgid "Select Property"
msgstr "Valitse ominaisuus"
#: editor/property_selector.cpp
+#, fuzzy
+msgid "Select Virtual Method"
+msgstr "Valitse metodi"
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr "Valitse metodi"
@@ -6583,26 +6258,6 @@ msgstr ""
msgid "Reparent"
msgstr ""
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr ""
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr ""
@@ -6730,14 +6385,6 @@ msgid "Sub-Resources:"
msgstr "Resurssit"
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr "Muokkaa ryhmiä"
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr "Muokkaa yhteyksiä"
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr ""
@@ -6922,6 +6569,15 @@ msgid "Invalid base path"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "File exists, will be reused"
+msgstr "Tiedosto on jo olemassa, korvaa?"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr "Virheellinen laajennus"
@@ -6965,6 +6621,10 @@ msgid "Load existing script file"
msgstr "Lataa olemassaoleva skripti"
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr "Kieli"
+
+#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Inherits"
msgstr "Perii:"
@@ -7009,6 +6669,10 @@ msgid "Function:"
msgstr "Funktio:"
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr "Virheet"
@@ -7089,6 +6753,10 @@ msgid "Type"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr "Muoto"
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr ""
@@ -7164,12 +6832,30 @@ msgstr ""
msgid "Change Probe Extents"
msgstr ""
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Library"
+msgstr "Vie kirjasto"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Status"
+msgstr "Tila:"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr ""
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr ""
@@ -7221,10 +6907,6 @@ msgid "GridMap Duplicate Selection"
msgstr "Monista valinta"
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Snap View"
msgstr "Huippunäkymä"
@@ -7327,13 +7009,8 @@ msgstr "Näyttöruudun asetukset"
msgid "Pick Distance:"
msgstr "Poimi tile"
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr " Tiedostot"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7531,10 +7208,18 @@ msgid "Return"
msgstr "Palauta"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr "Kutsu"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Input Value"
msgstr "Vaihda syötteen nimi"
@@ -7895,6 +7580,12 @@ msgid ""
"order for AnimatedSprite3D to display frames."
msgstr ""
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
#, fuzzy
msgid "Raw Mode"
@@ -7905,6 +7596,10 @@ msgid "Add current color as a preset"
msgstr "Lisää nykyinen väri esiasetukseksi"
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Peru"
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr "Huomio!"
@@ -7912,10 +7607,6 @@ msgstr "Huomio!"
msgid "Please Confirm..."
msgstr "Ole hyvä ja vahvista..."
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -7954,6 +7645,439 @@ msgstr ""
"koon. Muutoin tee siitä RenderTarget ja aseta sen sisäinen tekstuuri "
"johonkin Nodeen näkyväksi."
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr "Virhe FreetType:n alustamisessa."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "Tuntematon fonttimuoto."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "Virhe fontin latauksessa."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr "Virheellinen fonttikoko."
+
+#~ msgid "Filter:"
+#~ msgstr "Suodatin:"
+
+#~ msgid "Theme"
+#~ msgstr "Teema"
+
+#~ msgid "Arguments:"
+#~ msgstr "Argumentit:"
+
+#~ msgid "Return:"
+#~ msgstr "Palaa:"
+
+#~ msgid "Added:"
+#~ msgstr "Lisätty:"
+
+#~ msgid "Removed:"
+#~ msgstr "Poistettu:"
+
+#~ msgid "Error saving atlas:"
+#~ msgstr "Virhe tallennettaessa atlas-kuvaa:"
+
+#~ msgid "Error loading scene."
+#~ msgstr "Virhe ladatessa Sceneä."
+
+#~ msgid "Re-Import"
+#~ msgstr "Tuo uudelleen"
+
+#, fuzzy
+#~ msgid "Please wait for scan to complete."
+#~ msgstr "Ole hyvä ja odota läpikäynnin valmistumista."
+
+#~ msgid "Current scene must be saved to re-import."
+#~ msgstr "Nykyinen Scene täytyy tallentaa, jotta se voidaan tuoda uudelleen."
+
+#~ msgid "Save & Re-Import"
+#~ msgstr "Tallenna & tuo uudelleen"
+
+#~ msgid "Re-Importing"
+#~ msgstr "Tuodaan uudelleen"
+
+#~ msgid "Re-Import Changed Resources"
+#~ msgstr "Tuo uudelleen vaihtuneet resurssit"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Status: Needs Re-Import"
+#~ msgstr "Tallenna & tuo uudelleen"
+
+#~ msgid "Same source and destination files, doing nothing."
+#~ msgstr "Sama lähde ja kohdetiedosto, ei toimenpiteitä."
+
+#~ msgid "Same source and destination paths, doing nothing."
+#~ msgstr "Sama lähde ja kohdepolku, ei toimenpiteitä."
+
+#~ msgid "Can't move directories to within themselves."
+#~ msgstr "Hakemisto(j)a ei voida siirtää itseensä."
+
+#, fuzzy
+#~ msgid "Error moving file:\n"
+#~ msgstr "Virhe ladattaessa kuvaa:"
+
+#~ msgid "Pick New Name and Location For:"
+#~ msgstr "Valitse uusi nimi ja sijainti:"
+
+#~ msgid "No files selected!"
+#~ msgstr "Ei valittuja tiedostoja!"
+
+#~ msgid "Info"
+#~ msgstr "Tietoja"
+
+#~ msgid "Re-Import.."
+#~ msgstr "Tuo uudelleen..."
+
+#~ msgid "Target path is empty."
+#~ msgstr "Kohdepolku on tyhjä."
+
+#~ msgid "Target path must exist."
+#~ msgstr "Kohdepolku täytyy olla olemassa."
+
+#~ msgid "Save path is empty!"
+#~ msgstr "Tallennuspolku on tyhjä!"
+
+#~ msgid "Target Path:"
+#~ msgstr "Kohdepolku:"
+
+#~ msgid "Accept"
+#~ msgstr "Hyväksy"
+
+#~ msgid "No source font file!"
+#~ msgstr "Ei fontin lähdetiedostoa!"
+
+#, fuzzy
+#~ msgid ""
+#~ "Invalid file extension.\n"
+#~ "Please use .font."
+#~ msgstr ""
+#~ "Virheellinen tiedostolaajennus.\n"
+#~ "Käytä .fnt -tiedostoa."
+
+#~ msgid "Couldn't save font."
+#~ msgstr "Fonttia ei voitu tallentaa."
+
+#~ msgid "The quick brown fox jumps over the lazy dog."
+#~ msgstr "Ovela kettu punaturkki laiskan koiran takaa kurkki."
+
+#~ msgid "Options:"
+#~ msgstr "Asetukset:"
+
+#~ msgid "Font Import"
+#~ msgstr "Fontin tuonti"
+
+#~ msgid ""
+#~ "This file is already a Godot font file, please supply a BMFont type file "
+#~ "instead."
+#~ msgstr ""
+#~ "Tämä tiedosto on jo Godotin fonttitiedosto, ole hyvä ja syötä BMFont -"
+#~ "tiedosto."
+
+#~ msgid "Failed opening as BMFont file."
+#~ msgstr "BMFont -tiedoston avaus epäonnistui."
+
+#~ msgid "Invalid font custom source."
+#~ msgstr "Virheellinen fontin lähde."
+
+#~ msgid "New Clip"
+#~ msgstr "Uusi klippi"
+
+#~ msgid "Flags"
+#~ msgstr "Liput"
+
+#~ msgid "Optimizer"
+#~ msgstr "Optimoija"
+
+#~ msgid "Max Angle"
+#~ msgstr "Enimmäiskulma"
+
+#~ msgid "Clips"
+#~ msgstr "Klippejä"
+
+#, fuzzy
+#~ msgid "Start(s)"
+#~ msgstr "Alkaa"
+
+#, fuzzy
+#~ msgid "End(s)"
+#~ msgstr "Loppu(u)"
+
+#~ msgid "Filters"
+#~ msgstr "Suodattimet"
+
+#~ msgid "Source path is empty."
+#~ msgstr "Lähdepolku on tyhjä."
+
+#~ msgid "Error importing scene."
+#~ msgstr "Virhe tuotaessa Sceneä."
+
+#~ msgid "Import 3D Scene"
+#~ msgstr "Tuo 3D Scene"
+
+#~ msgid "Same as Target Scene"
+#~ msgstr "Sama kuin kohdescene"
+
+#~ msgid "Shared"
+#~ msgstr "Jaettu"
+
+#, fuzzy
+#~ msgid "Target Texture Folder:"
+#~ msgstr "Kohdetekstuurin kansio:"
+
+#~ msgid "The Following Files are Missing:"
+#~ msgstr "Seuraavat tiedostot puuttuvat:"
+
+#~ msgid "Import Anyway"
+#~ msgstr "Tuo joka tapauksessa"
+
+#~ msgid "Import & Open"
+#~ msgstr "Tuo & Avaa"
+
+#~ msgid "Edited scene has not been saved, open imported scene anyway?"
+#~ msgstr ""
+#~ "Muokattua Sceneä ei ole tallennettu, avaa tuotu Scene joka tapauksessa?"
+
+#~ msgid "Import Image:"
+#~ msgstr "Tuo kuva:"
+
+#~ msgid "Uncompressed"
+#~ msgstr "Purettu"
+
+#~ msgid "Compress Lossless (PNG)"
+#~ msgstr "Pakkaa häviötön (PNG)"
+
+#~ msgid "Compress Lossy (WebP)"
+#~ msgstr "Pakkaa häviöllinen (WebP)"
+
+#~ msgid "Compress (VRAM)"
+#~ msgstr "Pakkaa (VRAM)"
+
+#~ msgid "Texture Compression Quality (WebP):"
+#~ msgstr "Tekstuurin pakkauksen latu (WebP):"
+
+#~ msgid "Texture Options"
+#~ msgstr "Tekstuurin asetukset"
+
+#~ msgid "At least one file needed for Atlas."
+#~ msgstr "Ainakin yksi tiedosto tarvitaan Atlas-kuvaa varten."
+
+#~ msgid "Error importing:"
+#~ msgstr "Virhe tuotaessa:"
+
+#~ msgid "Only one file is required for large texture."
+#~ msgstr "Vain yksi tiedosto vaaditaan suurikokoiselle tekstuurille."
+
+#~ msgid "Max Texture Size:"
+#~ msgstr "Tekstuurin enimmäiskoko:"
+
+#~ msgid "Import Textures for Atlas (2D)"
+#~ msgstr "Tuo tekstuuri Atlakselle (2D)"
+
+#~ msgid "Cell Size:"
+#~ msgstr "Solun koko:"
+
+#~ msgid "Large Texture"
+#~ msgstr "Suurikokoinen tekstuuri"
+
+#~ msgid "Import Large Textures (2D)"
+#~ msgstr "Tuo suurikokoisia tekstuureita (2D)"
+
+#~ msgid "Source Texture"
+#~ msgstr "Lähdetekstuuri"
+
+#~ msgid "Source Texture(s)"
+#~ msgstr "Lähdetekstuuri(t)"
+
+#~ msgid "Import Textures"
+#~ msgstr "Tuo tekstuurit"
+
+#~ msgid "2D Texture"
+#~ msgstr "2D tekstuuri"
+
+#~ msgid "3D Texture"
+#~ msgstr "Kolmiulotteinen tekstuuri"
+
+#~ msgid "Atlas Texture"
+#~ msgstr "Atlastekstuuri"
+
+#~ msgid ""
+#~ "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files "
+#~ "to the project."
+#~ msgstr ""
+#~ "HUOMAA: 2D tekstuurin tuonti ei ole pakollista. Voit kopioida png/jpg -"
+#~ "tiedostot projektiin."
+
+#~ msgid "Crop empty space."
+#~ msgstr "Leikkaa pois tyhjä tila."
+
+#~ msgid "Texture"
+#~ msgstr "Tekstuuri"
+
+#~ msgid "Import Large Texture"
+#~ msgstr "Tuo suurikokoinen tekstuuri"
+
+#~ msgid "Load Source Image"
+#~ msgstr "Lataa lähdekuva"
+
+#, fuzzy
+#~ msgid "Slicing"
+#~ msgstr "Siivutus"
+
+#~ msgid "Couldn't save large texture:"
+#~ msgstr "Isoa tekstuuria ei voitu tallentaa:"
+
+#, fuzzy
+#~ msgid "Build Atlas For:"
+#~ msgstr "Luo atlas:"
+
+#~ msgid "Loading Image:"
+#~ msgstr "Ladataan kuvaa:"
+
+#~ msgid "Couldn't load image:"
+#~ msgstr "Kuvaa ei voitu ladata:"
+
+#~ msgid "Converting Images"
+#~ msgstr "Muunnetaan kuvia"
+
+#~ msgid "Couldn't save atlas image:"
+#~ msgstr "Atlas-kuvaa ei voitu tallentaa:"
+
+#~ msgid "Invalid source!"
+#~ msgstr "Virheellinen lähde!"
+
+#~ msgid "Column"
+#~ msgstr "Kolumni"
+
+#, fuzzy
+#~ msgid "No items to import!"
+#~ msgstr "Ei tuotavia asioita!"
+
+#~ msgid "No target path!"
+#~ msgstr "Ei kohdepolkua!"
+
+#~ msgid "Import Translations"
+#~ msgstr "Tuo käännökset"
+
+#~ msgid "Couldn't import!"
+#~ msgstr "Ei voitu tuoda!"
+
+#~ msgid "Import Translation"
+#~ msgstr "Tuo käännös"
+
+#~ msgid "Ignore First Row"
+#~ msgstr "Sivuuta ensimmäinen rivi"
+
+#~ msgid "Compress"
+#~ msgstr "Tiivistä"
+
+#, fuzzy
+#~ msgid "Add to Project (project.godot)"
+#~ msgstr "Lisää projektiin (godot.cfg)"
+
+#~ msgid "Import Languages:"
+#~ msgstr "Tuo kielet:"
+
+#~ msgid "Translation"
+#~ msgstr "Siirtymä"
+
+#~ msgid "Transfer to Lightmaps:"
+#~ msgstr "Muunna Lightmapiksi:"
+
+#~ msgid "Zoom (%):"
+#~ msgstr "Lähennä (%):"
+
+#~ msgid "Skeleton.."
+#~ msgstr "Luuranko..."
+
+#~ msgid "Zoom Reset"
+#~ msgstr "Palauta lähennys"
+
+#~ msgid "Zoom Set.."
+#~ msgstr "Aseta Zoomaus..."
+
+#~ msgid "Set a Value"
+#~ msgstr "Aseta arvo"
+
+#~ msgid "Parse BBCode"
+#~ msgstr "Liitä BBCode"
+
+#~ msgid "Length:"
+#~ msgstr "Pituus:"
+
+#~ msgid "Open Sample File(s)"
+#~ msgstr "Avaa Sample-tiedosto(t)"
+
+#~ msgid "ERROR: Couldn't load sample!"
+#~ msgstr "VIRHE: Samplea ei voitu ladata!"
+
+#~ msgid "Add Sample"
+#~ msgstr "Lisää Sample"
+
+#~ msgid "Rename Sample"
+#~ msgstr "Nimeä Sample uudelleen"
+
+#~ msgid "Delete Sample"
+#~ msgstr "Poista Sample"
+
+#~ msgid "16 Bits"
+#~ msgstr "16 bittiä"
+
+#~ msgid "8 Bits"
+#~ msgstr "8 bittiä"
+
+#~ msgid "Pitch"
+#~ msgstr "Sävelkorkeus"
+
+#~ msgid "Window"
+#~ msgstr "Ikkuna"
+
+#~ msgid "Move Right"
+#~ msgstr "Siirry oikealle"
+
+#~ msgid "Up"
+#~ msgstr "Ylös"
+
+#~ msgid "Down"
+#~ msgstr "Alas"
+
+#~ msgid "Bucket"
+#~ msgstr "Sanko"
+
+#~ msgid "Invalid project path, the path must exist!"
+#~ msgstr "Virheellinen projektin polku, polku täytyy olla olemassa!"
+
+#, fuzzy
+#~ msgid "Invalid project path, project.godot must not exist."
+#~ msgstr "Virheellinen projektin polku, godot.cfg -tiedostoa ei saa olla."
+
+#, fuzzy
+#~ msgid "Invalid project path, project.godot must exist."
+#~ msgstr ""
+#~ "Virheellinen projektin polku, godot.cfg -tiedosto täytyy olla olemassa."
+
+#~ msgid "Project Path (Must Exist):"
+#~ msgstr "Projektin polku (täytyy olla olemassa):"
+
+#~ msgid "Edit Groups"
+#~ msgstr "Muokkaa ryhmiä"
+
+#~ msgid "Edit Connections"
+#~ msgstr "Muokkaa yhteyksiä"
+
+#, fuzzy
+#~ msgid "Tiles"
+#~ msgstr " Tiedostot"
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl+"
+
#~ msgid "Close scene? (Unsaved changes will be lost)"
#~ msgstr "Sulje scene? (tallentamattomat muutokset menetetään)"
@@ -7964,9 +8088,6 @@ msgstr ""
#~ "Avaa projektinhallinta?\n"
#~ "(tallentamattomat muutokset menetetään)"
-#~ msgid "Expand to Parent"
-#~ msgstr "Laajenna Parentiin"
-
#~ msgid "just pressed"
#~ msgstr "juuri painettu"
diff --git a/editor/translations/fr.po b/editor/translations/fr.po
index 4e3aad6cf6..9e2f80498d 100644
--- a/editor/translations/fr.po
+++ b/editor/translations/fr.po
@@ -1,5 +1,6 @@
# French translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# Antoine Carrier <ac.g392@gmail.com>, 2017.
@@ -9,6 +10,7 @@
# finkiki <specialpopol@gmx.fr>, 2016.
# Gilles Roudiere <gilles.roudiere@gmail.com>, 2017.
# Hugo Locurcio <hugo.l@openmailbox.org>, 2016-2017.
+# keltwookie <keltwookie@protonmail.com>, 2017.
# Marc <marc.gilleron@gmail.com>, 2016-2017.
# Nathan Lovato <nathan.lovato.art@gmail.com>, 2017.
# Nicolas Lehuen <nicolas@lehuen.com>, 2016.
@@ -16,6 +18,7 @@
# Onyx Steinheim <thevoxelmanonyx@gmail.com>, 2016.
# rafeu <duchainer@gmail.com>, 2016-2017.
# Rémi Verschelde <rverschelde@gmail.com>, 2016-2017.
+# Robin Arys <robinarys@hotmail.com>, 2017.
# Roger BR <drai_kin@hotmail.com>, 2016.
# Thomas Baijot <thomasbaijot@gmail.com>, 2016.
#
@@ -23,8 +26,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-07-03 19:36+0000\n"
-"Last-Translator: Gilles Roudiere <gilles.roudiere@gmail.com>\n"
+"PO-Revision-Date: 2017-10-25 22:46+0000\n"
+"Last-Translator: Robin Arys <robinarys@hotmail.com>\n"
"Language-Team: French <https://hosted.weblate.org/projects/godot-engine/"
"godot/fr/>\n"
"Language: fr\n"
@@ -32,7 +35,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 2.16-dev\n"
+"X-Generator: Weblate 2.17\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -208,10 +211,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr "Créer %d NOUVELLES pistes et insérer des clés ?"
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -375,264 +377,6 @@ msgstr "Modifier type de valeur du tableau"
msgid "Change Array Value"
msgstr "Modifier valeur du tableau"
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr "Libérer"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr "Version :"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr "Contenu:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr "Voir Fichiers"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr "Description :"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr "Installer"
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "Fermer"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr "Impossible de résoudre le nom de l'hôte:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Impossible à résoudre."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr "Erreur de connection, veuillez essayer à nouveau."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Connection impossible."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr "Connection à l'hôte impossible:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr "Pas de réponse de l'hôte:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Pas de réponse."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "La requête a échoué, code retourné:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr "Req. a Échoué."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr "La requête a échoué, trop de redirections"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr "Boucle de Redirection."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Échec:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr "Vérification du téléchargement échouée, le fichier a été altéré."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr "Attendu:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr "A:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr "Vérification de brouillage sha256 échouée"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr "Erreur dans le téléchargement d'une ressource:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr "Succès!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr "Récupération:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr "Résolution.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connecting.."
-msgstr "Connexion en cours.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Requesting.."
-msgstr "Envoi d'une requête.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Error making request"
-msgstr "Erreur d'enregistrement de la ressource !"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr "Inactif"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr "Réessayer"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Download Error"
-msgstr "Télécharger"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr "Le téléchargement de cette ressource est déjà en cours!"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "first"
-msgstr "prem"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr "préc"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr "suiv"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr "dern"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "Tout"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "Rechercher :"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Rechercher"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr "Importer"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr "Extensions"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "Trier :"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr "Inverser"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "Catégorie :"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "Site :"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr "Support…"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr "Officiel"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "Communauté"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr "En test"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr "Fichier ZIP de données"
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr "Liste des méthodes pour « %s » :"
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "Appel"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr "Liste des méthodes :"
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr "Paramètres :"
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr "Retourne :"
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr "Aller à la ligne"
@@ -669,6 +413,14 @@ msgstr "Mots entiers"
msgid "Selection Only"
msgstr "Sélection uniquement"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Rechercher"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr "Trouver"
@@ -701,11 +453,11 @@ msgstr "Avertir lors du remplacement"
msgid "Skip"
msgstr "Passer"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "Zoomer"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr "Dézoomer"
@@ -774,6 +526,20 @@ msgstr "Différé"
msgid "Oneshot"
msgstr "One-shot"
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "Fermer"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr "Connecter"
@@ -799,7 +565,7 @@ msgstr "Connecter…"
msgid "Disconnect"
msgstr "Déconnecter"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr "Signaux"
@@ -816,12 +582,25 @@ msgstr "Favoris :"
msgid "Recent:"
msgstr "Récents :"
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "Rechercher :"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr "Correspondances :"
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "Description :"
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr "Rechercher un remplacement pour :"
@@ -881,6 +660,12 @@ msgid "Owners Of:"
msgstr "Propriétaires de :"
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr ""
+"Supprimer les fichiers sélectionnés de ce projet ? (pas d'annulation "
+"possible)"
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -891,10 +676,9 @@ msgstr ""
"Les supprimer tout de même ? (pas d'annulation possible)"
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
-msgstr ""
-"Supprimer les fichiers sélectionnés de ce projet ? (pas d'annulation "
-"possible)"
+#, fuzzy
+msgid "Cannot remove:\n"
+msgstr "Impossible à résoudre."
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -955,26 +739,19 @@ msgstr "La communauté Godot vous dit merci !"
#: editor/editor_about.cpp
msgid "Thanks!"
-msgstr "Merci !"
+msgstr "Merci!"
#: editor/editor_about.cpp
msgid "Godot Engine contributors"
-msgstr "Contributeurs Godot Engine"
-
-#: editor/editor_about.cpp
-#, fuzzy
-msgid "Authors"
-msgstr "Auteur :"
+msgstr "Contributeurs de Godot Engine"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Project Founders"
-msgstr "Gestionnaire de projets"
+msgstr "Fondateurs du projet"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Lead Developer"
-msgstr "Développeurs"
+msgstr "Développeur principal"
#: editor/editor_about.cpp editor/project_manager.cpp
msgid "Project Manager"
@@ -985,118 +762,155 @@ msgid "Developers"
msgstr "Développeurs"
#: editor/editor_about.cpp
-msgid "License"
+msgid "Authors"
+msgstr "Auteurs"
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
msgstr ""
#: editor/editor_about.cpp
-msgid "Thirdparty License"
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Bronze Donors"
+msgstr "Cloner en dessous"
+
+#: editor/editor_about.cpp
+msgid "Donors"
msgstr ""
#: editor/editor_about.cpp
+msgid "License"
+msgstr "Licence"
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr "Licence tierce partie"
+
+#: editor/editor_about.cpp
msgid ""
"Godot Engine relies on a number of thirdparty free and open source "
"libraries, all compatible with the terms of its MIT license. The following "
"is an exhaustive list of all such thirdparty components with their "
"respective copyright statements and license terms."
msgstr ""
+"Le moteur Godot s'appuie sur un certain nombre de bibliothèques gratuites et "
+"open source tierce parties, toutes compatibles avec les termes de sa licence "
+"MIT. Voici une liste exhaustive de tous ces composants tiers avec leurs "
+"énoncés de droits d'auteur respectifs ainsi que les termes de leurs licences."
#: editor/editor_about.cpp
-#, fuzzy
msgid "All Components"
-msgstr "Contenu:"
+msgstr "Tous les composants"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Components"
-msgstr "Contenu:"
+msgstr "Composants"
#: editor/editor_about.cpp
msgid "Licenses"
-msgstr ""
+msgstr "Licences"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Error opening package file, not in zip format."
-msgstr ""
+msgstr "Erreur d'ouverture de paquetage, pas au format zip."
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Uncompressing Assets"
-msgstr "Non compressé"
+msgstr "Ressource non compressé"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Package Installed Successfully!"
msgstr "Paquetage installé avec succès !"
#: editor/editor_asset_installer.cpp
-#, fuzzy
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr "Succès!"
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr "Installer"
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
-msgstr "Paquetage installé avec succès !"
+msgstr "Installeur de paquetage"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
-msgstr ""
+msgstr "Haut- parleurs"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Effect"
-msgstr "Ajouter vide"
+msgstr "Ajouter effet"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Rename Audio Bus"
-msgstr "Ouvrir la Mise en Page des Bus Audio"
+msgstr "Renommer bus audio"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Toggle Audio Bus Solo"
-msgstr "Ouvrir la Mise en Page des Bus Audio"
+msgstr "Basculer vers transport audio solo"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Toggle Audio Bus Mute"
-msgstr "Ouvrir la Mise en Page des Bus Audio"
+msgstr "Basculer vers désactivation de transport audio"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Bypass Effects"
-msgstr ""
+msgstr "Basculer vers effets de contournement de transport audio"
#: editor/editor_audio_buses.cpp
msgid "Select Audio Bus Send"
-msgstr ""
+msgstr "Sélectionner l'envoi de tranport audio"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus Effect"
-msgstr ""
+msgstr "Ajouter effet de tranport audio"
#: editor/editor_audio_buses.cpp
msgid "Move Bus Effect"
-msgstr ""
+msgstr "Déplacer effet de transport"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Bus Effect"
-msgstr "Supprimer la selection"
+msgstr "Supprimer l'effet de transport"
#: editor/editor_audio_buses.cpp
msgid "Audio Bus, Drag and Drop to rearrange."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-#, fuzzy
-msgid "Bus options"
-msgstr "Options de débogage"
+msgstr "Transport audio, glisser-déposer pour réorganiser."
#: editor/editor_audio_buses.cpp
msgid "Solo"
-msgstr ""
+msgstr "Solo"
#: editor/editor_audio_buses.cpp
msgid "Mute"
-msgstr ""
+msgstr "Assourdir"
#: editor/editor_audio_buses.cpp
msgid "Bypass"
-msgstr ""
+msgstr "Contournement"
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr "Options de tranport"
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
@@ -1105,75 +919,74 @@ msgstr "Dupliquer"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Volume"
+msgstr "Réinitialiser le zoom"
+
+#: editor/editor_audio_buses.cpp
msgid "Delete Effect"
-msgstr "Supprimer la selection"
+msgstr "Supprimer l'effet"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Audio Bus"
-msgstr "Ajouter un bus"
+msgstr "Ajouter un transport audio"
#: editor/editor_audio_buses.cpp
msgid "Master bus can't be deleted!"
-msgstr ""
+msgstr "Le transport maître ne peut pas être supprimé !"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Audio Bus"
-msgstr "Supprimer la disposition"
+msgstr "Supprimer le transport audio"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Duplicate Audio Bus"
-msgstr "Dupliquer l'animation"
+msgstr "Dupliquer le transport audio"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Bus Volume"
+msgstr "Réinitialiser le zoom"
+
+#: editor/editor_audio_buses.cpp
msgid "Move Audio Bus"
-msgstr "Déplacer l'action"
+msgstr "Déplacer le transport audio"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Save Audio Bus Layout As.."
-msgstr "Enregistrer la Disposition des Bus Audio Sous.."
+msgstr "Enregistrer l'agencement du transport audio sous.."
#: editor/editor_audio_buses.cpp
msgid "Location for New Layout.."
-msgstr "Emplacement de la Nouvelle Mise en Page.."
+msgstr "Emplacement du nouvel agencement.."
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Open Audio Bus Layout"
-msgstr "Ouvrir la Mise en Page des Bus Audio"
+msgstr "Ouvrir agencement de transport audio"
#: editor/editor_audio_buses.cpp
msgid "There is no 'res://default_bus_layout.tres' file."
-msgstr ""
+msgstr "Il n'existe aucun 'res://default_bus_layout.tres'."
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Invalid file, not an audio bus layout."
-msgstr ""
-"Extension de fichier non valide.\n"
-"Veuillez utiliser .fnt."
+msgstr "Fichier invalide, pas un agencement de transport audio."
#: editor/editor_audio_buses.cpp
msgid "Add Bus"
-msgstr "Ajouter un bus"
+msgstr "Ajouter un transport"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Create a new Bus Layout."
-msgstr "Créer une nouvelle ressource"
+msgstr "Créer une nouvel agencement de tranport."
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr "Charger"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Load an existing Bus Layout."
-msgstr "Charger une ressource existante depuis la disque et la modifier."
+msgstr "Charger un agencement de tranport existant."
#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -1181,18 +994,16 @@ msgid "Save As"
msgstr "Enregistrer sous"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Save this Bus Layout to a file."
-msgstr "Enregistrer la Disposition des Bus Audio Sous.."
+msgstr "Sauvegarder l'agencement de ce transport vers un fichier."
#: editor/editor_audio_buses.cpp editor/import_dock.cpp
-#, fuzzy
msgid "Load Default"
-msgstr "Par défaut"
+msgstr "Charger défaut"
#: editor/editor_audio_buses.cpp
msgid "Load the default Bus Layout."
-msgstr ""
+msgstr "Charger l'agencement de transport par défaut."
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
@@ -1265,7 +1076,7 @@ msgid "Rearrange Autoloads"
msgstr "Ré-organiser les AutoLoads"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "Chemin :"
@@ -1273,9 +1084,7 @@ msgstr "Chemin :"
msgid "Node Name:"
msgstr "Nom de nœud :"
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr "Nom"
@@ -1300,27 +1109,27 @@ msgid "Updating scene.."
msgstr "Mise à jour de la scène…"
#: editor/editor_dir_dialog.cpp
-#, fuzzy
msgid "Please select a base directory first"
-msgstr "Veuillez enregistrer la scène d'abord."
+msgstr "Veuillez sélectionner un répertoire de base en premier"
#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "Choisir un répertoire"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "Créer un dossier"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "Nom :"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "Impossible de créer le dossier."
@@ -1340,30 +1149,6 @@ msgstr "Empaquetage"
msgid "Template file not found:\n"
msgstr "Fichier modèle introuvable :\n"
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr "Ajouté :"
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr "Supprimé :"
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr "Erreur de sauvegarde de l'atlas :"
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr "Impossible d'enregistrer la sous-texture atlas :"
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr "Exportation pour %s"
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr "Configuration…"
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "Le fichier existe, l'écraser ?"
@@ -1448,22 +1233,23 @@ msgstr "Déplacer le favori vers le haut"
msgid "Move Favorite Down"
msgstr "Déplacer le favori vers le bas"
+#: editor/editor_file_dialog.cpp
+#, fuzzy
+msgid "Go to parent folder"
+msgstr "Impossible de créer le dossier."
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "Répertoires et fichiers :"
#: editor/editor_file_dialog.cpp
msgid "Preview:"
-msgstr "Aperçu :"
+msgstr "Aperçu:"
#: editor/editor_file_dialog.cpp editor/script_editor_debugger.cpp
#: scene/gui/file_dialog.cpp
msgid "File:"
-msgstr "Fichier :"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "Filtre :"
+msgstr "Fichier:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
@@ -1490,6 +1276,10 @@ msgstr "Liste des classes :"
msgid "Search Classes"
msgstr "Chercher dans les classes"
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr "Dessus"
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr "Classe :"
@@ -1506,15 +1296,30 @@ msgstr "Héritée par :"
msgid "Brief Description:"
msgstr "Brève description :"
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Members"
+msgstr "Membres :"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "Membres :"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Public Methods"
+msgstr "Méthodes publiques :"
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr "Méthodes publiques :"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "GUI Theme Items"
+msgstr "Items de thème GUI :"
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr "Items de thème GUI :"
@@ -1524,53 +1329,85 @@ msgstr "Signaux :"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Enumerations"
+msgstr "Recensements :"
+
+#: editor/editor_help.cpp
msgid "Enumerations:"
-msgstr "Animations"
+msgstr "Recensements:"
#: editor/editor_help.cpp
msgid "enum "
-msgstr ""
+msgstr "enum_ "
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Constants"
+msgstr "Constantes :"
#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Constantes :"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Description"
+msgstr "Description :"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Properties"
+msgstr "Propriétés :"
+
+#: editor/editor_help.cpp
msgid "Property Description:"
msgstr "Description des propriétés :"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Methods"
+msgstr "Liste des méthodes :"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr "Description de la méthode :"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr "Chercher du texte"
#: editor/editor_log.cpp
-#, fuzzy
msgid "Output:"
-msgstr " Sortie :"
+msgstr "Sortie:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "Effacer"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr "Erreur d'enregistrement de la ressource !"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr "Enregistrer la ressource sous…"
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Je vois…"
@@ -1587,6 +1424,30 @@ msgid "Error while saving."
msgstr "Erreur lors de l'enregistrement."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Can't open '%s'."
+msgstr "Impossible d'opérer sur « .. »"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while parsing '%s'."
+msgstr "Erreur lors de l'enregistrement."
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Missing '%s' or its dependencies."
+msgstr "La scène « %s » a des dépendences cassées :"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while loading '%s'."
+msgstr "Erreur lors de l'enregistrement."
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr "Enregistrement de la scène"
@@ -1599,9 +1460,8 @@ msgid "Creating Thumbnail"
msgstr "Création de l'aperçu"
#: editor/editor_node.cpp
-#, fuzzy
msgid "This operation can't be done without a tree root."
-msgstr "Cette opération ne peut être réalisée sans une scène."
+msgstr "Cette opération ne peut être réalisée sans une arborescence racine."
#: editor/editor_node.cpp
msgid ""
@@ -1647,6 +1507,33 @@ msgid "Restored default layout to base settings."
msgstr "Disposition par défaut remise à zéro."
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr "Copier paramètres"
@@ -1679,7 +1566,6 @@ msgid "There is no defined scene to run."
msgstr "Il n'y a pas de scène définie pour être lancée."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"No main scene has ever been defined, select one?\n"
"You can change it later in \"Project Settings\" under the 'application' "
@@ -1687,7 +1573,7 @@ msgid ""
msgstr ""
"Aucune scène principale n'a jamais été définie, en sélectionner une ?\n"
"Vous pouvez la modifier ultérieurement dans les « Paramètres du projet » "
-"dans la catégorie « application »."
+"sous la catégorie « application »."
#: editor/editor_node.cpp
msgid ""
@@ -1737,22 +1623,20 @@ msgid "Quick Open Script.."
msgstr "Ouvrir un script rapidement…"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Close"
-msgstr "Enregistrer un fichier"
+msgstr "Enregistrer & fermer"
#: editor/editor_node.cpp
msgid "Save changes to '%s' before closing?"
-msgstr ""
+msgstr "Sauvegarder modifications de '%s' avant de quitter ?"
#: editor/editor_node.cpp
msgid "Save Scene As.."
msgstr "Enregistrer la scène sous…"
#: editor/editor_node.cpp
-#, fuzzy
msgid "No"
-msgstr "Nœud"
+msgstr "Non"
#: editor/editor_node.cpp
msgid "Yes"
@@ -1776,9 +1660,8 @@ msgid "Export Tile Set"
msgstr "Exporter un ensemble de tuiles"
#: editor/editor_node.cpp
-#, fuzzy
msgid "This operation can't be done without a selected node."
-msgstr "Cette opération ne peut être réalisée sans une scène."
+msgstr "Cette opération ne peut être réalisée sans noeud sélectionné."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1809,42 +1692,61 @@ msgid "Exit the editor?"
msgstr "Quitter l'éditeur ?"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Project Manager?"
-msgstr "Gestionnaire de projets"
+msgstr "Ouvrir gestionnaire de projets ?"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Quit"
-msgstr "Enregistrer un fichier"
+msgstr "Sauvegarder & quitter"
#: editor/editor_node.cpp
msgid "Save changes to the following scene(s) before quitting?"
msgstr ""
+"Sauvegarder les modifications sur la (les) scène(s) suivante(s) avant de "
+"quitter ?"
#: editor/editor_node.cpp
msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
+"Enregistrer les modifications sur la (les) scène(s) suivante(s) avant "
+"d'ouvrir le gestionnaire de projet ?"
+
+#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Choisir une scène principale"
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
-msgstr ""
+#, fuzzy
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
+msgstr "impossible d'activer le plugin depuis :"
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+#, fuzzy
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
+"Impossible de trouver le champ de script pour le plugin dans : 'res://addons/"
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
-msgstr ""
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "Impossible de charger le script d'ajout depuis le chemin :"
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
-msgstr ""
+#, fuzzy
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
+msgstr "Impossible de charger le script d'ajout depuis le chemin :"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
+msgstr "Impossible de charger le script d'ajout depuis le chemin :"
#: editor/editor_node.cpp
msgid ""
@@ -1856,7 +1758,7 @@ msgstr ""
"Pour y apporter des modification, une scène fille peut être créée."
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr "Oups"
@@ -1870,14 +1772,15 @@ msgstr ""
"le répertoire du projet."
#: editor/editor_node.cpp
-msgid "Error loading scene."
-msgstr "Erreur lors du chargement de la scène."
-
-#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
msgstr "La scène « %s » a des dépendences cassées :"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Clear Recent Scenes"
+msgstr "Effacer les fichiers récents"
+
+#: editor/editor_node.cpp
msgid "Save Layout"
msgstr "Enregistrer la disposition"
@@ -1900,18 +1803,17 @@ msgstr "%d fichier(s) supplémentaire(s)"
#: editor/editor_node.cpp
msgid "%d more file(s) or folder(s)"
-msgstr "%s fichier(s) ou dossier(s) supplémentaire(s)"
+msgstr "%d fichier(s) ou dossier(s) supplémentaire(s)"
#: editor/editor_node.cpp
msgid "Distraction Free Mode"
-msgstr "Mode sans distraction"
+msgstr "Mode Sans Distraction"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Toggle distraction-free mode."
-msgstr "Mode sans distraction"
+msgstr "Basculer vers mode sans-distraction."
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr "Scène"
@@ -2112,9 +2014,8 @@ msgstr ""
"plus efficace avec le système de fichiers réseau."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Editor"
-msgstr "Modifier"
+msgstr "Editeur"
#: editor/editor_node.cpp editor/settings_config_dialog.cpp
msgid "Editor Settings"
@@ -2141,20 +2042,21 @@ msgid "Classes"
msgstr "Classes"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Online Docs"
-msgstr "Fermer les documentations"
+msgstr "Documentation en ligne"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Q&A"
msgstr "Questions et Réponses"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Issue Tracker"
msgstr "Traqueur de problèmes"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "Communauté"
+
#: editor/editor_node.cpp
msgid "About"
msgstr "À propos"
@@ -2163,7 +2065,7 @@ msgstr "À propos"
msgid "Play the project."
msgstr "Lancer le projet."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr "Jouer"
@@ -2179,7 +2081,7 @@ msgstr "Mettre en pause la scène"
msgid "Stop the scene."
msgstr "Arrêter la scène."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr "Arrêter"
@@ -2252,6 +2154,16 @@ msgid "Object properties."
msgstr "Propriétés de l'objet."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Changes may be lost!"
+msgstr "Changer le groupe d'images"
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr "Importer"
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr "Système de fichiers"
@@ -2265,15 +2177,7 @@ msgstr "Sortie"
#: editor/editor_node.cpp
msgid "Don't Save"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr "Ré-importer"
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr "Mettre à jour"
+msgstr "Ne pas enregistrer"
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
@@ -2300,9 +2204,8 @@ msgid "Open & Run a Script"
msgstr "Ouvrir et exécuter un script"
#: editor/editor_node.cpp
-#, fuzzy
msgid "New Inherited"
-msgstr "Nouvelle scène héritée…"
+msgstr "Nouveau hérité"
#: editor/editor_node.cpp
msgid "Load Errors"
@@ -2313,40 +2216,52 @@ msgid "Select"
msgstr "Sélectionner"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 2D Editor"
-msgstr "Ouvrir dans l'éditeur"
+msgstr "Ouvrir éditeur 2D"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 3D Editor"
-msgstr "Ouvrir dans l'éditeur"
+msgstr "Ouvrir éditeur 3D"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Script Editor"
-msgstr "Ouvrir dans l'éditeur"
+msgstr "Ouvrir éditeur de script"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Asset Library"
-msgstr "Bibliothèque d'exportation"
+msgstr "Ouvrir bibliothèque de ressource"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the next Editor"
-msgstr "Ouvrir dans l'éditeur"
+msgstr "Ouvrir éditeur suivant"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the previous Editor"
-msgstr "Ouvrir dans l'éditeur"
+msgstr "Ouvrir éditeur précédant"
+
+#: editor/editor_plugin.cpp
+#, fuzzy
+msgid "Creating Mesh Previews"
+msgstr "Création de la bibliothèque de maillages"
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr "Aperçu…"
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr "Extensions installées :"
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr "Mettre à jour"
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Version :"
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr "Auteur :"
@@ -2380,8 +2295,8 @@ msgstr "% d'image"
#: editor/editor_profiler.cpp
#, fuzzy
-msgid "Fixed Frame %"
-msgstr "Cadre prédéfini %"
+msgid "Physics Frame %"
+msgstr "Frame fixe %"
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
msgid "Time:"
@@ -2396,39 +2311,20 @@ msgid "Self"
msgstr "Soi"
#: editor/editor_profiler.cpp
-#, fuzzy
msgid "Frame #:"
-msgstr "Image #:"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr "Veuillez attendre la fin du scan."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr "La scène actuelle doit être enregistrée afin de pouvoir ré-importer."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr "Enregistrer et ré-importer"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr "Ré-importation"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr "Ré-importer les ressources modifiées"
+msgstr "Frame # :"
#: editor/editor_run_native.cpp
msgid "Select device from the list"
-msgstr ""
+msgstr "Sélectionner appareil depuis la liste"
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
"Please add a runnable preset in the export menu."
msgstr ""
+"Aucun préréglage d'exportation exécutable trouvé pour cette plate-forme. \n"
+"Ajoutez un préréglage exécutable dans le menu d'exportation."
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
@@ -2503,71 +2399,56 @@ msgid "Can't open export templates zip."
msgstr "Impossible d'ouvrir le ZIP de modèles d'exportation."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Invalid version.txt format inside templates."
-msgstr "Le format de version.txt invalide dans les modèles."
+msgstr "Format de version.txt invalide dans les modèles."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid ""
"Invalid version.txt format inside templates. Revision is not a valid "
"identifier."
msgstr ""
-"Le format de version.txt invalide dans les modèles. Revision n'est pas un "
+"Format de version.txt invalide dans les modèles. Revision n'est pas un "
"identifiant valide."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "No version.txt found inside templates."
-msgstr "Le fichier version.txt n'a pas été trouvé dans les modèles."
+msgstr "Aucun version.txt n'a été trouvé dans les modèles."
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Error creating path for templates:\n"
-msgstr "Erreur de sauvegarde de l'atlas :"
+msgstr "Erreur lors de la création du chemin pour les modèles:\n"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Extracting Export Templates"
-msgstr "Chargement des modèles d'exportation"
+msgstr "Extraction des modèles d'exportation"
#: editor/export_template_manager.cpp
msgid "Importing:"
msgstr "Importation :"
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr "Chargement des modèles d'exportation"
-
-#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Current Version:"
-msgstr "Version actuelle :"
+msgstr "Version courante :"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Installed Versions:"
-msgstr "Extensions installées :"
+msgstr "Versions installées :"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Install From File"
-msgstr "Projets récents :"
+msgstr "Installer depuis fichier :"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Remove Template"
-msgstr "Supprimer l'item"
+msgstr "Supprimer le modèle"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Select template file"
-msgstr "Supprimer les fichiers sélectionnés ?"
+msgstr "Sélectionner le fichier de modèle"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Export Template Manager"
-msgstr "Chargement des modèles d'exportation"
+msgstr "Gestionnaire d'export de modèles"
#: editor/file_type_cache.cpp
msgid "Can't open file_type_cache.cch for writing, not saving file type cache!"
@@ -2580,105 +2461,121 @@ msgid "Cannot navigate to '"
msgstr "Ne peux pas acceder à '"
#: editor/filesystem_dock.cpp
-#, fuzzy
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
-msgstr "Enregistrer et ré-importer"
+"Status: Import of file failed. Please fix file and reimport manually."
+msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid ""
"\n"
"Source: "
-msgstr "Source :"
+msgstr ""
+"\n"
+"Source : "
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
-msgstr "Fichiers source et destination identiques, rien à faire."
+#, fuzzy
+msgid "Cannot move/rename resources root."
+msgstr "Impossible de charger ou traiter la police source."
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
-msgstr ""
+#, fuzzy
+msgid "Cannot move a folder into itself.\n"
+msgstr "Impossible d'importer un fichier par-dessus lui-même :"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
-msgstr "Chemins source et destination identiques, rien à faire."
+#, fuzzy
+msgid "Error moving:\n"
+msgstr "Erreur lors du déplacement du répertoire :\n"
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
-msgstr "Impossible de déplacer des répertoires vers eux-mêmes."
+#, fuzzy
+msgid "Unable to update dependencies:\n"
+msgstr "La scène « %s » a des dépendences cassées :"
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "No name provided"
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error moving file:\n"
-msgstr "Erreur de chargement d'image :"
+msgid "Provided name contains invalid characters"
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "Erreur d'importation :"
+msgid "No name provided."
+msgstr "Renommer ou déplacer…"
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
-msgstr "Impossible d'opérer sur « .. »"
+#, fuzzy
+msgid "Name contains invalid characters."
+msgstr "Caractères valides :"
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
-msgstr "Entrez un nouveau nom et chemin pour :"
+#, fuzzy
+msgid "A file or folder with this name already exists."
+msgstr "Le nom du groupe existe déjà !"
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
-msgstr "Pas de fichiers sélectionnés !"
+#, fuzzy
+msgid "Renaming file:"
+msgstr "Renommer la variable"
#: editor/filesystem_dock.cpp
#, fuzzy
+msgid "Renaming folder:"
+msgstr "Renommer le nœud"
+
+#: editor/filesystem_dock.cpp
msgid "Expand all"
-msgstr "Étendre au parent"
+msgstr "Développer tout"
#: editor/filesystem_dock.cpp
msgid "Collapse all"
msgstr "Réduire tout"
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
-msgstr "Montrer dans le gestionnaire de fichiers"
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
-msgstr "Instance"
+msgid "Copy Path"
+msgstr "Copier le chemin"
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
-msgstr "Modifier les dépendances…"
+#, fuzzy
+msgid "Rename.."
+msgstr "Renommer"
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
-msgstr "Voir les propriétaires…"
+msgid "Move To.."
+msgstr "Déplacer vers…"
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr "Copier le chemin"
+#, fuzzy
+msgid "New Folder.."
+msgstr "Créer un dossier"
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
-msgstr "Renommer ou déplacer…"
+msgid "Show In File Manager"
+msgstr "Montrer dans le gestionnaire de fichiers"
#: editor/filesystem_dock.cpp
-msgid "Move To.."
-msgstr "Déplacer vers…"
+msgid "Instance"
+msgstr "Instance"
#: editor/filesystem_dock.cpp
-msgid "Info"
-msgstr "Information"
+msgid "Edit Dependencies.."
+msgstr "Modifier les dépendances…"
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
-msgstr "Ré-importer…"
+msgid "View Owners.."
+msgstr "Voir les propriétaires…"
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2707,11 +2604,18 @@ msgid ""
"Scanning Files,\n"
"Please Wait.."
msgstr ""
+"Analyse des fichiers en cours,\n"
+"Veuillez patienter..."
#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "Déplacer"
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr "Renommer"
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr "Ajouter au groupe"
@@ -2721,682 +2625,157 @@ msgid "Remove from Group"
msgstr "Supprimer du groupe"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Import as Single Scene"
-msgstr "Importation de la scène…"
+msgstr "Importer comme scène unique"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Animations"
+msgstr "Importer avec matériaux séparés"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
-msgstr ""
+msgstr "Importer avec matériaux séparés"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects"
-msgstr ""
+msgstr "Importer avec des objets séparés"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects+Materials"
-msgstr ""
+msgstr "Importer avec objets+matériaux séparés"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Objects+Animations"
+msgstr "Importer avec objets+matériaux séparés"
#: editor/import/resource_importer_scene.cpp
#, fuzzy
+msgid "Import with Separate Materials+Animations"
+msgstr "Importer avec matériaux séparés"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr "Importer avec objets+matériaux séparés"
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
-msgstr "Importer une scène 3D"
+msgstr "Importer comme scènes multiples"
#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes+Materials"
-msgstr ""
+msgstr "Importer comme scènes+matériaux multiples"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr "Importer une scène"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr "Importation de la scène…"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr "Lancement du script personnalisé…"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr "Impossible de charger le script de post-importation :"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
"Script de post-importation invalide ou corrompu (vérifiez la console) :"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr "Erreur d'exécution du script de post-importation :"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr "Enregistrement…"
#: editor/import_dock.cpp
msgid "Set as Default for '%s'"
-msgstr ""
+msgstr "Définir comme défaut pour '%s'"
#: editor/import_dock.cpp
msgid "Clear Default for '%s'"
-msgstr ""
+msgstr "Effacer défaut pour '%s'"
#: editor/import_dock.cpp
-#, fuzzy
msgid " Files"
-msgstr "Fichier"
+msgstr " Fichiers"
#: editor/import_dock.cpp
-#, fuzzy
msgid "Import As:"
-msgstr "Importer"
+msgstr "Importer comme :"
#: editor/import_dock.cpp editor/property_editor.cpp
msgid "Preset.."
msgstr "Pré-réglage…"
#: editor/import_dock.cpp
-#, fuzzy
msgid "Reimport"
msgstr "Ré-importer"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr "Pas de masques de bits à importer !"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr "Le chemin de destination est vide."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr ""
-"Le chemin de destination doit être un chemin complet vers une ressource."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr "Le chemin de destination doit exister."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr "Le chemin de sauvegarde est vide !"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr "Importer des BitMasks"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr "Texture(s) source :"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr "Chemin de destination :"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr "Accepter"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#, fuzzy
-msgid "Bit Mask"
-msgstr "Masque de bits"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr "Pas de fichier de police source !"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr "Pas de ressource de police de destination !"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-"Extension de fichier non valide.\n"
-"Veuillez utiliser .fnt."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr "Impossible de charger ou traiter la police source."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr "Impossible d'enregistrer la police."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr "Police source :"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr "Taille de la police source :"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr "Ressource de destination :"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr "Voix ambiguë d'un cœur qui, au zéphyr, préfère les jattes de kiwis."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr "Test :"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr "Options :"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr "Importation d'une police"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-"Ce fichier est déjà un fichier de police Godot, veuillez fournir un fichier "
-"de type BMFont à la place."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr "Impossible d'ouvrir le fichier en tant que fichier BMFont."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr "Erreur à l'initialisation de Freetype."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "Format de police inconnu."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "Erreur lors du chargement de la police."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr "Taille de police invalide."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr "Source personnalisée de police invalide."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Police"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr "Pas de maillages à importer !"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr "Importer un maillage"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr "Maillage(s) source :"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr "Maillage"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "Surface %d"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr "Pas d'échantillons à importer !"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr "Importer des échantillons audio"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr "Échantillon(s) source :"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr "Échantillon audio"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr "Nouvelle séquence"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr "Options d'animation"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr "Drapeaux"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr "FPS de calcul :"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr "Optimiseur"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr "Erreur linéaire maximale"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr "Erreur angulaire maximale"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr "Angle maximal"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr "Séquences"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr "Départ(s)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr "Fin(s)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr "Boucle"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr "Filtres"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr "Le chemin source est vide."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr "Impossible de charger le script de post-importation."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr "Script invalide ou cassé de post-importation."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr "Erreur à l'importation de la scène."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr "Importer une scène 3D"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr "Scène source :"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr "Identique à la scène de destination"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr "Partagé"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr "Dossier de destination des textures :"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr "Script de post-traitement :"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr "Type de nœud racine personnalisé :"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr "Auto."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr "Nom de nœud racine :"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr "Les fichiers suivants sont manquants :"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr "Importer quand même"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Annuler"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr "Importer et ouvrir"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-"La scène modifiée actuellement n'a pas été enregistrée, ouvrir la scène "
-"importée quand même ?"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr "Importer une image :"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr "Impossible d'importer un fichier par-dessus lui-même :"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr "Impossible de rendre le chemin local : %s (déjà local)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr "Animation de scène 3D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr "Non compressé"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr "Compression sans perte (PNG)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr "Compression avec perte (WebP)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr "Compression GPU (VRAM)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr "Format de texture"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr "Qualité de compression de la texture (WebP) :"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr "Options de texture"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr "Veuillez spécifier des fichiers !"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr "Il faut au moins un fichier pour créer un atlas."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr "Erreur d'importation :"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr "Un seul fichier est nécessaire pour créer une grande texture."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr "Taille de texture maximale :"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr "Importer des textures pour un atlas (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr "Taille des cellules :"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr "Grande texture"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr "Importer des grandes textures (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
-msgstr "Texture source"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
+msgstr "Ensemble multi-nœud"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
-msgstr "Texture d'atlas de base"
+#: editor/node_dock.cpp
+msgid "Groups"
+msgstr "Groupes"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
-msgstr "Texture(s) source"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
+msgstr "Sélectionnez un nœud pour editer des signaux et des groupes."
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
-msgstr "Importer des textures pour la 2D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
+msgstr "Créer un polygone"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
-msgstr "Importer des textures pour la 3D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Modifier le polygone"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
-msgstr "Importer des textures"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
+msgid "Insert Point"
+msgstr "Insertion"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
-msgstr "Texture 2D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Modifier le polygone (supprimer un point)"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
-msgstr "Texture 3D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
+msgstr "Retirer Polygone et Point"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
-msgstr "Texture atlas"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
+msgstr "Créer un nouveau polygone à partir de rien."
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
-"REMARQUE : L'import de textures 2D n'est pas obligatoire. Copiez directement "
-"les fichiers PNG ou JPEG dans le projet."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr "Rogner l'espace vide."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr "Texture"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr "Importer une grande texture"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr "Charger une image source"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr "Découpage"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr "Insertion"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr "Enregistrement"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr "Impossible d'enregistrer la grande texture :"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr "Construire l'atlas pour :"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr "Chargement de l'image :"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr "Impossible de charger l'image :"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr "Conversion des images"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr "Rognage des images"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr "Découpage des images"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr "Impossible d'enregistrer l'image d'atlas :"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr "Impossible d'enregistrer la texture convertie :"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr "Source invalide !"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr "Source de traduction invalide !"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr "Colonne"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr "Langage"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr "Pas d'objets à importer !"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr "Pas de chemin de destination !"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr "Importer des traductions"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr "Impossible d'importer !"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr "Importer une traduction"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr "CSV source :"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr "Ignorer la première ligne"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr "Compresser"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
-msgid "Add to Project (project.godot)"
-msgstr "Ajouter au projet (engine.cfg)"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr "Importer les langues :"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr "Traduction"
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr "Ensemble multi-nœud"
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr "Groupes"
-
-#: editor/node_dock.cpp
-#, fuzzy
-msgid "Select a Node to edit Signals and Groups."
-msgstr "Sélectionnez un nœud pour modifier des signaux et des groupes."
+"Editer polygones existants :\n"
+"Bouton gauche : Déplacer point\n"
+"Ctrl+Bouton gauche : Diviser section.\n"
+"Bouton droit: Effeacer point."
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Toggle Autoplay"
@@ -3415,9 +2794,8 @@ msgid "Change Animation Name:"
msgstr "Modifier le nom de l'animation :"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Delete Animation?"
-msgstr "Dupliquer l'animation"
+msgstr "Supprimer l'animation ?"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
@@ -3443,12 +2821,10 @@ msgid "Add Animation"
msgstr "Ajouter une animation"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Blend Next Changed"
-msgstr "Mélange Suivant Changé"
+msgstr "Mélange suivant modifié"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Change Blend Time"
msgstr "Changer le temps de mélange"
@@ -3486,16 +2862,14 @@ msgstr ""
"Jouer l'animation sélectionnée à rebours depuis la position actuelle. (A)"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Play selected animation backwards from end. (Shift+A)"
-msgstr "Lire l'animation sélectionnée à rebours de la fin. (Maj + A)"
+msgstr "Lire l'animation sélectionnée à rebours depuis la fin. (Maj + A)"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Stop animation playback. (S)"
msgstr "Arrêter la lecture de l'animation. (S)"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Play selected animation from start. (Shift+D)"
msgstr "Lire l'animation sélectionnée depuis le début. (Maj + D)"
@@ -3536,7 +2910,6 @@ msgid "Autoplay on Load"
msgstr "Lecture automatique au chargement"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Edit Target Blend Times"
msgstr "Modifier les temps de mélange des cibles"
@@ -3558,16 +2931,14 @@ msgstr "Nom de l'animation :"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
msgstr "Erreur !"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Blend Times:"
-msgstr "Temps de mélange"
+msgstr "Temps de mélange :"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Next (Auto Queue):"
@@ -3587,9 +2958,8 @@ msgid "New name:"
msgstr "Nouveau nom :"
#: editor/plugins/animation_tree_editor_plugin.cpp
-#, fuzzy
msgid "Edit Filters"
-msgstr "Modifier les filtres de nœud"
+msgstr "Editer les filtres"
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
@@ -3670,10 +3040,6 @@ msgid "Delete Input"
msgstr "Supprimer l'entrée"
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr "Renommer"
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr "L'arbre d'animations est valide."
@@ -3729,64 +3095,181 @@ msgstr "Modifier les filtres de nœud"
msgid "Filters.."
msgstr "Filtres…"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
-msgstr "Analyse de %d triangles :"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr "Libérer"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
-msgstr "Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
+msgstr "Contenu:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
-msgstr "Paramètres du calculateur d'éclairage :"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
+msgstr "Voir Fichiers"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
-msgstr "Analyse de la géométrie"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
+msgstr "Impossible de résoudre le nom de l'hôte:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
-msgstr "Correction des lumières"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
+msgstr "Impossible à résoudre."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
-msgstr "Création du BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
+msgstr "Erreur de connection, veuillez essayer à nouveau."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
-msgstr "Création de l'octree de lumière"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Connection impossible."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
-msgstr "Création de la texture d'octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
+msgstr "Connection à l'hôte impossible:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
-msgstr "Transfert vers des lightmaps :"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
+msgstr "Pas de réponse de l'hôte:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
-msgstr "Allocation de la texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Pas de réponse."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
-msgstr "Calcul de la texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
+msgstr "La requête a échoué, code retourné:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
-msgstr "Post-traitement de la texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
+msgstr "Req. a Échoué."
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
-msgstr "Calculer !"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
+msgstr "La requête a échoué, trop de redirections"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
+msgstr "Boucle de Redirection."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Échec:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr "Vérification du téléchargement échouée, le fichier a été altéré."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr "Attendu:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr "A:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr "Vérification de brouillage sha256 échouée"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr "Erreur dans le téléchargement d'une ressource:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr "Récupération:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr "Résolution.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting.."
+msgstr "Connexion en cours.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr "Envoi d'une requête.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
+msgstr "Erreur lors de la requête"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr "Inactif"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr "Réessayer"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr "Erreur de téléchargement"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr "Le téléchargement de cette ressource est déjà en cours!"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr "premier"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr "préc"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr "suiv"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr "dern"
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
-msgstr "Remettre le processus de calcul de l'éclairage à zéro (recommencer)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "Tout"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr "Extensions"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "Trier :"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr "Inverser"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "Catégorie :"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "Site :"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr "Support…"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "Officiel"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr "En test"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr "Fichier ZIP de données"
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr "Aperçu"
@@ -3829,12 +3312,18 @@ msgid "Edit CanvasItem"
msgstr "Modifier le CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+#, fuzzy
+msgid "Anchors only"
+msgstr "Ancre"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Change Anchors and Margins"
msgstr "Modifier les ancres"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
-msgstr "Zoom (%) :"
+msgid "Change Anchors"
+msgstr "Modifier les ancres"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Paste Pose"
@@ -3867,9 +3356,8 @@ msgid "Move Mode"
msgstr "Mode déplacement"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Rotate Mode"
-msgstr "Mode rotation (E)"
+msgstr "Mode rotation"
#: editor/plugins/canvas_item_editor_plugin.cpp
#: editor/plugins/spatial_editor_plugin.cpp
@@ -3889,60 +3377,78 @@ msgid "Pan Mode"
msgstr "Mode navigation"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
-msgstr "Verrouiller l'objet sélectionné (il ne pourra plus être déplacé)."
+#, fuzzy
+msgid "Toggles snapping"
+msgstr "Placer un point d'arrêt"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
-msgstr "Déverouiller l'objet sélectionné (il pourra être déplacé de nouveau)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
+msgstr "Aligner sur la grille"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
-msgstr "Rendre la sélection des enfants de l'objet impossible."
+#, fuzzy
+msgid "Snapping options"
+msgstr "Options d'animation"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
-msgstr "Rendre la sélection des enfants de l'objet de nouveau possible."
+#, fuzzy
+msgid "Snap to grid"
+msgstr "Mode d'aimantation :"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "Modifier"
+msgid "Use Rotation Snap"
+msgstr "Rotation alignée"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
-msgstr "Aligner sur la grille"
+#, fuzzy
+msgid "Configure Snap..."
+msgstr "Configurer la grille…"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
-msgstr "Afficher la grille"
+msgid "Snap Relative"
+msgstr "Alignement relatif"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
-msgstr "Rotation alignée"
+msgid "Use Pixel Snap"
+msgstr "Aligner au pixel près"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
-msgstr "Alignement relatif"
+msgid "Smart snapping"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
-msgstr "Configurer la grille…"
+#, fuzzy
+msgid "Snap to parent"
+msgstr "Étendre au parent"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
-msgstr "Aligner au pixel près"
+msgid "Snap to node anchor"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
-msgstr "Squelette…"
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr "Verrouiller l'objet sélectionné (il ne pourra plus être déplacé)."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr "Déverouiller l'objet sélectionné (il pourra être déplacé de nouveau)."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
+msgstr "Rendre la sélection des enfants de l'objet impossible."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
+msgstr "Rendre la sélection des enfants de l'objet de nouveau possible."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Make Bones"
@@ -3970,12 +3476,19 @@ msgid "View"
msgstr "Affichage"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
-msgstr "Réinitialiser le zoom"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr "Afficher la grille"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
-msgstr "Définir le zoom…"
+#, fuzzy
+msgid "Show helpers"
+msgstr "Afficher les os"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Show rulers"
+msgstr "Afficher les os"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -3986,8 +3499,9 @@ msgid "Frame Selection"
msgstr "Cadrer la sélection"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
-msgstr "Ancre"
+#, fuzzy
+msgid "Layout"
+msgstr "Enregistrer la disposition"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Keys"
@@ -4010,48 +3524,60 @@ msgid "Clear Pose"
msgstr "Vider la pose"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
-msgstr "Définir une valeur"
+msgid "Drag pivot from mouse position"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
-msgstr "Aligner (pixels) :"
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "Définir courbe hors position"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Divide grid step by 2"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Add %s"
-msgstr "Tout ajouter"
+msgstr "Ajouter %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Adding %s..."
msgstr "Ajout de %s..."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr "Créer un nœud"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr "Erreur d'instanciation de la scène depuis %s"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr "OK :("
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr "Pas de parent dans lequel instancier l'enfant."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr ""
"Cette opération ne peut être réalisée uniquement avec un seul nœud "
"sélectionné."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Change default type"
-msgstr "Changer la valeur par défaut"
+msgstr "Changer le type par défaut"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
@@ -4061,45 +3587,6 @@ msgstr ""
"Glisser-déposer + Maj : Ajouter un nœud frère\n"
"Glisser-déposer + Alt : Modifier le type de nœud"
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr "Créer un polygone"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr "Modifier le polygone"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr "Modifier le polygone (supprimer un point)"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Créer un nouveau polygone à partir de rien."
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "Créer un Poly3D"
@@ -4109,14 +3596,6 @@ msgid "Set Handle"
msgstr "Définir la poignée"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr "Création de la bibliothèque de maillages"
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr "Aperçu…"
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr "Supprimer l'objet %d ?"
@@ -4139,57 +3618,70 @@ msgid "Update from Scene"
msgstr "Mettre à jour depuis la scène"
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
-msgid "Modify Curve Point"
-msgstr "Modifier la carte de courbes"
+msgid "Ease in"
+msgstr "Ease in"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Ease out"
+msgstr "Ease out"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr "Modifier le point de courbe"
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Tangent"
-msgstr "Modifier la carte de courbes"
+msgstr "Modifier la tangente de courbes"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Load Curve Preset"
-msgstr "Charger une ressource"
+msgstr "Charger un pré-réglage de courbe"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Add point"
-msgstr "Ajouter une entrée"
+msgstr "Ajouter un point"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Remove point"
-msgstr "Supprimer le chemin du point"
+msgstr "Supprimer point"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Left linear"
-msgstr "Linéaire"
+msgstr "Linéaire gauche"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Right linear"
-msgstr "Vue de droite"
+msgstr "Linéaire droite"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Load preset"
-msgstr "Charger une ressource"
+msgstr "Charger prérèglage"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Remove Curve Point"
-msgstr "Supprimer le chemin du point"
+msgstr "Supprimer point de courbe"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Toggle Curve Linear Tangent"
-msgstr ""
+msgstr "Basculer vers tangente linéaire de courbe"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Hold Shift to edit tangents individually"
-msgstr ""
+msgstr "Maintenez l'appui sur Maj pour éditer les tangentes individuellement"
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -4217,45 +3709,39 @@ msgid ""
"No OccluderPolygon2D resource on this node.\n"
"Create and assign one?"
msgstr ""
+"Aucune ressource OccluderPolygon2D sur ce nœud. En créer et en attribuer un ?"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Créer un polygone occulteur"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr "Modifier un polygone existant :"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr "Bouton gauche : déplacer un point."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr "Contrôle + Bouton gauche : séparer le segment."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr "Bouton droit : effacer un point."
#: editor/plugins/line_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove Point from Line2D"
-msgstr "Supprimer le point d'une courbe"
+msgstr "Supprimer point de Line2D"
#: editor/plugins/line_2d_editor_plugin.cpp
-#, fuzzy
msgid "Add Point to Line2D"
-msgstr "Ajouter un point à la courbe"
+msgstr "Ajouter point à Line2D"
#: editor/plugins/line_2d_editor_plugin.cpp
-#, fuzzy
msgid "Move Point in Line2D"
-msgstr "Déplacer le point dans la courbe"
+msgstr "Déplacer point de Line2D"
#: editor/plugins/line_2d_editor_plugin.cpp
#: editor/plugins/path_2d_editor_plugin.cpp
@@ -4288,9 +3774,8 @@ msgid "Add Point (in empty space)"
msgstr "Ajouter un point (dans un espace vide)"
#: editor/plugins/line_2d_editor_plugin.cpp
-#, fuzzy
msgid "Split Segment (in line)"
-msgstr "Diviser le segment (en courbe)"
+msgstr "Diviser le segment (dans la ligne)"
#: editor/plugins/line_2d_editor_plugin.cpp
#: editor/plugins/path_2d_editor_plugin.cpp
@@ -4344,6 +3829,10 @@ msgid "Create Outline"
msgstr "Créer le contour"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr "Maillage"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr "Créer un corps statique Trimesh"
@@ -4476,14 +3965,83 @@ msgstr "Échelle aléatoire :"
msgid "Populate"
msgstr "Peupler"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr "Calculer !"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+#, fuzzy
+msgid "Bake the navigation mesh.\n"
+msgstr "Créer un maillage de navigation"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+#, fuzzy
+msgid "Clear the navigation mesh."
+msgstr "Créer un maillage de navigation"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating heightfield..."
+msgstr "Création de l'octree de lumière"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Marking walkable triangles..."
+msgstr "Chaînes traduisibles…"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Partitioning..."
+msgstr "Avertissement"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating contours..."
+msgstr "Création de la texture d'octree"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating polymesh..."
+msgstr "Créer un maillage de contour…"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Converting to native navigation mesh..."
+msgstr "Créer un maillage de navigation"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Parsing Geometry..."
+msgstr "Analyse de la géométrie"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
+msgstr ""
+
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Create Navigation Polygon"
msgstr "Créer Polygone de Navigation"
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
-msgstr "Retirer Polygone et Point"
-
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Clear Emission Mask"
msgstr "Effacer Masque d'Émission"
@@ -4496,6 +4054,7 @@ msgstr "Générer AABB"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
msgstr ""
+"Ne peut définir qu'un point dans un matériau de processus ParticlesMaterial"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Error loading image:"
@@ -4519,9 +4078,8 @@ msgstr "Charger Masque d'Émission"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Particles"
-msgstr "Vertex"
+msgstr "Particules"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
@@ -4533,9 +4091,8 @@ msgid "Generation Time (sec):"
msgstr "Temps de Génération (sec):"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Emission Mask"
-msgstr "Définir le masque d'émission"
+msgstr "Masque d'émission"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Capture from Pixel"
@@ -4554,14 +4111,12 @@ msgid "Node does not contain geometry (faces)."
msgstr "Nœud ne contient pas de géométrie (faces)."
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "A processor material of type 'ParticlesMaterial' is required."
msgstr "Un matériel processeur de type 'ParticlesMaterial' est requis."
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Faces contain no area!"
-msgstr "Faces ne contiennent pas de zone!"
+msgstr "Des faces ne contiennent pas de zone !"
#: editor/plugins/particles_editor_plugin.cpp
msgid "No faces!"
@@ -4596,7 +4151,6 @@ msgid "Surface Points"
msgstr "Points de Surface"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Surface Points+Normal (Directed)"
msgstr "Points de Surface+Normale (Dirigée)"
@@ -4617,14 +4171,12 @@ msgid "Remove Point from Curve"
msgstr "Supprimer Point de la Courbe"
#: editor/plugins/path_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove Out-Control from Curve"
-msgstr "Supprimer le point d'une courbe"
+msgstr "Supprimer Out-Control d'une courbe"
#: editor/plugins/path_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove In-Control from Curve"
-msgstr "Supprimer le point d'une courbe"
+msgstr "Supprimer In-Control d'une courbe"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
@@ -4637,11 +4189,11 @@ msgstr "Déplacer le point dans la courbe"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move In-Control in Curve"
-msgstr ""
+msgstr "Déplacer In-Control dans courbe"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Move Out-Control in Curve"
-msgstr ""
+msgstr "Déplacer Out-Control dans courbe"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Select Control Points (Shift+Drag)"
@@ -4662,16 +4214,19 @@ msgid "Curve Point #"
msgstr "Point de courbe #"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
msgstr "Définir la position du point de la courbe"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
-msgstr ""
+msgstr "Définir courbe en position"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
-msgstr ""
+msgstr "Définir courbe hors position"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4682,14 +4237,12 @@ msgid "Remove Path Point"
msgstr "Supprimer le chemin du point"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Remove Out-Control Point"
-msgstr "Supprimer le chemin du point"
+msgstr "Supprimer point Out-Control"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Remove In-Control Point"
-msgstr "Supprimer le chemin du point"
+msgstr "Supprimer point In-Control"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
@@ -4732,6 +4285,14 @@ msgid "Scale Polygon"
msgstr "Mettre à l'échelle le polygone"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "Modifier"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr "Polygone -> UV"
@@ -4786,73 +4347,19 @@ msgstr "Charger une ressource"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "Coller"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr "Analyser le BBCode"
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr "Longueur :"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr "Ouvrir un ou des fichiers d'échantillons"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr "ERREUR : Impossible de charger l'échantillon !"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr "Ajouter un échantillon"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr "Renommer l'échantillon"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr "Supprimer l'échantillon"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr "16 bits"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr "8 bits"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr "Stéréo"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr "Mono"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr "Format"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr "Hauteur"
-
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Clear Recent Files"
-msgstr "Effacer les os"
+msgstr "Effacer les fichiers récents"
#: editor/plugins/script_editor_plugin.cpp
msgid ""
"Close and save changes?\n"
"\""
-msgstr ""
+msgstr "Quitter et sauvegarder les modifications?"
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4880,7 +4387,7 @@ msgstr "Enregistrer le thème sous…"
#: editor/plugins/script_editor_plugin.cpp
msgid " Class Reference"
-msgstr ""
+msgstr " Référence de classe"
#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
@@ -4903,7 +4410,6 @@ msgid "Save All"
msgstr "Tout enregistrer"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Soft Reload Script"
msgstr "Recharger le script (mode doux)"
@@ -4935,10 +4441,13 @@ msgstr "Fermer les documentations"
msgid "Close All"
msgstr "Fermer tout"
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr "Lancer"
+
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Toggle Scripts Panel"
-msgstr "Basculer le favori"
+msgstr "Basculer vers le panneau de scripts"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -4964,7 +4473,8 @@ msgstr "Rentrer"
msgid "Break"
msgstr "Mettre en pause"
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr "Continuer"
@@ -4973,26 +4483,12 @@ msgid "Keep Debugger Open"
msgstr "Garder le débogueur ouvert"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Debug with external editor"
-msgstr "Ouvrir dans l'éditeur"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr "Fenêtre"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr "Aller à gauche"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr "Aller à droite"
+msgstr "Deboguer avec un éditeur externe"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Open Godot online documentation"
-msgstr "Chercher dans la documentation de référence."
+msgstr "Ouvrir la documentation Godot en ligne"
#: editor/plugins/script_editor_plugin.cpp
msgid "Search the class hierarchy."
@@ -5011,9 +4507,8 @@ msgid "Go to next edited document."
msgstr "Aller au document modifié suivant."
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Discard"
-msgstr "Discret"
+msgstr "Abandonner"
#: editor/plugins/script_editor_plugin.cpp
msgid "Create Script"
@@ -5048,28 +4543,27 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
-msgstr ""
+msgstr "Seules les ressources du système de fichiers peuvent être abaissées."
#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
msgstr "Prélever une couleur"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Case"
-msgstr "Conversion des images"
+msgstr "Cas de conversion"
#: editor/plugins/script_text_editor.cpp
msgid "Uppercase"
-msgstr ""
+msgstr "Majuscule"
#: editor/plugins/script_text_editor.cpp
msgid "Lowercase"
-msgstr ""
+msgstr "Minuscule"
#: editor/plugins/script_text_editor.cpp
msgid "Capitalize"
-msgstr ""
+msgstr "Capitaliser"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp scene/gui/line_edit.cpp
@@ -5078,8 +4572,9 @@ msgid "Cut"
msgstr "Couper"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "Copier"
@@ -5098,9 +4593,8 @@ msgid "Move Down"
msgstr "Déplacer vers le bas"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Delete Line"
-msgstr "Supprimer le point"
+msgstr "Supprimer ligne"
#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
@@ -5128,11 +4622,11 @@ msgstr "Supprimer les espaces de fin de ligne"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent To Spaces"
-msgstr ""
+msgstr "Convertir indentations en espaces"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent To Tabs"
-msgstr ""
+msgstr "Convertir indentations en espaces"
#: editor/plugins/script_text_editor.cpp
msgid "Auto Indent"
@@ -5156,14 +4650,12 @@ msgid "Goto Previous Breakpoint"
msgstr "Aller au point d'arrêt précédent"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert To Uppercase"
-msgstr "Convertir vers…"
+msgstr "Convertir en majuscule"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert To Lowercase"
-msgstr "Convertir vers…"
+msgstr "Convertir en minuscule"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
@@ -5190,7 +4682,7 @@ msgstr "Aide contextuelle"
#: editor/plugins/shader_editor_plugin.cpp
msgid "Shader"
-msgstr ""
+msgstr "Shader"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Scalar Constant"
@@ -5234,15 +4726,15 @@ msgstr "Modifier une fonction vecteur"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Scalar Uniform"
-msgstr ""
+msgstr "Modifier échelle"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Vec Uniform"
-msgstr ""
+msgstr "Modifier vecteur"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change RGB Uniform"
-msgstr ""
+msgstr "Modifier RGB"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Default Value"
@@ -5250,15 +4742,15 @@ msgstr "Changer la valeur par défaut"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change XForm Uniform"
-msgstr ""
+msgstr "Modifier XForm"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Texture Uniform"
-msgstr ""
+msgstr "Modifier texture"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Cubemap Uniform"
-msgstr ""
+msgstr "Modifier Cubemap"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Comment"
@@ -5345,10 +4837,6 @@ msgid "View Plane Transform."
msgstr "Transformation du plan de vue."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr "Mise à l'échelle %s%%."
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr "Rotation de %s degrés."
@@ -5365,10 +4853,6 @@ msgid "Top View."
msgstr "Vue de dessus."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr "Dessus"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr "Vue arrière."
@@ -5410,29 +4894,25 @@ msgstr "Clé d'animation insérée."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
-msgstr ""
+msgstr "Objets dessinés"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Material Changes"
-msgstr "Repeindre quand modifié"
+msgstr "Modifications de materiau"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Shader Changes"
-msgstr "Repeindre quand modifié"
+msgstr "Modification de shader"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Surface Changes"
-msgstr "Repeindre quand modifié"
+msgstr "Modifications de surface"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Draw Calls"
-msgstr ""
+msgstr "Appels de graphes"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Vertices"
msgstr "Vertex"
@@ -5453,66 +4933,58 @@ msgid "Display Overdraw"
msgstr "Affichage des surimpressions"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Display Unshaded"
-msgstr "Affichage sans ombrage"
+msgstr "Afficher sans ombrage"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Environment"
-msgstr "Environnement"
+msgstr "Voir environnement"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Gizmos"
-msgstr "Gizmos"
+msgstr "Voir les gadgets"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Information"
-msgstr ""
+msgstr "Voir information"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Audio Listener"
msgstr "Écouteur audio"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Doppler Enable"
-msgstr "Activer"
+msgstr "Activer Doppler"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
-msgstr ""
+msgstr "Vue libre gauche"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Right"
-msgstr ""
+msgstr "Vue libre droite"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Freelook Forward"
-msgstr "Avancer"
+msgstr "Vue libre de devant"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Freelook Backwards"
-msgstr "À l'envers"
+msgstr "Vue libre de derrière"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Up"
-msgstr ""
+msgstr "Vue libre de dessus"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Freelook Down"
-msgstr "Molette vers le bas."
+msgstr "Vue libre de dessous"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Speed Modifier"
-msgstr ""
+msgstr "Modificateur de vitesse de la vue libre"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "preview"
msgstr "Aperçu"
@@ -5521,17 +4993,18 @@ msgid "XForm Dialog"
msgstr "Dialogue XForm"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Select Mode (Q)\n"
-msgstr "Sélectionner le mode"
+msgstr "Sélectionner le mode (Q)\n"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid ""
"Drag: Rotate\n"
"Alt+Drag: Move\n"
"Alt+RMB: Depth list selection"
-msgstr "Alt + Bouton droit : sélection détaillée par liste"
+msgstr ""
+"Glisser : Rotation\n"
+"ALt+glisser : Déplacer\n"
+"Alt + Bouton droit : sélection détaillée par liste"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
@@ -5590,30 +5063,30 @@ msgid "Align Selection With View"
msgstr "Aligner la sélection avec la vue"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Select"
-msgstr "Sélectionner"
+msgstr "Outil sélection"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Move"
-msgstr "Déplacer"
+msgstr "Outil déplacement"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Rotate"
-msgstr "Contrôle: Tourner"
+msgstr "Outil rotation"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Scale"
-msgstr "Échelle :"
+msgstr "Outil échelle"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform"
msgstr "Transformation"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr "Configurer la grille…"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr "Coordonnées locales"
@@ -5731,7 +5204,6 @@ msgid "Resource clipboard is empty or not a texture!"
msgstr "Le presse-papiers des ressources est vide ou n'est pas une texture !"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-#, fuzzy
msgid "Paste Frame"
msgstr "Coller Frame"
@@ -5760,6 +5232,10 @@ msgid "Speed (FPS):"
msgstr "Vitesse (FPS) :"
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr "Boucle"
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr "Trames d'animation"
@@ -5772,21 +5248,22 @@ msgid "Insert Empty (After)"
msgstr "Insérer vide (après)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr "Haut"
+#, fuzzy
+msgid "Move (Before)"
+msgstr "Déplacer le(s) nœud(s)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
-msgstr "Bas"
+#, fuzzy
+msgid "Move (After)"
+msgstr "Aller à gauche"
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "Aperçu de la StyleBox :"
#: editor/plugins/texture_region_editor_plugin.cpp
-#, fuzzy
msgid "Set Region Rect"
-msgstr "Région de texture"
+msgstr "Définir région rectangulaire"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
@@ -5813,7 +5290,6 @@ msgid "Offset:"
msgstr "Décalage :"
#: editor/plugins/texture_region_editor_plugin.cpp
-#, fuzzy
msgid "Step:"
msgstr "Pas (s) :"
@@ -5847,18 +5323,20 @@ msgid "Remove Item"
msgstr "Supprimer l'item"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All Items"
-msgstr "Supprimer des items de classe"
+msgstr "Supprimer tous"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All"
-msgstr "Supprimer"
+msgstr "Supprimer tout"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
-msgstr "Thème"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Class Items"
@@ -5942,11 +5420,14 @@ msgid "Style"
msgstr "Style"
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr "Police"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr "Couleur"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase Selection"
msgstr "Supprimer la sélection"
@@ -5955,18 +5436,16 @@ msgid "Paint TileMap"
msgstr "Peindre sur la TileMap"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Line Draw"
-msgstr "Linéaire"
+msgstr "Dessin de ligne"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rectangle Paint"
-msgstr ""
+msgstr "Peinture de rectangle"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Bucket Fill"
-msgstr "Seau"
+msgstr "Remplissage du seau"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -5993,8 +5472,9 @@ msgid "Mirror Y"
msgstr "Miroir Y"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
-msgstr "Seau"
+#, fuzzy
+msgid "Paint Tile"
+msgstr "Peindre sur la TileMap"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Pick Tile"
@@ -6045,24 +5525,25 @@ msgid "Error"
msgstr "Erreur"
#: editor/project_export.cpp
-#, fuzzy
msgid "Runnable"
-msgstr "Activer"
+msgstr "Activable"
#: editor/project_export.cpp
-#, fuzzy
msgid "Delete patch '"
-msgstr "Supprimer l'entrée"
+msgstr "Supprimer patch"
#: editor/project_export.cpp
-#, fuzzy
msgid "Delete preset '%s'?"
-msgstr "Supprimer les fichiers sélectionnés ?"
+msgstr "Supprimer pré-réglage '%s' ?"
#: editor/project_export.cpp
#, fuzzy
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr "Modèles d'exportation manquants pour cette plateforme :"
+
+#: editor/project_export.cpp
msgid "Presets"
-msgstr "Pré-réglage…"
+msgstr "Pré-réglages"
#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
@@ -6073,68 +5554,58 @@ msgid "Resources"
msgstr "Ressources"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export all resources in the project"
-msgstr "Exporter toutes les ressources dans le projet."
+msgstr "Exporter toutes les ressources dans le projet"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export selected scenes (and dependencies)"
-msgstr "Exporter les ressources sélectionnées (y compris les dépendences)."
+msgstr "Exporter les scènes sélectionnées (y compris les dépendences)"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export selected resources (and dependencies)"
-msgstr "Exporter les ressources sélectionnées (y compris les dépendences)."
+msgstr "Exporter les ressources sélectionnées (y compris les dépendences)"
#: editor/project_export.cpp
msgid "Export Mode:"
msgstr "Mode d'exportation :"
#: editor/project_export.cpp
-#, fuzzy
msgid "Resources to export:"
msgstr "Ressources à exporter :"
#: editor/project_export.cpp
-#, fuzzy
msgid ""
"Filters to export non-resource files (comma separated, e.g: *.json, *.txt)"
msgstr ""
-"Filtres à utiliser pour l'exportation des fichiers (séparés par des "
-"virgules, par exemple : *.json, *.txt) :"
+"Filtres d'export de fichiers non ressources (séparés par des virgules, par "
+"exemple : *.json, *.txt) :"
#: editor/project_export.cpp
-#, fuzzy
msgid ""
"Filters to exclude files from project (comma separated, e.g: *.json, *.txt)"
msgstr ""
-"Filtres à utiliser pour exclure des fichiers (séparés par des virgules, par "
+"Filtres pour exclure des fichiers du projet (séparés par des virgules, par "
"exemple: *.json, *.txt) :"
#: editor/project_export.cpp
-#, fuzzy
msgid "Patches"
-msgstr "Correspondances :"
+msgstr "Patches"
#: editor/project_export.cpp
-#, fuzzy
msgid "Make Patch"
-msgstr "Chemin de destination :"
+msgstr "Conçevoir un patch"
#: editor/project_export.cpp
-#, fuzzy
msgid "Features"
-msgstr "Texture"
+msgstr "Fonctionnalités"
#: editor/project_export.cpp
msgid "Custom (comma-separated):"
-msgstr ""
+msgstr "Personnalisé (séparé par des virgules) :"
#: editor/project_export.cpp
-#, fuzzy
msgid "Feature List:"
-msgstr "Liste des méthodes :"
+msgstr "Liste des fonctionnalités :"
#: editor/project_export.cpp
msgid "Export PCK/Zip"
@@ -6142,82 +5613,115 @@ msgstr "Exporter le PCK/ZIP"
#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
-msgstr ""
+msgstr "Modèles d'exportation manquants pour cette plateforme :"
#: editor/project_export.cpp
#, fuzzy
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr "Modèles d'exportation manquants pour cette plateforme :"
+
+#: editor/project_export.cpp
msgid "Export With Debug"
-msgstr "Exporter un ensemble de tuiles"
+msgstr "Exporter avec debug"
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
-msgstr "Chemin de projet invalide, le chemin doit exister !"
+#, fuzzy
+msgid "The path does not exist."
+msgstr "Le fichier n'existe pas."
#: editor/project_manager.cpp
#, fuzzy
-msgid "Invalid project path, project.godot must not exist."
-msgstr "Chemin de projet invalide, engine.cfg ne doit pas exister."
+msgid "Please choose a 'project.godot' file."
+msgstr "Veuillez exporter en dehors du dossier du projet !"
#: editor/project_manager.cpp
-#, fuzzy
-msgid "Invalid project path, project.godot must exist."
-msgstr "Chemin de projet invalide, engine.cfg doit exister."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose a folder that does not contain a 'project.godot' file."
+msgstr ""
#: editor/project_manager.cpp
msgid "Imported Project"
msgstr "Projet importé"
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr "Chemin de projet non valide (avez-vous changé quelque chose ?)."
#: editor/project_manager.cpp
#, fuzzy
-msgid "Couldn't create project.godot in project path."
-msgstr ""
-"Impossible de créer le fichier engine.cfg dans le répertoire du projet."
+msgid "Couldn't get project.godot in project path."
+msgstr "Impossible de créer le fichier project.godot dans le chemin du projet."
#: editor/project_manager.cpp
#, fuzzy
+msgid "Couldn't edit project.godot in project path."
+msgstr "Impossible de créer le fichier project.godot dans le chemin du projet."
+
+#: editor/project_manager.cpp
+msgid "Couldn't create project.godot in project path."
+msgstr "Impossible de créer le fichier project.godot dans le chemin du projet."
+
+#: editor/project_manager.cpp
msgid "The following files failed extraction from package:"
-msgstr ""
-"Les fichiers suivants sont plus récents sur le disque.\n"
-"Quelle action doit être prise ? :"
+msgstr "L'extraction des fichiers suivants a échoué depuis le paquetage :"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Rename Project"
+msgstr "Projet sans titre"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't get project.godot in the project path."
+msgstr "Impossible de créer le fichier project.godot dans le chemin du projet."
+
+#: editor/project_manager.cpp
+msgid "New Game Project"
+msgstr "Nouveau projet de jeu"
#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "Importer un projet existant"
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
-msgstr "Chemin du projet (doit exister) :"
+msgid "Create New Project"
+msgstr "Créer un nouveau projet"
+
+#: editor/project_manager.cpp
+msgid "Install Project:"
+msgstr "Installer projet :"
#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Nom du projet :"
#: editor/project_manager.cpp
-msgid "Create New Project"
-msgstr "Créer un nouveau projet"
+#, fuzzy
+msgid "Create folder"
+msgstr "Créer un dossier"
#: editor/project_manager.cpp
msgid "Project Path:"
msgstr "Chemin du projet :"
#: editor/project_manager.cpp
-#, fuzzy
-msgid "Install Project:"
-msgstr "Projets récents :"
-
-#: editor/project_manager.cpp
msgid "Browse"
msgstr "Parcourir"
#: editor/project_manager.cpp
-msgid "New Game Project"
-msgstr "Nouveau projet de jeu"
-
-#: editor/project_manager.cpp
msgid "That's a BINGO!"
msgstr "C'est un BINGO !"
@@ -6227,28 +5731,32 @@ msgstr "Projet sans titre"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Can't open project"
+msgstr "Impossible de lancer le projet"
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr "Voulez-vous vraiment ouvrir plus d'un projet à la fois ?"
#: editor/project_manager.cpp
-#, fuzzy
msgid ""
"Can't run project: no main scene defined.\n"
"Please edit the project and set the main scene in \"Project Settings\" under "
"the \"Application\" category."
msgstr ""
-"Aucune scène principale n'a jamais été définie, en sélectionner une ?\n"
-"Vous pouvez la modifier ultérieurement dans les « Paramètres du projet » "
-"dans la catégorie « application »."
+"Impossible de lancer le projet : Pas de scène principale définie\n"
+"Veuillez éditer le projet et définir la scène principale dans \"Paramètres "
+"du projet\" sous la catégorie \"Application\"."
#: editor/project_manager.cpp
msgid ""
"Can't run project: Assets need to be imported.\n"
"Please edit the project to trigger the initial import."
msgstr ""
+"Impossible d'exécuter le projet: Des ressources doivent être importées. \n"
+"Veuillez éditer le projet pour déclencher l'importation initiale."
#: editor/project_manager.cpp
-#, fuzzy
msgid "Are you sure to run more than one project?"
msgstr "Voulez-vous vraiment lancer plus d'un projet à la fois ?"
@@ -6259,6 +5767,12 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
"You are about the scan %s folders for existing Godot projects. Do you "
"confirm?"
msgstr ""
@@ -6270,10 +5784,6 @@ msgid "Project List"
msgstr "Liste des projets"
#: editor/project_manager.cpp
-msgid "Run"
-msgstr "Lancer"
-
-#: editor/project_manager.cpp
msgid "Scan"
msgstr "Scanner"
@@ -6286,9 +5796,8 @@ msgid "New Project"
msgstr "Nouveau projet"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Templates"
-msgstr "Supprimer l'item"
+msgstr "Modèles"
#: editor/project_manager.cpp
msgid "Exit"
@@ -6296,8 +5805,12 @@ msgstr "Quitter"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Restart Now"
+msgstr "Redémarrer (s) :"
+
+#: editor/project_manager.cpp
msgid "Can't run project"
-msgstr "Connection impossible."
+msgstr "Impossible de lancer le projet"
#: editor/project_settings_editor.cpp
msgid "Key "
@@ -6332,17 +5845,14 @@ msgid "Add Input Action Event"
msgstr "Ajouter un événement d'action d'entrée"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Méta+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Maj+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
@@ -6400,18 +5910,16 @@ msgid "Change"
msgstr "Changer"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Joypad Axis Index:"
-msgstr "Index de l'axe du joystick :"
+msgstr "Index de l'axe de la manette de jeu :"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "Axe"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Joypad Button Index:"
-msgstr "Index du bouton du joystick :"
+msgstr "Index de bouton de la manette de jeu :"
#: editor/project_settings_editor.cpp
msgid "Add Input Action"
@@ -6422,61 +5930,67 @@ msgid "Erase Input Action Event"
msgstr "Effacer l'événement d'action d'entrée"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Add Event"
-msgstr "Ajouter vide"
+msgstr "Ajouter évènement"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "Périphérique"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "Bouton"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "Bouton gauche."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "Bouton droite."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "Bouton du milieu."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr "Molette vers le haut."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr "Molette vers le bas."
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Add Global Property"
-msgstr "Ajouter une propriété accesseur"
+msgstr "Ajouter une propriété globale"
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
-msgstr ""
+#, fuzzy
+msgid "Select a setting item first!"
+msgstr "Choisissez d'abord un élément de réglage !"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "No property '"
-msgstr "Propriété :"
+msgstr "Pas de propriété"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Setting '"
-msgstr "Paramètres"
+msgstr "Paramètre"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Delete Item"
-msgstr "Supprimer l'entrée"
+msgstr "Supprimer élément"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Can't contain '/' or ':'"
+msgstr "Connection à l'hôte impossible:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Already existing"
+msgstr "Mode persistant"
#: editor/project_settings_editor.cpp
msgid "Error saving settings."
@@ -6488,7 +6002,7 @@ msgstr "Paramètres enregistrés avec succès."
#: editor/project_settings_editor.cpp
msgid "Override for Feature"
-msgstr ""
+msgstr "Remplacement de fonctionnalité"
#: editor/project_settings_editor.cpp
msgid "Add Translation"
@@ -6504,24 +6018,32 @@ msgstr "Ajouter un chemin remappé"
#: editor/project_settings_editor.cpp
msgid "Resource Remap Add Remap"
-msgstr ""
+msgstr "Remap de ressources ajout de remap"
#: editor/project_settings_editor.cpp
msgid "Change Resource Remap Language"
-msgstr ""
+msgstr "Modifier language de remap de ressource"
#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap"
-msgstr ""
+msgstr "Supprimer remap de ressource"
#: editor/project_settings_editor.cpp
msgid "Remove Resource Remap Option"
-msgstr ""
+msgstr "Supprimer option de remap de ressource"
#: editor/project_settings_editor.cpp
#, fuzzy
+msgid "Changed Locale Filter"
+msgstr "Changer le temps de mélange"
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
-msgstr "Paramètres du projet (engine.cfg)"
+msgstr "Paramètres du projet (project.godot)"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
@@ -6533,7 +6055,7 @@ msgstr "Propriété :"
#: editor/project_settings_editor.cpp
msgid "Override For.."
-msgstr ""
+msgstr "Remplacement pour.."
#: editor/project_settings_editor.cpp
msgid "Input Map"
@@ -6580,13 +6102,36 @@ msgid "Locale"
msgstr "Langue"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales Filter"
+msgstr "Filtre d'image :"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Show all locales"
+msgstr "Afficher les os"
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "Filtrer les noeuds"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales:"
+msgstr "Langue"
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "AutoLoad"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Pick a Viewport"
-msgstr "1 vue"
+msgstr "Choisissez un viewport"
#: editor/property_editor.cpp
msgid "Ease In"
@@ -6621,7 +6166,6 @@ msgid "Assign"
msgstr "Assigner"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Select Node"
msgstr "Sélectionner un nœud"
@@ -6631,22 +6175,29 @@ msgstr "Nouveau script"
#: editor/property_editor.cpp
#, fuzzy
+msgid "Make Unique"
+msgstr "Créer les os"
+
+#: editor/property_editor.cpp
msgid "Show in File System"
-msgstr "Système de fichiers"
+msgstr "Montrer dans le système de fichiers"
+
+#: editor/property_editor.cpp
+#, fuzzy
+msgid "Convert To %s"
+msgstr "Convertir vers…"
#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr "Erreur de chargement du fichier : ce n'est pas une ressource !"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Selected node is not a Viewport!"
-msgstr "Sélectionner les nœuds à importer"
+msgstr "Le noeud sélectionné n'est pas un viewport !"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Pick a Node"
-msgstr "Sélectionner un nœud"
+msgstr "Choisissez un nœud"
#: editor/property_editor.cpp
msgid "Bit %d, val %d."
@@ -6673,6 +6224,11 @@ msgid "Select Property"
msgstr "Sélectionnez une propriété"
#: editor/property_selector.cpp
+#, fuzzy
+msgid "Select Virtual Method"
+msgstr "Sélectionner une méthode"
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr "Sélectionner une méthode"
@@ -6701,26 +6257,6 @@ msgstr "Conserver la transformation globale"
msgid "Reparent"
msgstr "Re-parenter"
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr "Créer une nouvelle ressource"
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr "Ouvrir la ressource"
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr "Enregistrer la ressource"
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr "Outils des ressources"
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr "Rendre local"
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr "Mode d'exécution :"
@@ -6792,7 +6328,7 @@ msgstr "Supprimer le(s) nœud(s) ?"
#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
-msgstr ""
+msgstr "Ne peut fonctionner avec le noeud racine."
#: editor/scene_tree_dock.cpp
msgid "This operation can't be done on instanced scenes."
@@ -6847,17 +6383,8 @@ msgid "Error duplicating scene to save it."
msgstr "Erreur de duplication de la scène afin de l'enregistrer."
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Sub-Resources:"
-msgstr "Ressources :"
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr "Modifier les groupes"
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr "Modifier les connexions"
+msgstr "Ressources secondaires :"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -6884,9 +6411,8 @@ msgid "Change Type"
msgstr "Changer le type"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Attach Script"
-msgstr "Ajouter un script"
+msgstr "Attacher un script"
#: editor/scene_tree_dock.cpp
msgid "Clear Script"
@@ -6901,9 +6427,8 @@ msgid "Save Branch as Scene"
msgstr "Sauvegarder la branche comme scène"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Copy Node Path"
-msgstr "Copier le chemin"
+msgstr "Copier le chemin du noeud"
#: editor/scene_tree_dock.cpp
msgid "Delete (No Confirm)"
@@ -6922,19 +6447,17 @@ msgstr ""
"nœud racine n'existe."
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Filter nodes"
-msgstr "Filtres"
+msgstr "Filtrer les noeuds"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Attach a new or existing script for the selected node."
-msgstr "Créer un nouveau script pour le nœud sélectionné."
+msgstr ""
+"Attacher un nouveau script ou un script existant pour le nœud sélectionné ."
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Clear a script for the selected node."
-msgstr "Créer un nouveau script pour le nœud sélectionné."
+msgstr "Effacer un script pour le nœud sélectionné."
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance? (No Undo!)"
@@ -6954,51 +6477,59 @@ msgstr "Afficher/cacher le CanvasItem"
#: editor/scene_tree_editor.cpp
msgid "Node configuration warning:"
-msgstr ""
+msgstr "Avertissement de configuration de noeud :"
#: editor/scene_tree_editor.cpp
msgid ""
"Node has connection(s) and group(s)\n"
"Click to show signals dock."
msgstr ""
+"Le noeud possède une (des) connection(s) et un (des) groupe(s)\n"
+"Cliquez pour montrer l'arrimage de signaux."
#: editor/scene_tree_editor.cpp
msgid ""
"Node has connections.\n"
"Click to show signals dock."
msgstr ""
+"Le noeud possède des connections.\n"
+"Cliquez pour montrer l'arrimage de signaux."
#: editor/scene_tree_editor.cpp
msgid ""
"Node is in group(s).\n"
"Click to show groups dock."
msgstr ""
+"Le noeud fait partie d'un (de) groupe(s).\n"
+"Cliquez pour montrer l'arrimage de goupes."
#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr "Instance :"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Open script"
-msgstr "Script suivant"
+msgstr "Ouvrir script"
#: editor/scene_tree_editor.cpp
msgid ""
"Node is locked.\n"
"Click to unlock"
msgstr ""
+"Noeud verouillé.\n"
+"Cliquez pour dévérouiller"
#: editor/scene_tree_editor.cpp
msgid ""
"Children are not selectable.\n"
"Click to make selectable"
msgstr ""
+"Enfants non séléctionnable.\n"
+"Cliquez pour les rendre sélectionnable"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Toggle Visibility"
-msgstr "Afficher/cacher le Spatial"
+msgstr "Basculer visibilité"
#: editor/scene_tree_editor.cpp
msgid "Invalid node name, the following characters are not allowed:"
@@ -7014,26 +6545,23 @@ msgstr "Arbre de scène (nœuds) :"
#: editor/scene_tree_editor.cpp
msgid "Node Configuration Warning!"
-msgstr ""
+msgstr "Avertissement de configuration de noeud !"
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
msgstr "Sélectionner un nœud"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Error loading template '%s'"
-msgstr "Erreur de chargement d'image :"
+msgstr "Erreur de chargement de modèle '%s'"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Error - Could not create script in filesystem."
-msgstr "Impossible de créer le script dans le système de fichiers."
+msgstr "Erreur - Impossible de créer le script dans le système de fichiers."
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Error loading script from %s"
-msgstr "Erreur de chargement de la scène depuis %s"
+msgstr "Erreur de chargement de script depuis %s"
#: editor/script_create_dialog.cpp
msgid "N/A"
@@ -7052,74 +6580,77 @@ msgid "Invalid base path"
msgstr "Chemin de base invalide"
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "File exists, will be reused"
+msgstr "Le fichier existe, l'écraser ?"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr "Extension invalide"
#: editor/script_create_dialog.cpp
msgid "Wrong extension chosen"
-msgstr ""
+msgstr "Choix d'extension erroné"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Invalid Path"
-msgstr "Chemin invalide."
+msgstr "Chemin invalide"
#: editor/script_create_dialog.cpp
msgid "Invalid class name"
msgstr "Nom de classe invalide"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Invalid inherited parent name or path"
-msgstr "Indice de nom de propriété invalide."
+msgstr "Nom ou chemin parent hérité invalide"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Script valid"
-msgstr "Script"
+msgstr "Script valide"
#: editor/script_create_dialog.cpp
msgid "Allowed: a-z, A-Z, 0-9 and _"
-msgstr ""
+msgstr "Autorisé : a-z, A-Z, 0-9 et _"
#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
-msgstr ""
+msgstr "Script intégré (dans le fichier scène)"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Create new script file"
-msgstr "Créer un script"
+msgstr "Créer nouveau fichier de script"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Load existing script file"
-msgstr "Script suivant"
+msgstr "Charger fichier de script existant"
+
+#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr "Langage"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Inherits"
-msgstr "Hérite de :"
+msgstr "Hérité de :"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Class Name"
-msgstr "Nom de classe :"
+msgstr "Nom de classe"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Template"
-msgstr "Supprimer l'item"
+msgstr "Modèle"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Built-in Script"
msgstr "Script intégré"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Attach Node Script"
-msgstr "Créer le script de nœud"
+msgstr "Attacher script de nœud"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -7142,6 +6673,10 @@ msgid "Function:"
msgstr "Fonction :"
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr "Erreurs"
@@ -7222,6 +6757,10 @@ msgid "Type"
msgstr "Type"
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr "Format"
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr "Utilisation"
@@ -7255,7 +6794,7 @@ msgstr "Changer le rayon d'une lumière"
#: editor/spatial_editor_gizmos.cpp
msgid "Change AudioStreamPlayer3D Emission Angle"
-msgstr ""
+msgstr "Changer l'angle d'émission AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
@@ -7291,12 +6830,29 @@ msgstr "Changer les extents d'un notificateur"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Particles AABB"
-msgstr ""
+msgstr "Changer particules AABB"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Change Probe Extents"
-msgstr "Changer les extents d'un notificateur"
+msgstr "Changer les ampleurs de la sonde"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Library"
+msgstr "MeshLibrary…"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Status"
+msgstr "État :"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
@@ -7304,7 +6860,7 @@ msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr ""
"Argument de type incorrect dans convert(), utilisez les constantes TYPE_*."
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Pas assez d'octets pour les octets de décodage, ou format non valide."
@@ -7347,133 +6903,112 @@ msgstr ""
#: modules/gdscript/gd_functions.cpp
msgid "Object can't provide a length."
-msgstr ""
+msgstr "L'objet ne peut fournir une longueur."
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Delete Selection"
-msgstr "Supprimer la selection"
+msgstr "Sélection de la supression de GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Duplicate Selection"
-msgstr "Dupliquer la sélection"
+msgstr "Sélection de la duplication de GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Snap View"
-msgstr "Vue de dessus"
+msgstr "Vue instantanée"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
msgid "Prev Level (%sDown Wheel)"
-msgstr ""
+msgstr "Niveau de prévisualisation ("
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
msgid "Next Level (%sUp Wheel)"
-msgstr ""
+msgstr "Niveau suivant ("
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Clip Disabled"
-msgstr "Désactivé"
+msgstr "Âgrafe désactivée"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clip Above"
-msgstr ""
+msgstr "Agrafe ci-dessus"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clip Below"
-msgstr ""
+msgstr "Agrafe ci-dessous"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit X Axis"
-msgstr ""
+msgstr "Editer axe X"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Y Axis"
-msgstr ""
+msgstr "Editer axe Y"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Z Axis"
-msgstr ""
+msgstr "Editer axe Z"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate X"
-msgstr "Contrôle: Tourner"
+msgstr "Rotation de curseur X"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate Y"
-msgstr "Contrôle: Tourner"
+msgstr "Rotation de curseur Y"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate Z"
-msgstr "Contrôle: Tourner"
+msgstr "Rotation de curseur Z"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate X"
-msgstr ""
+msgstr "Rotation arrière curseur X"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate Y"
-msgstr ""
+msgstr "Rotation arrière curseur Y"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate Z"
-msgstr ""
+msgstr "Rotation arrière curseur Z"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Clear Rotation"
-msgstr ""
+msgstr "Effacer rotation curseur"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Create Area"
-msgstr "Créer un nouveau"
+msgstr "Créer zone"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Create Exterior Connector"
-msgstr "Créer un nouveau projet"
+msgstr "Créer connecteur extérieur"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase Area"
-msgstr "Supprimer la TileMap"
+msgstr "Effacer zone"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Selection -> Duplicate"
-msgstr "Sélection uniquement"
+msgstr "Sélection -> Dupliquer"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Selection -> Clear"
-msgstr "Sélection uniquement"
+msgstr "Sélection -> Effacer"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Settings"
-msgstr "Paramètres d'alignement"
+msgstr "Paramètres GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Pick Distance:"
-msgstr "Instance :"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr "Fichier"
+msgstr "Choisissez distance :"
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7515,29 +7050,24 @@ msgid "Stack overflow with stack depth: "
msgstr "Débordement de pile avec profondeur de pile: "
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Signal Arguments"
-msgstr "Modifier les arguments du signal :"
+msgstr "Modifier les arguments du signal"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Argument Type"
-msgstr "Modifier type de valeur du tableau"
+msgstr "Modifier type d'argument"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Argument name"
-msgstr "Changer le nom de l'entrée"
+msgstr "Changer nom d'argument"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Set Variable Default Value"
-msgstr "Changer la valeur par défaut"
+msgstr "Changer valeur de la variable par défaut"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Set Variable Type"
-msgstr "Modifier la variable :"
+msgstr "Définir type de variable"
#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
@@ -7588,14 +7118,12 @@ msgid "Add Node"
msgstr "Ajouter un nœud"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Remove VisualScript Nodes"
-msgstr "Supprimer les clés invalides"
+msgstr "Supprimer noeuds VisualScript"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Duplicate VisualScript Nodes"
-msgstr "Dupliquer le(s) nœud(s) de graphe"
+msgstr "Dupliquer noeuds VisualScript"
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
@@ -7642,24 +7170,20 @@ msgid "Add Setter Property"
msgstr "Ajouter une propriété mutateur"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Base Type"
-msgstr "Changer le type"
+msgstr "Changer le type de base"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Move Node(s)"
-msgstr "Supprimer le(s) nœud(s)"
+msgstr "Déplacer le(s) nœud(s)"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Remove VisualScript Node"
-msgstr "Supprimer le nœud de graphe Shader"
+msgstr "Supprimer nœud VisualScript"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Connect Nodes"
-msgstr "Connecter au nœud :"
+msgstr "Connecter nœud"
#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
@@ -7686,46 +7210,48 @@ msgid "Return"
msgstr "Retour"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr "Appel"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr "Récupérer"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
-msgstr "Changer le nom de l'entrée"
+msgstr "Changer nom de l'entrée"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Can't copy the function node."
-msgstr "Impossible d'opérer sur « .. »"
+msgstr "Impossible de copier le noeud de fonction."
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Clipboard is empty!"
-msgstr "Le presse-papiers des ressources est vide !"
+msgstr "Le presse-papiers est vide !"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Paste VisualScript Nodes"
-msgstr "Coller les nœuds"
+msgstr "Coller les nœuds VisualScript"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Function"
msgstr "Supprimer la fonction"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Edit Variable"
-msgstr "Modifier la variable :"
+msgstr "Editerr la variable :"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Variable"
msgstr "Supprimer la variable"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Edit Signal"
-msgstr "Modification du signal :"
+msgstr "Editer signal :"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Signal"
@@ -7838,28 +7364,24 @@ msgstr ""
"out), ou une chaîne (erreur)."
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Run in Browser"
-msgstr "Parcourir"
+msgstr "Exécuter dans le navigateur"
#: platform/javascript/export/export.cpp
msgid "Run exported HTML in the system's default browser."
-msgstr ""
+msgstr "Exécutez le HTML exporté dans le navigateur par défaut du système."
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not write file:\n"
-msgstr "Impossible de trouver la tuile :"
+msgstr "Impossible d'écrire le fichier:\n"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not read file:\n"
-msgstr "Impossible de trouver la tuile :"
+msgstr "Impossible de lire le fichier:\n"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not open template for export:\n"
-msgstr "Impossible de créer le dossier."
+msgstr "Impossible d'ouvrir le modèle pour exportation:\n"
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -7959,6 +7481,8 @@ msgid ""
"A material to process the particles is not assigned, so no behavior is "
"imprinted."
msgstr ""
+"Un matériau de traitement des particules n'est pas assigné, aucun "
+"comportement n'est donc imprimé."
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
@@ -7972,6 +7496,9 @@ msgid ""
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"Les changements de taille pour RigidBody2D (en mode caractère ou rigide) "
+"seront remplacés par le moteur physique lors de l'exécution. Modifiez la "
+"taille des formes de collision enfants à la place."
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
@@ -8005,31 +7532,35 @@ msgstr ""
#: scene/3d/arvr_nodes.cpp
msgid "ARVRCamera must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRCamera doit avoir un noeud ARVROrigin comme parent"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRController must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRController doit avoir un noeud ARVROrigin comme parent"
#: scene/3d/arvr_nodes.cpp
msgid ""
"The controller id must not be 0 or this controller will not be bound to an "
"actual controller"
msgstr ""
+"L'identifiant contrôleur ne doit pas être 0 ou ce contrôleur ne sera pas lié "
+"à un contrôleur valide"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRAnchor must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRAnchor doit avoir un noeud ARVROrigin comme parent"
#: 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 ""
+"L'identifiant d'ancrage ne doit pas être 0 ou cette ancre ne sera pas liée à "
+"une ancre valide"
#: scene/3d/arvr_nodes.cpp
msgid "ARVROrigin requires an ARVRCamera child node"
-msgstr ""
+msgstr "ARVROrigin requiert un nœud enfant ARVRCamera"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -8079,6 +7610,8 @@ msgstr ""
msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+"Rien n'est visible car les maillages n'ont pas été assignés au tirage des "
+"passes."
#: scene/3d/physics_body.cpp
msgid ""
@@ -8086,6 +7619,9 @@ msgid ""
"the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"Les changements de taille pour RigidBody (dans les modes caractère ou "
+"rigide) seront remplacés par le moteur physique lors de l'exécution. "
+"Modifiez la taille dans les formes de collision enfants à la place."
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
@@ -8107,14 +7643,23 @@ msgstr ""
"Une ressource de type SampleFrames doit être créée ou définie dans la "
"propriété « Frames » afin qu'une AnimatedSprite3D fonctionne."
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
-#, fuzzy
msgid "Raw Mode"
-msgstr "Mode navigation"
+msgstr "Mode brut"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
-msgstr ""
+msgstr "Ajouter la couleur courante comme pré-réglage"
+
+#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Annuler"
#: scene/gui/dialogs.cpp
msgid "Alert!"
@@ -8124,10 +7669,6 @@ msgstr "Alerte !"
msgid "Please Confirm..."
msgstr "Veuillez confirmer…"
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -8145,12 +7686,17 @@ msgid ""
"Use a container as child (VBox,HBox,etc), or a Control and set the custom "
"minimum size manually."
msgstr ""
+"ScrollContainer est destiné à fonctionner avec un contrôle enfant unique. "
+"Utilisez un conteneur comme enfant (VBox, HBox, etc.) ou un contrôle et "
+"définissez manuellement la taille minimale personnalisée."
#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
msgstr ""
+"L'environnement par défaut spécifié dans les réglages du projet (Rendu -> "
+"Viewport -> Environnement par défaut) ne peut pas être chargé."
#: scene/main/viewport.cpp
msgid ""
@@ -8164,6 +7710,644 @@ msgstr ""
"nœud de type Control afin qu'il en obtienne une taille. Sinon, faites-en une "
"RenderTarget et assignez sa texture à un nœud pouvant l'afficher."
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr "Erreur à l'initialisation de Freetype."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "Format de police inconnu."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "Erreur lors du chargement de la police."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr "Taille de police invalide."
+
+#~ msgid "Filter:"
+#~ msgstr "Filtre:"
+
+#~ msgid "' parsing of config failed."
+#~ msgstr "L'analyse de la configuration a échoué."
+
+#~ msgid "Theme"
+#~ msgstr "Thème"
+
+#~ msgid "Method List For '%s':"
+#~ msgstr "Liste des méthodes pour « %s » :"
+
+#~ msgid "Arguments:"
+#~ msgstr "Paramètres :"
+
+#~ msgid "Return:"
+#~ msgstr "Retourne :"
+
+#~ msgid "Added:"
+#~ msgstr "Ajouté :"
+
+#~ msgid "Removed:"
+#~ msgstr "Supprimé :"
+
+#~ msgid "Error saving atlas:"
+#~ msgstr "Erreur de sauvegarde de l'atlas :"
+
+#~ msgid "Could not save atlas subtexture:"
+#~ msgstr "Impossible d'enregistrer la sous-texture atlas :"
+
+#~ msgid "Exporting for %s"
+#~ msgstr "Exportation pour %s"
+
+#~ msgid "Setting Up.."
+#~ msgstr "Configuration…"
+
+#~ msgid "Error loading scene."
+#~ msgstr "Erreur lors du chargement de la scène."
+
+#~ msgid "Re-Import"
+#~ msgstr "Ré-importer"
+
+#~ msgid "Please wait for scan to complete."
+#~ msgstr "Veuillez attendre la fin du scan."
+
+#~ msgid "Current scene must be saved to re-import."
+#~ msgstr ""
+#~ "La scène actuelle doit être enregistrée afin de pouvoir ré-importer."
+
+#~ msgid "Save & Re-Import"
+#~ msgstr "Enregistrer et ré-importer"
+
+#~ msgid "Re-Importing"
+#~ msgstr "Ré-importation"
+
+#~ msgid "Re-Import Changed Resources"
+#~ msgstr "Ré-importer les ressources modifiées"
+
+#~ msgid "Loading Export Templates"
+#~ msgstr "Chargement des modèles d'exportation"
+
+#~ msgid ""
+#~ "\n"
+#~ "Status: Needs Re-Import"
+#~ msgstr ""
+#~ "\n"
+#~ "Statut: Réimportation nécessaire"
+
+#~ msgid "Same source and destination files, doing nothing."
+#~ msgstr "Fichiers source et destination identiques, rien à faire."
+
+#~ msgid "Target file exists, can't overwrite. Delete first."
+#~ msgstr ""
+#~ "Le fichier cible existe et ne peut être réécrit. Supprimez le d'abord."
+
+#~ msgid "Same source and destination paths, doing nothing."
+#~ msgstr "Chemins source et destination identiques, rien à faire."
+
+#~ msgid "Can't move directories to within themselves."
+#~ msgstr "Impossible de déplacer des répertoires vers eux-mêmes."
+
+#~ msgid "Can't rename deps for:\n"
+#~ msgstr "Impossible de renommer dependances pour :\n"
+
+#~ msgid "Error moving file:\n"
+#~ msgstr "Erreur lors du déplacement de fichier :\n"
+
+#~ msgid "Pick New Name and Location For:"
+#~ msgstr "Entrez un nouveau nom et chemin pour :"
+
+#~ msgid "No files selected!"
+#~ msgstr "Pas de fichiers sélectionnés !"
+
+#~ msgid "Info"
+#~ msgstr "Information"
+
+#~ msgid "Re-Import.."
+#~ msgstr "Ré-importer…"
+
+#~ msgid "No bit masks to import!"
+#~ msgstr "Pas de masques de bits à importer !"
+
+#~ msgid "Target path is empty."
+#~ msgstr "Le chemin de destination est vide."
+
+#~ msgid "Target path must be a complete resource path."
+#~ msgstr ""
+#~ "Le chemin de destination doit être un chemin complet vers une ressource."
+
+#~ msgid "Target path must exist."
+#~ msgstr "Le chemin de destination doit exister."
+
+#~ msgid "Save path is empty!"
+#~ msgstr "Le chemin de sauvegarde est vide !"
+
+#~ msgid "Import BitMasks"
+#~ msgstr "Importer des BitMasks"
+
+#~ msgid "Source Texture(s):"
+#~ msgstr "Texture(s) source :"
+
+#~ msgid "Target Path:"
+#~ msgstr "Chemin de destination :"
+
+#~ msgid "Accept"
+#~ msgstr "Accepter"
+
+#~ msgid "Bit Mask"
+#~ msgstr "Masque de bits"
+
+#~ msgid "No source font file!"
+#~ msgstr "Pas de fichier de police source !"
+
+#~ msgid "No target font resource!"
+#~ msgstr "Pas de ressource de police de destination !"
+
+#~ msgid ""
+#~ "Invalid file extension.\n"
+#~ "Please use .font."
+#~ msgstr ""
+#~ "Extension de fichier invalide.\n"
+#~ "Veuillez utiliser .font."
+
+#~ msgid "Couldn't save font."
+#~ msgstr "Impossible d'enregistrer la police."
+
+#~ msgid "Source Font:"
+#~ msgstr "Police source :"
+
+#~ msgid "Source Font Size:"
+#~ msgstr "Taille de la police source :"
+
+#~ msgid "Dest Resource:"
+#~ msgstr "Ressource de destination :"
+
+#~ msgid "The quick brown fox jumps over the lazy dog."
+#~ msgstr "Voix ambiguë d'un cœur qui, au zéphyr, préfère les jattes de kiwis."
+
+#~ msgid "Test:"
+#~ msgstr "Test :"
+
+#~ msgid "Options:"
+#~ msgstr "Options :"
+
+#~ msgid "Font Import"
+#~ msgstr "Importation d'une police"
+
+#~ msgid ""
+#~ "This file is already a Godot font file, please supply a BMFont type file "
+#~ "instead."
+#~ msgstr ""
+#~ "Ce fichier est déjà un fichier de police Godot, veuillez fournir un "
+#~ "fichier de type BMFont à la place."
+
+#~ msgid "Failed opening as BMFont file."
+#~ msgstr "Impossible d'ouvrir le fichier en tant que fichier BMFont."
+
+#~ msgid "Invalid font custom source."
+#~ msgstr "Source personnalisée de police invalide."
+
+#~ msgid "No meshes to import!"
+#~ msgstr "Pas de maillages à importer !"
+
+#~ msgid "Single Mesh Import"
+#~ msgstr "Importer un maillage"
+
+#~ msgid "Source Mesh(es):"
+#~ msgstr "Maillage(s) source :"
+
+#~ msgid "Surface %d"
+#~ msgstr "Surface %d"
+
+#~ msgid "No samples to import!"
+#~ msgstr "Pas d'échantillons à importer !"
+
+#~ msgid "Import Audio Samples"
+#~ msgstr "Importer des échantillons audio"
+
+#~ msgid "Source Sample(s):"
+#~ msgstr "Échantillon(s) source :"
+
+#~ msgid "Audio Sample"
+#~ msgstr "Échantillon audio"
+
+#~ msgid "New Clip"
+#~ msgstr "Nouvelle séquence"
+
+#~ msgid "Flags"
+#~ msgstr "Drapeaux"
+
+#~ msgid "Bake FPS:"
+#~ msgstr "FPS de calcul :"
+
+#~ msgid "Optimizer"
+#~ msgstr "Optimiseur"
+
+#~ msgid "Max Linear Error"
+#~ msgstr "Erreur linéaire maximale"
+
+#~ msgid "Max Angular Error"
+#~ msgstr "Erreur angulaire maximale"
+
+#~ msgid "Max Angle"
+#~ msgstr "Angle maximal"
+
+#~ msgid "Clips"
+#~ msgstr "Séquences"
+
+#~ msgid "Start(s)"
+#~ msgstr "Départ(s)"
+
+#~ msgid "End(s)"
+#~ msgstr "Fin(s)"
+
+#~ msgid "Filters"
+#~ msgstr "Filtres"
+
+#~ msgid "Source path is empty."
+#~ msgstr "Le chemin source est vide."
+
+#~ msgid "Couldn't load post-import script."
+#~ msgstr "Impossible de charger le script de post-importation."
+
+#~ msgid "Invalid/broken script for post-import."
+#~ msgstr "Script invalide ou cassé de post-importation."
+
+#~ msgid "Error importing scene."
+#~ msgstr "Erreur à l'importation de la scène."
+
+#~ msgid "Import 3D Scene"
+#~ msgstr "Importer une scène 3D"
+
+#~ msgid "Source Scene:"
+#~ msgstr "Scène source :"
+
+#~ msgid "Same as Target Scene"
+#~ msgstr "Identique à la scène de destination"
+
+#~ msgid "Shared"
+#~ msgstr "Partagé"
+
+#~ msgid "Target Texture Folder:"
+#~ msgstr "Dossier de destination des textures :"
+
+#~ msgid "Post-Process Script:"
+#~ msgstr "Script de post-traitement :"
+
+#~ msgid "Custom Root Node Type:"
+#~ msgstr "Type de nœud racine personnalisé :"
+
+#~ msgid "Auto"
+#~ msgstr "Auto."
+
+#~ msgid "Root Node Name:"
+#~ msgstr "Nom de nœud racine :"
+
+#~ msgid "The Following Files are Missing:"
+#~ msgstr "Les fichiers suivants sont manquants :"
+
+#~ msgid "Import Anyway"
+#~ msgstr "Importer quand même"
+
+#~ msgid "Import & Open"
+#~ msgstr "Importer et ouvrir"
+
+#~ msgid "Edited scene has not been saved, open imported scene anyway?"
+#~ msgstr ""
+#~ "La scène modifiée actuellement n'a pas été enregistrée, ouvrir la scène "
+#~ "importée quand même ?"
+
+#~ msgid "Import Image:"
+#~ msgstr "Importer une image :"
+
+#~ msgid "Couldn't localize path: %s (already local)"
+#~ msgstr "Impossible de rendre le chemin local : %s (déjà local)"
+
+#~ msgid "3D Scene Animation"
+#~ msgstr "Animation de scène 3D"
+
+#~ msgid "Uncompressed"
+#~ msgstr "Non compressé"
+
+#~ msgid "Compress Lossless (PNG)"
+#~ msgstr "Compression sans perte (PNG)"
+
+#~ msgid "Compress Lossy (WebP)"
+#~ msgstr "Compression avec perte (WebP)"
+
+#~ msgid "Compress (VRAM)"
+#~ msgstr "Compression GPU (VRAM)"
+
+#~ msgid "Texture Format"
+#~ msgstr "Format de texture"
+
+#~ msgid "Texture Compression Quality (WebP):"
+#~ msgstr "Qualité de compression de la texture (WebP) :"
+
+#~ msgid "Texture Options"
+#~ msgstr "Options de texture"
+
+#~ msgid "Please specify some files!"
+#~ msgstr "Veuillez spécifier des fichiers !"
+
+#~ msgid "At least one file needed for Atlas."
+#~ msgstr "Il faut au moins un fichier pour créer un atlas."
+
+#~ msgid "Error importing:"
+#~ msgstr "Erreur d'importation :"
+
+#~ msgid "Only one file is required for large texture."
+#~ msgstr "Un seul fichier est nécessaire pour créer une grande texture."
+
+#~ msgid "Max Texture Size:"
+#~ msgstr "Taille de texture maximale :"
+
+#~ msgid "Import Textures for Atlas (2D)"
+#~ msgstr "Importer des textures pour un atlas (2D)"
+
+#~ msgid "Cell Size:"
+#~ msgstr "Taille des cellules :"
+
+#~ msgid "Large Texture"
+#~ msgstr "Grande texture"
+
+#~ msgid "Import Large Textures (2D)"
+#~ msgstr "Importer des grandes textures (2D)"
+
+#~ msgid "Source Texture"
+#~ msgstr "Texture source"
+
+#~ msgid "Base Atlas Texture"
+#~ msgstr "Texture d'atlas de base"
+
+#~ msgid "Source Texture(s)"
+#~ msgstr "Texture(s) source"
+
+#~ msgid "Import Textures for 2D"
+#~ msgstr "Importer des textures pour la 2D"
+
+#~ msgid "Import Textures for 3D"
+#~ msgstr "Importer des textures pour la 3D"
+
+#~ msgid "Import Textures"
+#~ msgstr "Importer des textures"
+
+#~ msgid "2D Texture"
+#~ msgstr "Texture 2D"
+
+#~ msgid "3D Texture"
+#~ msgstr "Texture 3D"
+
+#~ msgid "Atlas Texture"
+#~ msgstr "Texture atlas"
+
+#~ msgid ""
+#~ "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files "
+#~ "to the project."
+#~ msgstr ""
+#~ "REMARQUE : L'import de textures 2D n'est pas obligatoire. Copiez "
+#~ "directement les fichiers PNG ou JPEG dans le projet."
+
+#~ msgid "Crop empty space."
+#~ msgstr "Rogner l'espace vide."
+
+#~ msgid "Texture"
+#~ msgstr "Texture"
+
+#~ msgid "Import Large Texture"
+#~ msgstr "Importer une grande texture"
+
+#~ msgid "Load Source Image"
+#~ msgstr "Charger une image source"
+
+#~ msgid "Slicing"
+#~ msgstr "Découpage"
+
+#~ msgid "Saving"
+#~ msgstr "Enregistrement"
+
+#~ msgid "Couldn't save large texture:"
+#~ msgstr "Impossible d'enregistrer la grande texture :"
+
+#~ msgid "Build Atlas For:"
+#~ msgstr "Construire l'atlas pour :"
+
+#~ msgid "Loading Image:"
+#~ msgstr "Chargement de l'image :"
+
+#~ msgid "Couldn't load image:"
+#~ msgstr "Impossible de charger l'image :"
+
+#~ msgid "Converting Images"
+#~ msgstr "Conversion des images"
+
+#~ msgid "Cropping Images"
+#~ msgstr "Rognage des images"
+
+#~ msgid "Blitting Images"
+#~ msgstr "Découpage des images"
+
+#~ msgid "Couldn't save atlas image:"
+#~ msgstr "Impossible d'enregistrer l'image d'atlas :"
+
+#~ msgid "Couldn't save converted texture:"
+#~ msgstr "Impossible d'enregistrer la texture convertie :"
+
+#~ msgid "Invalid source!"
+#~ msgstr "Source invalide !"
+
+#~ msgid "Invalid translation source!"
+#~ msgstr "Source de traduction invalide !"
+
+#~ msgid "Column"
+#~ msgstr "Colonne"
+
+#~ msgid "No items to import!"
+#~ msgstr "Pas d'objets à importer !"
+
+#~ msgid "No target path!"
+#~ msgstr "Pas de chemin de destination !"
+
+#~ msgid "Import Translations"
+#~ msgstr "Importer des traductions"
+
+#~ msgid "Couldn't import!"
+#~ msgstr "Impossible d'importer !"
+
+#~ msgid "Import Translation"
+#~ msgstr "Importer une traduction"
+
+#~ msgid "Source CSV:"
+#~ msgstr "CSV source :"
+
+#~ msgid "Ignore First Row"
+#~ msgstr "Ignorer la première ligne"
+
+#~ msgid "Compress"
+#~ msgstr "Compresser"
+
+#~ msgid "Add to Project (project.godot)"
+#~ msgstr "Ajouter au projet (project.godot)"
+
+#~ msgid "Import Languages:"
+#~ msgstr "Importer les langues :"
+
+#~ msgid "Translation"
+#~ msgstr "Traduction"
+
+#~ msgid "Parsing %d Triangles:"
+#~ msgstr "Analyse de %d triangles :"
+
+#~ msgid "Triangle #"
+#~ msgstr "Triangle #"
+
+#~ msgid "Light Baker Setup:"
+#~ msgstr "Paramètres du calculateur d'éclairage :"
+
+#~ msgid "Fixing Lights"
+#~ msgstr "Correction des lumières"
+
+#~ msgid "Making BVH"
+#~ msgstr "Création du BVH"
+
+#~ msgid "Transfer to Lightmaps:"
+#~ msgstr "Transfert vers des lightmaps :"
+
+#~ msgid "Allocating Texture #"
+#~ msgstr "Allocation de la texture #"
+
+#~ msgid "Baking Triangle #"
+#~ msgstr "Calcul de la texture #"
+
+#~ msgid "Post-Processing Texture #"
+#~ msgstr "Post-traitement de la texture #"
+
+#~ msgid "Reset the lightmap octree baking process (start over)."
+#~ msgstr ""
+#~ "Remettre le processus de calcul de l'éclairage à zéro (recommencer)."
+
+#~ msgid "Zoom (%):"
+#~ msgstr "Zoom (%) :"
+
+#~ msgid "Skeleton.."
+#~ msgstr "Squelette…"
+
+#~ msgid "Zoom Reset"
+#~ msgstr "Réinitialiser le zoom"
+
+#~ msgid "Zoom Set.."
+#~ msgstr "Définir le zoom…"
+
+#~ msgid "Set a Value"
+#~ msgstr "Définir une valeur"
+
+#~ msgid "Snap (Pixels):"
+#~ msgstr "Aligner (pixels) :"
+
+#~ msgid "Parse BBCode"
+#~ msgstr "Analyser le BBCode"
+
+#~ msgid "Length:"
+#~ msgstr "Longueur :"
+
+#~ msgid "Open Sample File(s)"
+#~ msgstr "Ouvrir un ou des fichiers d'échantillons"
+
+#~ msgid "ERROR: Couldn't load sample!"
+#~ msgstr "ERREUR : Impossible de charger l'échantillon !"
+
+#~ msgid "Add Sample"
+#~ msgstr "Ajouter un échantillon"
+
+#~ msgid "Rename Sample"
+#~ msgstr "Renommer l'échantillon"
+
+#~ msgid "Delete Sample"
+#~ msgstr "Supprimer l'échantillon"
+
+#~ msgid "16 Bits"
+#~ msgstr "16 bits"
+
+#~ msgid "8 Bits"
+#~ msgstr "8 bits"
+
+#~ msgid "Stereo"
+#~ msgstr "Stéréo"
+
+#~ msgid "Mono"
+#~ msgstr "Mono"
+
+#~ msgid "Pitch"
+#~ msgstr "Hauteur"
+
+#~ msgid "Window"
+#~ msgstr "Fenêtre"
+
+#~ msgid "Move Right"
+#~ msgstr "Aller à droite"
+
+#~ msgid "Scaling to %s%%."
+#~ msgstr "Mise à l'échelle %s%%."
+
+#~ msgid "Up"
+#~ msgstr "Haut"
+
+#~ msgid "Down"
+#~ msgstr "Bas"
+
+#~ msgid "Bucket"
+#~ msgstr "Seau"
+
+#~ msgid "Invalid project path, the path must exist!"
+#~ msgstr "Chemin de projet invalide, le chemin doit exister !"
+
+#~ msgid "Invalid project path, project.godot must not exist."
+#~ msgstr "Chemin de projet invalide, project.godot ne doit pas exister."
+
+#~ msgid "Invalid project path, project.godot must exist."
+#~ msgstr "Chemin de projet invalide, project.godot doit exister."
+
+#~ msgid "Project Path (Must Exist):"
+#~ msgstr "Chemin du projet (doit exister) :"
+
+#~ msgid "Create New Resource"
+#~ msgstr "Créer une nouvelle ressource"
+
+#~ msgid "Open Resource"
+#~ msgstr "Ouvrir la ressource"
+
+#~ msgid "Save Resource"
+#~ msgstr "Enregistrer la ressource"
+
+#~ msgid "Resource Tools"
+#~ msgstr "Outils des ressources"
+
+#~ msgid "Make Local"
+#~ msgstr "Rendre local"
+
+#~ msgid "Edit Groups"
+#~ msgstr "Modifier les groupes"
+
+#~ msgid "Edit Connections"
+#~ msgstr "Modifier les connexions"
+
+#~ msgid "GridMap Paint"
+#~ msgstr "Peinture de GridMap"
+
+#~ msgid "Tiles"
+#~ msgstr "Tuiles"
+
+#~ msgid "Areas"
+#~ msgstr "Aires"
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl+"
+
+#~ msgid "Down Wheel)"
+#~ msgstr "Roue descendante)"
+
+#~ msgid "Up Wheel)"
+#~ msgstr "Roue ascendante)"
+
#~ msgid "Close scene? (Unsaved changes will be lost)"
#~ msgstr ""
#~ "Fermer la scène ? (les modifications non sauvegardées seront perdues)"
@@ -8178,9 +8362,6 @@ msgstr ""
#~ msgid "Close Goto Prev. Scene"
#~ msgstr "Fermer, aller à la scène précédente"
-#~ msgid "Expand to Parent"
-#~ msgstr "Étendre au parent"
-
#~ msgid "Del"
#~ msgstr "Supprimer"
@@ -8355,18 +8536,12 @@ msgstr ""
#~ msgid "Save Translatable Strings"
#~ msgstr "Enregistrer les chaînes traduisibles"
-#~ msgid "Translatable Strings.."
-#~ msgstr "Chaînes traduisibles…"
-
#~ msgid "Install Export Templates"
#~ msgstr "Installer les modèles d'exportation"
#~ msgid "Edit Script Options"
#~ msgstr "Modifier les options du script"
-#~ msgid "Please export outside the project folder!"
-#~ msgstr "Veuillez exporter en dehors du dossier du projet !"
-
#~ msgid "Error exporting project!"
#~ msgstr "Erreur d'exportation du projet !"
@@ -8416,18 +8591,12 @@ msgstr ""
#~ msgid "Include"
#~ msgstr "Inclure"
-#~ msgid "Change Image Group"
-#~ msgstr "Changer le groupe d'images"
-
#~ msgid "Group name can't be empty!"
#~ msgstr "Le nom du groupe ne peut pas être vide !"
#~ msgid "Invalid character in group name!"
#~ msgstr "Caractère invalide dans le nom du groupe !"
-#~ msgid "Group name already exists!"
-#~ msgstr "Le nom du groupe existe déjà !"
-
#~ msgid "Add Image Group"
#~ msgstr "Ajouter un groupe d'images"
@@ -8507,9 +8676,6 @@ msgstr ""
#~ msgid "Preview Atlas"
#~ msgstr "Aperçu de l'atlas"
-#~ msgid "Image Filter:"
-#~ msgstr "Filtre d'image :"
-
#~ msgid "Images:"
#~ msgstr "Images :"
@@ -8576,9 +8742,6 @@ msgstr ""
#~ msgid "Lighting"
#~ msgstr "Éclairage"
-#~ msgid "Toggle Persisting"
-#~ msgstr "Mode persistant"
-
#~ msgid "Global"
#~ msgstr "Global"
diff --git a/editor/translations/hu.po b/editor/translations/hu.po
index a8681feaf5..07457b4692 100644
--- a/editor/translations/hu.po
+++ b/editor/translations/hu.po
@@ -1,5 +1,6 @@
# Hungarian translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# Varga Dániel <danikah.danikah@gmail.com>, 2016.
@@ -191,10 +192,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr ""
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -356,261 +356,6 @@ msgstr ""
msgid "Change Array Value"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connecting.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Requesting.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Error making request"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr ""
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr ""
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr ""
@@ -647,6 +392,14 @@ msgstr ""
msgid "Selection Only"
msgstr ""
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr ""
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr ""
@@ -679,11 +432,11 @@ msgstr ""
msgid "Skip"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr ""
@@ -750,6 +503,20 @@ msgstr ""
msgid "Oneshot"
msgstr ""
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr ""
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr ""
@@ -775,7 +542,7 @@ msgstr ""
msgid "Disconnect"
msgstr ""
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr ""
@@ -792,12 +559,25 @@ msgstr ""
msgid "Recent:"
msgstr ""
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr ""
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr ""
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr ""
@@ -853,6 +633,10 @@ msgid "Owners Of:"
msgstr ""
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr ""
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -860,7 +644,7 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
+msgid "Cannot remove:\n"
msgstr ""
#: editor/dependency_editor.cpp
@@ -927,10 +711,6 @@ msgid "Godot Engine contributors"
msgstr ""
#: editor/editor_about.cpp
-msgid "Authors"
-msgstr ""
-
-#: editor/editor_about.cpp
msgid "Project Founders"
msgstr ""
@@ -947,6 +727,38 @@ msgid "Developers"
msgstr ""
#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
msgid "License"
msgstr ""
@@ -987,6 +799,16 @@ msgid "Package Installed Successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
msgstr ""
@@ -1035,10 +857,6 @@ msgid "Audio Bus, Drag and Drop to rearrange."
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
msgid "Solo"
msgstr ""
@@ -1050,12 +868,20 @@ msgstr ""
msgid "Bypass"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Reset Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Delete Effect"
msgstr ""
@@ -1076,6 +902,10 @@ msgid "Duplicate Audio Bus"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Reset Bus Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Move Audio Bus"
msgstr ""
@@ -1107,7 +937,8 @@ msgstr ""
msgid "Create a new Bus Layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
@@ -1197,7 +1028,7 @@ msgid "Rearrange Autoloads"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr ""
@@ -1205,9 +1036,7 @@ msgstr ""
msgid "Node Name:"
msgstr ""
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr ""
@@ -1240,18 +1069,19 @@ msgid "Choose a Directory"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr ""
@@ -1271,30 +1101,6 @@ msgstr ""
msgid "Template file not found:\n"
msgstr ""
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr ""
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr ""
@@ -1379,6 +1185,10 @@ msgstr ""
msgid "Move Favorite Down"
msgstr ""
+#: editor/editor_file_dialog.cpp
+msgid "Go to parent folder"
+msgstr ""
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr ""
@@ -1393,10 +1203,6 @@ msgid "File:"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr ""
@@ -1421,6 +1227,10 @@ msgstr ""
msgid "Search Classes"
msgstr ""
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr ""
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr ""
@@ -1437,15 +1247,27 @@ msgstr ""
msgid "Brief Description:"
msgstr ""
+#: editor/editor_help.cpp
+msgid "Members"
+msgstr ""
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Public Methods"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr ""
#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr ""
@@ -1454,6 +1276,10 @@ msgid "Signals:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Enumerations"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Enumerations:"
msgstr ""
@@ -1462,18 +1288,46 @@ msgid "enum "
msgstr ""
#: editor/editor_help.cpp
+msgid "Constants"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Description"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Property Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Methods"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr ""
@@ -1482,24 +1336,21 @@ msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr ""
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr ""
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1516,6 +1367,26 @@ msgid "Error while saving."
msgstr ""
#: editor/editor_node.cpp
+msgid "Can't open '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error while parsing '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error while loading '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr ""
@@ -1573,6 +1444,33 @@ msgid "Restored default layout to base settings."
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr ""
@@ -1734,23 +1632,34 @@ msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+msgid "Unable to load addon script from path: '%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -1760,7 +1669,7 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr ""
@@ -1771,11 +1680,11 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp
-msgid "Error loading scene."
+msgid "Scene '%s' has broken dependencies:"
msgstr ""
#: editor/editor_node.cpp
-msgid "Scene '%s' has broken dependencies:"
+msgid "Clear Recent Scenes"
msgstr ""
#: editor/editor_node.cpp
@@ -1811,7 +1720,7 @@ msgstr ""
msgid "Toggle distraction-free mode."
msgstr ""
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr ""
@@ -2030,6 +1939,10 @@ msgstr ""
msgid "Issue Tracker"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "About"
msgstr ""
@@ -2038,7 +1951,7 @@ msgstr ""
msgid "Play the project."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr ""
@@ -2054,7 +1967,7 @@ msgstr ""
msgid "Stop the scene."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr ""
@@ -2127,6 +2040,15 @@ msgid "Object properties."
msgstr ""
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr ""
@@ -2142,14 +2064,6 @@ msgstr ""
msgid "Don't Save"
msgstr ""
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr ""
-
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
@@ -2210,11 +2124,28 @@ msgstr ""
msgid "Open the previous Editor"
msgstr ""
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr ""
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr ""
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr ""
@@ -2247,7 +2178,7 @@ msgid "Frame %"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+msgid "Physics Frame %"
msgstr ""
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2266,26 +2197,6 @@ msgstr ""
msgid "Frame #:"
msgstr ""
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr ""
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2395,10 +2306,6 @@ msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr ""
@@ -2431,9 +2338,17 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
+"Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2443,87 +2358,87 @@ msgid ""
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
+msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
+msgid "Cannot move a folder into itself.\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
+msgid "Error moving:\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
+msgid "Unable to update dependencies:\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "No name provided"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving file:\n"
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving dir:\n"
+msgid "No name provided."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
+msgid "Name contains invalid characters."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
+msgid "A file or folder with this name already exists."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
+msgid "Renaming file:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Expand all"
+msgid "Renaming folder:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Collapse all"
+msgid "Expand all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
+msgid "Collapse all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Instance"
+msgid "Copy Path"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
+msgid "Rename.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
+msgid "Move To.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
+msgid "New Folder.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
+msgid "Show In File Manager"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move To.."
+msgid "Instance"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Info"
+msgid "Edit Dependencies.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
+msgid "View Owners.."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2556,6 +2471,11 @@ msgstr ""
msgid "Move"
msgstr ""
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr ""
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr ""
@@ -2569,6 +2489,10 @@ msgid "Import as Single Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -2581,6 +2505,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
msgstr ""
@@ -2589,38 +2525,31 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr ""
@@ -2648,579 +2577,54 @@ msgstr ""
msgid "Reimport"
msgstr ""
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
+#: editor/node_dock.cpp
+msgid "Groups"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr ""
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Select a Node to edit Signals and Groups."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -3376,7 +2780,6 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3486,10 +2889,6 @@ msgid "Delete Input"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr ""
@@ -3545,64 +2944,181 @@ msgstr ""
msgid "Filters.."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3645,11 +3161,15 @@ msgid "Edit CanvasItem"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+msgid "Anchors only"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
+msgid "Change Anchors and Margins"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3700,59 +3220,72 @@ msgid "Pan Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
+msgid "Toggles snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
+msgid "Snapping options"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
+msgid "Snap to grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
+msgid "Use Rotation Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Configure Snap..."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
+msgid "Snap Relative"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
+msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
+msgid "Smart snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
+msgid "Snap to parent"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
+msgid "Snap to node anchor"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
+msgid "Restores the object's children's ability to be selected."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3781,11 +3314,16 @@ msgid "View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show helpers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
+msgid "Show rulers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3797,7 +3335,7 @@ msgid "Frame Selection"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
+msgid "Layout"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3821,11 +3359,19 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
+msgid "Drag pivot from mouse position"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Set pivot at mouse position"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
+msgid "Multiply grid step by 2"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Divide grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3836,23 +3382,28 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr ""
@@ -3866,45 +3417,6 @@ msgid ""
"Drag & drop + Alt : Change node type"
msgstr ""
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3914,14 +3426,6 @@ msgid "Set Handle"
msgstr ""
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr ""
@@ -3944,6 +3448,26 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease in"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
msgstr ""
@@ -4019,22 +3543,18 @@ msgid "Create Occluder Polygon"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr ""
@@ -4135,6 +3655,10 @@ msgid "Create Outline"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr ""
@@ -4262,12 +3786,72 @@ msgstr ""
msgid "Populate"
msgstr ""
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create Navigation Polygon"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Marking walkable triangles..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Partitioning..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
msgstr ""
#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
+msgid "Create Navigation Polygon"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -4509,6 +4093,14 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr ""
@@ -4563,63 +4155,10 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr ""
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr ""
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr ""
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
@@ -4710,6 +4249,10 @@ msgstr ""
msgid "Close All"
msgstr ""
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
msgstr ""
@@ -4738,7 +4281,8 @@ msgstr ""
msgid "Break"
msgstr ""
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr ""
@@ -4751,18 +4295,6 @@ msgid "Debug with external editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
msgstr ""
@@ -4844,8 +4376,9 @@ msgid "Cut"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr ""
@@ -5108,10 +4641,6 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr ""
@@ -5128,10 +4657,6 @@ msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr ""
@@ -5359,6 +4884,10 @@ msgid "Transform"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr ""
@@ -5504,6 +5033,10 @@ msgid "Speed (FPS):"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr ""
@@ -5516,11 +5049,11 @@ msgid "Insert Empty (After)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
+msgid "Move (Before)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
+msgid "Move (After)"
msgstr ""
#: editor/plugins/style_box_editor_plugin.cpp
@@ -5597,7 +5130,11 @@ msgid "Remove All"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
@@ -5682,6 +5219,10 @@ msgid "Style"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr ""
@@ -5730,7 +5271,7 @@ msgid "Mirror Y"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
+msgid "Paint Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5794,6 +5335,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr ""
@@ -5864,19 +5409,29 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
+msgid "The path does not exist."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
+msgid "Please choose a folder that does not contain a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
@@ -5884,10 +5439,26 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't edit project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr ""
@@ -5896,23 +5467,23 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Import Existing Project"
+msgid "Rename Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
+msgid "Couldn't get project.godot in the project path."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Name:"
+msgid "New Game Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Create New Project"
+msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path:"
+msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
@@ -5920,11 +5491,19 @@ msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Browse"
+msgid "Project Name:"
msgstr ""
#: editor/project_manager.cpp
-msgid "New Game Project"
+msgid "Create folder"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Project Path:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
@@ -5936,6 +5515,10 @@ msgid "Unnamed Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Can't open project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr ""
@@ -5962,16 +5545,18 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
-"You are about the scan %s folders for existing Godot projects. Do you "
-"confirm?"
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project List"
+msgid ""
+"You are about the scan %s folders for existing Godot projects. Do you "
+"confirm?"
msgstr ""
#: editor/project_manager.cpp
-msgid "Run"
+msgid "Project List"
msgstr ""
#: editor/project_manager.cpp
@@ -5995,6 +5580,10 @@ msgid "Exit"
msgstr ""
#: editor/project_manager.cpp
+msgid "Restart Now"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -6031,17 +5620,14 @@ msgid "Add Input Action Event"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
@@ -6102,7 +5688,7 @@ msgstr ""
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr ""
@@ -6122,31 +5708,31 @@ msgstr ""
msgid "Add Event"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr ""
@@ -6155,7 +5741,7 @@ msgid "Add Global Property"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6171,6 +5757,14 @@ msgid "Delete Item"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Can't contain '/' or ':'"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
@@ -6211,6 +5805,14 @@ msgid "Remove Resource Remap Option"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
@@ -6271,6 +5873,26 @@ msgid "Locale"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Locales Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show all locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Filter mode:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Locales:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -6319,10 +5941,18 @@ msgid "New Script"
msgstr ""
#: editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr ""
#: editor/property_editor.cpp
+msgid "Convert To %s"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr ""
@@ -6359,6 +5989,10 @@ msgid "Select Property"
msgstr ""
#: editor/property_selector.cpp
+msgid "Select Virtual Method"
+msgstr ""
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr ""
@@ -6386,26 +6020,6 @@ msgstr ""
msgid "Reparent"
msgstr ""
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr ""
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr ""
@@ -6532,14 +6146,6 @@ msgid "Sub-Resources:"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr ""
@@ -6720,6 +6326,14 @@ msgid "Invalid base path"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "File exists, will be reused"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr ""
@@ -6760,6 +6374,10 @@ msgid "Load existing script file"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Inherits"
msgstr ""
@@ -6800,6 +6418,10 @@ msgid "Function:"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr ""
@@ -6880,6 +6502,10 @@ msgid "Type"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr ""
@@ -6955,12 +6581,28 @@ msgstr ""
msgid "Change Probe Extents"
msgstr ""
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Library"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Status"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr ""
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr ""
@@ -7010,10 +6652,6 @@ msgid "GridMap Duplicate Selection"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Snap View"
msgstr ""
@@ -7105,12 +6743,8 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Tiles"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7300,10 +6934,18 @@ msgid "Return"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
msgstr ""
@@ -7657,6 +7299,12 @@ msgid ""
"order for AnimatedSprite3D to display frames."
msgstr ""
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -7666,15 +7314,15 @@ msgid "Add current color as a preset"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Alert!"
+msgid "Cancel"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Please Confirm..."
+msgid "Alert!"
msgstr ""
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
+#: scene/gui/dialogs.cpp
+msgid "Please Confirm..."
msgstr ""
#: scene/gui/popup.cpp
@@ -7704,3 +7352,19 @@ msgid ""
"obtain a size. Otherwise, make it a RenderTarget and assign its internal "
"texture to some node for display."
msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr ""
diff --git a/editor/translations/id.po b/editor/translations/id.po
index 2f13c11082..06fc7eb599 100644
--- a/editor/translations/id.po
+++ b/editor/translations/id.po
@@ -1,5 +1,6 @@
# Indonesian translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# Abdul Aziz Muslim Alqudsy <abdul.aziz.muslim.alqudsy@gmail.com>, 2016.
@@ -7,20 +8,22 @@
# Andinawan Asa <asaandinawan@gmail.com>, 2016.
# Damar S. M <the.last.walla@gmail.com>, 2017.
# Khairul Hidayat <khairulcyber4rt@gmail.com>, 2016.
+# Sofyan Sugianto <sofyanartem@gmail.com>, 2017.
+# Tom My <tom.asadinawan@gmail.com>, 2017.
# yursan9 <rizal.sagi@gmail.com>, 2016.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-01-18 13:18+0000\n"
-"Last-Translator: Damar S. M. <the.last.walla@gmail.com>\n"
+"PO-Revision-Date: 2017-09-13 10:49+0000\n"
+"Last-Translator: Sofyan Sugianto <sofyanartem@gmail.com>\n"
"Language-Team: Indonesian <https://hosted.weblate.org/projects/godot-engine/"
"godot/id/>\n"
"Language: id\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 2.11-dev\n"
+"X-Generator: Weblate 2.17-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -35,19 +38,16 @@ msgid "Move Add Key"
msgstr "Pindahkan Kunci Tambah"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Transition"
-msgstr "Ubah Transisi Anim"
+msgstr "Ubah Transisi Animasi"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Transform"
-msgstr "Ubah Transformasi Anim"
+msgstr "Ubah Transformasi Animasi"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Change Value"
-msgstr "Ubah Nilai Anim"
+msgstr "Ubah Nilai Animasi"
#: editor/animation_editor.cpp
#, fuzzy
@@ -211,10 +211,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr "Buat track BARU %d dan masukkan tombol-tombol?"
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -381,277 +380,13 @@ msgstr "Ubah Tipe Nilai Array"
msgid "Change Array Value"
msgstr "Ubah Nilai Array"
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Contents:"
-msgstr "Konstanta:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "View Files"
-msgstr "File:"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr "Deskripsi:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "Tutup"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect."
-msgstr "Menyambungkan.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect to host:"
-msgstr "Sambungkan Ke Node:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Request failed, return code:"
-msgstr "Format file yang diminta tidak diketahui:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Connecting.."
-msgstr "Menyambungkan.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Requesting.."
-msgstr "Menguji"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Error making request"
-msgstr "Error menyimpan resource!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "Semua"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "Cari:"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Cari"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "Sortir:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr "Terbalik"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "Kategori:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "Situs:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr "Dukungan.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr "Resmi"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "Komunitas"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr "Menguji"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr "Aset-aset File ZIP"
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr "Daftar Fungsi Untuk '%s':"
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "Panggil"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr "Daftar Fungsi:"
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr "Argumen:"
-
-#: editor/call_dialog.cpp
-#, fuzzy
-msgid "Return:"
-msgstr "Kembali:"
-
#: editor/code_editor.cpp
msgid "Go to Line"
-msgstr "Pergi ke Barisan"
+msgstr "Pergi ke Baris"
#: editor/code_editor.cpp
msgid "Line Number:"
-msgstr "Nomor Barisan:"
+msgstr "Baris Nomor:"
#: editor/code_editor.cpp
msgid "No Matches"
@@ -664,11 +399,11 @@ msgstr "Diganti kejadian (kejadian-kejadian) %d."
#: editor/code_editor.cpp
msgid "Replace"
-msgstr "Tukar"
+msgstr "Ubah"
#: editor/code_editor.cpp
msgid "Replace All"
-msgstr "Tukar Semua"
+msgstr "Ubah Semua"
#: editor/code_editor.cpp
msgid "Match Case"
@@ -682,6 +417,14 @@ msgstr "Semua Kata"
msgid "Selection Only"
msgstr "Hanya yang Dipilih"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Cari"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr "Cari"
@@ -716,11 +459,11 @@ msgstr "Cepat Pada Penggantian"
msgid "Skip"
msgstr "Lalui"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "Perbesar Pandangan"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr "Perkecil Pandangan"
@@ -787,6 +530,20 @@ msgstr "Ditunda"
msgid "Oneshot"
msgstr "Satu Waktu"
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "Tutup"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr "Menghubungkan"
@@ -812,7 +569,7 @@ msgstr "Menyambungkan.."
msgid "Disconnect"
msgstr "Tidak tersambung"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr "Sinyal-sinyal"
@@ -829,6 +586,13 @@ msgstr "Favorit:"
msgid "Recent:"
msgstr "Saat ini:"
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "Cari:"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
@@ -836,6 +600,12 @@ msgstr "Saat ini:"
msgid "Matches:"
msgstr "Kecocokan:"
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "Deskripsi:"
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr "Cari Ganti Untuk:"
@@ -897,6 +667,11 @@ msgstr "Pemilik Dari:"
#: editor/dependency_editor.cpp
#, fuzzy
+msgid "Remove selected files from the project? (no undo)"
+msgstr "Hapus file-file yang dipilih dari proyek? (tanpa membatalkan/undo)"
+
+#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -907,9 +682,8 @@ msgstr ""
"Hapus saja mereka? (tanpa membatalkan/undo)"
#: editor/dependency_editor.cpp
-#, fuzzy
-msgid "Remove selected files from the project? (no undo)"
-msgstr "Hapus file-file yang dipilih dari proyek? (tanpa membatalkan/undo)"
+msgid "Cannot remove:\n"
+msgstr ""
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -978,10 +752,6 @@ msgid "Godot Engine contributors"
msgstr ""
#: editor/editor_about.cpp
-msgid "Authors"
-msgstr ""
-
-#: editor/editor_about.cpp
msgid "Project Founders"
msgstr ""
@@ -998,6 +768,38 @@ msgid "Developers"
msgstr ""
#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
msgid "License"
msgstr ""
@@ -1041,6 +843,16 @@ msgid "Package Installed Successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr "Pasang"
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
msgstr ""
@@ -1091,10 +903,6 @@ msgid "Audio Bus, Drag and Drop to rearrange."
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
msgid "Solo"
msgstr ""
@@ -1106,6 +914,10 @@ msgstr ""
msgid "Bypass"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
msgid "Duplicate"
@@ -1113,6 +925,11 @@ msgstr ""
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Volume"
+msgstr "Kebalikan Semula Pandangan"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Delete Effect"
msgstr "Hapus yang Dipilih"
@@ -1136,6 +953,11 @@ msgstr "Duplikat Pilihan"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Bus Volume"
+msgstr "Kebalikan Semula Pandangan"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Move Audio Bus"
msgstr "Pindahkan Kunci Tambah"
@@ -1167,7 +989,8 @@ msgstr ""
msgid "Create a new Bus Layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
@@ -1261,7 +1084,7 @@ msgid "Rearrange Autoloads"
msgstr "Mengatur kembali Autoload-autoload"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "Path:"
@@ -1269,9 +1092,7 @@ msgstr "Path:"
msgid "Node Name:"
msgstr "Nama Node:"
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr "Nama"
@@ -1305,18 +1126,19 @@ msgid "Choose a Directory"
msgstr "Pilih sebuah Direktori"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "Buat Folder"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "Nama:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "Tidak dapat membuat folder."
@@ -1336,30 +1158,6 @@ msgstr "Mengemas"
msgid "Template file not found:\n"
msgstr ""
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr "Ditambahkan:"
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr "Dihapus:"
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr "Gagal menyimpan atlas:"
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr "Tidak dapat menyimpan sub tekstur atlas:"
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr "Mengekspor untuk %s"
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr "Mengatur.."
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "File telah ada, Overwrite?"
@@ -1447,6 +1245,11 @@ msgstr "Pindahkan Favorit Keatas"
msgid "Move Favorite Down"
msgstr "Pindahkan Favorit Kebawah"
+#: editor/editor_file_dialog.cpp
+#, fuzzy
+msgid "Go to parent folder"
+msgstr "Tidak dapat membuat folder."
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "Direktori-direktori & File-file:"
@@ -1461,10 +1264,6 @@ msgid "File:"
msgstr "File:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "Filter:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "Harus menggunakan ekstensi yang sah."
@@ -1490,6 +1289,10 @@ msgstr "Daftar Class:"
msgid "Search Classes"
msgstr "Cari Kelas"
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr "Atas"
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr "Kelas:"
@@ -1506,15 +1309,30 @@ msgstr "Diturunkan oleh:"
msgid "Brief Description:"
msgstr "Deskripsi Singkat:"
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Members"
+msgstr "Member-member:"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "Member-member:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Public Methods"
+msgstr "Metode Publik:"
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr "Metode Publik:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "GUI Theme Items"
+msgstr "Item-item Tema GUI:"
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr "Item-item Tema GUI:"
@@ -1524,6 +1342,11 @@ msgstr "Sinyal-sinyal:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Enumerations"
+msgstr "Fungsi-fungsi:"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Enumerations:"
msgstr "Fungsi-fungsi:"
@@ -1532,19 +1355,51 @@ msgid "enum "
msgstr ""
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Constants"
+msgstr "Konstanta:"
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Konstanta:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Description"
+msgstr "Deskripsi:"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Properties"
+msgstr "Properti Objek."
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Property Description:"
msgstr "Deskripsi Singkat:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Methods"
+msgstr "Daftar Fungsi:"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr "Deskripsi Metode:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr "Mencari Teks"
@@ -1554,24 +1409,21 @@ msgid "Output:"
msgstr " Keluaran:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "Bersihkan"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr "Error menyimpan resource!"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr "Simpan Resource Sebagai.."
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
#, fuzzy
msgid "I see.."
msgstr "Aku tahu.."
@@ -1589,6 +1441,30 @@ msgid "Error while saving."
msgstr "Error saat menyimpan."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Can't open '%s'."
+msgstr "Menyambungkan.."
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while parsing '%s'."
+msgstr "Error saat menyimpan."
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Missing '%s' or its dependencies."
+msgstr "Scene '%s' memiliki dependensi yang rusak:"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while loading '%s'."
+msgstr "Error saat menyimpan."
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr "Menyimpan Scene"
@@ -1649,6 +1525,33 @@ msgid "Restored default layout to base settings."
msgstr "Mengembalikan semula layout default ke pengaturan-pengaturan awal."
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr "Salin Parameter"
@@ -1816,11 +1719,19 @@ msgid "Save & Quit"
msgstr "Simpan sebuah File"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Save changes to the following scene(s) before quitting?"
-msgstr ""
+msgstr "Simpan perubahan saat ini sebelum keluar?"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Save changes the following scene(s) before opening Project Manager?"
+msgstr "Simpan perubahan saat ini sebelum membuka Manajer Projek?"
+
+#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
msgstr ""
#: editor/editor_node.cpp
@@ -1828,19 +1739,25 @@ msgid "Pick a Main Scene"
msgstr "Pilih sebuah Scene Utama"
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "Error memuat font."
+
+#: editor/editor_node.cpp
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -1850,7 +1767,7 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
#, fuzzy
msgid "Ugh"
msgstr "Wadoo"
@@ -1864,14 +1781,14 @@ msgstr ""
"membuka scene tersebut, kemudian simpan di dalam alamat proyek."
#: editor/editor_node.cpp
-msgid "Error loading scene."
-msgstr "Gagal memuat scene."
-
-#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
msgstr "Scene '%s' memiliki dependensi yang rusak:"
#: editor/editor_node.cpp
+msgid "Clear Recent Scenes"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Save Layout"
msgstr "Simpan Penampilan"
@@ -1905,7 +1822,7 @@ msgstr "Mode Tanpa Gangguan"
msgid "Toggle distraction-free mode."
msgstr "Mode Tanpa Gangguan"
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr "Suasana"
@@ -2127,6 +2044,10 @@ msgstr ""
msgid "Issue Tracker"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "Komunitas"
+
#: editor/editor_node.cpp
msgid "About"
msgstr ""
@@ -2135,7 +2056,7 @@ msgstr ""
msgid "Play the project."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr ""
@@ -2151,7 +2072,7 @@ msgstr ""
msgid "Stop the scene."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr ""
@@ -2221,55 +2142,59 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Object properties."
+msgstr "Properti Objek."
+
+#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
msgstr ""
#: editor/editor_node.cpp
msgid "FileSystem"
-msgstr ""
+msgstr "Berkas Sistem"
#: editor/editor_node.cpp editor/node_dock.cpp
+#, fuzzy
msgid "Node"
-msgstr ""
+msgstr "Titik"
#: editor/editor_node.cpp
msgid "Output"
-msgstr ""
+msgstr "Luaran"
#: editor/editor_node.cpp
msgid "Don't Save"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr ""
+msgstr "Jangan Simpan"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Import Templates From ZIP File"
-msgstr ""
+msgstr "Impor Templat dari Berkas ZIP"
#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export Project"
-msgstr ""
+msgstr "Ekspor Projek"
#: editor/editor_node.cpp
msgid "Export Library"
-msgstr ""
+msgstr "Ekspor Pustaka"
#: editor/editor_node.cpp
+#, fuzzy
msgid "Merge With Existing"
-msgstr ""
+msgstr "Gabung dengan yang Ada"
#: editor/editor_node.cpp
msgid "Password:"
-msgstr ""
+msgstr "Sandi:"
#: editor/editor_node.cpp
msgid "Open & Run a Script"
-msgstr ""
+msgstr "Buka & Jalankan Skrip"
#: editor/editor_node.cpp
#, fuzzy
@@ -2277,39 +2202,46 @@ msgid "New Inherited"
msgstr "Scene Turunan Baru.."
#: editor/editor_node.cpp
+#, fuzzy
msgid "Load Errors"
-msgstr ""
+msgstr "Muat Galat"
#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
msgid "Select"
-msgstr ""
+msgstr "Pilih"
#: editor/editor_node.cpp
#, fuzzy
msgid "Open 2D Editor"
-msgstr "Buka sebuah Direktori"
+msgstr "Buka Penyunting 2D"
#: editor/editor_node.cpp
#, fuzzy
msgid "Open 3D Editor"
-msgstr "Buka sebuah Direktori"
+msgstr "Buka Penyunting 3D"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Script Editor"
-msgstr "Editor Ketergantungan"
+msgstr "Buka Penyunting Skrip"
#: editor/editor_node.cpp
msgid "Open Asset Library"
-msgstr ""
+msgstr "Buka Pustaka Aset"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the next Editor"
-msgstr "Editor Ketergantungan"
+msgstr "Buka Penyunting Selanjutnya"
#: editor/editor_node.cpp
msgid "Open the previous Editor"
+msgstr "Buka Penyunting Sebelumnya"
+
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
msgstr ""
#: editor/editor_plugin_settings.cpp
@@ -2317,6 +2249,15 @@ msgid "Installed Plugins:"
msgstr ""
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr "Perbarui"
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr ""
@@ -2349,7 +2290,7 @@ msgid "Frame %"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+msgid "Physics Frame %"
msgstr ""
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2368,26 +2309,6 @@ msgstr ""
msgid "Frame #:"
msgstr ""
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr "Mengimpor ulang"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr ""
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2499,10 +2420,6 @@ msgid "Importing:"
msgstr "Mengimpor:"
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr "Memuat Ekspor Template-template."
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr ""
@@ -2538,9 +2455,17 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
+"Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2551,45 +2476,52 @@ msgid ""
msgstr "Resource"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
+msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
+msgid "Cannot move a folder into itself.\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
-msgstr ""
+#, fuzzy
+msgid "Error moving:\n"
+msgstr "Error memuat:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Unable to update dependencies:\n"
+msgstr "Scene '%s' memiliki dependensi yang rusak:"
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
+msgid "No name provided"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving file:\n"
-msgstr "Error menyimpan TileSet!"
+msgid "No name provided."
+msgstr "Ubah Nama atau Pindahkan.."
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "Error memuat:"
+msgid "Name contains invalid characters."
+msgstr "Karakter sah:"
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
+msgid "A file or folder with this name already exists."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
-msgstr ""
+#, fuzzy
+msgid "Renaming file:"
+msgstr "Namai kembali Variabel"
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
+msgid "Renaming folder:"
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2601,52 +2533,50 @@ msgid "Collapse all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
+msgid "Copy Path"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
-msgstr ""
+#, fuzzy
+msgid "Rename.."
+msgstr "Ubah Nama atau Pindahkan.."
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
-msgstr ""
+msgid "Move To.."
+msgstr "Pindah Ke.."
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr ""
+#, fuzzy
+msgid "New Folder.."
+msgstr "Buat Folder"
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
-msgstr ""
+msgid "Show In File Manager"
+msgstr "Tampilkan di Manajer Berkas"
#: editor/filesystem_dock.cpp
-msgid "Move To.."
+msgid "Instance"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Info"
+msgid "Edit Dependencies.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
+msgid "View Owners.."
msgstr ""
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
-msgstr ""
+msgstr "Direktori Sebelumnya"
#: editor/filesystem_dock.cpp
msgid "Next Directory"
-msgstr ""
+msgstr "Direktori Selanjutnya"
#: editor/filesystem_dock.cpp
msgid "Re-Scan Filesystem"
-msgstr ""
+msgstr "Pindai Ulang Berkas Sistem"
#: editor/filesystem_dock.cpp
msgid "Toggle folder status as Favorite"
@@ -2657,18 +2587,26 @@ msgid "Instance the selected scene(s) as child of the selected node."
msgstr ""
#: editor/filesystem_dock.cpp
+#, fuzzy
msgid ""
"Scanning Files,\n"
"Please Wait.."
msgstr ""
+"Memindai Berkas,\n"
+"Silakan Tunggu.."
#: editor/filesystem_dock.cpp
msgid "Move"
+msgstr "Pindahkan"
+
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
msgstr ""
#: editor/groups_editor.cpp
msgid "Add to Group"
-msgstr ""
+msgstr "Tambahkan ke Grup"
#: editor/groups_editor.cpp
msgid "Remove from Group"
@@ -2680,6 +2618,10 @@ msgid "Import as Single Scene"
msgstr "Memperbaharui Scene"
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -2692,6 +2634,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
msgstr ""
@@ -2700,38 +2654,31 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr ""
@@ -2762,580 +2709,54 @@ msgstr ""
msgid "Reimport"
msgstr "Mengimpor ulang"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr "Error menginisialisasi FreeType."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "Format font tidak diketahui."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "Error memuat font."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr "Ukuran font tidak sah."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Root Node Name:"
-msgstr "Nama Node:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Batal"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
+#: editor/node_dock.cpp
+msgid "Groups"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr ""
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Select a Node to edit Signals and Groups."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -3492,7 +2913,6 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3513,7 +2933,7 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Animation"
-msgstr ""
+msgstr "Animasi"
#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "New name:"
@@ -3603,10 +3023,6 @@ msgid "Delete Input"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr ""
@@ -3662,64 +3078,190 @@ msgstr ""
msgid "Filters.."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Contents:"
+msgstr "Konstanta:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "View Files"
+msgstr "File:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Connection error, please try again."
+msgstr "Gangguan koneks, silakan coba lagi."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Can't connect."
+msgstr "Menyambungkan.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Can't connect to host:"
+msgstr "Sambungkan Ke Node:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Tidak ada respon."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Request failed, return code:"
+msgstr "Format file yang diminta tidak diketahui:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Connecting.."
+msgstr "Menyambungkan.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Requesting.."
+msgstr "Menguji"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Error making request"
+msgstr "Error menyimpan resource!"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "Semua"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "Sortir:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr "Terbalik"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "Kategori:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "Situs:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr "Dukungan.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "Resmi"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr "Menguji"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr "Aset-aset File ZIP"
+
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3762,11 +3304,15 @@ msgid "Edit CanvasItem"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+msgid "Anchors only"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
+msgid "Change Anchors and Margins"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3817,59 +3363,73 @@ msgid "Pan Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
+#, fuzzy
+msgid "Toggles snapping"
+msgstr "Beralih Breakpoint"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
+msgid "Snapping options"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
+msgid "Snap to grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
+msgid "Use Rotation Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "Edit"
+msgid "Configure Snap..."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Snap Relative"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
+msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
+msgid "Smart snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
+msgid "Snap to parent"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
+msgid "Snap to node anchor"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
+msgid "Restores the object's children's ability to be selected."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3898,11 +3458,16 @@ msgid "View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
+msgid "Show helpers"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show rulers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3914,8 +3479,9 @@ msgid "Frame Selection"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
-msgstr ""
+#, fuzzy
+msgid "Layout"
+msgstr "Simpan Penampilan"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Keys"
@@ -3938,11 +3504,20 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
+msgid "Drag pivot from mouse position"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "Hapus Sinyal"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
+msgid "Divide grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3953,23 +3528,28 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr ""
@@ -3984,45 +3564,6 @@ msgid ""
"Drag & drop + Alt : Change node type"
msgstr ""
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -4032,14 +3573,6 @@ msgid "Set Handle"
msgstr ""
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr ""
@@ -4062,6 +3595,27 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Ease in"
+msgstr "Beri Skala Seleksi"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
msgstr ""
@@ -4141,22 +3695,18 @@ msgid "Create Occluder Polygon"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr ""
@@ -4258,6 +3808,10 @@ msgid "Create Outline"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr ""
@@ -4385,12 +3939,73 @@ msgstr ""
msgid "Populate"
msgstr ""
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create Navigation Polygon"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Marking walkable triangles..."
+msgstr "Menyimpan perubahan-perubahan lokal.."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Partitioning..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
msgstr ""
#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
+msgid "Create Navigation Polygon"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -4408,7 +4023,7 @@ msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Error loading image:"
-msgstr ""
+msgstr "Galat saat memuat gambar:"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "No pixels with transparency > 128 in image.."
@@ -4429,7 +4044,7 @@ msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
msgid "Particles"
-msgstr ""
+msgstr "Partikel"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
@@ -4564,16 +4179,19 @@ msgid "Curve Point #"
msgstr ""
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
-msgstr ""
+msgstr "Hapus Sinyal"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
-msgstr ""
+msgstr "Hapus Sinyal"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
-msgstr ""
+msgstr "Hapus Sinyal"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4633,6 +4251,14 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "Edit"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr ""
@@ -4687,63 +4313,10 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "Tempel"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr ""
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr ""
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
@@ -4792,15 +4365,15 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
msgid "File"
-msgstr ""
+msgstr "Berkas"
#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
msgid "New"
-msgstr ""
+msgstr "Baru"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save All"
-msgstr ""
+msgstr "Simpan Semua"
#: editor/plugins/script_editor_plugin.cpp
msgid "Soft Reload Script"
@@ -4816,24 +4389,27 @@ msgstr ""
#: editor/plugins/script_editor_plugin.cpp
msgid "Reload Theme"
-msgstr ""
+msgstr "Muat Ulang Tema"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme"
-msgstr ""
+msgstr "Simpan Tema"
#: editor/plugins/script_editor_plugin.cpp
msgid "Save Theme As"
-msgstr ""
+msgstr "Simpan Tema Sebagai"
#: editor/plugins/script_editor_plugin.cpp
msgid "Close Docs"
-msgstr ""
+msgstr "Tutup Dokumentasi"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Close All"
-msgstr "Tutup"
+msgstr "Tutup Semua"
+
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr "Jalankan"
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
@@ -4844,13 +4420,13 @@ msgstr "Beralih Favorit"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find.."
-msgstr ""
+msgstr "Cari.."
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Find Next"
-msgstr ""
+msgstr "Pencarian Selanjutnya"
#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
msgid "Step Over"
@@ -4864,7 +4440,8 @@ msgstr ""
msgid "Break"
msgstr ""
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr ""
@@ -4878,18 +4455,6 @@ msgid "Debug with external editor"
msgstr "Editor Ketergantungan"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
msgstr ""
@@ -4972,8 +4537,9 @@ msgid "Cut"
msgstr "Potong"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "Kopy"
@@ -5238,60 +4804,52 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom View."
-msgstr ""
+msgstr "Tampilan Bawah."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Bottom"
-msgstr ""
+msgstr "Bawah"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Top View."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr ""
+msgstr "Tampilan Atas."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
-msgstr ""
+msgstr "Tampilan Belakang."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear"
-msgstr ""
+msgstr "Belakang"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front View."
-msgstr ""
+msgstr "Tampilan Depan."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Front"
-msgstr ""
+msgstr "Depan"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Left View."
-msgstr ""
+msgstr "Tampilan Kiri."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Left"
-msgstr ""
+msgstr "Kiri"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Right View."
-msgstr ""
+msgstr "Tampilan Kanan."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Right"
-msgstr ""
+msgstr "Kanan"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Keying is disabled (no key inserted)."
@@ -5498,6 +5056,10 @@ msgid "Transform"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr ""
@@ -5643,6 +5205,10 @@ msgid "Speed (FPS):"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr ""
@@ -5655,11 +5221,12 @@ msgid "Insert Empty (After)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr ""
+#, fuzzy
+msgid "Move (Before)"
+msgstr "Salin Resource"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
+msgid "Move (After)"
msgstr ""
#: editor/plugins/style_box_editor_plugin.cpp
@@ -5738,7 +5305,11 @@ msgid "Remove All"
msgstr "Hapus"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
@@ -5816,16 +5387,20 @@ msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
msgid "Icon"
-msgstr ""
+msgstr "Ikon"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Style"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Color"
+msgid "Font"
msgstr ""
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Color"
+msgstr "Warna"
+
#: editor/plugins/tile_map_editor_plugin.cpp
#, fuzzy
msgid "Erase Selection"
@@ -5873,7 +5448,7 @@ msgid "Mirror Y"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
+msgid "Paint Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5940,6 +5515,10 @@ msgid "Delete preset '%s'?"
msgstr "Hapus file yang dipilih?"
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr ""
@@ -6012,20 +5591,31 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
#, fuzzy
msgid "Export With Debug"
msgstr "Ekspor Tile Set"
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
+#, fuzzy
+msgid "The path does not exist."
+msgstr "File tidak ada."
+
+#: editor/project_manager.cpp
+msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
+msgid "Please choose a folder that does not contain a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
@@ -6033,47 +5623,74 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path (changed anything?)."
+msgid " "
msgstr ""
#: editor/project_manager.cpp
-msgid "Couldn't create project.godot in project path."
+msgid "It would be a good idea to name your project."
msgstr ""
#: editor/project_manager.cpp
-msgid "The following files failed extraction from package:"
+msgid "Invalid project path (changed anything?)."
msgstr ""
#: editor/project_manager.cpp
-msgid "Import Existing Project"
+msgid "Couldn't get project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
+msgid "Couldn't edit project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Name:"
+msgid "Couldn't create project.godot in project path."
msgstr ""
#: editor/project_manager.cpp
-msgid "Create New Project"
+msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path:"
+#, fuzzy
+msgid "Rename Project"
+msgstr "Projek Baru Permainan"
+
+#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in the project path."
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "New Game Project"
+msgstr "Projek Baru Permainan"
+
+#: editor/project_manager.cpp
+msgid "Import Existing Project"
+msgstr "Impor Projek yang Sudah Ada"
+
+#: editor/project_manager.cpp
+msgid "Create New Project"
+msgstr "Buat Projek Baru"
+
+#: editor/project_manager.cpp
msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Browse"
-msgstr ""
+msgid "Project Name:"
+msgstr "Nama Projek:"
#: editor/project_manager.cpp
-msgid "New Game Project"
+#, fuzzy
+msgid "Create folder"
+msgstr "Buat Folder"
+
+#: editor/project_manager.cpp
+msgid "Project Path:"
+msgstr "Lokasi Projek:"
+
+#: editor/project_manager.cpp
+msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
@@ -6085,8 +5702,14 @@ msgid "Unnamed Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't open project"
+msgstr "Menyambungkan.."
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Are you sure to open more than one project?"
-msgstr ""
+msgstr "Apakah Anda yakin membuka lebih dari satu projek?"
#: editor/project_manager.cpp
#, fuzzy
@@ -6106,8 +5729,9 @@ msgid ""
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
msgid "Are you sure to run more than one project?"
-msgstr ""
+msgstr "Apakah Anda yakin menjalankan lebih dari satu projek?"
#: editor/project_manager.cpp
msgid "Remove project from the list? (Folder contents will not be modified)"
@@ -6115,29 +5739,31 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
-"You are about the scan %s folders for existing Godot projects. Do you "
-"confirm?"
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project List"
+msgid ""
+"You are about the scan %s folders for existing Godot projects. Do you "
+"confirm?"
msgstr ""
#: editor/project_manager.cpp
-msgid "Run"
-msgstr ""
+msgid "Project List"
+msgstr "Daftar Projek"
#: editor/project_manager.cpp
msgid "Scan"
-msgstr ""
+msgstr "Pindai"
#: editor/project_manager.cpp
msgid "Select a Folder to Scan"
-msgstr ""
+msgstr "Pilih Berkas untuk Dipindai"
#: editor/project_manager.cpp
msgid "New Project"
-msgstr ""
+msgstr "Projek Baru"
#: editor/project_manager.cpp
#, fuzzy
@@ -6146,6 +5772,10 @@ msgstr "Hapus Pilihan"
#: editor/project_manager.cpp
msgid "Exit"
+msgstr "Keluar"
+
+#: editor/project_manager.cpp
+msgid "Restart Now"
msgstr ""
#: editor/project_manager.cpp
@@ -6186,17 +5816,14 @@ msgid "Add Input Action Event"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
@@ -6257,7 +5884,7 @@ msgstr "Ubah"
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "Axis"
@@ -6277,32 +5904,32 @@ msgstr ""
msgid "Add Event"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "Perangkat"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "Tombol"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "Tombol Kiri."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "Tombol Kanan."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "Tombol Tengah."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Wheel Up."
msgstr "Scroll keatas."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Wheel Down."
msgstr "Scroll kebawah."
@@ -6313,7 +5940,7 @@ msgid "Add Global Property"
msgstr "Tambahkan Properti Getter"
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6331,6 +5958,15 @@ msgid "Delete Item"
msgstr "Hapus"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Can't contain '/' or ':'"
+msgstr "Sambungkan Ke Node:"
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
@@ -6371,6 +6007,15 @@ msgid "Remove Resource Remap Option"
msgstr ""
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Changed Locale Filter"
+msgstr "Ganti Ukuran Kamera"
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
@@ -6431,6 +6076,27 @@ msgid "Locale"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Locales Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show all locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "Filter:"
+
+#: editor/project_settings_editor.cpp
+msgid "Locales:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -6460,7 +6126,7 @@ msgstr ""
#: editor/property_editor.cpp
msgid "File.."
-msgstr ""
+msgstr "Berkas.."
#: editor/property_editor.cpp
msgid "Dir.."
@@ -6481,12 +6147,24 @@ msgid "New Script"
msgstr "Scene Baru"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Make Unique"
+msgstr "Membuat sub-Resource Unik"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "Show in File System"
-msgstr ""
+msgstr "Tampilkan dalam Manajer Berkas"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Convert To %s"
+msgstr "Sambungkan Ke Node:"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "Error loading file: Not a resource!"
-msgstr ""
+msgstr "Gagal saat memuat berkas: Bukan berkas resource!"
#: editor/property_editor.cpp
msgid "Selected node is not a Viewport!"
@@ -6524,6 +6202,11 @@ msgstr "Tambahkan Properti Setter"
#: editor/property_selector.cpp
#, fuzzy
+msgid "Select Virtual Method"
+msgstr "Metode Publik:"
+
+#: editor/property_selector.cpp
+#, fuzzy
msgid "Select Method"
msgstr "Metode Publik:"
@@ -6551,26 +6234,6 @@ msgstr ""
msgid "Reparent"
msgstr ""
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr ""
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr ""
@@ -6698,14 +6361,6 @@ msgid "Sub-Resources:"
msgstr "Resource"
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr ""
@@ -6894,6 +6549,15 @@ msgid "Invalid base path"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "File exists, will be reused"
+msgstr "File telah ada, Overwrite?"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr ""
@@ -6937,6 +6601,10 @@ msgid "Load existing script file"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Inherits"
msgstr "Turunan:"
@@ -6981,6 +6649,10 @@ msgid "Function:"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr ""
@@ -7061,6 +6733,10 @@ msgid "Type"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr ""
@@ -7139,13 +6815,30 @@ msgstr ""
msgid "Change Probe Extents"
msgstr ""
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Library"
+msgstr "Ekspor Pustaka"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Status"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr ""
"Tipe argument salah dalam menggunakan convert(), gunakan konstanta TYPE_*."
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Tidak cukup bytes untuk menerjemahkan, atau format tidak sah."
@@ -7197,10 +6890,6 @@ msgid "GridMap Duplicate Selection"
msgstr "Duplikat Pilihan"
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Snap View"
msgstr ""
@@ -7296,13 +6985,8 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr "File:"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7514,10 +7198,18 @@ msgid "Return"
msgstr "Kembali:"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr "Panggil"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Input Value"
msgstr "Ubah Nilai Array"
@@ -7940,13 +7632,24 @@ msgstr ""
"Sebuah resource SpriteFrames harus diciptakan atau diatur didalam properti "
"'Frames' agar AnimatedSprite3D menampilkan frame-frame."
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
#: scene/gui/color_picker.cpp
+#, fuzzy
msgid "Add current color as a preset"
-msgstr ""
+msgstr "Tambah warna sekarang sebagai preset"
+
+#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Batal"
#: scene/gui/dialogs.cpp
msgid "Alert!"
@@ -7956,10 +7659,6 @@ msgstr "Peringatan!"
msgid "Please Confirm..."
msgstr "Mohon konfirmasi..."
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -7978,10 +7677,13 @@ msgid ""
msgstr ""
#: scene/main/scene_tree.cpp
+#, fuzzy
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
msgstr ""
+"Lingkungan Baku yang ditetapkan di Pengaturan Proyek (Rendering -> Viewport -"
+"> Lingkungan Baku) tidak dapat dimuat"
#: scene/main/viewport.cpp
#, fuzzy
@@ -7997,6 +7699,105 @@ msgstr ""
"sebuah RenderTarget dan tetapkannya tekstur internal untuk beberapa node "
"untuk ditampilkan."
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr "Error menginisialisasi FreeType."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "Format font tidak diketahui."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "Error memuat font."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr "Ukuran font tidak sah."
+
+#~ msgid "Filter:"
+#~ msgstr "Filter:"
+
+#~ msgid "Method List For '%s':"
+#~ msgstr "Daftar Fungsi Untuk '%s':"
+
+#~ msgid "Arguments:"
+#~ msgstr "Argumen:"
+
+#, fuzzy
+#~ msgid "Return:"
+#~ msgstr "Kembali:"
+
+#~ msgid "Added:"
+#~ msgstr "Ditambahkan:"
+
+#~ msgid "Removed:"
+#~ msgstr "Dihapus:"
+
+#~ msgid "Error saving atlas:"
+#~ msgstr "Gagal menyimpan atlas:"
+
+#~ msgid "Could not save atlas subtexture:"
+#~ msgstr "Tidak dapat menyimpan sub tekstur atlas:"
+
+#~ msgid "Exporting for %s"
+#~ msgstr "Mengekspor untuk %s"
+
+#~ msgid "Setting Up.."
+#~ msgstr "Mengatur.."
+
+#~ msgid "Error loading scene."
+#~ msgstr "Gagal memuat scene."
+
+#~ msgid "Re-Import"
+#~ msgstr "Impor Ulang"
+
+#~ msgid "Re-Importing"
+#~ msgstr "Mengimpor ulang"
+
+#~ msgid "Loading Export Templates"
+#~ msgstr "Memuat Ekspor Template-template."
+
+#, fuzzy
+#~ msgid "Error moving file:\n"
+#~ msgstr "Error menyimpan TileSet!"
+
+#~ msgid "Pick New Name and Location For:"
+#~ msgstr "Tentukan Nama dan Lokasi Baru untuk:"
+
+#~ msgid "No files selected!"
+#~ msgstr "Tidak ada berkas dipilih!"
+
+#~ msgid "Re-Import.."
+#~ msgstr "Impor Ulang.."
+
+#, fuzzy
+#~ msgid "Root Node Name:"
+#~ msgstr "Nama Node:"
+
+#~ msgid "Texture Format"
+#~ msgstr "Format Tekstur"
+
+#, fuzzy
+#~ msgid "Texture Options"
+#~ msgstr "Opsi Tekstur"
+
+#~ msgid "Error importing:"
+#~ msgstr "Galat saat mengimpor:"
+
+#~ msgid "Max Texture Size:"
+#~ msgstr "Ukuran Tekstur Maksimum:"
+
+#~ msgid "Project Path (Must Exist):"
+#~ msgstr "Lokasi Projek (Harus Ada):"
+
+#, fuzzy
+#~ msgid "Tiles"
+#~ msgstr "File:"
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl+"
+
#~ msgid "Close scene? (Unsaved changes will be lost)"
#~ msgstr "Tutup scene? (Perubahan-perubahan yang belum disimpan akan hilang)"
diff --git a/editor/translations/it.po b/editor/translations/it.po
index 060e9551e0..45c48d6ac4 100644
--- a/editor/translations/it.po
+++ b/editor/translations/it.po
@@ -1,8 +1,11 @@
# Italian translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# Dario Bonfanti <bonfi.96@hotmail.it>, 2016-2017.
+# dariocavada <cavada@ectrlsolutions.com>, 2017.
+# Giovanni Solimeno (Crax97) <gsolimeno97@gmail.com>, 2017.
# Marco Melorio <m.melorio@icloud.com>, 2017.
# RealAquilus <JamesHeller@live.it>, 2017.
#
@@ -10,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-08-21 16:46+0000\n"
+"PO-Revision-Date: 2017-10-23 16:46+0000\n"
"Last-Translator: Dario Bonfanti <bonfi.96@hotmail.it>\n"
"Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/"
"godot/it/>\n"
@@ -19,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 2.17-dev\n"
+"X-Generator: Weblate 2.17\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -195,10 +198,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr "Creare %d NUOVE tracce e inserire key?"
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -361,261 +363,6 @@ msgstr "Cambia Tipo del Valore Array"
msgid "Change Array Value"
msgstr "Cambia Valore Array"
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr "Gratuito"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr "Versione:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr "Contenuti:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr "Vedi Files"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr "Descrizione:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr "Installa"
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "Chiudi"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr "Impossibile risolvere l'hostname:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Impossibile risolvete."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr "Errore di connessione, si prega di riprovare."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Impossibile connettersi."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr "Impossibile connetersi all'host:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr "Nessuna risposta dall'host:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Nessuna risposta."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Richiesta fallita, codice di return:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr "Rich. Fall."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr "Richiesta fallita, troppi ridirezionamenti"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr "Ridirigi Loop."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Fallito:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr "Hash di download non buono, si presume il file sia stato manipolato."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr "Previsto:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr "Ottenuto:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr "Check hash sha256 fallito"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr "Errore di Download Asset:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr "Successo!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr "Recupero:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr "Risolvendo.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connecting.."
-msgstr "Connettendo.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Requesting.."
-msgstr "Richiedendo.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Error making request"
-msgstr "Errore nel fare richiesta"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr "Inattivo"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr "Riprova"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr "Errore durante il download"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr "Il download per questo asset è già in corso!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr "primo"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr "prec"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr "seguente"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr "ultimo"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "Tutti"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "Cerca:"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Cerca"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr "Importa"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr "Plugins"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "Ordina:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr "Inverti"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "Categoria:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "Sito:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr "Supporta.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr "Ufficiale"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "Comunità"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr "Testing"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr "ZIP File degli Asset"
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr "Lista Metodi Per '%s':"
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "Chiama"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr "Lista Metodi:"
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr "Argomenti:"
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr "Ritorna:"
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr "Vai alla Linea"
@@ -652,6 +399,14 @@ msgstr "Parole Intere"
msgid "Selection Only"
msgstr "Solo Selezione"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Cerca"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr "Trova"
@@ -684,11 +439,11 @@ msgstr "Richiedi Per Sostituire"
msgid "Skip"
msgstr "Salta"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "Zoom In"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr "Zoom Out"
@@ -757,6 +512,20 @@ msgstr "Differita"
msgid "Oneshot"
msgstr "Oneshot"
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "Chiudi"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr "Connetti"
@@ -782,7 +551,7 @@ msgstr "Connetti.."
msgid "Disconnect"
msgstr "Disconnetti"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr "Segnali"
@@ -799,12 +568,25 @@ msgstr "Preferiti:"
msgid "Recent:"
msgstr "Recenti:"
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "Cerca:"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr "Corrispondenze:"
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "Descrizione:"
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr "Cerca Rimpiazzo Per:"
@@ -864,6 +646,10 @@ msgid "Owners Of:"
msgstr "Proprietari Di:"
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr "Rimuovi i file selezionati dal progetto? (no undo)"
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -874,8 +660,8 @@ msgstr ""
"Rimuoverli comunque? (no undo)"
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
-msgstr "Rimuovi i file selezionati dal progetto? (no undo)"
+msgid "Cannot remove:\n"
+msgstr "Impossibile rimouvere:\n"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -903,7 +689,7 @@ msgstr "Errori in caricamento!"
#: editor/dependency_editor.cpp
msgid "Permanently delete %d item(s)? (No undo!)"
-msgstr "Elimina permanentemente %d elementi? (No undo!)"
+msgstr "Eliminare permanentemente %d elementi? (No undo!)"
#: editor/dependency_editor.cpp
msgid "Owns"
@@ -911,7 +697,7 @@ msgstr "Possiede"
#: editor/dependency_editor.cpp
msgid "Resources Without Explicit Ownership:"
-msgstr "Risorse Senza Proprietà Esplicita:"
+msgstr "Risorse Non Possedute Esplicitamente:"
#: editor/dependency_editor.cpp editor/editor_node.cpp
msgid "Orphan Resource Explorer"
@@ -941,19 +727,12 @@ msgid "Godot Engine contributors"
msgstr "Contributori a Godot Engine"
#: editor/editor_about.cpp
-#, fuzzy
-msgid "Authors"
-msgstr "Autore:"
-
-#: editor/editor_about.cpp
-#, fuzzy
msgid "Project Founders"
-msgstr "Gestione Progetti"
+msgstr "Fondatori Progetto"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Lead Developer"
-msgstr "Sviluppatori"
+msgstr "Lead Developer"
#: editor/editor_about.cpp editor/project_manager.cpp
msgid "Project Manager"
@@ -964,12 +743,44 @@ msgid "Developers"
msgstr "Sviluppatori"
#: editor/editor_about.cpp
+msgid "Authors"
+msgstr "Autori"
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr "Sponsors Platino"
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr "Sponsors Oro"
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr "Sponsors Mini"
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr "Donatori Oro"
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr "Sponsors Argento"
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr "Donatori Bronzo"
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr "Donatori"
+
+#: editor/editor_about.cpp
msgid "License"
-msgstr ""
+msgstr "Licenza"
#: editor/editor_about.cpp
msgid "Thirdparty License"
-msgstr ""
+msgstr "Licenza di Terze Parti"
#: editor/editor_about.cpp
msgid ""
@@ -978,104 +789,108 @@ msgid ""
"is an exhaustive list of all such thirdparty components with their "
"respective copyright statements and license terms."
msgstr ""
+"Godot Engine si appoggia su un numero di librerie gratuite ed open source, "
+"tutte compatibili con la licenza MIT. La seguente é una lista esaustiva di "
+"tali componenti di terze parti con le rispettive dichiarazioni di copyright "
+"e termini di licenza."
#: editor/editor_about.cpp
-#, fuzzy
msgid "All Components"
-msgstr "Contenuti:"
+msgstr "Tutte le Componenti"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Components"
-msgstr "Contenuti:"
+msgstr "Componenti"
#: editor/editor_about.cpp
msgid "Licenses"
-msgstr ""
+msgstr "Licenze"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Error opening package file, not in zip format."
-msgstr ""
+msgstr "Errore nell'apertura del package, non in formato zip."
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Uncompressing Assets"
-msgstr "Decompressi"
+msgstr "Decompressione Assets"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Package Installed Successfully!"
msgstr "Pacchetto Installato Con Successo!"
#: editor/editor_asset_installer.cpp
-#, fuzzy
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr "Successo!"
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr "Installa"
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
-msgstr "Pacchetto Installato Con Successo!"
+msgstr "Installer Pacchetto"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
-msgstr ""
+msgstr "Altoparlanti"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Effect"
-msgstr "Aggiungi Evento"
+msgstr "Aggiungi Effetto"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Rename Audio Bus"
-msgstr "Apri Layout Audio Bus"
+msgstr "Rinomina Bus Audio"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Toggle Audio Bus Solo"
-msgstr "Apri Layout Audio Bus"
+msgstr "Imposta Bus Audio su Solo"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Toggle Audio Bus Mute"
-msgstr "Apri Layout Audio Bus"
+msgstr "Imposta Bus Audio su Mute"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Bypass Effects"
-msgstr ""
+msgstr "Imposta Audio Bus Bypassa Effetti"
#: editor/editor_audio_buses.cpp
msgid "Select Audio Bus Send"
-msgstr ""
+msgstr "Seleziona Bus Audio Invio"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus Effect"
-msgstr ""
+msgstr "Aggiungi un effetto Bus Audio"
#: editor/editor_audio_buses.cpp
msgid "Move Bus Effect"
-msgstr ""
+msgstr "Sposta effetti bus"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Bus Effect"
-msgstr "Elimina selezionati"
+msgstr "Cancella effetto bus"
#: editor/editor_audio_buses.cpp
msgid "Audio Bus, Drag and Drop to rearrange."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-#, fuzzy
-msgid "Bus options"
-msgstr "Opzioni subscena"
+msgstr "Bus Audio, prendi e trascina per riordinare."
#: editor/editor_audio_buses.cpp
msgid "Solo"
-msgstr ""
+msgstr "Solo"
#: editor/editor_audio_buses.cpp
msgid "Mute"
-msgstr ""
+msgstr "Muto"
#: editor/editor_audio_buses.cpp
msgid "Bypass"
-msgstr ""
+msgstr "Bypassa"
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr "Opzioni bus"
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
@@ -1083,33 +898,36 @@ msgid "Duplicate"
msgstr "duplica"
#: editor/editor_audio_buses.cpp
-#, fuzzy
+msgid "Reset Volume"
+msgstr "Ripristina Volume"
+
+#: editor/editor_audio_buses.cpp
msgid "Delete Effect"
-msgstr "Elimina selezionati"
+msgstr "Elimina Effetto"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Audio Bus"
-msgstr "Aggiungi Bus"
+msgstr "Aggiungi Bus Audio"
#: editor/editor_audio_buses.cpp
msgid "Master bus can't be deleted!"
-msgstr ""
+msgstr "Il bus principale non può essere cancellato!"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Audio Bus"
-msgstr "Elimina Layout"
+msgstr "Elimina bus audio"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Duplicate Audio Bus"
-msgstr "Duplica Animazione"
+msgstr "Duplica bus audio"
+
+#: editor/editor_audio_buses.cpp
+msgid "Reset Bus Volume"
+msgstr "Ripristina Volume del Bus"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Move Audio Bus"
-msgstr "Azione di spostamento"
+msgstr "Sposta bus audio"
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
@@ -1117,40 +935,36 @@ msgstr "Salva Layout Bus Audio Come..."
#: editor/editor_audio_buses.cpp
msgid "Location for New Layout.."
-msgstr "Posizione per Nuovo Layout..."
+msgstr "Posizione per Nuovo Layout.."
#: editor/editor_audio_buses.cpp
msgid "Open Audio Bus Layout"
-msgstr "Apri Layout Audio Bus"
+msgstr "Apri Layout Bus Audio"
#: editor/editor_audio_buses.cpp
msgid "There is no 'res://default_bus_layout.tres' file."
-msgstr ""
+msgstr "Non esiste il file 'res://default_bus_layout.tres'."
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Invalid file, not an audio bus layout."
-msgstr ""
-"Estensione file invalida.\n"
-"Si prega di usare .font."
+msgstr "File non valido, non è un layout di tipo bus audio."
#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr "Aggiungi Bus"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Create a new Bus Layout."
-msgstr "Crea Nuova Risorsa"
+msgstr "Crea nuovo layout di tipo bus."
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr "Carica"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Load an existing Bus Layout."
-msgstr "Carica una risorsa esistente dal disco e modificala."
+msgstr "Carica un layout esistente di tipo bus."
#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -1158,18 +972,16 @@ msgid "Save As"
msgstr "Salva Come"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Save this Bus Layout to a file."
-msgstr "Salva Layout Bus Audio Come..."
+msgstr "Salva questo layout di tipo bus in un file."
#: editor/editor_audio_buses.cpp editor/import_dock.cpp
-#, fuzzy
msgid "Load Default"
-msgstr "Default"
+msgstr "Carica predefiniti"
#: editor/editor_audio_buses.cpp
msgid "Load the default Bus Layout."
-msgstr ""
+msgstr "Carica il layout di tipo bus predefinito."
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
@@ -1242,7 +1054,7 @@ msgid "Rearrange Autoloads"
msgstr "Riordina gli Autoload"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "Percorso:"
@@ -1250,9 +1062,7 @@ msgstr "Percorso:"
msgid "Node Name:"
msgstr "Nome Nodo:"
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr "Nome"
@@ -1277,27 +1087,27 @@ msgid "Updating scene.."
msgstr "Aggiornando la scena.."
#: editor/editor_dir_dialog.cpp
-#, fuzzy
msgid "Please select a base directory first"
-msgstr "Si prega di salvare prima la scena."
+msgstr "Si prega di selezionare prima una directory di base"
#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "Scegli una Directory"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "Crea Cartella"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "Nome:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "Impossibile creare cartella."
@@ -1317,30 +1127,6 @@ msgstr "Impacchettando"
msgid "Template file not found:\n"
msgstr "File template non trovato:\n"
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr "Agginto:"
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr "Rimosso:"
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr "Errore di salvataggio dell'atlas:"
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr "Impossibile salvare la substruttura dell'atlas:"
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr "Esportando per %s"
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr "Impostando.."
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "File Esistente, Sovrascrivere?"
@@ -1425,6 +1211,10 @@ msgstr "Sposta Preferito Su"
msgid "Move Favorite Down"
msgstr "Sposta Preferito Giù"
+#: editor/editor_file_dialog.cpp
+msgid "Go to parent folder"
+msgstr "Vai nella cartella padre"
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "Directory e File:"
@@ -1439,10 +1229,6 @@ msgid "File:"
msgstr "File:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "Filtro:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "Necessaria un'estensione valida."
@@ -1467,6 +1253,10 @@ msgstr "Lista Classi:"
msgid "Search Classes"
msgstr "Cerca Classi"
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr "Alto"
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr "Classe:"
@@ -1483,15 +1273,27 @@ msgstr "Ereditato da:"
msgid "Brief Description:"
msgstr "Breve Descrizione:"
+#: editor/editor_help.cpp
+msgid "Members"
+msgstr "Membri"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "Membri:"
#: editor/editor_help.cpp
+msgid "Public Methods"
+msgstr "Metodi Pubblici"
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr "Metodi Pubblici:"
#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr "Elementi Tema GUI"
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr "Elementi Tema GUI:"
@@ -1500,54 +1302,85 @@ msgid "Signals:"
msgstr "Segnali:"
#: editor/editor_help.cpp
-#, fuzzy
+msgid "Enumerations"
+msgstr "Enumerazioni"
+
+#: editor/editor_help.cpp
msgid "Enumerations:"
-msgstr "Animazioni"
+msgstr "Enumerazioni:"
#: editor/editor_help.cpp
msgid "enum "
-msgstr ""
+msgstr "enum "
+
+#: editor/editor_help.cpp
+msgid "Constants"
+msgstr "Costanti"
#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Costanti:"
#: editor/editor_help.cpp
+msgid "Description"
+msgstr "Descrizione"
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr "Proprietà"
+
+#: editor/editor_help.cpp
msgid "Property Description:"
msgstr "Descrizione Proprietà:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"Al momento una descrizione per questa proprietà non esiste. Aiutaci [color="
+"$color][url=$url]aggiungendone una[/url][/color]!"
+
+#: editor/editor_help.cpp
+msgid "Methods"
+msgstr "Metodi"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr "Descrizione Metodo:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"Al momento una descrizione per questo metodo non esiste. Aiutaci [color="
+"$color][url=$url]aggiungendone una[/url][/color]!"
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr "Cerca Testo"
#: editor/editor_log.cpp
-#, fuzzy
msgid "Output:"
-msgstr " Output:"
+msgstr "Output:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "Rimuovi"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr "Errore salvando la Risorsa!"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr "Salva Risorsa Come.."
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Capisco.."
@@ -1564,6 +1397,26 @@ msgid "Error while saving."
msgstr "Errore durante il salvataggio."
#: editor/editor_node.cpp
+msgid "Can't open '%s'."
+msgstr "Impossibile aprire '%s'."
+
+#: editor/editor_node.cpp
+msgid "Error while parsing '%s'."
+msgstr "Errore durante l'elaborazione di '%s'."
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr "Fine file '%s' non prevista."
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
+msgstr "'%s' mancante o dipendenze mancanti."
+
+#: editor/editor_node.cpp
+msgid "Error while loading '%s'."
+msgstr "Errore durante il caricamento di '%s'."
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr "Salvataggio Scena"
@@ -1576,9 +1429,9 @@ msgid "Creating Thumbnail"
msgstr "Creazione Miniature"
#: editor/editor_node.cpp
-#, fuzzy
msgid "This operation can't be done without a tree root."
-msgstr "Questa operazione non può essere eseguita senza una scena."
+msgstr ""
+"Questa operazione non può essere eseguita senza una radice dell'albero."
#: editor/editor_node.cpp
msgid ""
@@ -1624,6 +1477,46 @@ msgid "Restored default layout to base settings."
msgstr "Ripristinato il layout di default ai settaggi di base."
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+"Questa risorsa appartiene a una scena che è stata importata, di conseguenza "
+"non è modificabile.\n"
+"Si consiglia di leggere la documentazione riguardante l'importazione delle "
+"scene per comprendere al meglio questo workflow."
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+"Questa risorsa appartiene a una scena istanziata o ereditata.\n"
+"Le modifiche ad essa non verranno mantenute salvando la scena corrente."
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+"Questa risorsa è stata importata, non è quindi modificabile. Modificane le "
+"impostazioni nel pannello di importazione e re-importala."
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+"Questa scena é stata importata, pertanto i cambiamenti ad essa non verranno "
+"mantenuti.\n"
+"Istanziarla o ereditarla consentirà di effettuare dei cambiamenti.\n"
+"Si conaiglia di leggere la documentazione relativa all'importazione delle "
+"scene per comprendere meglio questo workflow."
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr "Copia parametri"
@@ -1712,13 +1605,12 @@ msgid "Quick Open Script.."
msgstr "Apri Script Rapido.."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Close"
-msgstr "Salva un File"
+msgstr "Salva e Chiudi"
#: editor/editor_node.cpp
msgid "Save changes to '%s' before closing?"
-msgstr ""
+msgstr "Salvare le modifiche a '%s' prima di chiudere?"
#: editor/editor_node.cpp
msgid "Save Scene As.."
@@ -1749,9 +1641,8 @@ msgid "Export Tile Set"
msgstr "Esporta Tile Set"
#: editor/editor_node.cpp
-#, fuzzy
msgid "This operation can't be done without a selected node."
-msgstr "Questa operazione non può essere eseguita senza una scena."
+msgstr "Questa operazione non può essere eseguita senza un nodo selezionato."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1782,42 +1673,60 @@ msgid "Exit the editor?"
msgstr "Uscire dall'editor?"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Project Manager?"
-msgstr "Gestione Progetti"
+msgstr "Aprire Gestione Progetti?"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Quit"
-msgstr "Salva un File"
+msgstr "Salva e Esci"
#: editor/editor_node.cpp
msgid "Save changes to the following scene(s) before quitting?"
-msgstr ""
+msgstr "Salvare le modifiche alle scene seguenti prima di uscire?"
#: editor/editor_node.cpp
msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
+"Salvare le modifiche alle scene seguenti prima di aprire il Manager Progetti?"
+
+#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+"Questa opzione é deprecata. Situazioni dove un refresh é obbligatorio sono "
+"ora considerate come bug. Si prega di effettuare un report."
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Scegli una Scena Principale"
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
-msgstr ""
+#, fuzzy
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
+msgstr "Non riesco ad abilitare il plugin aggiunto a: '"
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+#, fuzzy
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
+"Impossibile trovare il campo per lo script aggiuntivo in: 'res://addons/"
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
-msgstr ""
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "Impossibile caricare uno script aggiuntivo dal percorso: '"
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
-msgstr ""
+#, fuzzy
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
+msgstr "Impossibile caricare uno script aggiuntivo dal percorso: '"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
+msgstr "Impossibile caricare uno script aggiuntivo dal percorso: '"
#: editor/editor_node.cpp
msgid ""
@@ -1829,7 +1738,7 @@ msgstr ""
"Per effettuare cambiamenti, puo essere creata una nuova scena ereditata."
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr "Ugh"
@@ -1843,14 +1752,14 @@ msgstr ""
"progetto."
#: editor/editor_node.cpp
-msgid "Error loading scene."
-msgstr "Errore di caricamento della scena."
-
-#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
msgstr "La scena '%s' ha rotto le dipendenze:"
#: editor/editor_node.cpp
+msgid "Clear Recent Scenes"
+msgstr "Rimuovi Scene Recenti"
+
+#: editor/editor_node.cpp
msgid "Save Layout"
msgstr "Salva layout"
@@ -1880,11 +1789,10 @@ msgid "Distraction Free Mode"
msgstr "Modalità Senza Distrazioni"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Toggle distraction-free mode."
-msgstr "Modalità Senza Distrazioni"
+msgstr "Abilita modalità senza distrazioni."
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr "Scena"
@@ -2122,6 +2030,10 @@ msgstr "Domande e Risposte"
msgid "Issue Tracker"
msgstr "Tracciatore Segnalazioni"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "Comunità"
+
#: editor/editor_node.cpp
msgid "About"
msgstr "Riguardo a"
@@ -2130,7 +2042,7 @@ msgstr "Riguardo a"
msgid "Play the project."
msgstr "Esegui il progetto."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr "Play"
@@ -2146,7 +2058,7 @@ msgstr "Pausa Scena"
msgid "Stop the scene."
msgstr "Ferma la scena."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr "Stop"
@@ -2219,6 +2131,15 @@ msgid "Object properties."
msgstr "Proprietà oggetto."
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr "I cambiamenti potrebbero essere persi!"
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr "Importa"
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr "FileSystem"
@@ -2232,15 +2153,7 @@ msgstr "Output"
#: editor/editor_node.cpp
msgid "Don't Save"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr "Re-Importa"
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr "Aggiorna"
+msgstr "Non salvare"
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
@@ -2267,9 +2180,8 @@ msgid "Open & Run a Script"
msgstr "Apri e Esegui uno Script"
#: editor/editor_node.cpp
-#, fuzzy
msgid "New Inherited"
-msgstr "Nuova Scena Ereditata.."
+msgstr "Nuova Ereditata"
#: editor/editor_node.cpp
msgid "Load Errors"
@@ -2303,11 +2215,28 @@ msgstr "Apri l'Editor successivo"
msgid "Open the previous Editor"
msgstr "Apri l'Editor precedente"
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr "Creazione Anteprime Mesh"
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr "Miniatura.."
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr "Plugins Installati:"
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr "Aggiorna"
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Versione:"
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr "Autore:"
@@ -2340,7 +2269,8 @@ msgid "Frame %"
msgstr "Frame %"
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+#, fuzzy
+msgid "Physics Frame %"
msgstr "Frame Fisso %"
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2359,35 +2289,18 @@ msgstr "Se stesso"
msgid "Frame #:"
msgstr "Frame #:"
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr "Si prega di attendere che lo scan venga completato."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr "La scena corrente deve essere salvata per re-importare."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr "Salva e Re-Importa"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr "Re-Importando"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr "Re-Importando Risorse Cambiate"
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
-msgstr ""
+msgstr "Seleziona il dispositivo dall'elenco"
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
"Please add a runnable preset in the export menu."
msgstr ""
+"Non sono stati trovati dei modelli di export eseguibili per questa "
+"piattaforma.\n"
+"Prego aggiungere un modello di export eseguibile nel menu export."
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
@@ -2490,10 +2403,6 @@ msgid "Importing:"
msgstr "Importo:"
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr "Caricamento Template d'Esportazione"
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Versione Corrente:"
@@ -2528,62 +2437,73 @@ msgid "Cannot navigate to '"
msgstr "Impossibile navigare a '"
#: editor/filesystem_dock.cpp
-#, fuzzy
+msgid "View items as a grid of thumbnails"
+msgstr "Visualizza elementi come una griglia di miniature"
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr "Visualizza elementi come una lista"
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
-msgstr "Salva e Re-Importa"
+"Status: Import of file failed. Please fix file and reimport manually."
+msgstr ""
+"\n"
+"Stato: Importazione file fallita. Si prega di sistemare il file e "
+"reimportarlo manualmente."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid ""
"\n"
"Source: "
-msgstr "Sorgente:"
+msgstr ""
+"\n"
+"Sorgente: "
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
-msgstr "Stessi file di origine e e destinazione, non faccio nulla."
+msgid "Cannot move/rename resources root."
+msgstr "Impossibile spostare/rinominare risorse root."
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
-msgstr ""
+msgid "Cannot move a folder into itself.\n"
+msgstr "Impossibile spostare una cartella in se stessa.\n"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
-msgstr ""
-"Stessi percorsi \n"
-"di origine e e destinazione, non faccio nulla."
+msgid "Error moving:\n"
+msgstr "Errore spostamento:\n"
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
-msgstr "Impossibile muovere le directory dentro se stesse."
+msgid "Unable to update dependencies:\n"
+msgstr "Impossibile aggiornare le dipendenze:\n"
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
-msgstr ""
+msgid "No name provided"
+msgstr "Nessun nome fornito"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error moving file:\n"
-msgstr "Errore di caricamento immagine:"
+msgid "Provided name contains invalid characters"
+msgstr "Il nome fornito contiene caratteri non validi"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "Errore di importazione:"
+msgid "No name provided."
+msgstr "Nessun nome fornito."
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
-msgstr "Non posso operare su '..'"
+msgid "Name contains invalid characters."
+msgstr "Il nome contiene caratteri non validi."
+
+#: editor/filesystem_dock.cpp
+msgid "A file or folder with this name already exists."
+msgstr "Un file o cartella con questo nome é già esistente."
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
-msgstr "Scegli un Nuovo Nome e Posizione Per:"
+msgid "Renaming file:"
+msgstr "Rinomina file:"
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
-msgstr "Nessun File selezionato!"
+msgid "Renaming folder:"
+msgstr "Rinomina cartella:"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2594,40 +2514,36 @@ msgid "Collapse all"
msgstr "Comprimi tutto"
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
-msgstr "Mostra nel File Manager"
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
-msgstr "Istanza"
+msgid "Copy Path"
+msgstr "Copia Percorso"
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
-msgstr "Modifica Dipendenze.."
+msgid "Rename.."
+msgstr "Rinomina.."
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
-msgstr "Vedi Proprietari.."
+msgid "Move To.."
+msgstr "Sposta in.."
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr "Copia Percorso"
+msgid "New Folder.."
+msgstr "Nuova Cartella.."
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
-msgstr "Rinomina o Sposta.."
+msgid "Show In File Manager"
+msgstr "Mostra nel File Manager"
#: editor/filesystem_dock.cpp
-msgid "Move To.."
-msgstr "Sposta in.."
+msgid "Instance"
+msgstr "Istanza"
#: editor/filesystem_dock.cpp
-msgid "Info"
-msgstr "Info"
+msgid "Edit Dependencies.."
+msgstr "Modifica Dipendenze.."
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
-msgstr "Re-Importa.."
+msgid "View Owners.."
+msgstr "Vedi Proprietari.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2654,11 +2570,18 @@ msgid ""
"Scanning Files,\n"
"Please Wait.."
msgstr ""
+"Scansione File,\n"
+"Si prega di attendere.."
#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "Sposta"
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr "Rinomina"
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr "Aggiungi a Gruppo"
@@ -2668,17 +2591,20 @@ msgid "Remove from Group"
msgstr "Rimuovi da Gruppo"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Import as Single Scene"
-msgstr "Importando Scena.."
+msgstr "Importa come Scena Singola"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr "Importa con Animazioni Separate"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
-msgstr ""
+msgstr "Importa con Materiali Separati"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects"
-msgstr ""
+msgstr "Importa con Oggetti Separati"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects+Materials"
@@ -2686,6 +2612,21 @@ msgstr ""
#: editor/import/resource_importer_scene.cpp
#, fuzzy
+msgid "Import with Separate Objects+Animations"
+msgstr "Importa con Oggetti Separati"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Materials+Animations"
+msgstr "Importa con Materiali Separati"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr "Importa con Materiali Separati"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
msgid "Import as Multiple Scenes"
msgstr "Importa Scena 3D"
@@ -2694,38 +2635,31 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr "Importa Scena"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr "Importando Scena.."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr "Eseguendo Script Personalizzato.."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr "Impossibile caricare lo script di post-import:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr "Script di post-import invalido/non funzionante (controllare console):"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr "Errore di esecuzione dello script di post-import:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr "Salvataggio.."
@@ -2753,577 +2687,6 @@ msgstr "Preset.."
msgid "Reimport"
msgstr "Reimporta"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr "Nessuna bit mask da importare!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr "Il percorso di destinazione vuoto."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr ""
-"Il percorso di destinazione deve essere un percorso completo di risorsa."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr "Il percorso di destinazione deve esistere."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr "Il percorso di salvataggio è vuoto!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr "Importa BitMasks"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr "Texture Sorgenti:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr "Percorso di destinazione:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr "Accetta"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr "Bit Mask"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr "Nessun file font sorgente!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr "Nessuna risorsa font di destinazione!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-"Estensione file invalida.\n"
-"Si prega di usare .font."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr "Impossibile caricare/processare il font sorgente."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr "Impossibile salvare font."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr "Font Sorgente:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr "Dimensione Font sorgente:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr "Risorsa di destin. :"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr "La rapida volpe bianca scavalca il cane pigro."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr "Test:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr "Opzioni:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr "Importazione font"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-"Questo file è già un file font di Godot, si prega di fornire invece un file "
-"di tipo BMfont."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr "Apertura come BMFont file fallita."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr "Errore inizializzazione FreeType."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "Formato font sconosciuto."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "Errore caricamento font."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr "Dimensione font Invalida."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr "Sorgente font personalizzato invalido."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Font"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr "Nessuna mesh da importare!"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr "Importa Mesh Singola"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr "Mesh Sorgente(i):"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr "Mesh"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "Superficie %d"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr "Nessun sample da importare!"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr "Importa Sample Audio"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr "Sample Sorgente(i):"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr "Sample Audio"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr "Nuova Clip"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr "Opzioni Animazione"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr "Flags"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr "Bake FPS:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr "Ottimizzatore"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr "Errore Lineare Max"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr "Errore Angolare Max"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr "Angolo Max"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr "Clips"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr "Inizio(i)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr "Fine(i)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr "Loop"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr "Filtri"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr "Il percorso sorgente è vuoto."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr "Impossibile caricare script di post-importazione."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr "Script di post-importazione invalido/non funzionante."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr "Errore di importazione scena."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr "Importa Scena 3D"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr "Scena Sorgente:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr "Stesso che Scena di Destinazione"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr "Condiviso"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr "Cartella Texture di Destinazione:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr "Script di Post-Process:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr "Tipo di Nodo Root Personalizzato:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr "Auto"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr "Nome Nodo di Root:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr "I File Seguenti sono Mancanti:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr "Importa ComunqueImporta Comunque"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Annulla"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr "Importa e Apri"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-"La scena modificata non è stata salvata, aprire la scena importata comunque?"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr "Importa Immagine:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr "Impossibile importare un file su se stesso:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr "Impossibile localizzare il percorso: %s (già locale)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr "Animazione Scena 3D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr "Decompressi"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr "Comprimi Lossless (PNG)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr "Comprimi Lossy (WebP)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr "Comprimi (VRAM)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr "Formato Texture"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr "Qualità Compressione Texture (WebP):"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr "Opzioni Texture"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr "Si prega di specificare qualche file!"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr "Almeno un file è richiesto per l'Atlas."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr "Errore di importazione:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr "Solo un file è richiesto per una texture grande."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr "Dimensione Texture Massima:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr "Importa Textures per Atlas (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr "Dimensione Cella:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr "Texture Grande"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr "Importa Texture Grandi (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
-msgstr "Texture Sorgente"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
-msgstr "Texture Base Atlas"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
-msgstr "Texture Sorgente(i)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
-msgstr "Importa Textures per 2D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
-msgstr "Importa Textures per 3D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
-msgstr "Importa Textures"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
-msgstr "Texture 2D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
-msgstr "Texture 3D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
-msgstr "Texture dell'Atlas"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-"NOTA: Importare texture 2D non è obbligatorio. Basta copiare i file png/jpg "
-"nel progetto."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr "Ritaglia spazio vuoto."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr "Texture"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr "Importa Texture Grande"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr "Carica Immagine Sorgente"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr "Taglio"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr "Inserimento"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr "Salvataggio"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr "Impossibile salvare texture grande:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr "Costruisci Atlas Per:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr "Immagine Caricamento:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr "Impossibile caricare immagine:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr "Convertendo Immagini"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr "Tagliando Immagini"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr "Bliting Immagini"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr "Impossibile salvare l'immagine di atlas:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr "Impossibile salvare la texture convertita:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr "Sorgente invalida!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr "Sorgente traduzione invalida!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr "Colonna"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr "Linguaggio"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr "Nessun elemento da importare!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr "Nessun percorso di destinazione!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr "Importa Traduzioni"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr "Impossibile Importare!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr "Importa Traduzione"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr "CSV Sorgente:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr "Ignora Prima Riga"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr "Comprimi"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr "Aggiungi a Progetto (project.godot)"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr "Importa Lingue:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr "Traduzione"
-
#: editor/multi_node_edit.cpp
msgid "MultiNode Set"
msgstr "MultiNode Set"
@@ -3336,6 +2699,45 @@ msgstr "Gruppi"
msgid "Select a Node to edit Signals and Groups."
msgstr "Seleziona un Nodo per modificare Segnali e Gruppi."
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
+msgstr "Crea Poly"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Modifica Poly"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
+msgid "Insert Point"
+msgstr "Inserimento"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Modifica Poly (Rimuovi Punto)"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
+msgstr "Rimuovi Poligono e Punto"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
+msgstr "Crea un nuovo poligono dal nulla."
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Toggle Autoplay"
msgstr "Abilità Autoplay"
@@ -3490,7 +2892,6 @@ msgstr "Nome Animazione:"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3601,10 +3002,6 @@ msgid "Delete Input"
msgstr "Elimina Input"
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr "Rinomina"
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr "Animation tree valido."
@@ -3660,64 +3057,181 @@ msgstr "Modifica Filtri Nodi"
msgid "Filters.."
msgstr "Filtri.."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
-msgstr "Elaborazione %d Triangoli:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr "Gratuito"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
-msgstr "Triangolo #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
+msgstr "Contenuti:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
-msgstr "Impostazioni Baker Luci:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
+msgstr "Vedi Files"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
-msgstr "Elaborazione Geometria"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
+msgstr "Impossibile risolvere l'hostname:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
-msgstr "Aggiustando le Luci"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
+msgstr "Impossibile risolvete."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
-msgstr "Creazione BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
+msgstr "Errore di connessione, si prega di riprovare."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
-msgstr "Creazione Octree Luci"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Impossibile connettersi."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
-msgstr "Creazione Octree Texture"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
+msgstr "Impossibile connetersi all'host:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
+msgstr "Nessuna risposta dall'host:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Nessuna risposta."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
+msgstr "Richiesta fallita, codice di return:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
-msgstr "Trasferisci a Lightmap:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
+msgstr "Rich. Fall."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
-msgstr "Allocazione Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
+msgstr "Richiesta fallita, troppi ridirezionamenti"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
-msgstr "Backing Triangoli #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
+msgstr "Ridirigi Loop."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
-msgstr "Texture Post-Processing #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Fallito:"
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
-msgstr "Bake!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr "Hash di download non buono, si presume il file sia stato manipolato."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr "Previsto:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr "Ottenuto:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr "Check hash sha256 fallito"
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
-msgstr "Resetta il processo di baking dell'octree (ricomincia da capo)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr "Errore di Download Asset:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr "Recupero:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr "Risolvendo.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting.."
+msgstr "Connettendo.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr "Richiedendo.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
+msgstr "Errore nel fare richiesta"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr "Inattivo"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr "Riprova"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr "Errore durante il download"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr "Il download per questo asset è già in corso!"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr "primo"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr "prec"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr "seguente"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr "ultimo"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "Tutti"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr "Plugins"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "Ordina:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr "Inverti"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "Categoria:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "Sito:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr "Supporta.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "Ufficiale"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr "Testing"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr "ZIP File degli Asset"
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr "Anteprima"
@@ -3760,12 +3274,18 @@ msgid "Edit CanvasItem"
msgstr "Modifica CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+#, fuzzy
+msgid "Anchors only"
+msgstr "Ancora"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Change Anchors and Margins"
msgstr "Cambia Ancore"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
-msgstr "Zoom(%):"
+msgid "Change Anchors"
+msgstr "Cambia Ancore"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Paste Pose"
@@ -3819,60 +3339,78 @@ msgid "Pan Mode"
msgstr "Modalità di Pan"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
-msgstr "Blocca l'oggetto selezionato sul posto (non può essere mosso)."
+#, fuzzy
+msgid "Toggles snapping"
+msgstr "Abilita Breakpoint"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
-msgstr "Sblocca l'oggetto selezionato (può essere mosso)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
+msgstr "Usa lo Snap"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
-msgstr "Accerta che I figli dell'oggetto non siano selezionabili."
+#, fuzzy
+msgid "Snapping options"
+msgstr "Opzioni Animazione"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
-msgstr "Ripristina l'abilità dei figli dell'oggetto di essere selezionati."
+#, fuzzy
+msgid "Snap to grid"
+msgstr "Modalità Snap:"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "Modifica"
+msgid "Use Rotation Snap"
+msgstr "Usa lo Snap di Rotazione"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
-msgstr "Usa lo Snap"
+#, fuzzy
+msgid "Configure Snap..."
+msgstr "Configura Snap..."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
-msgstr "Mostra Griglia"
+msgid "Snap Relative"
+msgstr "Snap Relativo"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
-msgstr "Usa lo Snap di Rotazione"
+msgid "Use Pixel Snap"
+msgstr "Usa Snap a Pixel"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
-msgstr "Snap Relativo"
+msgid "Smart snapping"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
-msgstr "Configura Snap..."
+#, fuzzy
+msgid "Snap to parent"
+msgstr "Espandi a Genitore"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
-msgstr "Usa Snap a Pixel"
+msgid "Snap to node anchor"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr "Blocca l'oggetto selezionato sul posto (non può essere mosso)."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr "Sblocca l'oggetto selezionato (può essere mosso)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
-msgstr "Scheletro.."
+msgid "Makes sure the object's children are not selectable."
+msgstr "Accerta che I figli dell'oggetto non siano selezionabili."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
+msgstr "Ripristina l'abilità dei figli dell'oggetto di essere selezionati."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Make Bones"
@@ -3900,12 +3438,19 @@ msgid "View"
msgstr "Vista"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
-msgstr "Zoom Reset"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr "Mostra Griglia"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Show helpers"
+msgstr "Mostra Ossa"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
-msgstr "Imposta Zoom.."
+#, fuzzy
+msgid "Show rulers"
+msgstr "Mostra Ossa"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -3916,8 +3461,9 @@ msgid "Frame Selection"
msgstr "Selezione Frame"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
-msgstr "Ancora"
+#, fuzzy
+msgid "Layout"
+msgstr "Salva layout"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Keys"
@@ -3940,12 +3486,21 @@ msgid "Clear Pose"
msgstr "Pulisci Posa"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
-msgstr "Imposta un Valore"
+msgid "Drag pivot from mouse position"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "Imposta Posizione Curve Out"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
-msgstr "Snap (Pixels):"
+msgid "Divide grid step by 2"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
@@ -3955,23 +3510,28 @@ msgstr "Aggiungi %s"
msgid "Adding %s..."
msgstr "Aggiungendo %s..."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr "Crea Nodo"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr "Errore istanziamento scena da %s"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr "OK :("
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr "Nessun genitore del quale istanziare un figlio."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr "Questa operazione richiede un solo nodo selezionato."
@@ -3987,45 +3547,6 @@ msgstr ""
"Premi & Trascina + Shift : Aggiungi nodo come fratello\n"
"Premi & Trascina + Alt : Cambia tipo del nodo"
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr "Crea Poly"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr "Modifica Poly"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr "Modifica Poly (Rimuovi Punto)"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Crea un nuovo poligono dal nulla."
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "Crea Poly3D"
@@ -4035,14 +3556,6 @@ msgid "Set Handle"
msgstr "Imposta Maniglia"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr "Creazione Libreria Mesh"
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr "Miniatura.."
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr "Rimuovi elemento %d?"
@@ -4065,6 +3578,28 @@ msgid "Update from Scene"
msgstr "Aggiorna da Scena"
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Ease in"
+msgstr "Ease In"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Ease out"
+msgstr "Ease Out"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
msgid "Modify Curve Point"
msgstr "Modifica Curva"
@@ -4146,22 +3681,18 @@ msgid "Create Occluder Polygon"
msgstr "Crea Poligono di occlusione"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr "Modifica poligono esistente:"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr "LMB: Sposta punto."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr "Ctrl+LMB: dividi Segmento."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr "RMB: Elimina Punto."
@@ -4262,6 +3793,10 @@ msgid "Create Outline"
msgstr "Crea Outline"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr "Mesh"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr "Crea Corpo Statico Trimesh"
@@ -4391,14 +3926,83 @@ msgstr "Scala Casuale:"
msgid "Populate"
msgstr "Popola"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr "Bake!"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+#, fuzzy
+msgid "Bake the navigation mesh.\n"
+msgstr "Crea Mesh di Navigazione"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+#, fuzzy
+msgid "Clear the navigation mesh."
+msgstr "Crea Mesh di Navigazione"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating heightfield..."
+msgstr "Creazione Octree Luci"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Marking walkable triangles..."
+msgstr "Stringhe Traducibili.."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Partitioning..."
+msgstr "Avvertimento"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating contours..."
+msgstr "Creazione Octree Texture"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating polymesh..."
+msgstr "Crea Mesh di Outline.."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Converting to native navigation mesh..."
+msgstr "Crea Mesh di Navigazione"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Parsing Geometry..."
+msgstr "Elaborazione Geometria"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
+msgstr ""
+
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Create Navigation Polygon"
msgstr "Crea Poligono di Navigazione"
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
-msgstr "Rimuovi Poligono e Punto"
-
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Clear Emission Mask"
msgstr "Cancella Maschera Emissione"
@@ -4573,14 +4177,17 @@ msgid "Curve Point #"
msgstr "Punto Curva #"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
msgstr "Imposta Posizione Punti curva"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
msgstr "Imposta Posizione Curve In"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
msgstr "Imposta Posizione Curve Out"
@@ -4641,6 +4248,14 @@ msgid "Scale Polygon"
msgstr "Scala Poligono"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "Modifica"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr "Poligono->UV"
@@ -4695,63 +4310,10 @@ msgstr "Carica Risorsa"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "Incolla"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr "Decodifica BBCode"
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr "Lunghezza:"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr "Apri File(s) Sample"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr "ERRORE: Impossibile caricare sample!"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr "Aggiungi Sample"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr "Rinomina Sample"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr "Elimina Sample"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr "16 Bits"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr "8 Bits"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr "Stereo"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr "Mono"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr "Formato"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr "Pitch"
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr "Elimina File recenti"
@@ -4842,6 +4404,10 @@ msgstr "Chiudi Documentazione"
msgid "Close All"
msgstr "Chiudi Tutto"
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr "Esegui"
+
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Toggle Scripts Panel"
@@ -4871,7 +4437,8 @@ msgstr "Step Into"
msgid "Break"
msgstr "Break"
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr "Continua"
@@ -4885,18 +4452,6 @@ msgid "Debug with external editor"
msgstr "Apri l'Editor successivo"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr "Finestra"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr "Sposta a Sinistra"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr "Sposta a Destra"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
msgstr "Apri la documentazione online di Godot"
@@ -4982,8 +4537,9 @@ msgid "Cut"
msgstr "Taglia"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "Copia"
@@ -5247,10 +4803,6 @@ msgid "View Plane Transform."
msgstr "Visualizza Tranform del Piano."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr "Scalando a %s%%."
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr "Ruotando di %s gradi."
@@ -5267,10 +4819,6 @@ msgid "Top View."
msgstr "Vista dall'Alto."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr "Alto"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr "Vista dal Retro."
@@ -5483,7 +5031,7 @@ msgstr "Allinea Selezione Con Vista"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Tool Select"
-msgstr "Strumento Selezione"
+msgstr "Strumento Seleziona"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Tool Move"
@@ -5502,6 +5050,10 @@ msgid "Transform"
msgstr "Transform"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr "Configura Snap..."
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr "Coordinate locali"
@@ -5647,6 +5199,10 @@ msgid "Speed (FPS):"
msgstr "Velocità (FPS):"
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr "Loop"
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr "Frames Animazione"
@@ -5659,12 +5215,14 @@ msgid "Insert Empty (After)"
msgstr "Inserisci Vuoto (Dopo)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr "Su"
+#, fuzzy
+msgid "Move (Before)"
+msgstr "Rimuovi nodo(i)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
-msgstr "Giù"
+#, fuzzy
+msgid "Move (After)"
+msgstr "Sposta a Sinistra"
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
@@ -5743,8 +5301,12 @@ msgid "Remove All"
msgstr "Rimuovi"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
-msgstr "Tema"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Class Items"
@@ -5828,6 +5390,10 @@ msgid "Style"
msgstr "Stile"
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr "Font"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr "Colore"
@@ -5879,8 +5445,9 @@ msgid "Mirror Y"
msgstr "Specchia Y"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
-msgstr "Secchiello"
+#, fuzzy
+msgid "Paint Tile"
+msgstr "Disegna TileMap"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Pick Tile"
@@ -5943,6 +5510,11 @@ msgid "Delete preset '%s'?"
msgstr "Eliminare preset '%s'?"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr "Le export templates per questa piattaforma sono mancanti:"
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr "Presets"
@@ -6019,30 +5591,61 @@ msgid "Export templates for this platform are missing:"
msgstr "Le export templates per questa piattaforma sono mancanti:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr "Le export templates per questa piattaforma sono mancanti:"
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr "Esporta Con Debug"
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
-msgstr "Percorso di progetto invalido, il percorso deve esistere!"
+#, fuzzy
+msgid "The path does not exist."
+msgstr "File non esistente."
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Please choose a 'project.godot' file."
+msgstr "Si prega di esportare al di fuori della cartella del progetto!"
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
-msgstr "Percorso di progetto invalido, project.godot non esiste."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
+msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
-msgstr "Percorso di progetto invalido, project.godot deve esistere."
+msgid "Please choose a folder that does not contain a 'project.godot' file."
+msgstr ""
#: editor/project_manager.cpp
msgid "Imported Project"
msgstr "Progetto Importato"
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr "Percorso di progetto invalido (cambiato qualcosa?)."
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't get project.godot in project path."
+msgstr "Impossibile creare project.godot nel percorso di progetto."
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't edit project.godot in project path."
+msgstr "Impossibile creare project.godot nel percorso di progetto."
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr "Impossibile creare project.godot nel percorso di progetto."
@@ -6051,38 +5654,49 @@ msgid "The following files failed extraction from package:"
msgstr "Impossibile estrarre i file seguenti dal pacchetto:"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Rename Project"
+msgstr "Progetto Senza Nome"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't get project.godot in the project path."
+msgstr "Impossibile creare project.godot nel percorso di progetto."
+
+#: editor/project_manager.cpp
+msgid "New Game Project"
+msgstr "Nuovo Progetto di Gioco"
+
+#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "Importa Progetto Esistente"
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
-msgstr "Percorso Progetto (Deve Esistere):"
+msgid "Create New Project"
+msgstr "Crea Nuovo Progetto"
+
+#: editor/project_manager.cpp
+msgid "Install Project:"
+msgstr "Installa Progetto:"
#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Nome Progetto:"
#: editor/project_manager.cpp
-msgid "Create New Project"
-msgstr "Crea Nuovo Progetto"
+#, fuzzy
+msgid "Create folder"
+msgstr "Crea Cartella"
#: editor/project_manager.cpp
msgid "Project Path:"
msgstr "Percorso Progetto:"
#: editor/project_manager.cpp
-msgid "Install Project:"
-msgstr "Installa Progetto:"
-
-#: editor/project_manager.cpp
msgid "Browse"
msgstr "Sfoglia"
#: editor/project_manager.cpp
-msgid "New Game Project"
-msgstr "Nuovo Progetto di Gioco"
-
-#: editor/project_manager.cpp
msgid "That's a BINGO!"
msgstr "Questo è un BINGO!"
@@ -6091,6 +5705,11 @@ msgid "Unnamed Project"
msgstr "Progetto Senza Nome"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't open project"
+msgstr "Impossibile connettersi."
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr "Sei sicuro di voler aprire più di un progetto?"
@@ -6123,6 +5742,12 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
"You are about the scan %s folders for existing Godot projects. Do you "
"confirm?"
msgstr "Stai per esaminare %s cartelle per progetti Godot esistenti. Confermi?"
@@ -6132,10 +5757,6 @@ msgid "Project List"
msgstr "Lista Progetti"
#: editor/project_manager.cpp
-msgid "Run"
-msgstr "Esegui"
-
-#: editor/project_manager.cpp
msgid "Scan"
msgstr "Esamina"
@@ -6157,6 +5778,11 @@ msgstr "Esci"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Restart Now"
+msgstr "Restart (s):"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Can't run project"
msgstr "Impossibile connettersi."
@@ -6193,17 +5819,14 @@ msgid "Add Input Action Event"
msgstr "Aggiungi Evento di Azione Input"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
@@ -6264,7 +5887,7 @@ msgstr "Cambia"
msgid "Joypad Axis Index:"
msgstr "Indice Asse Joypad:"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "Asse"
@@ -6284,31 +5907,31 @@ msgstr "Elimina Evento di Azione Input"
msgid "Add Event"
msgstr "Aggiungi Evento"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "Dispositivo"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "Pulsante"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "Pulsante Sinistro."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "Pulsante DEstro."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "Pulsante centrale."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr "Rotellina su."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr "Rotellina Giù."
@@ -6318,7 +5941,7 @@ msgid "Add Global Property"
msgstr "Aggiungi Proprietà Getter"
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6337,6 +5960,16 @@ msgid "Delete Item"
msgstr "Elimina Input"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Can't contain '/' or ':'"
+msgstr "Impossibile connetersi all'host:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Already existing"
+msgstr "Attiva Persistenza"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "Errore nel salvare le impostazioni."
@@ -6377,6 +6010,15 @@ msgid "Remove Resource Remap Option"
msgstr "Rimuovi Opzione di Remap Rimorse"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Changed Locale Filter"
+msgstr "Cambia tempo di Blend"
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr "Impostazioni Progetto (project.godot)"
@@ -6437,6 +6079,30 @@ msgid "Locale"
msgstr "Locale"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales Filter"
+msgstr "Filtro Immagine:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Show all locales"
+msgstr "Mostra Ossa"
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "Filtri"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales:"
+msgstr "Locale"
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "AutoLoad"
@@ -6486,10 +6152,20 @@ msgid "New Script"
msgstr "Nuovo Script"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Make Unique"
+msgstr "Crea Ossa"
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr "Mostra nel File System"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Convert To %s"
+msgstr "Converti In.."
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr "Errore caricamento file: Non è una risorsa!"
@@ -6527,6 +6203,11 @@ msgid "Select Property"
msgstr "Seleziona Proprietà"
#: editor/property_selector.cpp
+#, fuzzy
+msgid "Select Virtual Method"
+msgstr "Seleziona Metodo"
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr "Seleziona Metodo"
@@ -6554,26 +6235,6 @@ msgstr "Mantieni Transform Globale"
msgid "Reparent"
msgstr "Cambia Genitore"
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr "Crea Nuova Risorsa"
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr "Apri Risorsa"
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr "Salva Risorsa"
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr "Strumenti Risorsa"
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr "Rendi Locale"
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr "Modalità esecuzione:"
@@ -6704,14 +6365,6 @@ msgid "Sub-Resources:"
msgstr "Sub-Risorse:"
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr "Modifica Gruppi"
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr "Modifica Connessioni"
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr "Liberare ereditarietà"
@@ -6908,6 +6561,15 @@ msgid "Invalid base path"
msgstr "Percorso di base invalido"
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "File exists, will be reused"
+msgstr "File Esistente, Sovrascrivere?"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr "Estensione Invalida"
@@ -6948,6 +6610,10 @@ msgid "Load existing script file"
msgstr "Carica file script esistente"
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr "Linguaggio"
+
+#: editor/script_create_dialog.cpp
msgid "Inherits"
msgstr "Eredita"
@@ -6988,6 +6654,10 @@ msgid "Function:"
msgstr "Funzione:"
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr "Errori"
@@ -7068,6 +6738,10 @@ msgid "Type"
msgstr "Tipo"
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr "Formato"
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr "Utilizzo"
@@ -7143,12 +6817,30 @@ msgstr "Cambia AABB Particelle"
msgid "Change Probe Extents"
msgstr "Cambia Estensione Probe"
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Library"
+msgstr "MeshLibrary.."
+
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Status"
+msgstr "Stato:"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr "Argomento tipo invalido per convert(), usare le costanti TYPE_*."
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr ""
@@ -7203,10 +6895,6 @@ msgid "GridMap Duplicate Selection"
msgstr "Duplica Selezione"
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Snap View"
msgstr "Vista dall'Alto"
@@ -7310,13 +6998,8 @@ msgstr "Impostazioni Snap"
msgid "Pick Distance:"
msgstr "Istanza:"
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr " Files"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7527,10 +7210,18 @@ msgid "Return"
msgstr "Ritorna"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr "Chiama"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr "Get"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Input Value"
msgstr "Cambia Nome Input"
@@ -7952,6 +7643,12 @@ msgstr ""
"Una risorsa SpriteFrames deve essere creata o impostata nella proprietà "
"'Frames' affinché AnimatedSprite3D mostri i frame."
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
#, fuzzy
msgid "Raw Mode"
@@ -7962,6 +7659,10 @@ msgid "Add current color as a preset"
msgstr "Aggiungi colore attuale come preset"
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Annulla"
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr "Attenzione!"
@@ -7969,10 +7670,6 @@ msgstr "Attenzione!"
msgid "Please Confirm..."
msgstr "Per Favore Conferma..."
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -8013,6 +7710,634 @@ msgstr ""
"Control, in modo che possa ottenere una dimensione. Altrimenti, renderlo un "
"RenderTarget e assegnare alla sua texture interna qualche nodo da mostrare."
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr "Errore inizializzazione FreeType."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "Formato font sconosciuto."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "Errore caricamento font."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr "Dimensione font Invalida."
+
+#~ msgid "Filter:"
+#~ msgstr "Filtro:"
+
+#~ msgid "' parsing of config failed."
+#~ msgstr "' fallita lettura della configurazione."
+
+#~ msgid "Theme"
+#~ msgstr "Tema"
+
+#~ msgid "Method List For '%s':"
+#~ msgstr "Lista Metodi Per '%s':"
+
+#~ msgid "Arguments:"
+#~ msgstr "Argomenti:"
+
+#~ msgid "Return:"
+#~ msgstr "Ritorna:"
+
+#~ msgid "Added:"
+#~ msgstr "Agginto:"
+
+#~ msgid "Removed:"
+#~ msgstr "Rimosso:"
+
+#~ msgid "Error saving atlas:"
+#~ msgstr "Errore di salvataggio dell'atlas:"
+
+#~ msgid "Could not save atlas subtexture:"
+#~ msgstr "Impossibile salvare la substruttura dell'atlas:"
+
+#~ msgid "Exporting for %s"
+#~ msgstr "Esportando per %s"
+
+#~ msgid "Setting Up.."
+#~ msgstr "Impostando.."
+
+#~ msgid "Error loading scene."
+#~ msgstr "Errore di caricamento della scena."
+
+#~ msgid "Re-Import"
+#~ msgstr "Re-Importa"
+
+#~ msgid "Please wait for scan to complete."
+#~ msgstr "Si prega di attendere che lo scan venga completato."
+
+#~ msgid "Current scene must be saved to re-import."
+#~ msgstr "La scena corrente deve essere salvata per re-importare."
+
+#~ msgid "Save & Re-Import"
+#~ msgstr "Salva e Re-Importa"
+
+#~ msgid "Re-Importing"
+#~ msgstr "Re-Importando"
+
+#~ msgid "Re-Import Changed Resources"
+#~ msgstr "Re-Importando Risorse Cambiate"
+
+#~ msgid "Loading Export Templates"
+#~ msgstr "Caricamento Template d'Esportazione"
+
+#~ msgid ""
+#~ "\n"
+#~ "Status: Needs Re-Import"
+#~ msgstr ""
+#~ "\n"
+#~ "Stato: Richiede Re-Importazione"
+
+#~ msgid "Same source and destination files, doing nothing."
+#~ msgstr "Stessi file di origine e e destinazione, non faccio nulla."
+
+#~ msgid "Target file exists, can't overwrite. Delete first."
+#~ msgstr ""
+#~ "Il file di destinazione esiste, non è possibile sovrascriverlo. Occorre "
+#~ "prima cancellarlo."
+
+#~ msgid "Same source and destination paths, doing nothing."
+#~ msgstr ""
+#~ "Stessi percorsi \n"
+#~ "di origine e e destinazione, non faccio nulla."
+
+#~ msgid "Can't move directories to within themselves."
+#~ msgstr "Impossibile muovere le directory dentro se stesse."
+
+#~ msgid "Can't rename deps for:\n"
+#~ msgstr "Impossibile rinominare dipendenze per:\n"
+
+#~ msgid "Error moving file:\n"
+#~ msgstr "Errore spostamento file:\n"
+
+#~ msgid "Pick New Name and Location For:"
+#~ msgstr "Scegli un Nuovo Nome e Posizione Per:"
+
+#~ msgid "No files selected!"
+#~ msgstr "Nessun File selezionato!"
+
+#~ msgid "Info"
+#~ msgstr "Info"
+
+#~ msgid "Re-Import.."
+#~ msgstr "Re-Importa.."
+
+#~ msgid "No bit masks to import!"
+#~ msgstr "Nessuna bit mask da importare!"
+
+#~ msgid "Target path is empty."
+#~ msgstr "Il percorso di destinazione vuoto."
+
+#~ msgid "Target path must be a complete resource path."
+#~ msgstr ""
+#~ "Il percorso di destinazione deve essere un percorso completo di risorsa."
+
+#~ msgid "Target path must exist."
+#~ msgstr "Il percorso di destinazione deve esistere."
+
+#~ msgid "Save path is empty!"
+#~ msgstr "Il percorso di salvataggio è vuoto!"
+
+#~ msgid "Import BitMasks"
+#~ msgstr "Importa BitMasks"
+
+#~ msgid "Source Texture(s):"
+#~ msgstr "Texture Sorgenti:"
+
+#~ msgid "Target Path:"
+#~ msgstr "Percorso di destinazione:"
+
+#~ msgid "Accept"
+#~ msgstr "Accetta"
+
+#~ msgid "Bit Mask"
+#~ msgstr "Bit Mask"
+
+#~ msgid "No source font file!"
+#~ msgstr "Nessun file font sorgente!"
+
+#~ msgid "No target font resource!"
+#~ msgstr "Nessuna risorsa font di destinazione!"
+
+#~ msgid ""
+#~ "Invalid file extension.\n"
+#~ "Please use .font."
+#~ msgstr ""
+#~ "Estensione file invalida.\n"
+#~ "Si prega di usare .font."
+
+#~ msgid "Couldn't save font."
+#~ msgstr "Impossibile salvare font."
+
+#~ msgid "Source Font:"
+#~ msgstr "Font Sorgente:"
+
+#~ msgid "Source Font Size:"
+#~ msgstr "Dimensione Font sorgente:"
+
+#~ msgid "Dest Resource:"
+#~ msgstr "Risorsa di destin. :"
+
+#~ msgid "The quick brown fox jumps over the lazy dog."
+#~ msgstr "La rapida volpe bianca scavalca il cane pigro."
+
+#~ msgid "Test:"
+#~ msgstr "Test:"
+
+#~ msgid "Options:"
+#~ msgstr "Opzioni:"
+
+#~ msgid "Font Import"
+#~ msgstr "Importazione font"
+
+#~ msgid ""
+#~ "This file is already a Godot font file, please supply a BMFont type file "
+#~ "instead."
+#~ msgstr ""
+#~ "Questo file è già un file font di Godot, si prega di fornire invece un "
+#~ "file di tipo BMfont."
+
+#~ msgid "Failed opening as BMFont file."
+#~ msgstr "Apertura come BMFont file fallita."
+
+#~ msgid "Invalid font custom source."
+#~ msgstr "Sorgente font personalizzato invalido."
+
+#~ msgid "No meshes to import!"
+#~ msgstr "Nessuna mesh da importare!"
+
+#~ msgid "Single Mesh Import"
+#~ msgstr "Importa Mesh Singola"
+
+#~ msgid "Source Mesh(es):"
+#~ msgstr "Mesh Sorgente(i):"
+
+#~ msgid "Surface %d"
+#~ msgstr "Superficie %d"
+
+#~ msgid "No samples to import!"
+#~ msgstr "Nessun sample da importare!"
+
+#~ msgid "Import Audio Samples"
+#~ msgstr "Importa Sample Audio"
+
+#~ msgid "Source Sample(s):"
+#~ msgstr "Sample Sorgente(i):"
+
+#~ msgid "Audio Sample"
+#~ msgstr "Sample Audio"
+
+#~ msgid "New Clip"
+#~ msgstr "Nuova Clip"
+
+#~ msgid "Flags"
+#~ msgstr "Flags"
+
+#~ msgid "Bake FPS:"
+#~ msgstr "Bake FPS:"
+
+#~ msgid "Optimizer"
+#~ msgstr "Ottimizzatore"
+
+#~ msgid "Max Linear Error"
+#~ msgstr "Errore Lineare Max"
+
+#~ msgid "Max Angular Error"
+#~ msgstr "Errore Angolare Max"
+
+#~ msgid "Max Angle"
+#~ msgstr "Angolo Max"
+
+#~ msgid "Clips"
+#~ msgstr "Clips"
+
+#~ msgid "Start(s)"
+#~ msgstr "Inizio(i)"
+
+#~ msgid "End(s)"
+#~ msgstr "Fine(i)"
+
+#~ msgid "Filters"
+#~ msgstr "Filtri"
+
+#~ msgid "Source path is empty."
+#~ msgstr "Il percorso sorgente è vuoto."
+
+#~ msgid "Couldn't load post-import script."
+#~ msgstr "Impossibile caricare script di post-importazione."
+
+#~ msgid "Invalid/broken script for post-import."
+#~ msgstr "Script di post-importazione invalido/non funzionante."
+
+#~ msgid "Error importing scene."
+#~ msgstr "Errore di importazione scena."
+
+#~ msgid "Import 3D Scene"
+#~ msgstr "Importa Scena 3D"
+
+#~ msgid "Source Scene:"
+#~ msgstr "Scena Sorgente:"
+
+#~ msgid "Same as Target Scene"
+#~ msgstr "Stesso che Scena di Destinazione"
+
+#~ msgid "Shared"
+#~ msgstr "Condiviso"
+
+#~ msgid "Target Texture Folder:"
+#~ msgstr "Cartella Texture di Destinazione:"
+
+#~ msgid "Post-Process Script:"
+#~ msgstr "Script di Post-Process:"
+
+#~ msgid "Custom Root Node Type:"
+#~ msgstr "Tipo di Nodo Root Personalizzato:"
+
+#~ msgid "Auto"
+#~ msgstr "Auto"
+
+#~ msgid "Root Node Name:"
+#~ msgstr "Nome Nodo di Root:"
+
+#~ msgid "The Following Files are Missing:"
+#~ msgstr "I File Seguenti sono Mancanti:"
+
+#~ msgid "Import Anyway"
+#~ msgstr "Importa ComunqueImporta Comunque"
+
+#~ msgid "Import & Open"
+#~ msgstr "Importa e Apri"
+
+#~ msgid "Edited scene has not been saved, open imported scene anyway?"
+#~ msgstr ""
+#~ "La scena modificata non è stata salvata, aprire la scena importata "
+#~ "comunque?"
+
+#~ msgid "Import Image:"
+#~ msgstr "Importa Immagine:"
+
+#~ msgid "Couldn't localize path: %s (already local)"
+#~ msgstr "Impossibile localizzare il percorso: %s (già locale)"
+
+#~ msgid "3D Scene Animation"
+#~ msgstr "Animazione Scena 3D"
+
+#~ msgid "Uncompressed"
+#~ msgstr "Decompressi"
+
+#~ msgid "Compress Lossless (PNG)"
+#~ msgstr "Comprimi Lossless (PNG)"
+
+#~ msgid "Compress Lossy (WebP)"
+#~ msgstr "Comprimi Lossy (WebP)"
+
+#~ msgid "Compress (VRAM)"
+#~ msgstr "Comprimi (VRAM)"
+
+#~ msgid "Texture Format"
+#~ msgstr "Formato Texture"
+
+#~ msgid "Texture Compression Quality (WebP):"
+#~ msgstr "Qualità Compressione Texture (WebP):"
+
+#~ msgid "Texture Options"
+#~ msgstr "Opzioni Texture"
+
+#~ msgid "Please specify some files!"
+#~ msgstr "Si prega di specificare qualche file!"
+
+#~ msgid "At least one file needed for Atlas."
+#~ msgstr "Almeno un file è richiesto per l'Atlas."
+
+#~ msgid "Error importing:"
+#~ msgstr "Errore di importazione:"
+
+#~ msgid "Only one file is required for large texture."
+#~ msgstr "Solo un file è richiesto per una texture grande."
+
+#~ msgid "Max Texture Size:"
+#~ msgstr "Dimensione Texture Massima:"
+
+#~ msgid "Import Textures for Atlas (2D)"
+#~ msgstr "Importa Textures per Atlas (2D)"
+
+#~ msgid "Cell Size:"
+#~ msgstr "Dimensione Cella:"
+
+#~ msgid "Large Texture"
+#~ msgstr "Texture Grande"
+
+#~ msgid "Import Large Textures (2D)"
+#~ msgstr "Importa Texture Grandi (2D)"
+
+#~ msgid "Source Texture"
+#~ msgstr "Texture Sorgente"
+
+#~ msgid "Base Atlas Texture"
+#~ msgstr "Texture Base Atlas"
+
+#~ msgid "Source Texture(s)"
+#~ msgstr "Texture Sorgente(i)"
+
+#~ msgid "Import Textures for 2D"
+#~ msgstr "Importa Textures per 2D"
+
+#~ msgid "Import Textures for 3D"
+#~ msgstr "Importa Textures per 3D"
+
+#~ msgid "Import Textures"
+#~ msgstr "Importa Textures"
+
+#~ msgid "2D Texture"
+#~ msgstr "Texture 2D"
+
+#~ msgid "3D Texture"
+#~ msgstr "Texture 3D"
+
+#~ msgid "Atlas Texture"
+#~ msgstr "Texture dell'Atlas"
+
+#~ msgid ""
+#~ "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files "
+#~ "to the project."
+#~ msgstr ""
+#~ "NOTA: Importare texture 2D non è obbligatorio. Basta copiare i file png/"
+#~ "jpg nel progetto."
+
+#~ msgid "Crop empty space."
+#~ msgstr "Ritaglia spazio vuoto."
+
+#~ msgid "Texture"
+#~ msgstr "Texture"
+
+#~ msgid "Import Large Texture"
+#~ msgstr "Importa Texture Grande"
+
+#~ msgid "Load Source Image"
+#~ msgstr "Carica Immagine Sorgente"
+
+#~ msgid "Slicing"
+#~ msgstr "Taglio"
+
+#~ msgid "Saving"
+#~ msgstr "Salvataggio"
+
+#~ msgid "Couldn't save large texture:"
+#~ msgstr "Impossibile salvare texture grande:"
+
+#~ msgid "Build Atlas For:"
+#~ msgstr "Costruisci Atlas Per:"
+
+#~ msgid "Loading Image:"
+#~ msgstr "Immagine Caricamento:"
+
+#~ msgid "Couldn't load image:"
+#~ msgstr "Impossibile caricare immagine:"
+
+#~ msgid "Converting Images"
+#~ msgstr "Convertendo Immagini"
+
+#~ msgid "Cropping Images"
+#~ msgstr "Tagliando Immagini"
+
+#~ msgid "Blitting Images"
+#~ msgstr "Bliting Immagini"
+
+#~ msgid "Couldn't save atlas image:"
+#~ msgstr "Impossibile salvare l'immagine di atlas:"
+
+#~ msgid "Couldn't save converted texture:"
+#~ msgstr "Impossibile salvare la texture convertita:"
+
+#~ msgid "Invalid source!"
+#~ msgstr "Sorgente invalida!"
+
+#~ msgid "Invalid translation source!"
+#~ msgstr "Sorgente traduzione invalida!"
+
+#~ msgid "Column"
+#~ msgstr "Colonna"
+
+#~ msgid "No items to import!"
+#~ msgstr "Nessun elemento da importare!"
+
+#~ msgid "No target path!"
+#~ msgstr "Nessun percorso di destinazione!"
+
+#~ msgid "Import Translations"
+#~ msgstr "Importa Traduzioni"
+
+#~ msgid "Couldn't import!"
+#~ msgstr "Impossibile Importare!"
+
+#~ msgid "Import Translation"
+#~ msgstr "Importa Traduzione"
+
+#~ msgid "Source CSV:"
+#~ msgstr "CSV Sorgente:"
+
+#~ msgid "Ignore First Row"
+#~ msgstr "Ignora Prima Riga"
+
+#~ msgid "Compress"
+#~ msgstr "Comprimi"
+
+#~ msgid "Add to Project (project.godot)"
+#~ msgstr "Aggiungi a Progetto (project.godot)"
+
+#~ msgid "Import Languages:"
+#~ msgstr "Importa Lingue:"
+
+#~ msgid "Translation"
+#~ msgstr "Traduzione"
+
+#~ msgid "Parsing %d Triangles:"
+#~ msgstr "Elaborazione %d Triangoli:"
+
+#~ msgid "Triangle #"
+#~ msgstr "Triangolo #"
+
+#~ msgid "Light Baker Setup:"
+#~ msgstr "Impostazioni Baker Luci:"
+
+#~ msgid "Fixing Lights"
+#~ msgstr "Aggiustando le Luci"
+
+#~ msgid "Making BVH"
+#~ msgstr "Creazione BVH"
+
+#~ msgid "Transfer to Lightmaps:"
+#~ msgstr "Trasferisci a Lightmap:"
+
+#~ msgid "Allocating Texture #"
+#~ msgstr "Allocazione Texture #"
+
+#~ msgid "Baking Triangle #"
+#~ msgstr "Backing Triangoli #"
+
+#~ msgid "Post-Processing Texture #"
+#~ msgstr "Texture Post-Processing #"
+
+#~ msgid "Reset the lightmap octree baking process (start over)."
+#~ msgstr "Resetta il processo di baking dell'octree (ricomincia da capo)."
+
+#~ msgid "Zoom (%):"
+#~ msgstr "Zoom(%):"
+
+#~ msgid "Skeleton.."
+#~ msgstr "Scheletro.."
+
+#~ msgid "Zoom Reset"
+#~ msgstr "Zoom Reset"
+
+#~ msgid "Zoom Set.."
+#~ msgstr "Imposta Zoom.."
+
+#~ msgid "Set a Value"
+#~ msgstr "Imposta un Valore"
+
+#~ msgid "Snap (Pixels):"
+#~ msgstr "Snap (Pixels):"
+
+#~ msgid "Parse BBCode"
+#~ msgstr "Decodifica BBCode"
+
+#~ msgid "Length:"
+#~ msgstr "Lunghezza:"
+
+#~ msgid "Open Sample File(s)"
+#~ msgstr "Apri File(s) Sample"
+
+#~ msgid "ERROR: Couldn't load sample!"
+#~ msgstr "ERRORE: Impossibile caricare sample!"
+
+#~ msgid "Add Sample"
+#~ msgstr "Aggiungi Sample"
+
+#~ msgid "Rename Sample"
+#~ msgstr "Rinomina Sample"
+
+#~ msgid "Delete Sample"
+#~ msgstr "Elimina Sample"
+
+#~ msgid "16 Bits"
+#~ msgstr "16 Bits"
+
+#~ msgid "8 Bits"
+#~ msgstr "8 Bits"
+
+#~ msgid "Stereo"
+#~ msgstr "Stereo"
+
+#~ msgid "Mono"
+#~ msgstr "Mono"
+
+#~ msgid "Pitch"
+#~ msgstr "Pitch"
+
+#~ msgid "Window"
+#~ msgstr "Finestra"
+
+#~ msgid "Move Right"
+#~ msgstr "Sposta a Destra"
+
+#~ msgid "Scaling to %s%%."
+#~ msgstr "Scalando a %s%%."
+
+#~ msgid "Up"
+#~ msgstr "Su"
+
+#~ msgid "Down"
+#~ msgstr "Giù"
+
+#~ msgid "Bucket"
+#~ msgstr "Secchiello"
+
+#~ msgid "Invalid project path, the path must exist!"
+#~ msgstr "Percorso di progetto invalido, il percorso deve esistere!"
+
+#~ msgid "Invalid project path, project.godot must not exist."
+#~ msgstr "Percorso di progetto invalido, project.godot non esiste."
+
+#~ msgid "Invalid project path, project.godot must exist."
+#~ msgstr "Percorso di progetto invalido, project.godot deve esistere."
+
+#~ msgid "Project Path (Must Exist):"
+#~ msgstr "Percorso Progetto (Deve Esistere):"
+
+#~ msgid "Create New Resource"
+#~ msgstr "Crea Nuova Risorsa"
+
+#~ msgid "Open Resource"
+#~ msgstr "Apri Risorsa"
+
+#~ msgid "Save Resource"
+#~ msgstr "Salva Risorsa"
+
+#~ msgid "Resource Tools"
+#~ msgstr "Strumenti Risorsa"
+
+#~ msgid "Make Local"
+#~ msgstr "Rendi Locale"
+
+#~ msgid "Edit Groups"
+#~ msgstr "Modifica Gruppi"
+
+#~ msgid "Edit Connections"
+#~ msgstr "Modifica Connessioni"
+
+#, fuzzy
+#~ msgid "Tiles"
+#~ msgstr " Files"
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl+"
+
#~ msgid "Close scene? (Unsaved changes will be lost)"
#~ msgstr "Chiudi scena? (I cambiamenti non salvati saranno persi)"
@@ -8026,9 +8351,6 @@ msgstr ""
#~ msgid "Close Goto Prev. Scene"
#~ msgstr "Vai a Scena Preced."
-#~ msgid "Expand to Parent"
-#~ msgstr "Espandi a Genitore"
-
#~ msgid "Del"
#~ msgstr "Elim."
@@ -8205,18 +8527,12 @@ msgstr ""
#~ msgid "Save Translatable Strings"
#~ msgstr "Salva Stringhe Traducibili"
-#~ msgid "Translatable Strings.."
-#~ msgstr "Stringhe Traducibili.."
-
#~ msgid "Install Export Templates"
#~ msgstr "Installa Template di Esportazione"
#~ msgid "Edit Script Options"
#~ msgstr "Modifica le opzioni di script"
-#~ msgid "Please export outside the project folder!"
-#~ msgstr "Si prega di esportare al di fuori della cartella del progetto!"
-
#~ msgid "Error exporting project!"
#~ msgstr "Errore di esportazione del progetto!"
@@ -8275,18 +8591,12 @@ msgstr ""
#~ msgid "Include"
#~ msgstr "Includi"
-#~ msgid "Change Image Group"
-#~ msgstr "Cambia Gruppo Immagine"
-
#~ msgid "Group name can't be empty!"
#~ msgstr "Il nome del gruppo non può essere vuoto!"
#~ msgid "Invalid character in group name!"
#~ msgstr "Carattere invalido nel nome del gruppo!"
-#~ msgid "Group name already exists!"
-#~ msgstr "Il nome del gruppo è già esistente!"
-
#~ msgid "Add Image Group"
#~ msgstr "Aggiungi Gruppo Immagini"
@@ -8365,9 +8675,6 @@ msgstr ""
#~ msgid "Preview Atlas"
#~ msgstr "Anteprima Atlas"
-#~ msgid "Image Filter:"
-#~ msgstr "Filtro Immagine:"
-
#~ msgid "Images:"
#~ msgstr "Immagini:"
@@ -8434,9 +8741,6 @@ msgstr ""
#~ msgid "Lighting"
#~ msgstr "Illuminazione"
-#~ msgid "Toggle Persisting"
-#~ msgstr "Attiva Persistenza"
-
#~ msgid "Global"
#~ msgstr "Globale"
diff --git a/editor/translations/ja.po b/editor/translations/ja.po
index 51c481f3d4..59d3b9499b 100644
--- a/editor/translations/ja.po
+++ b/editor/translations/ja.po
@@ -1,9 +1,10 @@
# Japanese translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# akirakido <achts.y@gmail.com>, 2016-2017.
-# hopping tappy (ãŸã£ã´ã•ã‚“) <hopping.tappy@gmail.com>, 2016.
+# hopping tappy (ãŸã£ã´ã•ã‚“) <hopping.tappy@gmail.com>, 2016-2017.
# Lexi Grafen <shfeedly@gmail.com>, 2017.
# Tetsuji Ochiai <ochiaixp@gmail.com>, 2017.
# Tohru Ike (rokujyouhitoma) <rokujyouhitomajp@gmail.com>, 2017.
@@ -11,15 +12,15 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-07-27 05:10+0000\n"
-"Last-Translator: Tetsuji Ochiai <ochiaixp@gmail.com>\n"
+"PO-Revision-Date: 2017-08-28 04:47+0000\n"
+"Last-Translator: hopping tappy <hopping.tappy@gmail.com>\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 2.16-dev\n"
+"X-Generator: Weblate 2.17-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -211,10 +212,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr "æ–°ã—ã„ %d トラックを作æˆã—ã€ã‚­ãƒ¼ã‚’挿入ã—ã¾ã™ã‹ï¼Ÿ"
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -378,313 +378,6 @@ msgstr "é…列ã®å€¤ã®ç¨®é¡žã®å¤‰æ›´"
msgid "Change Array Value"
msgstr "é…列ã®å€¤ã‚’変更"
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Free"
-msgstr "解放"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-#, fuzzy
-msgid "Version:"
-msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Contents:"
-msgstr "コンテンツ:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr "ビューファイル:"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-#, fuzzy
-msgid "Description:"
-msgstr "記述:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-#, fuzzy
-msgid "Install"
-msgstr "インストール"
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "é–‰ã˜ã‚‹"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr "ホストåを解決ã§ãã¾ã›ã‚“:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't resolve."
-msgstr "解決ã§ãã¾ã›ã‚“."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Connection error, please try again."
-msgstr "接続失敗 å†è©¦è¡Œã‚’"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect."
-msgstr "接続失敗."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect to host:"
-msgstr "ãƒ›ã‚¹ãƒˆã«æŽ¥ç¶šã§ãã¾ã›ã‚“:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "No response from host:"
-msgstr "ホストã‹ã‚‰å¿œç­”ãŒã‚りã¾ã›ã‚“:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "No response."
-msgstr "応答ãŒã‚りã¾ã›ã‚“."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Request failed, return code:"
-msgstr "リクエスト失敗 リターン コード:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Req. Failed."
-msgstr "リクエスト失敗."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Request failed, too many redirects"
-msgstr "リクエスト失敗 リダイレクトã®å›žæ•°ãŒå¤šã™ãŽã¾ã™"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Redirect Loop."
-msgstr "リダイレクトã®ãƒ«ãƒ¼ãƒ—."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Failed:"
-msgstr "失敗:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr "ダウンロード内容ã®ãƒãƒƒã‚·ãƒ¥ãŒä¸æ•´åˆã€€æ”¹ã–ã‚“ã®å¯èƒ½æ€§ãŒã‚りã¾ã™."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Expected:"
-msgstr "予測:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Got:"
-msgstr "å–å¾—:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Failed sha256 hash check"
-msgstr "sha256ã®ãƒãƒƒã‚·ãƒ¥ãƒã‚§ãƒƒã‚¯å¤±æ•—"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Asset Download Error:"
-msgstr "アセットã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰å¤±æ•—:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#, fuzzy
-msgid "Success!"
-msgstr "æˆåŠŸï¼"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Fetching:"
-msgstr "å–得中:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Resolving.."
-msgstr "解決中.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Connecting.."
-msgstr "接続中.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Requesting.."
-msgstr "リクエスト中.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Error making request"
-msgstr "リクエスト発行エラー"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Idle"
-msgstr "待機中"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Retry"
-msgstr "å†è©¦è¡Œ"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Download Error"
-msgstr "ダウンロード失敗"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Download for this asset is already in progress!"
-msgstr "ã“ã®ã‚¢ã‚»ãƒƒãƒˆã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã¯æ—¢ã«é€²è¡Œä¸­ï¼"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "first"
-msgstr "最åˆã®"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "prev"
-msgstr "å‰ã®"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "next"
-msgstr "次ã®"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "last"
-msgstr "最後ã®"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "ã™ã¹ã¦ã®"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-#, fuzzy
-msgid "Search:"
-msgstr "検索:"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-#, fuzzy
-msgid "Search"
-msgstr "検索"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr "インãƒãƒ¼ãƒˆï¼ˆå–り込ã¿ï¼‰"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-#, fuzzy
-msgid "Plugins"
-msgstr "プラグイン"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Sort:"
-msgstr "ä¸¦ã¹æ›¿ãˆ:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Reverse"
-msgstr "逆"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-#, fuzzy
-msgid "Category:"
-msgstr "カテゴリー:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Site:"
-msgstr "サイト:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Support.."
-msgstr "サãƒãƒ¼ãƒˆ.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Official"
-msgstr "å…¬å¼"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#, fuzzy
-msgid "Community"
-msgstr "コミュニティ"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Testing"
-msgstr "テスト中"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Assets ZIP File"
-msgstr "アセットã®zipファイル"
-
-#: editor/call_dialog.cpp
-#, fuzzy
-msgid "Method List For '%s':"
-msgstr "'%s' ã®ãƒ¡ã‚½ãƒƒãƒ‰ä¸€è¦§ï¼š"
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-#, fuzzy
-msgid "Call"
-msgstr "呼ã³å‡ºã—"
-
-#: editor/call_dialog.cpp
-#, fuzzy
-msgid "Method List:"
-msgstr "メソッド一覧:"
-
-#: editor/call_dialog.cpp
-#, fuzzy
-msgid "Arguments:"
-msgstr "引数:"
-
-#: editor/call_dialog.cpp
-#, fuzzy
-msgid "Return:"
-msgstr "戻り値:"
-
#: editor/code_editor.cpp
#, fuzzy
msgid "Go to Line"
@@ -730,6 +423,15 @@ msgstr "å˜èªžå…¨ä½“"
msgid "Selection Only"
msgstr "é¸æŠžç¯„å›²ã®ã¿"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Search"
+msgstr "検索"
+
#: editor/code_editor.cpp editor/editor_help.cpp
#, fuzzy
msgid "Find"
@@ -769,12 +471,12 @@ msgstr "ç½®æ›æ™‚ã«ç¢ºèª"
msgid "Skip"
msgstr "スキップ"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
#, fuzzy
msgid "Zoom In"
msgstr "ズームイン"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
#, fuzzy
msgid "Zoom Out"
msgstr "ズームアウト"
@@ -855,6 +557,20 @@ msgstr "é…å»¶"
msgid "Oneshot"
msgstr "一括"
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "é–‰ã˜ã‚‹"
+
#: editor/connections_dialog.cpp
#, fuzzy
msgid "Connect"
@@ -886,7 +602,7 @@ msgstr "接続.."
msgid "Disconnect"
msgstr "切断"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
#, fuzzy
msgid "Signals"
msgstr "シグナル"
@@ -905,6 +621,14 @@ msgstr "ãŠæ°—ã«å…¥ã‚Š:"
msgid "Recent:"
msgstr "最近ã®:"
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+#, fuzzy
+msgid "Search:"
+msgstr "検索:"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
@@ -912,6 +636,13 @@ msgstr "最近ã®:"
msgid "Matches:"
msgstr "一致:"
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+#, fuzzy
+msgid "Description:"
+msgstr "記述:"
+
#: editor/dependency_editor.cpp
#, fuzzy
msgid "Search Replacement For:"
@@ -981,6 +712,11 @@ msgstr "~ã®ã‚ªãƒ¼ãƒŠãƒ¼:"
#: editor/dependency_editor.cpp
#, fuzzy
+msgid "Remove selected files from the project? (no undo)"
+msgstr "é¸æŠžã—ãŸãƒ•ァイルをプロジェクトã‹ã‚‰å–り除ã(å–り消ã—ã§ãã¾ã›ã‚“)"
+
+#: editor/dependency_editor.cpp
+#, fuzzy
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -991,8 +727,8 @@ msgstr ""
#: editor/dependency_editor.cpp
#, fuzzy
-msgid "Remove selected files from the project? (no undo)"
-msgstr "é¸æŠžã—ãŸãƒ•ァイルをプロジェクトã‹ã‚‰å–り除ã(å–り消ã—ã§ãã¾ã›ã‚“)"
+msgid "Cannot remove:\n"
+msgstr "解決ã§ãã¾ã›ã‚“."
#: editor/dependency_editor.cpp
#, fuzzy
@@ -1070,11 +806,6 @@ msgstr "Godotエンジンã«è²¢çŒ®ã—ãŸäººã€…"
#: editor/editor_about.cpp
#, fuzzy
-msgid "Authors"
-msgstr "作者:"
-
-#: editor/editor_about.cpp
-#, fuzzy
msgid "Project Founders"
msgstr "プロジェクトマãƒãƒ¼ã‚¸ãƒ£ãƒ¼"
@@ -1093,10 +824,44 @@ msgid "Developers"
msgstr "開発者"
#: editor/editor_about.cpp
-msgid "License"
+#, fuzzy
+msgid "Authors"
+msgstr "作者:"
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
msgstr ""
#: editor/editor_about.cpp
+#, fuzzy
+msgid "Bronze Donors"
+msgstr "複製ã—ã¦ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰"
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr "ライセンス"
+
+#: editor/editor_about.cpp
msgid "Thirdparty License"
msgstr ""
@@ -1136,13 +901,25 @@ msgid "Package Installed Successfully!"
msgstr "パッケージインストールæˆåŠŸ!"
#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Success!"
+msgstr "æˆåŠŸï¼"
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+#, fuzzy
+msgid "Install"
+msgstr "インストール"
+
+#: editor/editor_asset_installer.cpp
#, fuzzy
msgid "Package Installer"
msgstr "パッケージインストールæˆåŠŸ!"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
-msgstr ""
+msgstr "スピーカー"
#: editor/editor_audio_buses.cpp
#, fuzzy
@@ -1190,11 +967,6 @@ msgid "Audio Bus, Drag and Drop to rearrange."
msgstr ""
#: editor/editor_audio_buses.cpp
-#, fuzzy
-msgid "Bus options"
-msgstr "サブシーンã®ã‚ªãƒ—ション"
-
-#: editor/editor_audio_buses.cpp
msgid "Solo"
msgstr ""
@@ -1206,6 +978,11 @@ msgstr ""
msgid "Bypass"
msgstr ""
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "サブシーンã®ã‚ªãƒ—ション"
+
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
msgid "Duplicate"
@@ -1213,6 +990,11 @@ msgstr "複製"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Volume"
+msgstr "ズームをリセット"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Delete Effect"
msgstr "é¸æŠžç¯„å›²ã‚’æ¶ˆåŽ»"
@@ -1237,6 +1019,11 @@ msgstr "アニメーションを複製"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Bus Volume"
+msgstr "ズームをリセット"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Move Audio Bus"
msgstr "移動動作"
@@ -1276,7 +1063,8 @@ msgstr "ãƒã‚¹ã‚’追加ã™ã‚‹"
msgid "Create a new Bus Layout."
msgstr "æ–°ã—ã„リソースを生æˆ"
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Load"
msgstr "読ã¿è¾¼ã‚€"
@@ -1385,7 +1173,7 @@ msgid "Rearrange Autoloads"
msgstr "自動読ã¿è¾¼ã¿ã‚’çµ„ã¿æ›¿ãˆã‚‹"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "Path:"
@@ -1394,9 +1182,7 @@ msgstr "Path:"
msgid "Node Name:"
msgstr "ノードã®åå‰:"
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
#, fuzzy
msgid "Name"
msgstr "åå‰"
@@ -1434,18 +1220,19 @@ msgid "Choose a Directory"
msgstr "ディレクトリをé¸ã¶"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "フォルダを作æˆã™ã‚‹"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "åå‰:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "フォルダを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
@@ -1469,35 +1256,6 @@ msgstr "パッキングã™ã‚‹"
msgid "Template file not found:\n"
msgstr "テンプレートファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“:\n"
-#: editor/editor_export.cpp
-#, fuzzy
-msgid "Added:"
-msgstr "加ãˆãŸã®ã¯:"
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr "å–り除ã„ãŸã®ã¯:"
-
-#: editor/editor_export.cpp
-#, fuzzy
-msgid "Error saving atlas:"
-msgstr "アトラスã®ä¿å­˜ã«å¤±æ•—ã—ã¾ã—ãŸ:"
-
-#: editor/editor_export.cpp
-#, fuzzy
-msgid "Could not save atlas subtexture:"
-msgstr "アトラスã®è¦ç´ ã§ã‚るテクスãƒãƒ£ã®ä¿å­˜ãŒã§ãã¾ã›ã‚“:"
-
-#: editor/editor_export.cpp
-#, fuzzy
-msgid "Exporting for %s"
-msgstr "%sã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆä¸­"
-
-#: editor/editor_export.cpp
-#, fuzzy
-msgid "Setting Up.."
-msgstr "セットアップ中.."
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "ãƒ•ã‚¡ã‚¤ãƒ«ãŒæ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚上書ãã—ã¾ã™ã‹ï¼Ÿ"
@@ -1593,6 +1351,11 @@ msgstr "ãŠæ°—ã«å…¥ã‚Šã‚’上ã’ã‚‹"
msgid "Move Favorite Down"
msgstr "ãŠæ°—ã«å…¥ã‚Šã‚’下ã’ã‚‹"
+#: editor/editor_file_dialog.cpp
+#, fuzzy
+msgid "Go to parent folder"
+msgstr "フォルダを作æˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚"
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "ディレクトリã¾ãŸã¯ãƒ•ァイル:"
@@ -1608,10 +1371,6 @@ msgid "File:"
msgstr "ファイル:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "フィルター:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "æœ‰åŠ¹ãªæ‹¡å¼µå­ã‚’使用ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚"
@@ -1640,6 +1399,10 @@ msgstr "クラスã®ãƒªã‚¹ãƒˆ:"
msgid "Search Classes"
msgstr "ã‚¯ãƒ©ã‚¹ã®æ¤œç´¢"
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr "上é¢"
+
#: editor/editor_help.cpp editor/property_editor.cpp
#, fuzzy
msgid "Class:"
@@ -1660,6 +1423,11 @@ msgstr "~ã«ç¶™æ‰¿ã•れる:"
msgid "Brief Description:"
msgstr "è¦ç´„:"
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Members"
+msgstr "メンãƒãƒ¼:"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Members:"
@@ -1667,11 +1435,21 @@ msgstr "メンãƒãƒ¼:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Public Methods"
+msgstr "公開メソッド:"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Public Methods:"
msgstr "公開メソッド:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "GUI Theme Items"
+msgstr "GUIテーマã®éƒ¨å“:"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "GUI Theme Items:"
msgstr "GUIテーマã®éƒ¨å“:"
@@ -1682,6 +1460,11 @@ msgstr "シグナル:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Enumerations"
+msgstr "アニメーション"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Enumerations:"
msgstr "アニメーション"
@@ -1691,20 +1474,52 @@ msgstr ""
#: editor/editor_help.cpp
#, fuzzy
+msgid "Constants"
+msgstr "定数:"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Constants:"
msgstr "定数:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Description"
+msgstr "記述:"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Properties"
+msgstr "プロパティ:"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Property Description:"
msgstr "プロパティã«ã¤ã„ã¦ã®è¨˜è¼‰:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Methods"
+msgstr "メソッド一覧:"
+
+#: editor/editor_help.cpp
#, fuzzy
msgid "Method Description:"
msgstr "メソッドã«ã¤ã„ã¦ã®è¨˜è¼‰:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
#, fuzzy
msgid "Search Text"
msgstr "テキストを探ã™"
@@ -1715,26 +1530,23 @@ msgid "Output:"
msgstr " 出力:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "削除"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
#, fuzzy
msgid "Error saving resource!"
msgstr "リソースä¿å­˜ã‚¨ãƒ©ãƒ¼!"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
#, fuzzy
msgid "Save Resource As.."
msgstr "~ã¨ã„ã†åå‰ã§ãƒªã‚½ãƒ¼ã‚¹ã‚’ä¿å­˜ã™ã‚‹"
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
#, fuzzy
msgid "I see.."
msgstr "ã‚ã‹ã£ãŸ.."
@@ -1755,6 +1567,30 @@ msgid "Error while saving."
msgstr "ä¿å­˜ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒèµ·ãã¾ã—ãŸ."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Can't open '%s'."
+msgstr "'..'を処ç†ã§ãã¾ã›ã‚“"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while parsing '%s'."
+msgstr "ä¿å­˜ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒèµ·ãã¾ã—ãŸ."
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Missing '%s' or its dependencies."
+msgstr "シーン'%s' ã¯ä¾å­˜é–¢ä¿‚ãŒå£Šã‚Œã¦ã„ã¾ã™:"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while loading '%s'."
+msgstr "ä¿å­˜ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒèµ·ãã¾ã—ãŸ."
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr "シーンをä¿å­˜"
@@ -1826,6 +1662,33 @@ msgid "Restored default layout to base settings."
msgstr "æ¨™æº–ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã‚’åŸºæœ¬è¨­å®šã«æˆ»ã—ã¾ã—ãŸ"
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
#, fuzzy
msgid "Copy Params"
msgstr "パラメーターをコピーã™ã‚‹"
@@ -2025,24 +1888,36 @@ msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+
+#: editor/editor_node.cpp
#, fuzzy
msgid "Pick a Main Scene"
msgstr "メインシーンを指定"
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "フォント読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼ã€‚"
+
+#: editor/editor_node.cpp
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -2054,7 +1929,7 @@ msgstr ""
"変更ã™ã‚‹ãŸã‚ã«ã¯ã€ã‚·ãƒ¼ãƒ³ã‚’継承ã—ã¦æ–°ã—ã生æˆã—ã¾ã™."
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
#, fuzzy
msgid "Ugh"
msgstr "ã†ã‡"
@@ -2070,13 +1945,13 @@ msgstr ""
#: editor/editor_node.cpp
#, fuzzy
-msgid "Error loading scene."
-msgstr "シーンã®èª­ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼"
+msgid "Scene '%s' has broken dependencies:"
+msgstr "シーン'%s' ã¯ä¾å­˜é–¢ä¿‚ãŒå£Šã‚Œã¦ã„ã¾ã™:"
#: editor/editor_node.cpp
#, fuzzy
-msgid "Scene '%s' has broken dependencies:"
-msgstr "シーン'%s' ã¯ä¾å­˜é–¢ä¿‚ãŒå£Šã‚Œã¦ã„ã¾ã™:"
+msgid "Clear Recent Scenes"
+msgstr "最近開ã„ãŸãƒ•ァイルã®è¨˜éŒ²ã‚’クリア"
#: editor/editor_node.cpp
msgid "Save Layout"
@@ -2117,7 +1992,7 @@ msgstr "最低é™ãƒ¢ãƒ¼ãƒ‰"
msgid "Toggle distraction-free mode."
msgstr "最低é™ãƒ¢ãƒ¼ãƒ‰"
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
#, fuzzy
msgid "Scene"
msgstr "シーン"
@@ -2177,9 +2052,8 @@ msgid "Close Scene"
msgstr "シーンを閉ã˜ã‚‹"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Open Recent"
-msgstr "最近ã®ã‚’é–‹ã"
+msgstr "最近使ã£ãŸãƒ•ァイルを開ã"
#: editor/editor_node.cpp
#, fuzzy
@@ -2394,6 +2268,11 @@ msgstr "Q&A"
msgid "Issue Tracker"
msgstr "課題(ãƒã‚°ï¼‰ç®¡ç†ã‚·ã‚¹ãƒ†ãƒ "
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Community"
+msgstr "コミュニティ"
+
#: editor/editor_node.cpp
#, fuzzy
msgid "About"
@@ -2404,7 +2283,7 @@ msgstr "ã«ã¤ã„ã¦"
msgid "Play the project."
msgstr "プロジェクトã®å®Ÿè¡Œ"
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
#, fuzzy
msgid "Play"
msgstr "実行"
@@ -2424,7 +2303,7 @@ msgstr "ã‚·ãƒ¼ãƒ³ã‚’ä¸€æ™‚åœæ­¢"
msgid "Stop the scene."
msgstr "シーンを止ã‚ã‚‹"
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
#, fuzzy
msgid "Stop"
msgstr "æ­¢ã‚ã‚‹"
@@ -2513,6 +2392,16 @@ msgstr "オブジェクトã®ãƒ—ロパティ"
#: editor/editor_node.cpp
#, fuzzy
+msgid "Changes may be lost!"
+msgstr "ベクトル定数を変更"
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr "インãƒãƒ¼ãƒˆï¼ˆå–り込ã¿ï¼‰"
+
+#: editor/editor_node.cpp
+#, fuzzy
msgid "FileSystem"
msgstr "ファイルシステム"
@@ -2530,14 +2419,6 @@ msgstr "出力"
msgid "Don't Save"
msgstr ""
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr "å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr "アップデート"
-
#: editor/editor_node.cpp
#, fuzzy
msgid "Import Templates From ZIP File"
@@ -2607,11 +2488,30 @@ msgstr "次ã®ã‚¨ãƒ‡ã‚£ã‚¿ã‚’é–‹ã"
msgid "Open the previous Editor"
msgstr "å‰ã®ã‚¨ãƒ‡ã‚£ã‚¿ã‚’é–‹ã"
+#: editor/editor_plugin.cpp
+#, fuzzy
+msgid "Creating Mesh Previews"
+msgstr "メッシュライブラリを生æˆ"
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr "サムãƒã‚¤ãƒ«.."
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr "インストール済ã¿ã®ãƒ—ラグイン:"
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr "アップデート"
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Version:"
+msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³:"
+
+#: editor/editor_plugin_settings.cpp
#, fuzzy
msgid "Author:"
msgstr "作者:"
@@ -2652,7 +2552,7 @@ msgstr "フレーム %"
#: editor/editor_profiler.cpp
#, fuzzy
-msgid "Fixed Frame %"
+msgid "Physics Frame %"
msgstr "固定フレーム %"
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2675,31 +2575,6 @@ msgstr "セルフ"
msgid "Frame #:"
msgstr "フレーム #:"
-#: editor/editor_reimport_dialog.cpp
-#, fuzzy
-msgid "Please wait for scan to complete."
-msgstr "走査完了をãŠå¾…ã¡ãã ã•ã„"
-
-#: editor/editor_reimport_dialog.cpp
-#, fuzzy
-msgid "Current scene must be saved to re-import."
-msgstr "å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆã™ã‚‹ãŸã‚ã«ã¯ç¾åœ¨ã®ã‚·ãƒ¼ãƒ³ã‚’ä¿å­˜ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™"
-
-#: editor/editor_reimport_dialog.cpp
-#, fuzzy
-msgid "Save & Re-Import"
-msgstr "ä¿å­˜ã—ã¦å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
-
-#: editor/editor_reimport_dialog.cpp
-#, fuzzy
-msgid "Re-Importing"
-msgstr "å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
-
-#: editor/editor_reimport_dialog.cpp
-#, fuzzy
-msgid "Re-Import Changed Resources"
-msgstr "変更ã—ãŸãƒªã‚½ãƒ¼ã‚¹ã‚’å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2833,11 +2708,6 @@ msgstr "インãƒãƒ¼ãƒˆ:"
#: editor/export_template_manager.cpp
#, fuzzy
-msgid "Loading Export Templates"
-msgstr "エクスãƒãƒ¼ãƒˆã€€ãƒ†ãƒ³ãƒ—レートã®èª­ã¿è¾¼ã¿"
-
-#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Current Version:"
msgstr "ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³:"
@@ -2879,11 +2749,18 @@ msgid "Cannot navigate to '"
msgstr "~ã«ç§»å‹•ã§ãã¾ã›ã‚“"
#: editor/filesystem_dock.cpp
-#, fuzzy
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
-msgstr "ä¿å­˜ã—ã¦å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
+"Status: Import of file failed. Please fix file and reimport manually."
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
@@ -2894,51 +2771,55 @@ msgstr "ソース:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Same source and destination files, doing nothing."
-msgstr "åŒã˜ãƒ•ã‚¡ã‚¤ãƒ«ãŒæŒ‡å®šã•れã¦ã„ã‚‹ã®ã§ã€ä½•も行ã„ã¾ã›ã‚“."
+msgid "Cannot move/rename resources root."
+msgstr "ソースã®ãƒ•ォントを読ã¿è¾¼ã¿/処ç†ã§ãã¾ã›ã‚“."
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
-msgstr ""
+#, fuzzy
+msgid "Cannot move a folder into itself.\n"
+msgstr "åŒã˜ãƒ•ァイルã«ã‚¤ãƒ³ãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Same source and destination paths, doing nothing."
-msgstr "åŒã˜ãƒ‘ã‚¹ãŒæŒ‡å®šã•れã¦ã„ã‚‹ã®ã§ã€ä½•も行ã„ã¾ã›ã‚“"
+msgid "Error moving:\n"
+msgstr "エラーをインãƒãƒ¼ãƒˆä¸­:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Can't move directories to within themselves."
-msgstr "ディレクトリを自身ã®å†…部ã«ã¯ç§»å‹•ã§ãã¾ã›ã‚“"
+msgid "Unable to update dependencies:\n"
+msgstr "シーン'%s' ã¯ä¾å­˜é–¢ä¿‚ãŒå£Šã‚Œã¦ã„ã¾ã™:"
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "No name provided"
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error moving file:\n"
-msgstr "イメージ読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼:"
+msgid "Provided name contains invalid characters"
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "エラーをインãƒãƒ¼ãƒˆä¸­:"
+msgid "No name provided."
+msgstr "åå‰ã‚’変ãˆã‚‹ã‹ç§»å‹•ã—ã¦ãã ã•ã„.."
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Can't operate on '..'"
-msgstr "'..'を処ç†ã§ãã¾ã›ã‚“"
+msgid "Name contains invalid characters."
+msgstr "使用å¯èƒ½ãªæ–‡å­—:"
+
+#: editor/filesystem_dock.cpp
+msgid "A file or folder with this name already exists."
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Pick New Name and Location For:"
-msgstr "æ–°ã—ã„åå‰ã¨ãƒ­ã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚’é¸æŠž:"
+msgid "Renaming file:"
+msgstr "変数ã®åå‰ã‚’変ãˆã‚‹"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "No files selected!"
-msgstr "ファイルãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“!"
+msgid "Renaming folder:"
+msgstr "ノードã®åå‰ã‚’変更"
#: editor/filesystem_dock.cpp
#, fuzzy
@@ -2952,48 +2833,43 @@ msgstr "ã™ã¹ã¦æŠ˜ã‚ŠãŸãŸã‚€"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Show In File Manager"
-msgstr "ファイルマãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã§è¡¨ç¤º"
-
-#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Instance"
-msgstr "インスタンス"
+msgid "Copy Path"
+msgstr "パスをコピーã™ã‚‹"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Edit Dependencies.."
-msgstr "ä¾å­˜é–¢ä¿‚を編集.."
+msgid "Rename.."
+msgstr "åå‰ã‚’変更ã™ã‚‹"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "View Owners.."
-msgstr "オーナーを見る.."
+msgid "Move To.."
+msgstr "~ã¸ç§»å‹•ã™ã‚‹.."
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Copy Path"
-msgstr "パスをコピーã™ã‚‹"
+msgid "New Folder.."
+msgstr "フォルダを作æˆã™ã‚‹"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Rename or Move.."
-msgstr "åå‰ã‚’変ãˆã‚‹ã‹ç§»å‹•ã—ã¦ãã ã•ã„.."
+msgid "Show In File Manager"
+msgstr "ファイルマãƒãƒ¼ã‚¸ãƒ£ãƒ¼ã§è¡¨ç¤º"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Move To.."
-msgstr "~ã¸ç§»å‹•ã™ã‚‹.."
+msgid "Instance"
+msgstr "インスタンス"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Info"
-msgstr "インフォーメーション"
+msgid "Edit Dependencies.."
+msgstr "ä¾å­˜é–¢ä¿‚を編集.."
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Re-Import.."
-msgstr "å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ.."
+msgid "View Owners.."
+msgstr "オーナーを見る.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -3030,6 +2906,11 @@ msgstr ""
msgid "Move"
msgstr "移動"
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr "åå‰ã‚’変更ã™ã‚‹"
+
#: editor/groups_editor.cpp
#, fuzzy
msgid "Add to Group"
@@ -3046,6 +2927,11 @@ msgid "Import as Single Scene"
msgstr "シーンをインãƒãƒ¼ãƒˆä¸­.."
#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Animations"
+msgstr "アニメーションをインãƒãƒ¼ãƒˆ.."
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -3058,6 +2944,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
#, fuzzy
msgid "Import as Multiple Scenes"
msgstr "3Dシーンをインãƒãƒ¼ãƒˆ"
@@ -3067,45 +2965,38 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
#, fuzzy
msgid "Import Scene"
msgstr "シーンをインãƒãƒ¼ãƒˆ"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#, fuzzy
msgid "Importing Scene.."
msgstr "シーンをインãƒãƒ¼ãƒˆä¸­.."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#, fuzzy
msgid "Running Custom Script.."
msgstr "カスタムスクリプトを実行中"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#, fuzzy
msgid "Couldn't load post-import script:"
msgstr "æ—¢ã«ã‚¤ãƒ³ãƒãƒ¼ãƒˆã—ãŸã‚¹ã‚¯ãƒªãƒ—トを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#, fuzzy
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
"無効ãª/壊れãŸã‚¤ãƒ³ãƒãƒ¼ãƒˆæ¸ˆã¿ã®ã‚¹ã‚¯ãƒªãƒ—ト(コンソールをãƒã‚§ãƒƒã‚¯ã—ã¦ãã ã•ã„)"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#, fuzzy
msgid "Error running post-import script:"
msgstr "インãƒãƒ¼ãƒˆæ¸ˆã¿ã®ã‚¹ã‚¯ãƒªãƒ—ト実行エラー"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#, fuzzy
msgid "Saving.."
msgstr "ä¿å­˜ä¸­.."
@@ -3137,686 +3028,59 @@ msgstr "åˆæœŸè¨­å®šå€¤.."
msgid "Reimport"
msgstr "å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#, fuzzy
-msgid "No bit masks to import!"
-msgstr "インãƒãƒ¼ãƒˆã™ã‚‹ãƒ“ットマスクãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Target path is empty."
-msgstr "ターゲットã®ãƒ‘スã«ä½•ã‚‚ã‚りã¾ã›ã‚“"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Target path must be a complete resource path."
-msgstr "ターゲットã®ãƒ‘スã¯ãƒªã‚½ãƒ¼ã‚¹ã®å®Œå…¨ãªãƒ‘スã§ãªã‘れã°ã„ã‘ã¾ã›ã‚“."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Target path must exist."
-msgstr "ターゲットã®ãƒ‘スãŒå­˜åœ¨ã—ã¾ã›ã‚“"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#, fuzzy
-msgid "Save path is empty!"
-msgstr "ä¿å­˜ã™ã‚‹ãƒ‘スãŒã‚りã¾ã›ã‚“!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#, fuzzy
-msgid "Import BitMasks"
-msgstr "ビットマスクをインãƒãƒ¼ãƒˆ"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Source Texture(s):"
-msgstr "ソースã®ãƒ†ã‚¯ã‚¹ãƒãƒ£:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
-msgid "Target Path:"
-msgstr "ターゲットã®ãƒ‘ス:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
-msgid "Accept"
-msgstr "å—å–OK"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr "ビットマスク"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
-msgid "No source font file!"
-msgstr "ソースã®ãƒ•ォントファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
-msgid "No target font resource!"
-msgstr "ターゲットã®ãƒ•ォントリソースãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-"ファイル拡張å­ãŒä¸æ­£ã§ã™.\n"
-" .fontを使ã£ã¦ãã ã•ã„."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
-msgid "Can't load/process source font."
-msgstr "ソースã®ãƒ•ォントを読ã¿è¾¼ã¿/処ç†ã§ãã¾ã›ã‚“."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
-msgid "Couldn't save font."
-msgstr "フォントをä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
-msgid "Source Font:"
-msgstr "ソース フォント:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
-msgid "Source Font Size:"
-msgstr "ソース フォントサイズ:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
-msgid "Dest Resource:"
-msgstr "é€ã‚Šå…ˆã®ãƒªã‚½ãƒ¼ã‚¹:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr "ã„ã‚ã¯ã«ã»ã¸ã¨ï½ž."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr "テスト:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr "オプション:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
-msgid "Font Import"
-msgstr "フォントã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-"ã“ã®ãƒ•ァイルã¯ã‚‚ã†Godotã®ãƒ•ォントファイルã§ã™. BMFont type ã®ãƒ•ァイルを代ã‚り"
-"ã«åˆ©ç”¨ã—ã¦ãã ã•ã„."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
-msgid "Failed opening as BMFont file."
-msgstr "BMFont ファイルを開ã‘ã¾ã›ã‚“ã§ã—ãŸ"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr "FreeType ã®åˆæœŸåŒ–エラー。"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "䏿˜Žãªãƒ•ォント形å¼ã§ã™ã€‚"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "フォント読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼ã€‚"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr "無効ãªãƒ•ォント サイズã§ã™ã€‚"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
-msgid "Invalid font custom source."
-msgstr "䏿­£ãªãƒ•ォントカスタムソース"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "フォント"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#, fuzzy
-msgid "No meshes to import!"
-msgstr "インãƒãƒ¼ãƒˆã™ã‚‹ãƒ¡ãƒƒã‚·ãƒ¥ãŒã‚りã¾ã›ã‚“"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#, fuzzy
-msgid "Single Mesh Import"
-msgstr "シングルメッシュをインãƒãƒ¼ãƒˆ"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#, fuzzy
-msgid "Source Mesh(es):"
-msgstr "ソース メッシュ:"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr "メッシュ"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#, fuzzy
-msgid "Surface %d"
-msgstr "サーフェース %d"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#, fuzzy
-msgid "No samples to import!"
-msgstr "インãƒãƒ¼ãƒˆã™ã‚‹ã‚µãƒ³ãƒ—ルãŒã‚りã¾ã›ã‚“!"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#, fuzzy
-msgid "Import Audio Samples"
-msgstr "オーディオサンプルをインãƒãƒ¼ãƒˆ"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#, fuzzy
-msgid "Source Sample(s):"
-msgstr "ソースã®ã‚µãƒ³ãƒ—ル:"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr "オーディオサンプル"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "New Clip"
-msgstr "æ–°ã—ã„クリップ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr "アニメーションã®ã‚ªãƒ—ション"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Flags"
-msgstr "フラグ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Bake FPS:"
-msgstr "FPSを焼ãè¾¼ã¿(ベイク):"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr "オプティマイザ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Max Linear Error"
-msgstr "最大ä½ç½®ã‚¨ãƒ©ãƒ¼"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Max Angular Error"
-msgstr "最大角度エラー"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Max Angle"
-msgstr "最大角度"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr "クリップ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr "é–‹å§‹"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr "終了"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr "ループ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr "フィルター"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Source path is empty."
-msgstr "ソースã®ãƒ‘スã¯ç©ºã§ã™"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Couldn't load post-import script."
-msgstr "インãƒãƒ¼ãƒˆæ¸ˆã¿ã®ã‚¹ã‚¯ãƒªãƒ—トを読ã¿è¾¼ã¿ã¾ã›ã‚“ã§ã—ãŸ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Invalid/broken script for post-import."
-msgstr "インãƒãƒ¼ãƒˆæ¸ˆã¿ã®ã‚¹ã‚¯ãƒªãƒ—トã¯ä¸æ­£ãª/壊れãŸã‚¹ã‚¯ãƒªãƒ—トã§ã™"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Error importing scene."
-msgstr "シーン インãƒãƒ¼ãƒˆã®ã‚¨ãƒ©ãƒ¼"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Import 3D Scene"
-msgstr "3Dシーンをインãƒãƒ¼ãƒˆ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr "ソース シーン:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Same as Target Scene"
-msgstr "ターゲットシーンã¨åŒã˜"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr "共有ã•れã¦ã„ã‚‹"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Target Texture Folder:"
-msgstr "ターゲットテクスãƒãƒ£ã®ãƒ•ォルダ:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Post-Process Script:"
-msgstr "後処ç†ã‚¹ã‚¯ãƒªãƒ—ト:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Custom Root Node Type:"
-msgstr "ルートノードã®ã‚«ã‚¹ã‚¿ãƒ ã‚¿ã‚¤ãƒ—:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr "自動"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Root Node Name:"
-msgstr "ルートノードã®åå‰:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "The Following Files are Missing:"
-msgstr "以下ã®ãƒ•ァイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Import Anyway"
-msgstr "ã¨ã‚Šã‚ãˆãšã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "キャンセル"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Import & Open"
-msgstr "インãƒãƒ¼ãƒˆã—ã¦é–‹ã"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-"編集ã—ãŸã‚·ãƒ¼ãƒ³ã¯ä¿å­˜ã•れã¦ã„ã¾ã›ã‚“ãŒã€ãれã§ã‚‚インãƒãƒ¼ãƒˆã—ãŸã‚·ãƒ¼ãƒ³ã‚’é–‹ãã¾ã™"
-"ã‹ï¼Ÿ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Import Image:"
-msgstr "イメージをインãƒãƒ¼ãƒˆ:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Can't import a file over itself:"
-msgstr "åŒã˜ãƒ•ァイルã«ã‚¤ãƒ³ãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Couldn't localize path: %s (already local)"
-msgstr "パスをローカライズã§ãã¾ã›ã‚“: %s (ã™ã§ã«ãƒ­ãƒ¼ã‚«ãƒ«)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "3D Scene Animation"
-msgstr "3Dシーンアニメーション"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr "éžåœ§ç¸®"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Compress Lossless (PNG)"
-msgstr "ロスレス圧縮(PNG)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Compress Lossy (WebP)"
-msgstr "éžå¯é€†åœ§ç¸®(WebP)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Compress (VRAM)"
-msgstr "圧縮 (VRAM)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr "テクスãƒãƒ£ãƒ•ォーマット"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Texture Compression Quality (WebP):"
-msgstr "テクスãƒãƒ£åœ§ç¸®å“質 (WebP):"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Texture Options"
-msgstr "テクスãƒãƒ£ã€€ã‚ªãƒ—ション"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Please specify some files!"
-msgstr "ãªã«ã‹ãƒ•ァイルを指定ã—ã¦ãã ã•ã„!"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "At least one file needed for Atlas."
-msgstr "ã‚¢ãƒˆãƒ©ã‚¹ã«æœ€ä½Žä¸€ã¤ã®ãƒ•ァイルを指定ã—ã¦ãã ã•ã„"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Error importing:"
-msgstr "エラーをインãƒãƒ¼ãƒˆä¸­:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Only one file is required for large texture."
-msgstr "大ããªãƒ†ã‚¯ã‚¹ãƒãƒ£ã®ãŸã‚ã«ä¸€ã¤ãƒ•ァイルãŒå¿…è¦ã§ã™"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Max Texture Size:"
-msgstr "最大テクスãƒãƒ£ã‚µã‚¤ã‚º:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Import Textures for Atlas (2D)"
-msgstr "アトラスã®ãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’インãƒãƒ¼ãƒˆ (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Cell Size:"
-msgstr "セルサイズ:"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
+msgstr "複数ノード セット"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Large Texture"
-msgstr "大ããªãƒ†ã‚¯ã‚¹ãƒãƒ£"
+#: editor/node_dock.cpp
+msgid "Groups"
+msgstr "グループ"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/node_dock.cpp
#, fuzzy
-msgid "Import Large Textures (2D)"
-msgstr "大ããªãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’インãƒãƒ¼ãƒˆ (2D)"
+msgid "Select a Node to edit Signals and Groups."
+msgstr "シグナルã¨ã‚°ãƒ«ãƒ¼ãƒ—を編集ã™ã‚‹ãŸã‚ãƒŽãƒ¼ãƒ‰ã‚’é¸æŠž"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Source Texture"
-msgstr "ソーステクスãƒãƒ£"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
+msgstr "ãƒãƒªã‚´ãƒ³ã‚’生æˆ"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Base Atlas Texture"
-msgstr "基本アトラステクスãƒãƒ£"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "ãƒãƒªã‚´ãƒ³ã‚’編集"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
#, fuzzy
-msgid "Source Texture(s)"
-msgstr "ソース テクスãƒãƒ£"
+msgid "Insert Point"
+msgstr "挿入"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#, fuzzy
-msgid "Import Textures for 2D"
-msgstr "2Dテクスãƒãƒ£ã‚’インãƒãƒ¼ãƒˆ"
+msgid "Edit Poly (Remove Point)"
+msgstr "ãƒãƒªã‚´ãƒ³ã‚’編集(ãƒã‚¤ãƒ³ãƒˆï¼ç‚¹ã‚’除去)"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Import Textures for 3D"
-msgstr "3Dテクスãƒãƒ£ã‚’インãƒãƒ¼ãƒˆ"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
+msgstr "ãƒãƒªã‚´ãƒ³ã¨ãƒã‚¤ãƒ³ãƒˆã‚’除去"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#, fuzzy
-msgid "Import Textures"
-msgstr "テクスãƒãƒ£ã‚’インãƒãƒ¼ãƒˆ"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
-msgstr "2Dテクスãƒãƒ£"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
-msgstr "3Dテクスãƒãƒ£"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
-msgstr "アトラステクスãƒãƒ£"
+msgid "Create a new polygon from scratch."
+msgstr "æ–°è¦ã«ãƒãƒªã‚´ãƒ³ã‚’生æˆã™ã‚‹"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
-"注æ„:2Dテクスãƒãƒ£ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã¯å¿…é ˆã§ã¯ã‚りã¾ã›ã‚“. png/jpgファイルをプロジェ"
-"クトã«ã‚³ãƒ”ーã—ã¦ãã ã•ã„."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Crop empty space."
-msgstr "空白を刈り込む"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr "テクスãƒãƒ£"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Import Large Texture"
-msgstr "大ããªãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’インãƒãƒ¼ãƒˆ"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Load Source Image"
-msgstr "ソースイメージを読ã¿è¾¼ã‚€"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr "スライシング"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr "挿入"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr "ä¿å­˜ä¸­"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr "大ããªãƒ†ã‚¯ã‚¹ãƒãƒ£ãŒä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Build Atlas For:"
-msgstr "~ã®ã‚¢ãƒˆãƒ©ã‚¹ã‚’ビルド:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Loading Image:"
-msgstr "イメージを読ã¿è¾¼ã¿ä¸­:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Couldn't load image:"
-msgstr "イメージを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Converting Images"
-msgstr "イメージを変æ›ä¸­"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Cropping Images"
-msgstr "イメージをクロッピング(トリミング)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Blitting Images"
-msgstr "イメージをé…ç½®(Blit)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Couldn't save atlas image:"
-msgstr "アトラスイメージをä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Couldn't save converted texture:"
-msgstr "変æ›ã—ãŸãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’ä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
-msgid "Invalid source!"
-msgstr "䏿­£ãªã‚½ãƒ¼ã‚¹!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr "䏿­£ãªç¿»è¨³ã‚½ãƒ¼ã‚¹!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
-msgid "Column"
-msgstr "カラム"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-#, fuzzy
-msgid "Language"
-msgstr "言語"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
-msgid "No items to import!"
-msgstr "インãƒãƒ¼ãƒˆã™ã‚‹ã‚‚ã®ãŒã‚りã¾ã›ã‚“!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
-msgid "No target path!"
-msgstr "ターゲットã®ãƒ‘スãŒã‚りã¾ã›ã‚“!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
-msgid "Import Translations"
-msgstr "翻訳をインãƒãƒ¼ãƒˆ"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
-msgid "Couldn't import!"
-msgstr "インãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸ!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
-msgid "Import Translation"
-msgstr "翻訳をインãƒãƒ¼ãƒˆ"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
-msgid "Source CSV:"
-msgstr "ソースCSVファイル:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
-msgid "Ignore First Row"
-msgstr "最åˆã®è¡Œã‚’無視"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr "圧縮"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
-msgid "Add to Project (project.godot)"
-msgstr "プロジェクトã«è¿½åŠ  (project.godot)"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
-msgid "Import Languages:"
-msgstr "言語をインãƒãƒ¼ãƒˆ:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr "翻訳"
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr "複数ノード セット"
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr "グループ"
-
-#: editor/node_dock.cpp
-#, fuzzy
-msgid "Select a Node to edit Signals and Groups."
-msgstr "シグナルã¨ã‚°ãƒ«ãƒ¼ãƒ—を編集ã™ã‚‹ãŸã‚ãƒŽãƒ¼ãƒ‰ã‚’é¸æŠž"
#: editor/plugins/animation_player_editor_plugin.cpp
#, fuzzy
@@ -4003,7 +3267,6 @@ msgstr "アニメーションã®åå‰:"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -4132,10 +3395,6 @@ msgid "Delete Input"
msgstr "入力を消去"
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr "åå‰ã‚’変更ã™ã‚‹"
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
#, fuzzy
msgid "Animation tree is valid."
msgstr "アニメーションツリーã¯å•題ã‚りã¾ã›ã‚“."
@@ -4199,76 +3458,221 @@ msgstr "ノードフィルターã®ç·¨é›†"
msgid "Filters.."
msgstr "フィルター.."
-#: editor/plugins/baked_light_baker.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
-msgid "Parsing %d Triangles:"
-msgstr "%d 三角形をパース中ã§ã™:"
+msgid "Free"
+msgstr "解放"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
-msgstr "三角形 #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Contents:"
+msgstr "コンテンツ:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
+msgstr "ビューファイル:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
+msgstr "ホストåを解決ã§ãã¾ã›ã‚“:"
-#: editor/plugins/baked_light_baker.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
-msgid "Light Baker Setup:"
-msgstr "ライティング(照明)ベイク設定:"
+msgid "Can't resolve."
+msgstr "解決ã§ãã¾ã›ã‚“."
-#: editor/plugins/baked_light_baker.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
-msgid "Parsing Geometry"
-msgstr "ジオメトリーをパース"
+msgid "Connection error, please try again."
+msgstr "接続失敗 å†è©¦è¡Œã‚’"
-#: editor/plugins/baked_light_baker.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
-msgid "Fixing Lights"
-msgstr "照明(ライティング)ã®ä¿®å¾©"
+msgid "Can't connect."
+msgstr "接続失敗."
-#: editor/plugins/baked_light_baker.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
-msgid "Making BVH"
-msgstr "BVHデータを生æˆ"
+msgid "Can't connect to host:"
+msgstr "ãƒ›ã‚¹ãƒˆã«æŽ¥ç¶šã§ãã¾ã›ã‚“:"
-#: editor/plugins/baked_light_baker.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
-msgid "Creating Light Octree"
-msgstr "照明ã®å…«åˆ†æœ¨ã‚’生æˆ"
+msgid "No response from host:"
+msgstr "ホストã‹ã‚‰å¿œç­”ãŒã‚りã¾ã›ã‚“:"
-#: editor/plugins/baked_light_baker.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
-msgid "Creating Octree Texture"
-msgstr "八分木テクスãƒãƒ£ã‚’生æˆ"
+msgid "No response."
+msgstr "応答ãŒã‚りã¾ã›ã‚“."
-#: editor/plugins/baked_light_baker.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
-msgid "Transfer to Lightmaps:"
-msgstr "ライトマップã¸ã®è»¢å†™:"
+msgid "Request failed, return code:"
+msgstr "リクエスト失敗 リターン コード:"
-#: editor/plugins/baked_light_baker.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
-msgid "Allocating Texture #"
-msgstr "テクスãƒãƒ£ã‚’(メモリ上ã§ï¼‰ç¢ºä¿#"
+msgid "Req. Failed."
+msgstr "リクエスト失敗."
-#: editor/plugins/baked_light_baker.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
-msgid "Baking Triangle #"
-msgstr "三角形をベイク#"
+msgid "Request failed, too many redirects"
+msgstr "リクエスト失敗 リダイレクトã®å›žæ•°ãŒå¤šã™ãŽã¾ã™"
-#: editor/plugins/baked_light_baker.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
-msgid "Post-Processing Texture #"
-msgstr "後処ç†ã®ãƒ†ã‚¯ã‚¹ãƒãƒ£#"
+msgid "Redirect Loop."
+msgstr "リダイレクトã®ãƒ«ãƒ¼ãƒ—."
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
-msgstr "ベイク!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Failed:"
+msgstr "失敗:"
-#: editor/plugins/baked_light_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
#, fuzzy
-msgid "Reset the lightmap octree baking process (start over)."
-msgstr "ライトマップ八分木ベイクã®ãƒ—ロセスをリセット(やり直ã—)."
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr "ダウンロード内容ã®ãƒãƒƒã‚·ãƒ¥ãŒä¸æ•´åˆã€€æ”¹ã–ã‚“ã®å¯èƒ½æ€§ãŒã‚りã¾ã™."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Expected:"
+msgstr "予測:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Got:"
+msgstr "å–å¾—:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Failed sha256 hash check"
+msgstr "sha256ã®ãƒãƒƒã‚·ãƒ¥ãƒã‚§ãƒƒã‚¯å¤±æ•—"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Asset Download Error:"
+msgstr "アセットã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰å¤±æ•—:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Fetching:"
+msgstr "å–得中:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Resolving.."
+msgstr "解決中.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Connecting.."
+msgstr "接続中.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Requesting.."
+msgstr "リクエスト中.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Error making request"
+msgstr "リクエスト発行エラー"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Idle"
+msgstr "待機中"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Retry"
+msgstr "å†è©¦è¡Œ"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Download Error"
+msgstr "ダウンロード失敗"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Download for this asset is already in progress!"
+msgstr "ã“ã®ã‚¢ã‚»ãƒƒãƒˆã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã¯æ—¢ã«é€²è¡Œä¸­ï¼"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "first"
+msgstr "最åˆã®"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "prev"
+msgstr "å‰ã®"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "next"
+msgstr "次ã®"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "last"
+msgstr "最後ã®"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "ã™ã¹ã¦ã®"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Plugins"
+msgstr "プラグイン"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Sort:"
+msgstr "ä¸¦ã¹æ›¿ãˆ:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Reverse"
+msgstr "逆"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Category:"
+msgstr "カテゴリー:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Site:"
+msgstr "サイト:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Support.."
+msgstr "サãƒãƒ¼ãƒˆ.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Official"
+msgstr "å…¬å¼"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Testing"
+msgstr "テスト中"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Assets ZIP File"
+msgstr "アセットã®zipファイル"
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr "プレビュー"
@@ -4321,12 +3725,18 @@ msgstr "キャンãƒã‚¹ã‚¢ã‚¤ãƒ†ãƒ ã®ç·¨é›†"
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
-msgid "Change Anchors"
+msgid "Anchors only"
+msgstr "アンカー"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Change Anchors and Margins"
msgstr "アンカーを変更ã™ã‚‹"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
-msgstr "ズーム (%):"
+#, fuzzy
+msgid "Change Anchors"
+msgstr "アンカーを変更ã™ã‚‹"
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
@@ -4389,69 +3799,85 @@ msgstr "パン・モード"
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
-msgid "Lock the selected object in place (can't be moved)."
-msgstr "é¸æŠžã—ãŸã‚ªãƒ–ジェクトをロックã—ã¦ç§»å‹•ä¸èƒ½ã¨ã™ã‚‹."
+msgid "Toggles snapping"
+msgstr "ブレークãƒã‚¤ãƒ³ãƒˆã‚’切替"
#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Unlock the selected object (can be moved)."
-msgstr "é¸æŠžã—ãŸã‚ªãƒ–ジェクトをロック解除ã—ã¦ç§»å‹•å¯èƒ½ã¨ã™ã‚‹."
+msgid "Use Snap"
+msgstr "スナップ機能を使ã†"
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
-msgid "Makes sure the object's children are not selectable."
-msgstr "ã“ã®ã‚ªãƒ–ジェクトã®å­ï¼ˆã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆï¼‰ã‚’é¸æŠžä¸å¯ã¨ã™ã‚‹."
+msgid "Snapping options"
+msgstr "アニメーションã®ã‚ªãƒ—ション"
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
-msgid "Restores the object's children's ability to be selected."
-msgstr "ã“ã®ã‚ªãƒ–ジェクトã®å­ï¼ˆã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆï¼‰ã‚’é¸æŠžå¯èƒ½ã¨ã™ã‚‹."
+msgid "Snap to grid"
+msgstr "Snapモード:"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "編集"
+#, fuzzy
+msgid "Use Rotation Snap"
+msgstr "回転スナップ機能を使ã†"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Use Snap"
-msgstr "スナップ機能を使ã†"
+msgid "Configure Snap..."
+msgstr "スナップ機能ã®è¨­å®š"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
-msgstr "グリッドを表示"
+#, fuzzy
+msgid "Snap Relative"
+msgstr "相対スナップ機能"
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
-msgid "Use Rotation Snap"
-msgstr "回転スナップ機能を使ã†"
+msgid "Use Pixel Snap"
+msgstr "ピクセルå˜ä½ã‚¹ãƒŠãƒƒãƒ—"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Smart snapping"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
-msgid "Snap Relative"
-msgstr "相対スナップ機能"
+msgid "Snap to parent"
+msgstr "親ã¾ã§å±•é–‹ã™ã‚‹"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to node anchor"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
#, fuzzy
-msgid "Configure Snap.."
-msgstr "スナップ機能ã®è¨­å®š"
+msgid "Lock the selected object in place (can't be moved)."
+msgstr "é¸æŠžã—ãŸã‚ªãƒ–ジェクトをロックã—ã¦ç§»å‹•ä¸èƒ½ã¨ã™ã‚‹."
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
-msgid "Use Pixel Snap"
-msgstr "ピクセルå˜ä½ã‚¹ãƒŠãƒƒãƒ—"
+msgid "Unlock the selected object (can be moved)."
+msgstr "é¸æŠžã—ãŸã‚ªãƒ–ジェクトをロック解除ã—ã¦ç§»å‹•å¯èƒ½ã¨ã™ã‚‹."
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
-msgid "Skeleton.."
-msgstr "スケルトン.."
+msgid "Makes sure the object's children are not selectable."
+msgstr "ã“ã®ã‚ªãƒ–ジェクトã®å­ï¼ˆã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆï¼‰ã‚’é¸æŠžä¸å¯ã¨ã™ã‚‹."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Restores the object's children's ability to be selected."
+msgstr "ã“ã®ã‚ªãƒ–ジェクトã®å­ï¼ˆã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆï¼‰ã‚’é¸æŠžå¯èƒ½ã¨ã™ã‚‹."
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
@@ -4485,13 +3911,19 @@ msgid "View"
msgstr "ビュー"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
-msgstr "ズームをリセット"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr "グリッドを表示"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Show helpers"
+msgstr "ボーンを表示ã™ã‚‹"
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
-msgid "Zoom Set.."
-msgstr "ズームをセットã™ã‚‹.."
+msgid "Show rulers"
+msgstr "ボーンを表示ã™ã‚‹"
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
@@ -4505,8 +3937,8 @@ msgstr "é¸æŠžå¯¾è±¡ã‚’ãƒ•ãƒ¬ãƒ¼ãƒ ã®ä¸­å¤®ã«"
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
-msgid "Anchor"
-msgstr "アンカー"
+msgid "Layout"
+msgstr "レイアウトをä¿å­˜"
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
@@ -4532,13 +3964,21 @@ msgid "Clear Pose"
msgstr "ãƒãƒ¼ã‚ºã‚’クリアã™ã‚‹"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
-msgstr "値を設定ã™ã‚‹"
+msgid "Drag pivot from mouse position"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
-msgid "Snap (Pixels):"
-msgstr "スナップ機能(ピクセルå˜ä½ï¼‰:"
+msgid "Set pivot at mouse position"
+msgstr "曲線ã®Out-ãƒãƒ³ãƒ‰ãƒ«ã®ä½ç½®ã‚’指定"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Divide grid step by 2"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
@@ -4550,26 +3990,31 @@ msgstr "%s追加ã™ã‚‹"
msgid "Adding %s..."
msgstr "%s追加中..."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
#, fuzzy
msgid "Create Node"
msgstr "ノードを生æˆ"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
#, fuzzy
msgid "Error instancing scene from %s"
msgstr "%sシーンã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹åŒ–エラー"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr "ãŠãƒ¼ã‘ー :("
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
#, fuzzy
msgid "No parent to instance a child at."
msgstr "å­ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’生æˆã™ã‚‹ãŸã‚ã®è¦ªãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
#, fuzzy
msgid "This operation requires a single selected node."
msgstr "一ã¤ãƒŽãƒ¼ãƒ‰ã‚’指定ã—ãªã„ã¨ã€ã“ã®æ“作ã¯ã§ãã¾ã›ã‚“"
@@ -4587,47 +4032,6 @@ msgstr ""
"ドラッグ&ドロップ + Shift : 兄弟ノードã¨ã—ã¦åŠ ãˆã‚‹ \n"
"ドラッグ&ドロップ + Alt : ノードã®ã‚¿ã‚¤ãƒ—を変更ã™ã‚‹"
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr "ãƒãƒªã‚´ãƒ³ã‚’生æˆ"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr "ãƒãƒªã‚´ãƒ³ã‚’編集"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#, fuzzy
-msgid "Edit Poly (Remove Point)"
-msgstr "ãƒãƒªã‚´ãƒ³ã‚’編集(ãƒã‚¤ãƒ³ãƒˆï¼ç‚¹ã‚’除去)"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#, fuzzy
-msgid "Create a new polygon from scratch."
-msgstr "æ–°è¦ã«ãƒãƒªã‚´ãƒ³ã‚’生æˆã™ã‚‹"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "3Dãƒãƒªã‚´ãƒ³ã‚’生æˆã™ã‚‹"
@@ -4638,15 +4042,6 @@ msgid "Set Handle"
msgstr "ãƒãƒ³ãƒ‰ãƒ«ã‚’設定ã™ã‚‹"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-#, fuzzy
-msgid "Creating Mesh Library"
-msgstr "メッシュライブラリを生æˆ"
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr "サムãƒã‚¤ãƒ«.."
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr "アイテム%dã‚’å–り除ãã¾ã™ã‹ï¼Ÿ"
@@ -4669,6 +4064,28 @@ msgid "Update from Scene"
msgstr "シーンã‹ã‚‰ã‚¢ãƒƒãƒ—デート"
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Ease in"
+msgstr "イージング(Ease In)"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Ease out"
+msgstr "イージング(Ease Out)"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
msgid "Modify Curve Point"
msgstr "カーブを修正ã™ã‚‹"
@@ -4751,23 +4168,19 @@ msgid "Create Occluder Polygon"
msgstr "オクルージョンを生ã˜ã‚‹ãƒãƒªã‚´ãƒ³ã‚’生æˆ"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr "既存ã®ãƒãƒªã‚´ãƒ³ã‚’編集:"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr "マウス左ボタン:ãƒã‚¤ãƒ³ãƒˆï¼ç‚¹ã‚’移動."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#, fuzzy
msgid "Ctrl+LMB: Split Segment."
msgstr "Ctrl+マウス左ボタン: セグメントを分割"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr "マウスå³ãƒœã‚¿ãƒ³:ãƒã‚¤ãƒ³ãƒˆï¼ç‚¹ã‚’除去."
@@ -4881,6 +4294,10 @@ msgid "Create Outline"
msgstr "アウトラインを生æˆ"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr "メッシュ"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
#, fuzzy
msgid "Create Trimesh Static Body"
msgstr "スタティック(ä¸å¤‰ï¼‰ä¸‰è§’形メッシュ ボディを作æˆ"
@@ -5037,14 +4454,83 @@ msgstr "縮尺をランダムã«å¤‰æ›´:"
msgid "Populate"
msgstr "åˆæœŸå€¤ã‚’設定"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr "ベイク!"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+#, fuzzy
+msgid "Bake the navigation mesh.\n"
+msgstr "ナビメッシュ(ナビゲーションメッシュ)ã®ç”Ÿæˆ"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+#, fuzzy
+msgid "Clear the navigation mesh."
+msgstr "ナビメッシュ(ナビゲーションメッシュ)ã®ç”Ÿæˆ"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating heightfield..."
+msgstr "照明ã®å…«åˆ†æœ¨ã‚’生æˆ"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Marking walkable triangles..."
+msgstr "ローカル環境ã®å¤‰æ›´ã‚’ä¿å­˜ã™ã‚‹.."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Partitioning..."
+msgstr "警告"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating contours..."
+msgstr "八分木テクスãƒãƒ£ã‚’生æˆ"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating polymesh..."
+msgstr "アウトラインメッシュを生æˆ.."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Converting to native navigation mesh..."
+msgstr "ナビメッシュ(ナビゲーションメッシュ)ã®ç”Ÿæˆ"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Parsing Geometry..."
+msgstr "ジオメトリーをパース"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
+msgstr ""
+
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Create Navigation Polygon"
msgstr "ナビゲーションãƒãƒªã‚´ãƒ³ã‚’生æˆ"
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
-msgstr "ãƒãƒªã‚´ãƒ³ã¨ãƒã‚¤ãƒ³ãƒˆã‚’除去"
-
#: editor/plugins/particles_2d_editor_plugin.cpp
#, fuzzy
msgid "Clear Emission Mask"
@@ -5331,6 +4817,14 @@ msgid "Scale Polygon"
msgstr "ãƒãƒªã‚´ãƒ³ã®ç¸®å°ºã‚’変更"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "編集"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
#, fuzzy
msgid "Polygon->UV"
msgstr "ãƒãƒªã‚´ãƒ³->UV"
@@ -5393,67 +4887,10 @@ msgstr "リソースを読ã¿è¾¼ã‚€"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "貼り付ã‘"
-#: editor/plugins/rich_text_editor_plugin.cpp
-#, fuzzy
-msgid "Parse BBCode"
-msgstr "BBコードをパースã™ã‚‹"
-
-#: editor/plugins/sample_editor_plugin.cpp
-#, fuzzy
-msgid "Length:"
-msgstr "é•·ã•:"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#, fuzzy
-msgid "Open Sample File(s)"
-msgstr "サンプルファイルを開ã‘ã‚‹"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#, fuzzy
-msgid "ERROR: Couldn't load sample!"
-msgstr "エラー:サンプルを読ã¿è¾¼ã‚ã¾ã›ã‚“!"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr "サンプルを追加"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr "サンプルã®åå‰ã‚’変ãˆã‚‹"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr "サンプルを消去ã™ã‚‹"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr "16ビット"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr "8ビット"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr "ステレオ音声"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr "モノラル音声"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr "フォーマット"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr "ピッãƒ"
-
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Clear Recent Files"
@@ -5552,6 +4989,10 @@ msgstr "é–‰ã˜ã‚‹"
msgid "Close All"
msgstr "é–‰ã˜ã‚‹"
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr "実行"
+
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Toggle Scripts Panel"
@@ -5584,7 +5025,8 @@ msgstr "ステップイン"
msgid "Break"
msgstr "(デãƒãƒƒã‚°ã§ï¼‰ãƒ–レーク"
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr "実行を継続"
@@ -5598,20 +5040,6 @@ msgid "Debug with external editor"
msgstr "次ã®ã‚¨ãƒ‡ã‚£ã‚¿ã‚’é–‹ã"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr "ウィンドウ"
-
-#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
-msgid "Move Left"
-msgstr "å·¦ã«ç§»å‹•"
-
-#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
-msgid "Move Right"
-msgstr "å³ã«ç§»å‹•"
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
msgstr "Godotã®ã‚ªãƒ³ãƒ©ã‚¤ãƒ³æ–‡æ›¸ã‚’é–‹ã"
@@ -5700,8 +5128,9 @@ msgid "Cut"
msgstr "切りå–り"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "コピー"
@@ -5989,11 +5418,6 @@ msgid "View Plane Transform."
msgstr "ビュー平é¢ãƒˆãƒ©ãƒ³ã‚¹ãƒ•ォーム."
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
-msgid "Scaling to %s%%."
-msgstr "æ‹¡å¤§ç¸®å°æ¯”率%s%%."
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr "%s 度回転."
@@ -6010,10 +5434,6 @@ msgid "Top View."
msgstr "上é¢å›³."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr "上é¢"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr "後é¢å›³."
@@ -6258,6 +5678,11 @@ msgid "Transform"
msgstr "トランスフォーム"
#: editor/plugins/spatial_editor_plugin.cpp
+#, fuzzy
+msgid "Configure Snap.."
+msgstr "スナップ機能ã®è¨­å®š"
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr "ローカル座標系"
@@ -6414,6 +5839,10 @@ msgid "Speed (FPS):"
msgstr "速度(FPS):"
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr "ループ"
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr "アニメーションã®ãƒ•レーム"
@@ -6426,12 +5855,14 @@ msgid "Insert Empty (After)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr "上"
+#, fuzzy
+msgid "Move (Before)"
+msgstr "ノードを除去"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
-msgstr "下"
+#, fuzzy
+msgid "Move (After)"
+msgstr "å·¦ã«ç§»å‹•"
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
@@ -6512,8 +5943,12 @@ msgid "Remove All"
msgstr "削除"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
-msgstr "テーマ"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Class Items"
@@ -6601,6 +6036,10 @@ msgid "Style"
msgstr "スタイル"
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr "フォント"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr "色"
@@ -6653,7 +6092,7 @@ msgid "Mirror Y"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
+msgid "Paint Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -6724,6 +6163,12 @@ msgid "Delete preset '%s'?"
msgstr "åˆæœŸè¨­å®šå€¤ '%s'?を削除ã—ã¾ã™ã‹ï¼Ÿ"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+"ã“ã®ãƒ—ラットフォームã«å‘ã‘ã¦ã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã®ãƒ†ãƒ³ãƒ—レートãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“:"
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr "åˆæœŸè¨­å®šå€¤"
@@ -6808,35 +6253,63 @@ msgstr ""
"ã“ã®ãƒ—ラットフォームã«å‘ã‘ã¦ã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã®ãƒ†ãƒ³ãƒ—レートãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+"ã“ã®ãƒ—ラットフォームã«å‘ã‘ã¦ã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã®ãƒ†ãƒ³ãƒ—レートãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“:"
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr "デãƒãƒƒã‚°ä»˜ãエクスãƒãƒ¼ãƒˆ"
#: editor/project_manager.cpp
#, fuzzy
-msgid "Invalid project path, the path must exist!"
-msgstr "パスãŒä¸æ­£ã§ã™.パスãŒå­˜åœ¨ã—ãªã„ã¨ã„ã‘ã¾ã›ã‚“."
+msgid "The path does not exist."
+msgstr "ファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“."
#: editor/project_manager.cpp
-#, fuzzy
-msgid "Invalid project path, project.godot must not exist."
-msgstr "プロジェクトã®ãƒ‘スãŒä¸æ­£ã§ã™.project.godotã¯å­˜åœ¨ã—ã¾ã›ã‚“."
+msgid "Please choose a 'project.godot' file."
+msgstr ""
#: editor/project_manager.cpp
-#, fuzzy
-msgid "Invalid project path, project.godot must exist."
-msgstr "プロジェクトã®ãƒ‘スãŒä¸æ­£ã§ã™.project.godotã¯å­˜åœ¨ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚"
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose a folder that does not contain a 'project.godot' file."
+msgstr ""
#: editor/project_manager.cpp
msgid "Imported Project"
msgstr "インãƒãƒ¼ãƒˆã•れãŸãƒ—ロジェクト"
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
#, fuzzy
msgid "Invalid project path (changed anything?)."
msgstr "䏿­£ãªãƒ—ロジェクトã®ãƒ‘ス(何ã‹å¤‰ãˆã¾ã—ãŸã‹ï¼Ÿï¼‰"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Couldn't get project.godot in project path."
+msgstr "project.godotをプロジェクトパスã«ç”Ÿæˆã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't edit project.godot in project path."
+msgstr "project.godotをプロジェクトパスã«ç”Ÿæˆã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Couldn't create project.godot in project path."
msgstr "project.godotをプロジェクトパスã«ç”Ÿæˆã§ãã¾ã›ã‚“ã§ã—ãŸ"
@@ -6846,13 +6319,30 @@ msgid "The following files failed extraction from package:"
msgstr "以下ã®ãƒ•ァイルをパッケージã‹ã‚‰æŠ½å‡ºã§ãã¾ã›ã‚“ã§ã—ãŸ:"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Rename Project"
+msgstr "åç„¡ã—ã®ãƒ—ロジェクト"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't get project.godot in the project path."
+msgstr "project.godotをプロジェクトパスã«ç”Ÿæˆã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#: editor/project_manager.cpp
+msgid "New Game Project"
+msgstr "æ–°ã—ã„ゲームプロジェクト"
+
+#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "既存ã®ãƒ—ロジェクトをインãƒãƒ¼ãƒˆ"
#: editor/project_manager.cpp
-#, fuzzy
-msgid "Project Path (Must Exist):"
-msgstr "プロジェクトパス(存在ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼‰"
+msgid "Create New Project"
+msgstr "æ–°ã—ã„プロジェクトを作る"
+
+#: editor/project_manager.cpp
+msgid "Install Project:"
+msgstr "プロジェクトをインストール:"
#: editor/project_manager.cpp
#, fuzzy
@@ -6860,26 +6350,19 @@ msgid "Project Name:"
msgstr "プロジェクトå:"
#: editor/project_manager.cpp
-msgid "Create New Project"
-msgstr "æ–°ã—ã„プロジェクトを作る"
+#, fuzzy
+msgid "Create folder"
+msgstr "フォルダを作æˆã™ã‚‹"
#: editor/project_manager.cpp
msgid "Project Path:"
msgstr "プロジェクトパス:"
#: editor/project_manager.cpp
-msgid "Install Project:"
-msgstr "プロジェクトをインストール:"
-
-#: editor/project_manager.cpp
msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
-msgid "New Game Project"
-msgstr "æ–°ã—ã„ゲームプロジェクト"
-
-#: editor/project_manager.cpp
msgid "That's a BINGO!"
msgstr "当ãŸã‚Š!"
@@ -6888,6 +6371,11 @@ msgid "Unnamed Project"
msgstr "åç„¡ã—ã®ãƒ—ロジェクト"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't open project"
+msgstr "接続失敗."
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr "複数ã®ãƒ—ロジェクトを本当ã«é–‹ã‘ã¾ã™ã‹ï¼Ÿ"
@@ -6921,6 +6409,12 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
"You are about the scan %s folders for existing Godot projects. Do you "
"confirm?"
msgstr ""
@@ -6930,10 +6424,6 @@ msgid "Project List"
msgstr "プロジェクトã®ãƒªã‚¹ãƒˆ"
#: editor/project_manager.cpp
-msgid "Run"
-msgstr "実行"
-
-#: editor/project_manager.cpp
msgid "Scan"
msgstr "スキャン"
@@ -6956,6 +6446,11 @@ msgstr "終了"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Restart Now"
+msgstr "アニメーションを最åˆã‹ã‚‰å†ç”Ÿã™ã‚‹ :"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Can't run project"
msgstr "接続失敗."
@@ -6996,17 +6491,14 @@ msgid "Add Input Action Event"
msgstr "入力アクションイベントを追加"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
@@ -7072,7 +6564,7 @@ msgstr "変更"
msgid "Joypad Axis Index:"
msgstr "ジョイパッド軸ã®Index:"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "アナログ"
@@ -7095,32 +6587,32 @@ msgstr "入力アクションイベントを消去"
msgid "Add Event"
msgstr "イベントを追加"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "デãƒã‚¤ã‚¹"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "ボタン"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "左クリック"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "å³ã‚¯ãƒªãƒƒã‚¯"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "中クリック"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Wheel Up."
msgstr "マウスホイールを上ã¸."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr "マウスホイールを下."
@@ -7130,7 +6622,7 @@ msgid "Add Global Property"
msgstr "プロパティã«getter(get method)を作る"
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -7150,6 +6642,16 @@ msgstr "入力を消去"
#: editor/project_settings_editor.cpp
#, fuzzy
+msgid "Can't contain '/' or ':'"
+msgstr "ãƒ›ã‚¹ãƒˆã«æŽ¥ç¶šã§ãã¾ã›ã‚“:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Already existing"
+msgstr "アクション'%s'ã¯æ—¢ã«ã‚りã¾ã™!"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Error saving settings."
msgstr "設定をä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ."
@@ -7196,6 +6698,15 @@ msgstr "リソースã®ãƒªãƒžãƒƒãƒ—オプションを除去"
#: editor/project_settings_editor.cpp
#, fuzzy
+msgid "Changed Locale Filter"
+msgstr "ブレンドã™ã‚‹æ™‚間を変更"
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Project Settings (project.godot)"
msgstr "プロジェクト設定 (project.godot)"
@@ -7258,6 +6769,30 @@ msgid "Locale"
msgstr "ロケール"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales Filter"
+msgstr "ロケール"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Show all locales"
+msgstr "ボーンを表示ã™ã‚‹"
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "フィルター"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales:"
+msgstr "ロケール"
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "自動読ã¿è¾¼ã¿"
@@ -7309,11 +6844,21 @@ msgid "New Script"
msgstr "æ–°è¦ã‚¹ã‚¯ãƒªãƒ—ト"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Make Unique"
+msgstr "ボーンを生æˆ"
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr ""
#: editor/property_editor.cpp
#, fuzzy
+msgid "Convert To %s"
+msgstr "~ã«å¤‰æ›ã™ã‚‹.."
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "Error loading file: Not a resource!"
msgstr "ファイル読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼:リソースã§ã¯ã‚りã¾ã›ã‚“!"
@@ -7356,6 +6901,11 @@ msgstr "ã™ã¹ã¦é¸æŠž"
#: editor/property_selector.cpp
#, fuzzy
+msgid "Select Virtual Method"
+msgstr "ã™ã¹ã¦é¸æŠž"
+
+#: editor/property_selector.cpp
+#, fuzzy
msgid "Select Method"
msgstr "ã™ã¹ã¦é¸æŠž"
@@ -7383,27 +6933,6 @@ msgstr ""
msgid "Reparent"
msgstr ""
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr "æ–°ã—ã„リソースを生æˆ"
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr "リソースを開ã‘ã‚‹"
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr "リソースをä¿å­˜"
-
-#: editor/resources_dock.cpp
-#, fuzzy
-msgid "Resource Tools"
-msgstr "リソースã®ãƒ„ール"
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr ""
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr ""
@@ -7552,14 +7081,6 @@ msgid "Sub-Resources:"
msgstr "サブリソース:"
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr "グループを編集"
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr "コãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’編集"
-
-#: editor/scene_tree_dock.cpp
#, fuzzy
msgid "Clear Inheritance"
msgstr "継承をクリアã™ã‚‹"
@@ -7778,6 +7299,15 @@ msgid "Invalid base path"
msgstr "䏿­£ãªãƒ™ãƒ¼ã‚¹ï¼ˆbase)パス"
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "File exists, will be reused"
+msgstr "ãƒ•ã‚¡ã‚¤ãƒ«ãŒæ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚上書ãã—ã¾ã™ã‹ï¼Ÿ"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr ""
@@ -7822,6 +7352,11 @@ msgid "Load existing script file"
msgstr "既存ã®ã‚¹ã‚¯ãƒªãƒ—トファイルを読ã¿è¾¼ã‚€"
#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "Language"
+msgstr "言語"
+
+#: editor/script_create_dialog.cpp
msgid "Inherits"
msgstr "継承"
@@ -7864,6 +7399,10 @@ msgid "Function:"
msgstr "関数:"
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr "エラー"
@@ -7947,6 +7486,10 @@ msgid "Type"
msgstr "タイプ(型)"
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr "フォーマット"
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr "使用"
@@ -8027,13 +7570,31 @@ msgstr "パーティクルã®è»¸å¹³è¡Œå¢ƒç•Œãƒœãƒƒã‚¯ã‚¹ã‚’変更"
msgid "Change Probe Extents"
msgstr ""
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Library"
+msgstr "メッシュライブラリ.."
+
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Status"
+msgstr "ステータス:"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
#, fuzzy
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr "Convert()ã«å¯¾ã—ã¦ç„¡åйãªåž‹ã®å¼•æ•°ã§ã™ã€‚TYPE_* 定数を使ã£ã¦ãã ã•ã„。"
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
#, fuzzy
msgid "Not enough bytes for decoding bytes, or invalid format."
@@ -8090,10 +7651,6 @@ msgid "GridMap Duplicate Selection"
msgstr "é¸æŠžç¯„å›²ã‚’è¤‡è£½"
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Snap View"
msgstr "上é¢å›³"
@@ -8197,13 +7754,8 @@ msgstr "Snapã®è¨­å®š"
msgid "Pick Distance:"
msgstr "インスタンス:"
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr "ファイル:"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -8439,10 +7991,19 @@ msgstr "戻り値"
#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
+msgid "Call"
+msgstr "呼ã³å‡ºã—"
+
+#: modules/visual_script/visual_script_editor.cpp
+#, fuzzy
msgid "Get"
msgstr "Getメソッド"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Input Value"
msgstr "入力ã®åå‰ã‚’変更"
@@ -8889,6 +8450,12 @@ msgstr ""
"SpriteFrames リソースを作æˆã¾ãŸã¯ AnimatedSprite3D フレームを表示ã™ã‚‹ãŸã‚ã«"
"㯠'Frames' プロパティã«è¨­å®šã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚"
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
#, fuzzy
msgid "Raw Mode"
@@ -8900,6 +8467,10 @@ msgid "Add current color as a preset"
msgstr "ã“ã®è‰²ã‚’åˆæœŸè¨­å®šå€¤ã¨ã—ã¦è¿½åŠ ã™ã‚‹"
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "キャンセル"
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr "警告!"
@@ -8907,10 +8478,6 @@ msgstr "警告!"
msgid "Please Confirm..."
msgstr "確èªã—ã¦ãã ã•ã„。"
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -8953,6 +8520,754 @@ msgstr ""
"ãりã¾ã™ã€‚ãれ以外ã®å ´åˆã€ãƒ¬ãƒ³ãƒ€ãƒ¼ ターゲットã—ã€ãã®å†…部ã®ãƒ†ã‚¯ã‚¹ãƒãƒ£è¡¨ç¤ºã®ã„"
"ãã¤ã‹ã®ãƒŽãƒ¼ãƒ‰ã«å‰²ã‚Šå½“ã¦ã¾ã™ã€‚"
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr "FreeType ã®åˆæœŸåŒ–エラー。"
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "䏿˜Žãªãƒ•ォント形å¼ã§ã™ã€‚"
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "フォント読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼ã€‚"
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr "無効ãªãƒ•ォント サイズã§ã™ã€‚"
+
+#~ msgid "Filter:"
+#~ msgstr "フィルター:"
+
+#~ msgid "Theme"
+#~ msgstr "テーマ"
+
+#, fuzzy
+#~ msgid "Method List For '%s':"
+#~ msgstr "'%s' ã®ãƒ¡ã‚½ãƒƒãƒ‰ä¸€è¦§ï¼š"
+
+#, fuzzy
+#~ msgid "Arguments:"
+#~ msgstr "引数:"
+
+#, fuzzy
+#~ msgid "Return:"
+#~ msgstr "戻り値:"
+
+#, fuzzy
+#~ msgid "Added:"
+#~ msgstr "加ãˆãŸã®ã¯:"
+
+#~ msgid "Removed:"
+#~ msgstr "å–り除ã„ãŸã®ã¯:"
+
+#, fuzzy
+#~ msgid "Error saving atlas:"
+#~ msgstr "アトラスã®ä¿å­˜ã«å¤±æ•—ã—ã¾ã—ãŸ:"
+
+#, fuzzy
+#~ msgid "Could not save atlas subtexture:"
+#~ msgstr "アトラスã®è¦ç´ ã§ã‚るテクスãƒãƒ£ã®ä¿å­˜ãŒã§ãã¾ã›ã‚“:"
+
+#, fuzzy
+#~ msgid "Exporting for %s"
+#~ msgstr "%sã«ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆä¸­"
+
+#, fuzzy
+#~ msgid "Setting Up.."
+#~ msgstr "セットアップ中.."
+
+#, fuzzy
+#~ msgid "Error loading scene."
+#~ msgstr "シーンã®èª­ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼"
+
+#~ msgid "Re-Import"
+#~ msgstr "å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
+
+#, fuzzy
+#~ msgid "Please wait for scan to complete."
+#~ msgstr "走査完了をãŠå¾…ã¡ãã ã•ã„"
+
+#, fuzzy
+#~ msgid "Current scene must be saved to re-import."
+#~ msgstr "å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆã™ã‚‹ãŸã‚ã«ã¯ç¾åœ¨ã®ã‚·ãƒ¼ãƒ³ã‚’ä¿å­˜ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™"
+
+#, fuzzy
+#~ msgid "Save & Re-Import"
+#~ msgstr "ä¿å­˜ã—ã¦å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
+
+#, fuzzy
+#~ msgid "Re-Importing"
+#~ msgstr "å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
+
+#, fuzzy
+#~ msgid "Re-Import Changed Resources"
+#~ msgstr "変更ã—ãŸãƒªã‚½ãƒ¼ã‚¹ã‚’å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
+
+#, fuzzy
+#~ msgid "Loading Export Templates"
+#~ msgstr "エクスãƒãƒ¼ãƒˆã€€ãƒ†ãƒ³ãƒ—レートã®èª­ã¿è¾¼ã¿"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Status: Needs Re-Import"
+#~ msgstr "ä¿å­˜ã—ã¦å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
+
+#, fuzzy
+#~ msgid "Same source and destination files, doing nothing."
+#~ msgstr "åŒã˜ãƒ•ã‚¡ã‚¤ãƒ«ãŒæŒ‡å®šã•れã¦ã„ã‚‹ã®ã§ã€ä½•も行ã„ã¾ã›ã‚“."
+
+#, fuzzy
+#~ msgid "Same source and destination paths, doing nothing."
+#~ msgstr "åŒã˜ãƒ‘ã‚¹ãŒæŒ‡å®šã•れã¦ã„ã‚‹ã®ã§ã€ä½•も行ã„ã¾ã›ã‚“"
+
+#, fuzzy
+#~ msgid "Can't move directories to within themselves."
+#~ msgstr "ディレクトリを自身ã®å†…部ã«ã¯ç§»å‹•ã§ãã¾ã›ã‚“"
+
+#, fuzzy
+#~ msgid "Error moving file:\n"
+#~ msgstr "イメージ読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼:"
+
+#, fuzzy
+#~ msgid "Pick New Name and Location For:"
+#~ msgstr "æ–°ã—ã„åå‰ã¨ãƒ­ã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚’é¸æŠž:"
+
+#, fuzzy
+#~ msgid "No files selected!"
+#~ msgstr "ファイルãŒé¸æŠžã•れã¦ã„ã¾ã›ã‚“!"
+
+#, fuzzy
+#~ msgid "Info"
+#~ msgstr "インフォーメーション"
+
+#, fuzzy
+#~ msgid "Re-Import.."
+#~ msgstr "å†ã‚¤ãƒ³ãƒãƒ¼ãƒˆ.."
+
+#, fuzzy
+#~ msgid "No bit masks to import!"
+#~ msgstr "インãƒãƒ¼ãƒˆã™ã‚‹ãƒ“ットマスクãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“!"
+
+#, fuzzy
+#~ msgid "Target path is empty."
+#~ msgstr "ターゲットã®ãƒ‘スã«ä½•ã‚‚ã‚りã¾ã›ã‚“"
+
+#, fuzzy
+#~ msgid "Target path must be a complete resource path."
+#~ msgstr "ターゲットã®ãƒ‘スã¯ãƒªã‚½ãƒ¼ã‚¹ã®å®Œå…¨ãªãƒ‘スã§ãªã‘れã°ã„ã‘ã¾ã›ã‚“."
+
+#, fuzzy
+#~ msgid "Target path must exist."
+#~ msgstr "ターゲットã®ãƒ‘スãŒå­˜åœ¨ã—ã¾ã›ã‚“"
+
+#, fuzzy
+#~ msgid "Save path is empty!"
+#~ msgstr "ä¿å­˜ã™ã‚‹ãƒ‘スãŒã‚りã¾ã›ã‚“!"
+
+#, fuzzy
+#~ msgid "Import BitMasks"
+#~ msgstr "ビットマスクをインãƒãƒ¼ãƒˆ"
+
+#, fuzzy
+#~ msgid "Source Texture(s):"
+#~ msgstr "ソースã®ãƒ†ã‚¯ã‚¹ãƒãƒ£:"
+
+#, fuzzy
+#~ msgid "Target Path:"
+#~ msgstr "ターゲットã®ãƒ‘ス:"
+
+#, fuzzy
+#~ msgid "Accept"
+#~ msgstr "å—å–OK"
+
+#~ msgid "Bit Mask"
+#~ msgstr "ビットマスク"
+
+#, fuzzy
+#~ msgid "No source font file!"
+#~ msgstr "ソースã®ãƒ•ォントファイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“!"
+
+#, fuzzy
+#~ msgid "No target font resource!"
+#~ msgstr "ターゲットã®ãƒ•ォントリソースãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“!"
+
+#, fuzzy
+#~ msgid ""
+#~ "Invalid file extension.\n"
+#~ "Please use .font."
+#~ msgstr ""
+#~ "ファイル拡張å­ãŒä¸æ­£ã§ã™.\n"
+#~ " .fontを使ã£ã¦ãã ã•ã„."
+
+#, fuzzy
+#~ msgid "Couldn't save font."
+#~ msgstr "フォントをä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ"
+
+#, fuzzy
+#~ msgid "Source Font:"
+#~ msgstr "ソース フォント:"
+
+#, fuzzy
+#~ msgid "Source Font Size:"
+#~ msgstr "ソース フォントサイズ:"
+
+#, fuzzy
+#~ msgid "Dest Resource:"
+#~ msgstr "é€ã‚Šå…ˆã®ãƒªã‚½ãƒ¼ã‚¹:"
+
+#, fuzzy
+#~ msgid "The quick brown fox jumps over the lazy dog."
+#~ msgstr "ã„ã‚ã¯ã«ã»ã¸ã¨ï½ž."
+
+#~ msgid "Test:"
+#~ msgstr "テスト:"
+
+#~ msgid "Options:"
+#~ msgstr "オプション:"
+
+#, fuzzy
+#~ msgid "Font Import"
+#~ msgstr "フォントã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
+
+#, fuzzy
+#~ msgid ""
+#~ "This file is already a Godot font file, please supply a BMFont type file "
+#~ "instead."
+#~ msgstr ""
+#~ "ã“ã®ãƒ•ァイルã¯ã‚‚ã†Godotã®ãƒ•ォントファイルã§ã™. BMFont type ã®ãƒ•ァイルを代"
+#~ "ã‚りã«åˆ©ç”¨ã—ã¦ãã ã•ã„."
+
+#, fuzzy
+#~ msgid "Failed opening as BMFont file."
+#~ msgstr "BMFont ファイルを開ã‘ã¾ã›ã‚“ã§ã—ãŸ"
+
+#, fuzzy
+#~ msgid "Invalid font custom source."
+#~ msgstr "䏿­£ãªãƒ•ォントカスタムソース"
+
+#, fuzzy
+#~ msgid "No meshes to import!"
+#~ msgstr "インãƒãƒ¼ãƒˆã™ã‚‹ãƒ¡ãƒƒã‚·ãƒ¥ãŒã‚りã¾ã›ã‚“"
+
+#, fuzzy
+#~ msgid "Single Mesh Import"
+#~ msgstr "シングルメッシュをインãƒãƒ¼ãƒˆ"
+
+#, fuzzy
+#~ msgid "Source Mesh(es):"
+#~ msgstr "ソース メッシュ:"
+
+#, fuzzy
+#~ msgid "Surface %d"
+#~ msgstr "サーフェース %d"
+
+#, fuzzy
+#~ msgid "No samples to import!"
+#~ msgstr "インãƒãƒ¼ãƒˆã™ã‚‹ã‚µãƒ³ãƒ—ルãŒã‚りã¾ã›ã‚“!"
+
+#, fuzzy
+#~ msgid "Import Audio Samples"
+#~ msgstr "オーディオサンプルをインãƒãƒ¼ãƒˆ"
+
+#, fuzzy
+#~ msgid "Source Sample(s):"
+#~ msgstr "ソースã®ã‚µãƒ³ãƒ—ル:"
+
+#~ msgid "Audio Sample"
+#~ msgstr "オーディオサンプル"
+
+#, fuzzy
+#~ msgid "New Clip"
+#~ msgstr "æ–°ã—ã„クリップ"
+
+#, fuzzy
+#~ msgid "Flags"
+#~ msgstr "フラグ"
+
+#, fuzzy
+#~ msgid "Bake FPS:"
+#~ msgstr "FPSを焼ãè¾¼ã¿(ベイク):"
+
+#~ msgid "Optimizer"
+#~ msgstr "オプティマイザ"
+
+#, fuzzy
+#~ msgid "Max Linear Error"
+#~ msgstr "最大ä½ç½®ã‚¨ãƒ©ãƒ¼"
+
+#, fuzzy
+#~ msgid "Max Angular Error"
+#~ msgstr "最大角度エラー"
+
+#, fuzzy
+#~ msgid "Max Angle"
+#~ msgstr "最大角度"
+
+#~ msgid "Clips"
+#~ msgstr "クリップ"
+
+#~ msgid "Start(s)"
+#~ msgstr "é–‹å§‹"
+
+#~ msgid "End(s)"
+#~ msgstr "終了"
+
+#~ msgid "Filters"
+#~ msgstr "フィルター"
+
+#, fuzzy
+#~ msgid "Source path is empty."
+#~ msgstr "ソースã®ãƒ‘スã¯ç©ºã§ã™"
+
+#, fuzzy
+#~ msgid "Couldn't load post-import script."
+#~ msgstr "インãƒãƒ¼ãƒˆæ¸ˆã¿ã®ã‚¹ã‚¯ãƒªãƒ—トを読ã¿è¾¼ã¿ã¾ã›ã‚“ã§ã—ãŸ"
+
+#, fuzzy
+#~ msgid "Invalid/broken script for post-import."
+#~ msgstr "インãƒãƒ¼ãƒˆæ¸ˆã¿ã®ã‚¹ã‚¯ãƒªãƒ—トã¯ä¸æ­£ãª/壊れãŸã‚¹ã‚¯ãƒªãƒ—トã§ã™"
+
+#, fuzzy
+#~ msgid "Error importing scene."
+#~ msgstr "シーン インãƒãƒ¼ãƒˆã®ã‚¨ãƒ©ãƒ¼"
+
+#, fuzzy
+#~ msgid "Import 3D Scene"
+#~ msgstr "3Dシーンをインãƒãƒ¼ãƒˆ"
+
+#~ msgid "Source Scene:"
+#~ msgstr "ソース シーン:"
+
+#, fuzzy
+#~ msgid "Same as Target Scene"
+#~ msgstr "ターゲットシーンã¨åŒã˜"
+
+#~ msgid "Shared"
+#~ msgstr "共有ã•れã¦ã„ã‚‹"
+
+#, fuzzy
+#~ msgid "Target Texture Folder:"
+#~ msgstr "ターゲットテクスãƒãƒ£ã®ãƒ•ォルダ:"
+
+#, fuzzy
+#~ msgid "Post-Process Script:"
+#~ msgstr "後処ç†ã‚¹ã‚¯ãƒªãƒ—ト:"
+
+#, fuzzy
+#~ msgid "Custom Root Node Type:"
+#~ msgstr "ルートノードã®ã‚«ã‚¹ã‚¿ãƒ ã‚¿ã‚¤ãƒ—:"
+
+#~ msgid "Auto"
+#~ msgstr "自動"
+
+#, fuzzy
+#~ msgid "Root Node Name:"
+#~ msgstr "ルートノードã®åå‰:"
+
+#, fuzzy
+#~ msgid "The Following Files are Missing:"
+#~ msgstr "以下ã®ãƒ•ァイルãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“:"
+
+#, fuzzy
+#~ msgid "Import Anyway"
+#~ msgstr "ã¨ã‚Šã‚ãˆãšã‚¤ãƒ³ãƒãƒ¼ãƒˆ"
+
+#, fuzzy
+#~ msgid "Import & Open"
+#~ msgstr "インãƒãƒ¼ãƒˆã—ã¦é–‹ã"
+
+#, fuzzy
+#~ msgid "Edited scene has not been saved, open imported scene anyway?"
+#~ msgstr ""
+#~ "編集ã—ãŸã‚·ãƒ¼ãƒ³ã¯ä¿å­˜ã•れã¦ã„ã¾ã›ã‚“ãŒã€ãれã§ã‚‚インãƒãƒ¼ãƒˆã—ãŸã‚·ãƒ¼ãƒ³ã‚’é–‹ãã¾"
+#~ "ã™ã‹ï¼Ÿ"
+
+#, fuzzy
+#~ msgid "Import Image:"
+#~ msgstr "イメージをインãƒãƒ¼ãƒˆ:"
+
+#, fuzzy
+#~ msgid "Couldn't localize path: %s (already local)"
+#~ msgstr "パスをローカライズã§ãã¾ã›ã‚“: %s (ã™ã§ã«ãƒ­ãƒ¼ã‚«ãƒ«)"
+
+#, fuzzy
+#~ msgid "3D Scene Animation"
+#~ msgstr "3Dシーンアニメーション"
+
+#~ msgid "Uncompressed"
+#~ msgstr "éžåœ§ç¸®"
+
+#, fuzzy
+#~ msgid "Compress Lossless (PNG)"
+#~ msgstr "ロスレス圧縮(PNG)"
+
+#, fuzzy
+#~ msgid "Compress Lossy (WebP)"
+#~ msgstr "éžå¯é€†åœ§ç¸®(WebP)"
+
+#, fuzzy
+#~ msgid "Compress (VRAM)"
+#~ msgstr "圧縮 (VRAM)"
+
+#~ msgid "Texture Format"
+#~ msgstr "テクスãƒãƒ£ãƒ•ォーマット"
+
+#, fuzzy
+#~ msgid "Texture Compression Quality (WebP):"
+#~ msgstr "テクスãƒãƒ£åœ§ç¸®å“質 (WebP):"
+
+#, fuzzy
+#~ msgid "Texture Options"
+#~ msgstr "テクスãƒãƒ£ã€€ã‚ªãƒ—ション"
+
+#, fuzzy
+#~ msgid "Please specify some files!"
+#~ msgstr "ãªã«ã‹ãƒ•ァイルを指定ã—ã¦ãã ã•ã„!"
+
+#, fuzzy
+#~ msgid "At least one file needed for Atlas."
+#~ msgstr "ã‚¢ãƒˆãƒ©ã‚¹ã«æœ€ä½Žä¸€ã¤ã®ãƒ•ァイルを指定ã—ã¦ãã ã•ã„"
+
+#, fuzzy
+#~ msgid "Error importing:"
+#~ msgstr "エラーをインãƒãƒ¼ãƒˆä¸­:"
+
+#, fuzzy
+#~ msgid "Only one file is required for large texture."
+#~ msgstr "大ããªãƒ†ã‚¯ã‚¹ãƒãƒ£ã®ãŸã‚ã«ä¸€ã¤ãƒ•ァイルãŒå¿…è¦ã§ã™"
+
+#, fuzzy
+#~ msgid "Max Texture Size:"
+#~ msgstr "最大テクスãƒãƒ£ã‚µã‚¤ã‚º:"
+
+#, fuzzy
+#~ msgid "Import Textures for Atlas (2D)"
+#~ msgstr "アトラスã®ãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’インãƒãƒ¼ãƒˆ (2D)"
+
+#, fuzzy
+#~ msgid "Cell Size:"
+#~ msgstr "セルサイズ:"
+
+#, fuzzy
+#~ msgid "Large Texture"
+#~ msgstr "大ããªãƒ†ã‚¯ã‚¹ãƒãƒ£"
+
+#, fuzzy
+#~ msgid "Import Large Textures (2D)"
+#~ msgstr "大ããªãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’インãƒãƒ¼ãƒˆ (2D)"
+
+#, fuzzy
+#~ msgid "Source Texture"
+#~ msgstr "ソーステクスãƒãƒ£"
+
+#, fuzzy
+#~ msgid "Base Atlas Texture"
+#~ msgstr "基本アトラステクスãƒãƒ£"
+
+#, fuzzy
+#~ msgid "Source Texture(s)"
+#~ msgstr "ソース テクスãƒãƒ£"
+
+#, fuzzy
+#~ msgid "Import Textures for 2D"
+#~ msgstr "2Dテクスãƒãƒ£ã‚’インãƒãƒ¼ãƒˆ"
+
+#, fuzzy
+#~ msgid "Import Textures for 3D"
+#~ msgstr "3Dテクスãƒãƒ£ã‚’インãƒãƒ¼ãƒˆ"
+
+#, fuzzy
+#~ msgid "Import Textures"
+#~ msgstr "テクスãƒãƒ£ã‚’インãƒãƒ¼ãƒˆ"
+
+#~ msgid "2D Texture"
+#~ msgstr "2Dテクスãƒãƒ£"
+
+#~ msgid "3D Texture"
+#~ msgstr "3Dテクスãƒãƒ£"
+
+#~ msgid "Atlas Texture"
+#~ msgstr "アトラステクスãƒãƒ£"
+
+#, fuzzy
+#~ msgid ""
+#~ "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files "
+#~ "to the project."
+#~ msgstr ""
+#~ "注æ„:2Dテクスãƒãƒ£ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã¯å¿…é ˆã§ã¯ã‚りã¾ã›ã‚“. png/jpgファイルをプロ"
+#~ "ジェクトã«ã‚³ãƒ”ーã—ã¦ãã ã•ã„."
+
+#, fuzzy
+#~ msgid "Crop empty space."
+#~ msgstr "空白を刈り込む"
+
+#~ msgid "Texture"
+#~ msgstr "テクスãƒãƒ£"
+
+#, fuzzy
+#~ msgid "Import Large Texture"
+#~ msgstr "大ããªãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’インãƒãƒ¼ãƒˆ"
+
+#, fuzzy
+#~ msgid "Load Source Image"
+#~ msgstr "ソースイメージを読ã¿è¾¼ã‚€"
+
+#~ msgid "Slicing"
+#~ msgstr "スライシング"
+
+#~ msgid "Saving"
+#~ msgstr "ä¿å­˜ä¸­"
+
+#~ msgid "Couldn't save large texture:"
+#~ msgstr "大ããªãƒ†ã‚¯ã‚¹ãƒãƒ£ãŒä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ:"
+
+#, fuzzy
+#~ msgid "Build Atlas For:"
+#~ msgstr "~ã®ã‚¢ãƒˆãƒ©ã‚¹ã‚’ビルド:"
+
+#, fuzzy
+#~ msgid "Loading Image:"
+#~ msgstr "イメージを読ã¿è¾¼ã¿ä¸­:"
+
+#, fuzzy
+#~ msgid "Couldn't load image:"
+#~ msgstr "イメージを読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸ:"
+
+#, fuzzy
+#~ msgid "Converting Images"
+#~ msgstr "イメージを変æ›ä¸­"
+
+#, fuzzy
+#~ msgid "Cropping Images"
+#~ msgstr "イメージをクロッピング(トリミング)"
+
+#, fuzzy
+#~ msgid "Blitting Images"
+#~ msgstr "イメージをé…ç½®(Blit)"
+
+#, fuzzy
+#~ msgid "Couldn't save atlas image:"
+#~ msgstr "アトラスイメージをä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ:"
+
+#, fuzzy
+#~ msgid "Couldn't save converted texture:"
+#~ msgstr "変æ›ã—ãŸãƒ†ã‚¯ã‚¹ãƒãƒ£ã‚’ä¿å­˜ã§ãã¾ã›ã‚“ã§ã—ãŸ:"
+
+#, fuzzy
+#~ msgid "Invalid source!"
+#~ msgstr "䏿­£ãªã‚½ãƒ¼ã‚¹!"
+
+#~ msgid "Invalid translation source!"
+#~ msgstr "䏿­£ãªç¿»è¨³ã‚½ãƒ¼ã‚¹!"
+
+#, fuzzy
+#~ msgid "Column"
+#~ msgstr "カラム"
+
+#, fuzzy
+#~ msgid "No items to import!"
+#~ msgstr "インãƒãƒ¼ãƒˆã™ã‚‹ã‚‚ã®ãŒã‚りã¾ã›ã‚“!"
+
+#, fuzzy
+#~ msgid "No target path!"
+#~ msgstr "ターゲットã®ãƒ‘スãŒã‚りã¾ã›ã‚“!"
+
+#, fuzzy
+#~ msgid "Import Translations"
+#~ msgstr "翻訳をインãƒãƒ¼ãƒˆ"
+
+#, fuzzy
+#~ msgid "Couldn't import!"
+#~ msgstr "インãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸ!"
+
+#, fuzzy
+#~ msgid "Import Translation"
+#~ msgstr "翻訳をインãƒãƒ¼ãƒˆ"
+
+#, fuzzy
+#~ msgid "Source CSV:"
+#~ msgstr "ソースCSVファイル:"
+
+#, fuzzy
+#~ msgid "Ignore First Row"
+#~ msgstr "最åˆã®è¡Œã‚’無視"
+
+#~ msgid "Compress"
+#~ msgstr "圧縮"
+
+#, fuzzy
+#~ msgid "Add to Project (project.godot)"
+#~ msgstr "プロジェクトã«è¿½åŠ  (project.godot)"
+
+#, fuzzy
+#~ msgid "Import Languages:"
+#~ msgstr "言語をインãƒãƒ¼ãƒˆ:"
+
+#~ msgid "Translation"
+#~ msgstr "翻訳"
+
+#, fuzzy
+#~ msgid "Parsing %d Triangles:"
+#~ msgstr "%d 三角形をパース中ã§ã™:"
+
+#~ msgid "Triangle #"
+#~ msgstr "三角形 #"
+
+#, fuzzy
+#~ msgid "Light Baker Setup:"
+#~ msgstr "ライティング(照明)ベイク設定:"
+
+#, fuzzy
+#~ msgid "Fixing Lights"
+#~ msgstr "照明(ライティング)ã®ä¿®å¾©"
+
+#, fuzzy
+#~ msgid "Making BVH"
+#~ msgstr "BVHデータを生æˆ"
+
+#, fuzzy
+#~ msgid "Transfer to Lightmaps:"
+#~ msgstr "ライトマップã¸ã®è»¢å†™:"
+
+#, fuzzy
+#~ msgid "Allocating Texture #"
+#~ msgstr "テクスãƒãƒ£ã‚’(メモリ上ã§ï¼‰ç¢ºä¿#"
+
+#, fuzzy
+#~ msgid "Baking Triangle #"
+#~ msgstr "三角形をベイク#"
+
+#, fuzzy
+#~ msgid "Post-Processing Texture #"
+#~ msgstr "後処ç†ã®ãƒ†ã‚¯ã‚¹ãƒãƒ£#"
+
+#, fuzzy
+#~ msgid "Reset the lightmap octree baking process (start over)."
+#~ msgstr "ライトマップ八分木ベイクã®ãƒ—ロセスをリセット(やり直ã—)."
+
+#~ msgid "Zoom (%):"
+#~ msgstr "ズーム (%):"
+
+#, fuzzy
+#~ msgid "Skeleton.."
+#~ msgstr "スケルトン.."
+
+#~ msgid "Zoom Reset"
+#~ msgstr "ズームをリセット"
+
+#, fuzzy
+#~ msgid "Zoom Set.."
+#~ msgstr "ズームをセットã™ã‚‹.."
+
+#~ msgid "Set a Value"
+#~ msgstr "値を設定ã™ã‚‹"
+
+#, fuzzy
+#~ msgid "Snap (Pixels):"
+#~ msgstr "スナップ機能(ピクセルå˜ä½ï¼‰:"
+
+#, fuzzy
+#~ msgid "Parse BBCode"
+#~ msgstr "BBコードをパースã™ã‚‹"
+
+#, fuzzy
+#~ msgid "Length:"
+#~ msgstr "é•·ã•:"
+
+#, fuzzy
+#~ msgid "Open Sample File(s)"
+#~ msgstr "サンプルファイルを開ã‘ã‚‹"
+
+#, fuzzy
+#~ msgid "ERROR: Couldn't load sample!"
+#~ msgstr "エラー:サンプルを読ã¿è¾¼ã‚ã¾ã›ã‚“!"
+
+#~ msgid "Add Sample"
+#~ msgstr "サンプルを追加"
+
+#~ msgid "Rename Sample"
+#~ msgstr "サンプルã®åå‰ã‚’変ãˆã‚‹"
+
+#~ msgid "Delete Sample"
+#~ msgstr "サンプルを消去ã™ã‚‹"
+
+#~ msgid "16 Bits"
+#~ msgstr "16ビット"
+
+#~ msgid "8 Bits"
+#~ msgstr "8ビット"
+
+#~ msgid "Stereo"
+#~ msgstr "ステレオ音声"
+
+#~ msgid "Mono"
+#~ msgstr "モノラル音声"
+
+#~ msgid "Pitch"
+#~ msgstr "ピッãƒ"
+
+#~ msgid "Window"
+#~ msgstr "ウィンドウ"
+
+#, fuzzy
+#~ msgid "Move Right"
+#~ msgstr "å³ã«ç§»å‹•"
+
+#, fuzzy
+#~ msgid "Scaling to %s%%."
+#~ msgstr "æ‹¡å¤§ç¸®å°æ¯”率%s%%."
+
+#~ msgid "Up"
+#~ msgstr "上"
+
+#~ msgid "Down"
+#~ msgstr "下"
+
+#, fuzzy
+#~ msgid "Invalid project path, the path must exist!"
+#~ msgstr "パスãŒä¸æ­£ã§ã™.パスãŒå­˜åœ¨ã—ãªã„ã¨ã„ã‘ã¾ã›ã‚“."
+
+#, fuzzy
+#~ msgid "Invalid project path, project.godot must not exist."
+#~ msgstr "プロジェクトã®ãƒ‘スãŒä¸æ­£ã§ã™.project.godotã¯å­˜åœ¨ã—ã¾ã›ã‚“."
+
+#, fuzzy
+#~ msgid "Invalid project path, project.godot must exist."
+#~ msgstr ""
+#~ "プロジェクトã®ãƒ‘スãŒä¸æ­£ã§ã™.project.godotã¯å­˜åœ¨ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚"
+
+#, fuzzy
+#~ msgid "Project Path (Must Exist):"
+#~ msgstr "プロジェクトパス(存在ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ï¼‰"
+
+#~ msgid "Create New Resource"
+#~ msgstr "æ–°ã—ã„リソースを生æˆ"
+
+#~ msgid "Open Resource"
+#~ msgstr "リソースを開ã‘ã‚‹"
+
+#~ msgid "Save Resource"
+#~ msgstr "リソースをä¿å­˜"
+
+#, fuzzy
+#~ msgid "Resource Tools"
+#~ msgstr "リソースã®ãƒ„ール"
+
+#~ msgid "Edit Groups"
+#~ msgstr "グループを編集"
+
+#~ msgid "Edit Connections"
+#~ msgstr "コãƒã‚¯ã‚·ãƒ§ãƒ³ã‚’編集"
+
+#, fuzzy
+#~ msgid "Tiles"
+#~ msgstr "ファイル:"
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl+"
+
#, fuzzy
#~ msgid "Close scene? (Unsaved changes will be lost)"
#~ msgstr "シーンを閉ã˜ã¾ã™ã‹?(セーブã—ã¦ã„ãªã„変更ã¯å¤±ã‚れã¾ã™ï¼‰"
@@ -8969,10 +9284,6 @@ msgstr ""
#~ msgid "Close Goto Prev. Scene"
#~ msgstr "é–‰ã˜ã¦éŽå޻開ã„ãŸã‚·ãƒ¼ãƒ³ã«ç§»å‹•"
-#, fuzzy
-#~ msgid "Expand to Parent"
-#~ msgstr "親ã¾ã§å±•é–‹ã™ã‚‹"
-
#~ msgid "Del"
#~ msgstr "deleteキー"
diff --git a/editor/translations/ko.po b/editor/translations/ko.po
index f559faf1f3..02141b6dc3 100644
--- a/editor/translations/ko.po
+++ b/editor/translations/ko.po
@@ -1,14 +1,16 @@
# Korean translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# 박한얼 (volzhs) <volzhs@gmail.com>, 2016-2017.
+# Ch <ccwpc@hanmail.net>, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-02-08 16:38+0000\n"
+"PO-Revision-Date: 2017-10-24 20:47+0000\n"
"Last-Translator: 박한얼 <volzhs@gmail.com>\n"
"Language-Team: Korean <https://hosted.weblate.org/projects/godot-engine/"
"godot/ko/>\n"
@@ -17,11 +19,11 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 2.12-dev\n"
+"X-Generator: Weblate 2.17\n"
#: editor/animation_editor.cpp
msgid "Disabled"
-msgstr "사용 안함"
+msgstr "비활성화ë¨"
#: editor/animation_editor.cpp
msgid "All Selection"
@@ -84,9 +86,8 @@ msgid "Anim Track Change Value Mode"
msgstr "트랙 값 모드 변경"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Track Change Wrap Mode"
-msgstr "트랙 값 모드 변경"
+msgstr "애니메ì´ì…˜ 트랙 ëž© 모드 변경"
#: editor/animation_editor.cpp
msgid "Edit Node Curve"
@@ -194,10 +195,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr "%dê°œì˜ ìƒˆ íŠ¸ëž™ì„ ìƒì„±í•˜ê³  키를 추가하시겠습니까?"
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -359,271 +359,6 @@ msgstr "배열 값 타입 변경"
msgid "Change Array Value"
msgstr "배열 값 변경"
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr "버전:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Contents:"
-msgstr "ìƒìˆ˜:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "View Files"
-msgstr "파ì¼"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr "설명:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr "설치"
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "닫기"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect."
-msgstr "연결하기.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect to host:"
-msgstr "연결할 노드:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Request failed, return code:"
-msgstr "요청한 íŒŒì¼ í˜•ì‹ì„ 알 수 ì—†ìŒ:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Resolving.."
-msgstr "저장 중.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Connecting.."
-msgstr "연결하기.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Requesting.."
-msgstr "테스팅"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Error making request"
-msgstr "리소스 저장 중 ì—러!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Download Error"
-msgstr "아래"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "모ë‘"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "검색:"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "검색"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr "가져오기"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr "플러그ì¸"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "ì •ë ¬:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr "뒤집기"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "카테고리:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "사ì´íЏ:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr "ì§€ì›.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr "ê³µì‹"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "커뮤니티"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr "테스팅"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr "ì—ì…‹ ZIP 파ì¼"
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr "'%s' 함수 목ë¡:"
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "호출"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr "함수 목ë¡:"
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr "ì¸ìˆ˜:"
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr "리턴:"
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr "ë¼ì¸ìœ¼ë¡œ ì´ë™"
@@ -637,9 +372,8 @@ msgid "No Matches"
msgstr "ì¼ì¹˜ ê²°ê³¼ ì—†ìŒ"
#: editor/code_editor.cpp
-#, fuzzy
msgid "Replaced %d occurrence(s)."
-msgstr "%d 회 변경ë¨."
+msgstr "%d 회 êµì²´ë¨."
#: editor/code_editor.cpp
msgid "Replace"
@@ -661,6 +395,14 @@ msgstr "전체 단어"
msgid "Selection Only"
msgstr "ì„ íƒì˜ì—­ë§Œ"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "검색"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr "찾기"
@@ -693,11 +435,11 @@ msgstr "변경 시 알림"
msgid "Skip"
msgstr "건너뛰기"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "확대"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr "축소"
@@ -766,6 +508,20 @@ msgstr "지연"
msgid "Oneshot"
msgstr "1회"
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "닫기"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr "ì—°ê²°"
@@ -791,7 +547,7 @@ msgstr "연결하기.."
msgid "Disconnect"
msgstr "연결해제"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr "시그ë„"
@@ -808,12 +564,25 @@ msgstr "ì¦ê²¨ì°¾ê¸°:"
msgid "Recent:"
msgstr "최근:"
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "검색:"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr "ì¼ì¹˜:"
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "설명:"
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr "대체할 ëŒ€ìƒ ì°¾ê¸°:"
@@ -873,6 +642,10 @@ msgid "Owners Of:"
msgstr "소유ìž:"
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr "프로ì íЏì—서 ì„ íƒëœ 파ì¼ë“¤ì„ 삭제하시겠습니까? (ë˜ëŒë¦¬ê¸° 불가)"
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -882,8 +655,8 @@ msgstr ""
"ì •ë§ë¡œ 삭제하시겠습니까? (ë˜ëŒë¦¬ê¸° 불가)"
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
-msgstr "프로ì íЏì—서 ì„ íƒëœ 파ì¼ë“¤ì„ 삭제하시겠습니까? (ë˜ëŒë¦¬ê¸° 불가)"
+msgid "Cannot remove:\n"
+msgstr "제거할 수 없습니다:\n"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -946,21 +719,15 @@ msgstr "ê°ì‚¬í•©ë‹ˆë‹¤!"
#: editor/editor_about.cpp
msgid "Godot Engine contributors"
-msgstr ""
+msgstr "Godot Engine 기여ìž"
#: editor/editor_about.cpp
-#, fuzzy
-msgid "Authors"
-msgstr "ì €ìž:"
-
-#: editor/editor_about.cpp
-#, fuzzy
msgid "Project Founders"
-msgstr "프로ì íЏ 매니저"
+msgstr "프로ì íЏ 창립ìž"
#: editor/editor_about.cpp
msgid "Lead Developer"
-msgstr ""
+msgstr "리드 개발ìž"
#: editor/editor_about.cpp editor/project_manager.cpp
msgid "Project Manager"
@@ -968,15 +735,47 @@ msgstr "프로ì íЏ 매니저"
#: editor/editor_about.cpp
msgid "Developers"
-msgstr ""
+msgstr "개발ìžë“¤"
+
+#: editor/editor_about.cpp
+msgid "Authors"
+msgstr "ì €ìž"
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr "플래티넘 스í°ì„œ"
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr "골드 스í°ì„œ"
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr "미니 스í°ì„œ"
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr "골드 기ì¦ìž"
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr "브론즈 기ì¦ìž"
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr "브론즈 기ì¦ìž"
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr "기ì¦ìž"
#: editor/editor_about.cpp
msgid "License"
-msgstr ""
+msgstr "ë¼ì´ì„ ìФ"
#: editor/editor_about.cpp
msgid "Thirdparty License"
-msgstr ""
+msgstr "서드파티 ë¼ì´ì„ ìФ"
#: editor/editor_about.cpp
msgid ""
@@ -985,103 +784,109 @@ msgid ""
"is an exhaustive list of all such thirdparty components with their "
"respective copyright statements and license terms."
msgstr ""
+"Godot Engineì€ MIT ë¼ì´ì„ ìŠ¤ì™€ 호환ë˜ëŠ” ìˆ˜ë§Žì€ ì„œë“œíŒŒí‹° ìžìœ  오픈소스 ë¼ì´ë¸ŒëŸ¬"
+"ë¦¬ì— ì˜ì¡´í•©ë‹ˆë‹¤. 다ìŒì€ 그러한 서드파티 ì»´í¬ë„ŒíŠ¸ì˜ ì™„ì „í•œ 목ë¡ê³¼ ì´ì— 대ì‘하"
+"는 저작권 선언문 ë° ë¼ì´ì„¼ìŠ¤ìž…ë‹ˆë‹¤."
#: editor/editor_about.cpp
-#, fuzzy
msgid "All Components"
-msgstr "ìƒìˆ˜:"
+msgstr "모든 ì»´í¬ë„ŒíЏ"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Components"
-msgstr "ìƒìˆ˜:"
+msgstr "ì»´í¬ë„ŒíЏ"
#: editor/editor_about.cpp
msgid "Licenses"
-msgstr ""
+msgstr "ë¼ì´ì„ ìФ"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Error opening package file, not in zip format."
-msgstr ""
+msgstr "패키지 파ì¼ì„ 여는 ë° ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤. zip í¬ë§·ì´ 아닙니다."
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Uncompressing Assets"
-msgstr "무압축"
+msgstr "어셋 압축해제"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Package Installed Successfully!"
msgstr "패키지가 성공ì ìœ¼ë¡œ 설치ë˜ì—ˆìŠµë‹ˆë‹¤!"
#: editor/editor_asset_installer.cpp
-#, fuzzy
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr "성공!"
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr "설치"
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
-msgstr "패키지가 성공ì ìœ¼ë¡œ 설치ë˜ì—ˆìŠµë‹ˆë‹¤!"
+msgstr "패키지 ì¸ìŠ¤í†¨ëŸ¬"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
-msgstr ""
+msgstr "스피커"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Effect"
-msgstr "빈 프레임 추가"
+msgstr "ì´íŽ™íŠ¸ 추가"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Rename Audio Bus"
-msgstr "ìžë™ 로드 ì´ë¦„ 변경"
+msgstr "오디오 버스 ì´ë¦„ 변경"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Toggle Audio Bus Solo"
-msgstr "ìžë™ ìž¬ìƒ ì „í™˜"
+msgstr "오디오 버스 솔로 토글"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Mute"
-msgstr ""
+msgstr "오디오 버스 뮤트 토글"
#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Toggle Audio Bus Bypass Effects"
-msgstr ""
+msgstr "오디오 버스 ì´íŽ™íŠ¸ 무시 토글"
#: editor/editor_audio_buses.cpp
msgid "Select Audio Bus Send"
-msgstr ""
+msgstr "오디오 버스 전송 ì„ íƒ"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus Effect"
-msgstr ""
+msgstr "오디오 버스 ì´íŽ™íŠ¸ 추가"
#: editor/editor_audio_buses.cpp
msgid "Move Bus Effect"
-msgstr ""
+msgstr "버스 ì´íŽ™íŠ¸ ì´ë™"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Bus Effect"
-msgstr "ì„ íƒ í•­ëª© ì‚­ì œ"
+msgstr "버스 ì´íŽ™íŠ¸ ì‚­ì œ"
#: editor/editor_audio_buses.cpp
msgid "Audio Bus, Drag and Drop to rearrange."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-#, fuzzy
-msgid "Bus options"
-msgstr "디버그 옵션"
+msgstr "오디오 버스, 드래그 ë° ë“œë¡­ìœ¼ë¡œ 재배치하세요."
#: editor/editor_audio_buses.cpp
msgid "Solo"
-msgstr ""
+msgstr "솔로"
#: editor/editor_audio_buses.cpp
msgid "Mute"
-msgstr ""
+msgstr "뮤트"
#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Bypass"
-msgstr ""
+msgstr "ë°”ì´íŒ¨ìФ"
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr "버스 옵션"
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
@@ -1089,75 +894,73 @@ msgid "Duplicate"
msgstr "복제"
#: editor/editor_audio_buses.cpp
-#, fuzzy
+msgid "Reset Volume"
+msgstr "볼륨 리셋"
+
+#: editor/editor_audio_buses.cpp
msgid "Delete Effect"
-msgstr "ì„ íƒ í•­ëª© ì‚­ì œ"
+msgstr "ì´íŽ™íŠ¸ ì‚­ì œ"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Audio Bus"
-msgstr "%s 추가"
+msgstr "오디오 버스 추가"
#: editor/editor_audio_buses.cpp
msgid "Master bus can't be deleted!"
-msgstr ""
+msgstr "주 버스는 삭제할 수 없습니다!"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Audio Bus"
-msgstr "ë ˆì´ì•„웃 ì‚­ì œ"
+msgstr "오디오 버스 삭제"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Duplicate Audio Bus"
-msgstr "애니메ì´ì…˜ 복제하기"
+msgstr "오디오 버스 복제"
+
+#: editor/editor_audio_buses.cpp
+msgid "Reset Bus Volume"
+msgstr "버스 볼륨 리셋"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Move Audio Bus"
-msgstr "ì´ë™ ì•¡ì…˜"
+msgstr "오디오 버스 ì´ë™"
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
-msgstr ""
+msgstr "오디오 버스 ë ˆì´ì•„ì›ƒì„ ë‹¤ë¥¸ ì´ë¦„으로 저장.."
#: editor/editor_audio_buses.cpp
msgid "Location for New Layout.."
-msgstr ""
+msgstr "새 ë ˆì´ì•„ì›ƒì„ ì €ìž¥í•  장소.."
#: editor/editor_audio_buses.cpp
msgid "Open Audio Bus Layout"
-msgstr ""
+msgstr "오디오 버스 ë ˆì´ì•„웃 열기"
#: editor/editor_audio_buses.cpp
msgid "There is no 'res://default_bus_layout.tres' file."
-msgstr ""
+msgstr "'res://default_bus_layout.tres' 파ì¼ì´ 없습니다."
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Invalid file, not an audio bus layout."
-msgstr ""
-"유효하지 ì•Šì€ íŒŒì¼ í™•ìž¥ìž.\n"
-".fnt 를 사용하세요."
+msgstr "올바르지 ì•Šì€ íŒŒì¼ìž…니다. 오디오 버스 ë ˆì´ì•„ì›ƒì´ ì•„ë‹™ë‹ˆë‹¤."
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Bus"
-msgstr "%s 추가"
+msgstr "버스 추가"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Create a new Bus Layout."
-msgstr "새 리소스 만들기"
+msgstr "새로운 버스 ë ˆì´ì•„ì›ƒì„ ë§Œë“­ë‹ˆë‹¤."
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr "로드"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Load an existing Bus Layout."
-msgstr "디스í¬ì—서 기존 리소스를 로드하여 편집합니다."
+msgstr "기존 버스 ë ˆì´ì•„ì›ƒì„ ë¶ˆëŸ¬ì˜µë‹ˆë‹¤."
#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -1166,16 +969,15 @@ msgstr "다른 ì´ë¦„으로 저장"
#: editor/editor_audio_buses.cpp
msgid "Save this Bus Layout to a file."
-msgstr ""
+msgstr "ì´ ë²„ìŠ¤ ë ˆì´ì•„ì›ƒì„ íŒŒì¼ë¡œ 저장합니다.."
#: editor/editor_audio_buses.cpp editor/import_dock.cpp
-#, fuzzy
msgid "Load Default"
-msgstr "Default"
+msgstr "기본값 불러오기"
#: editor/editor_audio_buses.cpp
msgid "Load the default Bus Layout."
-msgstr ""
+msgstr "기본 버스 ë ˆì´ì•„ì›ƒì„ ë¶ˆëŸ¬ì˜µë‹ˆë‹¤."
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
@@ -1213,7 +1015,7 @@ msgstr "리소스 경로가 아닙니다."
#: editor/editor_autoload_settings.cpp
msgid "Add AutoLoad"
-msgstr "ìžë™ 로드 추가"
+msgstr "오토 로드 추가"
#: editor/editor_autoload_settings.cpp
msgid "Autoload '%s' already exists!"
@@ -1244,7 +1046,7 @@ msgid "Rearrange Autoloads"
msgstr "ìžë™ 로드 위치 변경"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "경로:"
@@ -1252,9 +1054,7 @@ msgstr "경로:"
msgid "Node Name:"
msgstr "노드 ì´ë¦„:"
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr "ì´ë¦„"
@@ -1279,27 +1079,27 @@ msgid "Updating scene.."
msgstr "씬 ì—…ë°ì´íЏ 중.."
#: editor/editor_dir_dialog.cpp
-#, fuzzy
msgid "Please select a base directory first"
-msgstr "먼저 ì”¬ì„ ì €ìž¥í•´ì£¼ì„¸ìš”."
+msgstr "먼저 기본 디렉토리를 ì„ íƒí•´ì£¼ì„¸ìš”"
#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "디렉토리 ì„ íƒ"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "í´ë” ìƒì„±"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "ì´ë¦„:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "í´ë”를 만들 수 없습니다."
@@ -1317,31 +1117,7 @@ msgstr "패킹중"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
msgid "Template file not found:\n"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr "추가ë¨:"
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr "제거ë¨:"
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr "ì•„í‹€ë¼ìФ 저장 중 ì—러:"
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr "ì•„í‹€ë¼ìФ 서브 í…스ì³ë¥¼ 저장할 수 없습니다:"
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr "%s 내보내기"
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr "설정 중.."
+msgstr "í…œí”Œë¦¿ì„ ì°¾ì„ ìˆ˜ 없습니다:\n"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
@@ -1427,6 +1203,10 @@ msgstr "ì¦ê²¨ì°¾ê¸° 위로 ì´ë™"
msgid "Move Favorite Down"
msgstr "ì¦ê²¨ì°¾ê¸° 아래로 ì´ë™"
+#: editor/editor_file_dialog.cpp
+msgid "Go to parent folder"
+msgstr "부모 í´ë”로 ì´ë™"
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "디렉토리와 파ì¼:"
@@ -1441,10 +1221,6 @@ msgid "File:"
msgstr "파ì¼:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "í•„í„°:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "유효한 확장ìžë¥¼ 사용해야 합니다."
@@ -1453,9 +1229,8 @@ msgid "ScanSources"
msgstr "소스 조사"
#: editor/editor_file_system.cpp
-#, fuzzy
msgid "(Re)Importing Assets"
-msgstr "다시 가져오기"
+msgstr "어셋 (다시) 가져오기"
#: editor/editor_help.cpp editor/editor_node.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -1470,6 +1245,10 @@ msgstr "í´ëž˜ìФ 목ë¡:"
msgid "Search Classes"
msgstr "í´ëž˜ìФ 검색"
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr "윗면"
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr "í´ëž˜ìФ:"
@@ -1486,15 +1265,27 @@ msgstr "ìƒì†í•œ í´ëž˜ìФ:"
msgid "Brief Description:"
msgstr "간단한 설명:"
+#: editor/editor_help.cpp
+msgid "Members"
+msgstr "멤버"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "멤버:"
#: editor/editor_help.cpp
+msgid "Public Methods"
+msgstr "공개 메소드"
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr "공개 함수:"
#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr "GUI 테마 항목"
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr "GUI 테마 항목:"
@@ -1503,54 +1294,86 @@ msgid "Signals:"
msgstr "시그ë„:"
#: editor/editor_help.cpp
-#, fuzzy
+msgid "Enumerations"
+msgstr "Enumerations"
+
+#: editor/editor_help.cpp
msgid "Enumerations:"
-msgstr "애니메ì´ì…˜"
+msgstr "Enumerations:"
#: editor/editor_help.cpp
msgid "enum "
-msgstr ""
+msgstr "enum "
+
+#: editor/editor_help.cpp
+msgid "Constants"
+msgstr "ìƒìˆ˜"
#: editor/editor_help.cpp
msgid "Constants:"
msgstr "ìƒìˆ˜:"
#: editor/editor_help.cpp
+msgid "Description"
+msgstr "설명"
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr "ì†ì„±"
+
+#: editor/editor_help.cpp
msgid "Property Description:"
msgstr "ì†ì„± 설명:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"현재 ì´ ì†ì„±ì— 대한 ìƒì„¸ì„¤ëª…ì´ ì—†ìŠµë‹ˆë‹¤. [color=$color][url=$url]관련 정보를 "
+"기여하여[/url][/color] ë” ë‚˜ì•„ì§€ê²Œ ë„와주세요!"
+
+#: editor/editor_help.cpp
+msgid "Methods"
+msgstr "메서드"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr "함수 설명:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"현재 ì´ ë©”ì„œë“œì— ëŒ€í•œ ìƒì„¸ì„¤ëª…ì´ ì—†ìŠµë‹ˆë‹¤. [color=$color][url=$url]관련 ì •ë³´"
+"를 기여하여[/url][/color] ë” ë‚˜ì•„ì§€ê²Œ ë„와주세요!"
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr "ë¬¸ìž ê²€ìƒ‰"
#: editor/editor_log.cpp
-#, fuzzy
msgid "Output:"
-msgstr " 출력:"
+msgstr "출력:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "지우기"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr "리소스 저장 중 ì—러!"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr "리소스를 다른 ì´ë¦„으로 저장.."
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "알겠습니다.."
@@ -1567,6 +1390,26 @@ msgid "Error while saving."
msgstr "저장 중 ì—러."
#: editor/editor_node.cpp
+msgid "Can't open '%s'."
+msgstr "'%s' 열수 ì—†ìŒ."
+
+#: editor/editor_node.cpp
+msgid "Error while parsing '%s'."
+msgstr "'%s' 파싱 중 ì—러."
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr "예ìƒì¹˜ 못한 파ì¼ì˜ ë '%s' 입니다.."
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
+msgstr "'%s' 없거나 ì¢…ì† í•­ëª©ì´ ì—†ìŠµë‹ˆë‹¤."
+
+#: editor/editor_node.cpp
+msgid "Error while loading '%s'."
+msgstr "'%s' 로딩 중 ì—러."
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr "씬 저장"
@@ -1579,9 +1422,8 @@ msgid "Creating Thumbnail"
msgstr "ì¸ë„¤ì¼ ìƒì„± 중"
#: editor/editor_node.cpp
-#, fuzzy
msgid "This operation can't be done without a tree root."
-msgstr "ì´ ìž‘ì—…ì€ ì”¬ ì—†ì´ëŠ” 불가합니다."
+msgstr "ì´ ìž‘ì—…ì€ íŠ¸ë¦¬ 루트 ì—†ì´ëŠ” 불가합니다."
#: editor/editor_node.cpp
msgid ""
@@ -1626,6 +1468,44 @@ msgid "Restored default layout to base settings."
msgstr "기본 ë ˆì´ì•„ì›ƒì´ ì´ˆê¸° 설정으로 ë³µì›ë˜ì—ˆìŠµë‹ˆë‹¤."
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+"ì´ ë¦¬ì†ŒìŠ¤ëŠ” ê°€ì ¸ì™”ë˜ ì”¬ì— ì†í•œ 것ì´ë¯€ë¡œ 수정할 수 없습니다.\n"
+"관련 작업 절차를 ë” ìž˜ ì´í•´í•˜ë ¤ë©´ 씬 가져오기(scene importing)ê³¼ ê´€ë ¨ëœ ë¬¸ì„œ"
+"를 확ì¸í•´ì£¼ì‹­ì‹œì˜¤."
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+"ì´ ë¦¬ì†ŒìŠ¤ëŠ” ì¸ìŠ¤í„´ìŠ¤ ë˜ì—ˆê±°ë‚˜ ìƒì†ëœ ê²ƒì— ì†í•©ë‹ˆë‹¤.\n"
+"ì´ ë¦¬ì†ŒìŠ¤ì— ëŒ€í•œ ìˆ˜ì •ì€ í˜„ìž¬ ì”¬ì„ ì €ìž¥í•˜ëŠ” 경우 유지ë˜ì§€ 않습니다."
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+"ì´ ë¦¬ì†ŒìŠ¤ëŠ” 가져오기ë˜ì—ˆìœ¼ë¯€ë¡œ 수정할 수 없습니다. 가져오기 패ë„ì—서 ì†ì„±ì„ "
+"변경한 뒤 다시 가져오십시오."
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+"ì´ ì”¬ì€ ê°€ì ¸ì˜¤ê¸°ë˜ì—ˆìœ¼ë¯€ë¡œ ë³€ê²½ì‚¬í•­ì´ ìœ ì§€ë˜ì§€ ì•Šì„ ê²ƒìž…ë‹ˆë‹¤.\n"
+"ì¸ìŠ¤í„´ìŠ¤í™” í˜¹ì€ ìƒì†ì„ 하면 ì”¬ì„ ìˆ˜ì •í•  수 있게 ë©ë‹ˆë‹¤.\n"
+"관련 작업 절차를 ë” ìž˜ ì´í•´í•˜ë ¤ë©´ 씬 가져오기(scene importing)와 ê´€ë ¨ëœ ë¬¸ì„œ"
+"를 확ì¸í•´ì£¼ì‹­ì‹œì˜¤."
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr "ì†ì„± 복사"
@@ -1658,7 +1538,6 @@ msgid "There is no defined scene to run."
msgstr "실행하기 위해 ì •ì˜ëœ ì”¬ì´ ì—†ìŠµë‹ˆë‹¤."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"No main scene has ever been defined, select one?\n"
"You can change it later in \"Project Settings\" under the 'application' "
@@ -1710,22 +1589,20 @@ msgid "Quick Open Script.."
msgstr "빠른 스í¬ë¦½íЏ 열기.."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Close"
-msgstr "파ì¼ë¡œ 저장하기"
+msgstr "저장 ë° ë‹«ê¸°"
#: editor/editor_node.cpp
msgid "Save changes to '%s' before closing?"
-msgstr ""
+msgstr "닫기 ì „ì— '%s' ì— ë³€ê²½ì‚¬í•­ì„ ì €ìž¥í•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
#: editor/editor_node.cpp
msgid "Save Scene As.."
msgstr "ì”¬ì„ ë‹¤ë¥¸ ì´ë¦„으로 저장.."
#: editor/editor_node.cpp
-#, fuzzy
msgid "No"
-msgstr "노드"
+msgstr "아니오"
#: editor/editor_node.cpp
msgid "Yes"
@@ -1748,9 +1625,8 @@ msgid "Export Tile Set"
msgstr "íƒ€ì¼ ì…‹ 내보내기"
#: editor/editor_node.cpp
-#, fuzzy
msgid "This operation can't be done without a selected node."
-msgstr "ì´ ìž‘ì—…ì€ ì”¬ ì—†ì´ëŠ” 불가합니다."
+msgstr "ì´ ìž‘ì—…ì€ ì„ íƒëœ 노드가 ì—†ì„때는 불가합니다."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1781,41 +1657,55 @@ msgid "Exit the editor?"
msgstr "ì—디터를 종료하시겠습니까?"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Project Manager?"
-msgstr "프로ì íЏ 매니저"
+msgstr "프로ì íЏ 매니저를 여시겠습니까?"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Quit"
-msgstr "파ì¼ë¡œ 저장하기"
+msgstr "저장 ë° ì¢…ë£Œ"
#: editor/editor_node.cpp
msgid "Save changes to the following scene(s) before quitting?"
-msgstr ""
+msgstr "닫기 ì „ì— ë‹¤ìŒ ì”¬(들)ì˜ ë³€ê²½ì‚¬í•­ì„ ì €ìž¥í•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
#: editor/editor_node.cpp
msgid "Save changes the following scene(s) before opening Project Manager?"
+msgstr "프로ì íЏ 매니저를 열기 ì „ì— ë‹¤ìŒ ì”¬(들)ì˜ ë³€ê²½ì‚¬í•­ì„ ì €ìž¥í•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
+
+#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
msgstr ""
+"ì´ ì˜µì…˜ì€ ë” ì´ìƒ 사용ë˜ì§€ 않습니다. 반드시 ìƒˆë¡œê³ ì¹¨ì„ í•´ì•¼ 하는 ìƒí™©ì€ ì´ì œ "
+"버그입니다. 신고해주십시오."
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "ë©”ì¸ ì”¬ ì„ íƒ"
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
-msgstr ""
+#, fuzzy
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
+msgstr "ì´ ê³³ì— ìžˆëŠ” 확장기능 플러그ì¸ì„ 활성화할 수 없습니다: '"
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
-msgstr ""
+#, fuzzy
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
+msgstr "ì´ ê³³ì— ìžˆëŠ” 확장기능 플러그ì¸ì„ 활성화할 수 없습니다: '"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "ì´ ê³³ì— ìžˆëŠ” 확장기능 플러그ì¸ì„ 활성화할 수 없습니다: '"
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -1823,9 +1713,11 @@ 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"
+"ë³€ê²½ì‚¬í•­ì„ ì ìš©í•˜ë ¤ë©´, 새로운 ìƒì† ì”¬ì„ ë§Œë“œì„¸ìš”."
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr "오우"
@@ -1838,14 +1730,14 @@ msgstr ""
"기'로 ì”¬ì„ ì—° 후ì—, 프로ì íЏ 경로 ì•ˆì— ì €ìž¥í•˜ì„¸ìš”."
#: editor/editor_node.cpp
-msgid "Error loading scene."
-msgstr "씬 로딩 중 ì—러."
-
-#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
msgstr "'%s' ì”¬ì˜ ì¢…ì† í•­ëª©ì´ ê¹¨ì ¸ìžˆìŠµë‹ˆë‹¤.:"
#: editor/editor_node.cpp
+msgid "Clear Recent Scenes"
+msgstr "최근 씬 지우기"
+
+#: editor/editor_node.cpp
msgid "Save Layout"
msgstr "ë ˆì´ì•„웃 저장"
@@ -1875,11 +1767,10 @@ msgid "Distraction Free Mode"
msgstr "초집중 모드"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Toggle distraction-free mode."
-msgstr "초집중 모드"
+msgstr "집중 모드 토글."
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr "씬"
@@ -1896,9 +1787,8 @@ msgid "Previous tab"
msgstr "ì´ì „ 탭"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Filter Files.."
-msgstr "빠른 íŒŒì¼ í•„í„°ë§.."
+msgstr "íŒŒì¼ í•„í„°ë§.."
#: editor/editor_node.cpp
msgid "Operations with scene files."
@@ -1964,9 +1854,8 @@ msgid "Miscellaneous project or scene-wide tools."
msgstr "프로ì íЏ ë˜ëŠ” 씬 관련 여러가지 ë„구들."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Project"
-msgstr "새 프로ì íЏ"
+msgstr "프로ì íЏ"
#: editor/editor_node.cpp
msgid "Project Settings"
@@ -2081,9 +1970,8 @@ msgstr ""
"니다."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Editor"
-msgstr "편집"
+msgstr "ì—디터"
#: editor/editor_node.cpp editor/settings_config_dialog.cpp
msgid "Editor Settings"
@@ -2098,9 +1986,8 @@ msgid "Toggle Fullscreen"
msgstr "전체화면 토글"
#: editor/editor_node.cpp editor/project_export.cpp
-#, fuzzy
msgid "Manage Export Templates"
-msgstr "내보내기 템플릿 로딩 중"
+msgstr "내보내기 템플릿 관리"
#: editor/editor_node.cpp
msgid "Help"
@@ -2111,17 +1998,20 @@ msgid "Classes"
msgstr "í´ëž˜ìФ"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Online Docs"
-msgstr "문서 닫기"
+msgstr "온ë¼ì¸ 문서"
#: editor/editor_node.cpp
msgid "Q&A"
-msgstr ""
+msgstr "Q&A"
#: editor/editor_node.cpp
msgid "Issue Tracker"
-msgstr ""
+msgstr "ì´ìŠˆ 트래커"
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "커뮤니티"
#: editor/editor_node.cpp
msgid "About"
@@ -2131,7 +2021,7 @@ msgstr "ì •ë³´"
msgid "Play the project."
msgstr "프로ì íЏ 실행."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr "재성"
@@ -2147,7 +2037,7 @@ msgstr "씬 ì¼ì‹œ ì •ì§€"
msgid "Stop the scene."
msgstr "씬 정지."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr "ì •ì§€"
@@ -2220,6 +2110,15 @@ msgid "Object properties."
msgstr "오브ì íЏ ì†ì„±."
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr "ë³€ê²½ì‚¬í•­ì„ ìžƒì„ ìˆ˜ 있습니다!"
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr "가져오기"
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr "íŒŒì¼ ì‹œìŠ¤í…œ"
@@ -2233,15 +2132,7 @@ msgstr "출력"
#: editor/editor_node.cpp
msgid "Don't Save"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr "다시 가져오기"
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr "갱신"
+msgstr "저장하지 않ìŒ"
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
@@ -2268,9 +2159,8 @@ msgid "Open & Run a Script"
msgstr "스í¬ë¦½íŠ¸ë¥¼ ì—´ê³  실행"
#: editor/editor_node.cpp
-#, fuzzy
msgid "New Inherited"
-msgstr "새 ìƒì† 씬.."
+msgstr "새 ìƒì† 씬"
#: editor/editor_node.cpp
msgid "Load Errors"
@@ -2281,40 +2171,51 @@ msgid "Select"
msgstr "ì„ íƒ"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 2D Editor"
-msgstr "ì—디터ì—서 열기"
+msgstr "2D ì—디터 열기"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open 3D Editor"
-msgstr "ì—디터ì—서 열기"
+msgstr "3D ì—디터 열기"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Script Editor"
-msgstr "ì—디터ì—서 열기"
+msgstr "스í¬ë¦½íЏ ì—디터 열기"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Asset Library"
-msgstr "ë¼ì´ë¸ŒëŸ¬ë¦¬ 내보내기"
+msgstr "ì–´ì…‹ ë¼ì´ë¸ŒëŸ¬ë¦¬ 열기"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the next Editor"
-msgstr "ì—디터ì—서 열기"
+msgstr "ë‹¤ìŒ ì—디터 열기"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open the previous Editor"
-msgstr "ì—디터ì—서 열기"
+msgstr "ì´ì „ ì—디터 열기"
+
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr "메쉬 미리보기 ìƒì„± 중"
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr "ì¸ë„¤ì¼.."
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr "ì„¤ì¹˜ëœ í”ŒëŸ¬ê·¸ì¸:"
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr "갱신"
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "버전:"
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr "ì €ìž:"
@@ -2347,7 +2248,8 @@ msgid "Frame %"
msgstr "프레임 %"
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+#, fuzzy
+msgid "Physics Frame %"
msgstr "고정 프레임 %"
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2366,29 +2268,9 @@ msgstr "ìžì‹ "
msgid "Frame #:"
msgstr "프레임 #:"
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr "ìŠ¤ìº”ì´ ì™„ë£Œë  ë•Œê¹Œì§€ 기다려주세요."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr "다시 가져오기 위해서는 현재 ì”¬ì„ ì €ìž¥í•´ì•¼ 합니다."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr "저장 ë° ë‹¤ì‹œ 가져오기"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr "다시 가져오기"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr "ë³€ê²½ëœ ë¦¬ì†ŒìŠ¤ 다시 가져오기"
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
-msgstr ""
+msgstr "목ë¡ì—서 기기를 ì„ íƒí•˜ì„¸ìš”"
#: editor/editor_run_native.cpp
msgid ""
@@ -2437,33 +2319,28 @@ msgid "Import From Node:"
msgstr "노드ì—서 가져오기:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Re-Download"
-msgstr "다시 로드"
+msgstr "다시 다운로드"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Uninstall"
-msgstr "설치"
+msgstr "삭제"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "(Installed)"
-msgstr "설치"
+msgstr "(설치ë¨)"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Download"
-msgstr "아래"
+msgstr "다운로드"
#: editor/export_template_manager.cpp
msgid "(Missing)"
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "(Current)"
-msgstr "현재:"
+msgstr "(현재)"
#: editor/export_template_manager.cpp
msgid "Remove template version '%s'?"
@@ -2488,52 +2365,40 @@ msgid "No version.txt found inside templates."
msgstr ""
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Error creating path for templates:\n"
-msgstr "ì•„í‹€ë¼ìФ 저장 중 ì—러:"
+msgstr "템플릿 경로 ìƒì„± ì—러:\n"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Extracting Export Templates"
-msgstr "내보내기 템플릿 로딩 중"
+msgstr "내보내기 템플릿 압축해제 중"
#: editor/export_template_manager.cpp
msgid "Importing:"
msgstr "가져오는 중:"
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr "내보내기 템플릿 로딩 중"
-
-#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Current Version:"
-msgstr "현재 씬"
+msgstr "현재 버전:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Installed Versions:"
-msgstr "ì„¤ì¹˜ëœ í”ŒëŸ¬ê·¸ì¸:"
+msgstr "ì„¤ì¹˜ëœ ë²„ì „:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Install From File"
-msgstr "프로ì íЏ 설치:"
+msgstr "파ì¼ë¡œë¶€í„° 설치"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Remove Template"
-msgstr "ì•„ì´í…œ ì‚­ì œ"
+msgstr "템플릿 제거"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Select template file"
-msgstr "ì„ íƒëœ 파ì¼ë“¤ì„ 삭제하시겠습니까?"
+msgstr "템플릿 íŒŒì¼ ì„ íƒ"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Export Template Manager"
-msgstr "내보내기 템플릿 로딩 중"
+msgstr "내보내기 템플릿 매니저"
#: editor/file_type_cache.cpp
msgid "Can't open file_type_cache.cch for writing, not saving file type cache!"
@@ -2544,105 +2409,110 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
-msgstr "저장 ë° ë‹¤ì‹œ 가져오기"
+"Status: Import of file failed. Please fix file and reimport manually."
+msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid ""
"\n"
"Source: "
-msgstr "소스:"
+msgstr ""
+"\n"
+"소스: "
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
-msgstr "소스와 ëŒ€ìƒ íŒŒì¼ì´ ë™ì¼í•˜ì—¬, 무시ë©ë‹ˆë‹¤."
+msgid "Cannot move/rename resources root."
+msgstr "리소스 루트를 옮기거나 ì´ë¦„ì„ ë³€ê²½í•  수 없습니다."
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
-msgstr ""
+msgid "Cannot move a folder into itself.\n"
+msgstr "í´ë”를 ìžì‹ ì˜ 하위로 ì´ë™í•  수 없습니다.\n"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
-msgstr "소스와 ëŒ€ìƒ ê²½ë¡œê°€ ë™ì¼í•˜ì—¬, 무시ë©ë‹ˆë‹¤."
+msgid "Error moving:\n"
+msgstr "ì´ë™ ì—러:\n"
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
-msgstr "디렉토리를 ìžì‹ ìœ¼ë¡œ ì´ë™í•  수 없습니다."
+msgid "Unable to update dependencies:\n"
+msgstr "종ì†í•­ëª©ì„ ì—…ë°ì´íЏ í•  수 없습니다:\n"
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "No name provided"
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error moving file:\n"
-msgstr "ì´ë¯¸ì§€ 로드 ì—러:"
+msgid "Provided name contains invalid characters"
+msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "가져오기 ì—러:"
+msgid "No name provided."
+msgstr "ì´ë¦„ì´ ì œê³µë˜ì§€ 않았습니다."
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
-msgstr "'..'ì— ìˆ˜í–‰í•  수 ì—†ìŒ"
+msgid "Name contains invalid characters."
+msgstr "ì´ë¦„ì— ìœ íš¨í•˜ì§€ ì•Šì€ ë¬¸ìžê°€ 있습니다."
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
-msgstr "새로운 ì´ë¦„ê³¼ 위치를 고르세요:"
+msgid "A file or folder with this name already exists."
+msgstr "파ì¼ì´ë‚˜ í´ë”ê°€ 해당 ì´ë¦„ì„ ì‚¬ìš©ì¤‘ìž…ë‹ˆë‹¤."
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
-msgstr "파ì¼ì´ ì„ íƒë˜ì§€ 않았습니다!"
+msgid "Renaming file:"
+msgstr "파ì¼ëª… 변경:"
+
+#: editor/filesystem_dock.cpp
+msgid "Renaming folder:"
+msgstr "í´ë”명 변경:"
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid "Expand all"
-msgstr "부모로 확장"
+msgstr "ëª¨ë‘ í™•ìž¥"
#: editor/filesystem_dock.cpp
msgid "Collapse all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
-msgstr "íŒŒì¼ ë§¤ë‹ˆì €ì—서 보기"
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
-msgstr "ì¸ìŠ¤í„´ìŠ¤"
+msgid "Copy Path"
+msgstr "경로 복사"
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
-msgstr "ì¢…ì† ê´€ê³„ 편집.."
+msgid "Rename.."
+msgstr "ì´ë¦„ 변경.."
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
-msgstr "ì†Œìœ ìž ë³´ê¸°.."
+msgid "Move To.."
+msgstr "ì´ë™.."
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr "경로 복사"
+msgid "New Folder.."
+msgstr "새 í´ë”.."
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
-msgstr "ì´ë¦„ 변경 ë˜ëŠ” ì´ë™.."
+msgid "Show In File Manager"
+msgstr "íŒŒì¼ ë§¤ë‹ˆì €ì—서 보기"
#: editor/filesystem_dock.cpp
-msgid "Move To.."
-msgstr "ì´ë™.."
+msgid "Instance"
+msgstr "ì¸ìŠ¤í„´ìŠ¤"
#: editor/filesystem_dock.cpp
-msgid "Info"
-msgstr "ì •ë³´"
+msgid "Edit Dependencies.."
+msgstr "ì¢…ì† ê´€ê³„ 편집.."
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
-msgstr "다시 가져오기.."
+msgid "View Owners.."
+msgstr "ì†Œìœ ìž ë³´ê¸°.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2674,6 +2544,11 @@ msgstr ""
msgid "Move"
msgstr "ì´ë™"
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr "ì´ë¦„ 변경"
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr "ê·¸ë£¹ì— ì¶”ê°€"
@@ -2683,9 +2558,12 @@ msgid "Remove from Group"
msgstr "그룹ì—서 제거"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Import as Single Scene"
-msgstr "씬 가져오는 중.."
+msgstr "ë‹¨ì¼ ì”¬ìœ¼ë¡œ 가져오기"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr "애니메ì´ì…˜ì„ 분리시켜 가져오기"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
@@ -2700,48 +2578,52 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
-msgstr "3D 씬 가져오기"
+msgstr "ì—¬ëŸ¬ê°œì˜ ì”¬ìœ¼ë¡œ 가져오기"
#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr "씬 가져오기"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr "씬 가져오는 중.."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr "ì‚¬ìš©ìž ì •ì˜ ìŠ¤í¬ë¦½íЏ 실행중.."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr "가져오기 후 실행할 스í¬ë¦½íŠ¸ë¥¼ 로드할 수 없습니다:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
"가져오기 후 실행할 스í¬ë¦½íŠ¸ê°€ 유효하지 않거나 깨져있습니다 (콘솔 확ì¸):"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr "가져오기 후 실행할 스í¬ë¦½íЏ 실행 중 ì—러:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr "저장 중.."
@@ -2754,595 +2636,21 @@ msgid "Clear Default for '%s'"
msgstr ""
#: editor/import_dock.cpp
-#, fuzzy
msgid " Files"
-msgstr "파ì¼"
+msgstr " 파ì¼"
#: editor/import_dock.cpp
-#, fuzzy
msgid "Import As:"
-msgstr "가져오기"
+msgstr "ë‹¤ìŒ í˜•ì‹ìœ¼ë¡œ 가져오기:"
#: editor/import_dock.cpp editor/property_editor.cpp
msgid "Preset.."
msgstr "프리셋.."
#: editor/import_dock.cpp
-#, fuzzy
msgid "Reimport"
msgstr "다시 가져오기"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr "가져올 비트 마스í¬ê°€ 없습니다!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr "ëŒ€ìƒ ê²½ë¡œê°€ 없습니다."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr "ëŒ€ìƒ ê²½ë¡œëŠ” 완전한 리소스 경로여야 합니다."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr "ëŒ€ìƒ ê²½ë¡œê°€ 존재해야 합니다."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr "저장 경로가 없습니다!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr "ë¹„íŠ¸ë§ˆìŠ¤í¬ ê°€ì ¸ì˜¤ê¸°"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr "소스 í…스ì³:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr "ëŒ€ìƒ ê²½ë¡œ:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr "수ë½"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr "비트 마스í¬"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr "소스 í°íЏ 파ì¼ì´ 없습니다!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr "í°íЏ 리소스 경로가 없습니다!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-"유효하지 ì•Šì€ íŒŒì¼ í™•ìž¥ìž.\n"
-".fnt 를 사용하세요."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr "소스 í°íŠ¸ë¥¼ 로드/처리할 수 없습니다."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr "í°íŠ¸ë¥¼ 저장할 수 없습니다."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr "소스 í°íЏ:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr "소스 í°íЏ í¬ê¸°:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr "리소스 경로:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
-"The quick brown fox jumps over the lazy dog.\n"
-"ë‹¤ëžŒì¥ í—Œ ì³‡ë°”í€´ì— íƒ€ê³ íŒŒ."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr "테스트:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr "옵션:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr "í°íЏ 가져오기"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr "ì´ íŒŒì¼ì€ ì´ë¯¸ Godot í°íЏ 파ì¼ìž…니다. BMFont 파ì¼ì„ ì„ íƒí•˜ì„¸ìš”."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr "BMFont 파ì¼ì„ ì—¬ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr "FreeType 초기화 ì—러."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "알 수 없는 í°íЏ í¬ë©§."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "í°íЏ 로딩 ì—러."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr "유요하지 ì•Šì€ í°íЏ 사ì´ì¦ˆ."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr "ì‚¬ìš©ìž ì§€ì • í°íЏ 소스가 유효하지 않습니다."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "í°íЏ"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr "가져올 메쉬가 없습니다!"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr "ë‹¨ì¼ ë©”ì‰¬ 가져오기"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr "소스 메쉬:"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr "메쉬"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "서페ì´ìФ %d"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr "가져올 ìƒ˜í”Œì´ ì—†ìŠµë‹ˆë‹¤!"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr "오디오 샘플 가져오기"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr "소스 샘플:"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr "오디오 샘플"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr "새 í´ë¦½"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr "애니메ì´ì…˜ 옵션"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr "플래그"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr "FPS 설정:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr "최ì í™”"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr "최대 선형 오류"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr "최대 ê°ë„ 오류"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr "최대 ê°ë„"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr "í´ë¦½"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr "시작(초)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr "ë(ì´ˆ)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr "루프"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr "í•„í„°"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr "소스 경로가 비어있습니다."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr "가져오기 후 실행할 스í¬ë¦½íŠ¸ë¥¼ 로드할 수 없습니다."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr "가져오기 후 실행할 스í¬ë¦½íŠ¸ê°€ 유효하지 않거나 깨져있습니다."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr "씬 가져오기 ì—러."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr "3D 씬 가져오기"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr "소스 씬:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr "ëŒ€ìƒ ì”¬ê³¼ ê°™ìŒ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr "공유ë¨"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr "ëŒ€ìƒ í…ìŠ¤ì³ í´ë”:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr "가져오기 후 수행할 스í¬ë¦½íЏ:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr "ì‚¬ìš©ìž ì •ì˜ ë£¨íŠ¸ 노드 타입:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr "ìžë™"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr "루트 노드 ì´ë¦„:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr "다ìŒì˜ 파ì¼ë“¤ì´ 빠져있습니다:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr "무시하고 가져오기"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "취소"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr "가져오기 후 열기"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr "íŽ¸ì§‘ëœ ì”¬ì´ ì €ìž¥ë˜ì§€ 않았습니다. 무시하고 가져온 ì”¬ì„ ì—¬ì‹œê² ìŠµë‹ˆê¹Œ?"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr "ì´ë¯¸ì§€ 가져오기:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr "ìžì‹ ì„ 가져올 수 없습니다:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr "경로를 로컬 경로로 바꿀 수 없습니다: %s (ì´ë¯¸ 로컬 경로)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr "3D 씬 애니메ì´ì…˜"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr "무압축"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr "무ì†ì‹¤ ì••ì¶• (PNG)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr "ì†ì‹¤ ì••ì¶• (PNG)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr "ì••ì¶• (VRAM)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr "í…ìŠ¤ì³ í¬ë©§"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr "í…ìŠ¤ì³ ì••ì¶• 품질 (WebP):"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr "í…ìŠ¤ì³ ì˜µì…˜"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr "파ì¼ì„ 지정하세요!"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr "ì•„í‹€ë¼ìФ ìƒì„±ì„ 위해서는 최소 1ê°œ ì´ìƒì˜ 파ì¼ì´ 필요합니다."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr "가져오기 ì—러:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr "í° í…스ì³ë¥¼ 위해서는 단 í•˜ë‚˜ì˜ íŒŒì¼ë§Œ 요구ë©ë‹ˆë‹¤."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr "최대 í…ìŠ¤ì³ ì‚¬ì´ì¦ˆ:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr "ì•„í‹€ë¼ìŠ¤ë¥¼ 위한 í…ìŠ¤ì³ ê°€ì ¸ì˜¤ê¸° (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr "쎌 사ì´ì¦ˆ:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr "í° í…스ì³"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr "í° í…ìŠ¤ì³ ê°€ì ¸ì˜¤ê¸° (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
-msgstr "소스 í…스ì³"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
-msgstr "기본 ì•„í‹€ë¼ìФ í…스ì³"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
-msgstr "소트 í…스ì³"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
-msgstr "2D í…ìŠ¤ì³ ê°€ì ¸ì˜¤ê¸°"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
-msgstr "3D í…ìŠ¤ì³ ê°€ì ¸ì˜¤ê¸°"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
-msgstr "í…ìŠ¤ì³ ê°€ì ¸ì˜¤ê¸°"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
-msgstr "2D í…스ì³"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
-msgstr "3D í…스ì³"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
-msgstr "í…ìŠ¤ì³ ì•„í‹€ë¼ìФ"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-"알림: 2D í…ìŠ¤ì³ ê°€ì ¸ì˜¤ê¸°ê°€ 필수는 아닙니다. png/jpg 파ì¼ë“¤ì„ 프로ì íŠ¸ì— ë³µì‚¬"
-"해서 ì‚¬ìš©í•´ë„ ë©ë‹ˆë‹¤."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr "빈 ì˜ì—­ 잘ë¼ë‚´ê¸°."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr "í…스ì³"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr "í° í…ìŠ¤ì³ ê°€ì ¸ì˜¤ê¸°"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr "소스 ì´ë¯¸ì§€ 로드"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr "ìžë¥´ëŠ” 중"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr "삽입 중"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr "저장 중"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr "í° í…스ì³ë¥¼ 저장할 수 ì—†ìŒ:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr "ì•„í‹€ë¼ìФ ìƒì„±:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr "ì´ë¯¸ì§€ 로딩:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr "ì´ë¯¸ì§€ë¥¼ 로드할 수 ì—†ìŒ:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr "ì´ë¯¸ì§€ 변환 중"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr "ì´ë¯¸ì§€ ìžë¥´ëŠ” 중"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr "ì´ë¯¸ì§€ 병합 중"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr "ì•„í‹€ë¼ìФ ì´ë¯¸ì§€ë¥¼ 저장할 수 ì—†ìŒ:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr "ë³€í™˜ëœ í…스ì³ë¥¼ 저장할 수 ì—†ìŒ:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr "유효하지 ì•Šì€ ì†ŒìŠ¤!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr "유효하지 ì•Šì€ ë²ˆì—­ 소스!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr "ì—´"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr "언어"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr "가져올 í•­ëª©ì´ ì—†ìŠµë‹ˆë‹¤!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr "ëŒ€ìƒ ê²½ë¡œê°€ 없습니다!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr "번역 가져오기"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr "가져올 수 없습니다!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr "번역 가져오기"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr "소스 CSV:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr "첫째줄 무시"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr "ì••ì¶•"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
-msgid "Add to Project (project.godot)"
-msgstr "프로ì íŠ¸ì— ì¶”ê°€ (engine.cfg)"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr "언어 가져오기:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr "번역"
-
#: editor/multi_node_edit.cpp
msgid "MultiNode Set"
msgstr "다중 노드 설정"
@@ -3355,6 +2663,44 @@ msgstr "그룹"
msgid "Select a Node to edit Signals and Groups."
msgstr "시그ë„ê³¼ ê·¸ë£¹ì„ íŽ¸ì§‘í•  노드를 ì„ íƒí•˜ì„¸ìš”."
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
+msgstr "í´ë¦¬ê³¤ ìƒì„±"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "í´ë¦¬ê³¤ 편집"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
+msgstr "í¬ì¸íЏ 삽입"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "í´ë¦¬ê³¤ 편집 (ì  ì‚­ì œ)"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
+msgstr "í´ë¦¬ê³¤ê³¼ í¬ì¸íЏ ì‚­ì œ"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
+msgstr "처ìŒë¶€í„° 새로운 í´ë¦¬ê³¤ 만들기."
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Toggle Autoplay"
msgstr "ìžë™ ìž¬ìƒ ì „í™˜"
@@ -3372,9 +2718,8 @@ msgid "Change Animation Name:"
msgstr "애니메ì´ì…˜ ì´ë¦„ 변경:"
#: editor/plugins/animation_player_editor_plugin.cpp
-#, fuzzy
msgid "Delete Animation?"
-msgstr "애니메ì´ì…˜ 복제하기"
+msgstr "애니메ì´ì…˜ì„ 삭제하시겠습니까?"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
@@ -3509,7 +2854,6 @@ msgstr "애니메ì´ì…˜ ì´ë¦„:"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3537,9 +2881,8 @@ msgid "New name:"
msgstr "새 ì´ë¦„:"
#: editor/plugins/animation_tree_editor_plugin.cpp
-#, fuzzy
msgid "Edit Filters"
-msgstr "노드 필터 편집"
+msgstr "필터 편집"
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
@@ -3620,10 +2963,6 @@ msgid "Delete Input"
msgstr "입력 삭제"
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr "ì´ë¦„ 변경"
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr "애니메ì´ì…˜ 트리가 유효합니다."
@@ -3679,64 +3018,181 @@ msgstr "노드 필터 편집"
msgid "Filters.."
msgstr "í•„í„°.."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
-msgstr "%dê°œ 삼ê°í˜• ë¶„ì„ ì¤‘:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
+msgstr "컨í…츠:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
-msgstr "삼ê°í˜• #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
+msgstr "íŒŒì¼ ë³´ê¸°"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
-msgstr "ë¼ì´íЏ ë² ì´ì»¤ 설정:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
+msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
-msgstr "지오미트리 ë¶„ì„ ì¤‘"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
+msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
-msgstr "ë¼ì´íЏ 수정 중"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "ì—°ê²°í•  수 ì—†ìŒ."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
-msgstr "BVH 만드는 중"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
+msgstr "í˜¸ìŠ¤íŠ¸ì— ì—°ê²°í•  수 ì—†ìŒ:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
-msgstr "ë¼ì´íЏ 오í¬íŠ¸ë¦¬ ìƒì„± 중"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
+msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
-msgstr "오í¬íŠ¸ë¦¬ í…ìŠ¤ì³ ìƒì„± 중"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
-msgstr "ë¼ì´íŠ¸ë§µìœ¼ë¡œ 전송:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
+msgstr "요청 실패, 리턴 코드:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
-msgstr "í…ìŠ¤ì³ í• ë‹¹ 중 #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
+msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
-msgstr "삼ê°í˜• 굽는 중 #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
+msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
-msgstr "í…ìŠ¤ì³ í›„ì²˜ë¦¬ 중 #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
+msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
-msgstr "굽기!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
-msgstr "ë¼ì´íŠ¸ë§µ 오í¬íŠ¸ë¦¬ 굽기 프로세스 재설정 (처ìŒë¶€í„° 다시)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr "해결 중.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting.."
+msgstr "연결중.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr "요청중.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
+msgstr "요청 ì—러"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr "다운로드 ì—러"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "모ë‘"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr "플러그ì¸"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "ì •ë ¬:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr "뒤집기"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "카테고리:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "사ì´íЏ:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr "ì§€ì›.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "ê³µì‹"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr "테스팅"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr "ì—ì…‹ ZIP 파ì¼"
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr "미리보기"
@@ -3779,12 +3235,16 @@ msgid "Edit CanvasItem"
msgstr "CanvasItem 편집"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
-msgstr "앵커 변경"
+msgid "Anchors only"
+msgstr "앵커만"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
-msgstr "확대 (%):"
+msgid "Change Anchors and Margins"
+msgstr "앵커와 마진 변경"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors"
+msgstr "앵커 변경"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Paste Pose"
@@ -3836,60 +3296,73 @@ msgid "Pan Mode"
msgstr "팬 모드"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
-msgstr "ì„ íƒëœ 오브ì íŠ¸ë¥¼ 잠급니다 (ì´ë™ë¶ˆê°€)."
+msgid "Toggles snapping"
+msgstr "스냅 토글"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
-msgstr "ì„ íƒëœ 오브ì íŠ¸ë¥¼ 잠금 해제합니다 (ì´ë™ê°€ëŠ¥)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
+msgstr "스냅 사용"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
-msgstr "오브ì íŠ¸ì˜ ìžì‹ë…¸ë“œê°€ ì„ íƒë  수 ì—†ë„ë¡ ì„¤ì •í•©ë‹ˆë‹¤."
+msgid "Snapping options"
+msgstr "스냅 옵션"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
-msgstr "오브ì íŠ¸ì˜ ìžì‹ë…¸ë“œê°€ ì„ íƒë  수 있ë„ë¡ ë³µì›í•©ë‹ˆë‹¤."
+msgid "Snap to grid"
+msgstr "ê·¸ë¦¬ë“œì— ë§žì¶¤"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "편집"
+msgid "Use Rotation Snap"
+msgstr "회전 스냅 사용"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
-msgstr "스냅 사용"
+msgid "Configure Snap..."
+msgstr "스냅 설정..."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
-msgstr "그리드 ë³´ì´ê¸°"
+msgid "Snap Relative"
+msgstr "ìƒëŒ€ì ì¸ 스냅"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
-msgstr "회전 스냅 사용"
+msgid "Use Pixel Snap"
+msgstr "픽셀 스냅 사용"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
-msgstr "ìƒëŒ€ì ì¸ 스냅"
+msgid "Smart snapping"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
-msgstr "스냅 설정.."
+msgid "Snap to parent"
+msgstr "ë¶€ëª¨ì— ë§žì¶¤"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
-msgstr "픽셀 스냅 사용"
+msgid "Snap to node anchor"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
-msgstr "스켈레톤.."
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr "ì„ íƒëœ 오브ì íŠ¸ë¥¼ 잠급니다 (ì´ë™ë¶ˆê°€)."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr "ì„ íƒëœ 오브ì íŠ¸ë¥¼ 잠금 해제합니다 (ì´ë™ê°€ëŠ¥)."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
+msgstr "오브ì íŠ¸ì˜ ìžì‹ë…¸ë“œê°€ ì„ íƒë  수 ì—†ë„ë¡ ì„¤ì •í•©ë‹ˆë‹¤."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
+msgstr "오브ì íŠ¸ì˜ ìžì‹ë…¸ë“œê°€ ì„ íƒë  수 있ë„ë¡ ë³µì›í•©ë‹ˆë‹¤."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Make Bones"
@@ -3917,12 +3390,17 @@ msgid "View"
msgstr "보기"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
-msgstr "확대 초기화"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr "그리드 ë³´ì´ê¸°"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
-msgstr "확대 설정.."
+msgid "Show helpers"
+msgstr "í—¬í¼ ë³´ê¸°"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show rulers"
+msgstr "ìž ë³´ê¸°"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -3933,8 +3411,8 @@ msgid "Frame Selection"
msgstr "ì„ íƒí•­ëª© 화면 꽉차게 표시"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
-msgstr "앵커"
+msgid "Layout"
+msgstr "ë ˆì´ì•„웃"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Keys"
@@ -3957,12 +3435,20 @@ msgid "Clear Pose"
msgstr "í¬ì¦ˆ 정리"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
-msgstr "값 설정"
+msgid "Drag pivot from mouse position"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Set pivot at mouse position"
+msgstr "마우스 ìœ„ì¹˜ì— í”¼ë²— 설정"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
-msgstr "스냅 (픽셀):"
+msgid "Multiply grid step by 2"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Divide grid step by 2"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
@@ -3972,23 +3458,28 @@ msgstr "%s 추가"
msgid "Adding %s..."
msgstr "%s 추가중..."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr "노드 ìƒì„±"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr "'%s' 로부터 씬 ì¸ìŠ¤í„´ìŠ¤ 중 ì—러"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr "넹 :("
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr "ì„ íƒëœ 부모 노드가 없어서 ìžì‹ë…¸ë“œë¥¼ ì¸ìŠ¤í„´ìŠ¤í•  수 없습니다."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr "ì´ ìž‘ì—…ì€ í•˜ë‚˜ì˜ ì„ íƒëœ 노드를 필요로 합니다."
@@ -4004,45 +3495,6 @@ msgstr ""
"드래그 & ë“œëž + 쉬프트 : 형제 노드로 추가\n"
"드래그 & ë“œëž + 알트 : 노드 타입 변경"
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr "í´ë¦¬ê³¤ ìƒì„±"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr "í´ë¦¬ê³¤ 편집"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr "í´ë¦¬ê³¤ 편집 (ì  ì‚­ì œ)"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "처ìŒë¶€í„° 새로운 í´ë¦¬ê³¤ 만들기."
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "í´ë¦¬ê³¤3D 만들기"
@@ -4052,14 +3504,6 @@ msgid "Set Handle"
msgstr "핸들 설정"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr "메쉬 ë¼ì´ë¸ŒëŸ¬ë¦¬ ìƒì„± 중"
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr "ì¸ë„¤ì¼.."
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr "%d í•­ëª©ì„ ì‚­ì œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?"
@@ -4082,49 +3526,60 @@ msgid "Update from Scene"
msgstr "씬으로부터 갱신하기"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease in"
+msgstr "Ease in"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr "Ease out"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
-msgstr "커브맵 수정"
+msgstr "커브 í¬ì¸íЏ 수정"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Modify Curve Tangent"
-msgstr "커브맵 수정"
+msgstr "커브 탄젠트 수정"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Load Curve Preset"
-msgstr "리소스 로드"
+msgstr "커브 프리셋 로드"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Add point"
-msgstr "입력 추가"
+msgstr "í¬ì¸íЏ 추가"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Remove point"
-msgstr "경로 í¬ì¸íЏ ì‚­ì œ"
+msgstr "í¬ì¸íЏ 제거"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Left linear"
-msgstr "ì§ì„ í˜•"
+msgstr "왼쪽 선형"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Right linear"
-msgstr "우측 뷰"
+msgstr "오른쪽 선형"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Load preset"
-msgstr "리소스 로드"
+msgstr "프리셋 로드"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Remove Curve Point"
-msgstr "경로 í¬ì¸íЏ ì‚­ì œ"
+msgstr "커프 í¬ì¸íЏ ì‚­ì œ"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Toggle Curve Linear Tangent"
@@ -4166,39 +3621,32 @@ msgid "Create Occluder Polygon"
msgstr "Occluder í´ë¦¬ê³¤ 만들기"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr "기존 í´ë¦¬ê³¤ 편집:"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr "좌í´ë¦­: í¬ì¸íЏ ì´ë™."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr "컨트롤+좌í´ë¦­: 세그먼트 ë¶„í• ."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr "ìš°í´ë¦­: í¬ì¸íЏ ì‚­ì œ."
#: editor/plugins/line_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove Point from Line2D"
-msgstr "커브ì—서 í¬ì¸íЏ ì‚­ì œ"
+msgstr "Line2Dì—서 í¬ì¸íЏ ì‚­ì œ"
#: editor/plugins/line_2d_editor_plugin.cpp
-#, fuzzy
msgid "Add Point to Line2D"
-msgstr "ì»¤ë¸Œì— í¬ì¸íЏ 추가"
+msgstr "Line2Dì— í¬ì¸íЏ 추가"
#: editor/plugins/line_2d_editor_plugin.cpp
-#, fuzzy
msgid "Move Point in Line2D"
-msgstr "ì»¤ë¸Œì˜ í¬ì¸íЏ ì´ë™"
+msgstr "Line2Dì˜ í¬ì¸íЏ ì´ë™"
#: editor/plugins/line_2d_editor_plugin.cpp
#: editor/plugins/path_2d_editor_plugin.cpp
@@ -4231,9 +3679,8 @@ msgid "Add Point (in empty space)"
msgstr "í¬ì¸íЏ 추가 (빈 공간)"
#: editor/plugins/line_2d_editor_plugin.cpp
-#, fuzzy
msgid "Split Segment (in line)"
-msgstr "세그먼트 분할 (커브)"
+msgstr "세그먼트 ë¶„í•  (ë¼ì¸)"
#: editor/plugins/line_2d_editor_plugin.cpp
#: editor/plugins/path_2d_editor_plugin.cpp
@@ -4286,6 +3733,10 @@ msgid "Create Outline"
msgstr "외곽선 만들기"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr "메쉬"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr "Trimesh Static Body 만들기"
@@ -4413,23 +3864,83 @@ msgstr "ìž„ì˜ í¬ê¸°:"
msgid "Populate"
msgstr "ìƒì„±"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr "굽기!"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr "네비게ì´ì…˜ 메쉬 만들기.\n"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr "네비게ì´ì…˜ 메쉬 지우기."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr "Heightfield ìƒì„± 중..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Marking walkable triangles..."
+msgstr "걷기 가능한 트ë¼ì´ì•µê¸€ 표시 중..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Partitioning..."
+msgstr "분할중..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr "윤곽선 ìƒì„± 중..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr "í´ë¦¬ 메쉬 ìƒì„± 중..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr "네ì´í‹°ë¸Œ 네비게ì´ì…˜ 메쉬로 변환 중..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr "지오미트리 ë¶„ì„ ì¤‘..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
+msgstr ""
+
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Create Navigation Polygon"
msgstr "네비게ì´ì…˜ í´ë¦¬ê³¤ 만들기"
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
-msgstr "í´ë¦¬ê³¤ê³¼ í¬ì¸íЏ ì‚­ì œ"
-
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Clear Emission Mask"
msgstr "ì—미션 ë§ˆìŠ¤í¬ ì •ë¦¬"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generating AABB"
-msgstr "AABB ìƒì„±"
+msgstr "AABB ìƒì„± 중"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
@@ -4457,9 +3968,8 @@ msgstr "ì—미션 ë§ˆìŠ¤í¬ ë¡œë“œ"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Particles"
-msgstr "버í…스"
+msgstr "파티í´"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
@@ -4467,24 +3977,20 @@ msgstr "ìƒì„±ëœ í¬ì¸íЏ 개수:"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generation Time (sec):"
-msgstr "í‰ê·  시간 (ì´ˆ)"
+msgstr "ìƒì„± 시간 (ì´ˆ):"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Emission Mask"
-msgstr "ì—미션 ë§ˆìŠ¤í¬ ì„¤ì •"
+msgstr "ì—미션 마스í¬"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Capture from Pixel"
-msgstr "씬으로부터 만들기"
+msgstr "픽셀로부터 캡ì³"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Emission Colors"
-msgstr "ì—미션 위치:"
+msgstr "ì—미션 ì¹¼ë¼"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Node does not contain geometry."
@@ -4511,14 +4017,12 @@ msgid "Generate AABB"
msgstr "AABB ìƒì„±"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Create Emission Points From Mesh"
-msgstr "메쉬로부터 ì—미터 만들기"
+msgstr "메쉬로부터 ì—미션 í¬ì¸íЏ 만들기"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Create Emission Points From Node"
-msgstr "노드로부터 ì—미터 만들기"
+msgstr "노드로부터 ì—미터 í¬ì¸íЏ 만들기"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Clear Emitter"
@@ -4529,14 +4033,12 @@ msgid "Create Emitter"
msgstr "ì—미터 만들기"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Emission Points:"
-msgstr "ì—미션 위치:"
+msgstr "ì—미션 í¬ì¸íЏ:"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Surface Points"
-msgstr "서페ì´ìФ %d"
+msgstr "서페ì´ìФ í¬ì¸íЏ"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Surface Points+Normal (Directed)"
@@ -4547,9 +4049,8 @@ msgid "Volume"
msgstr "배출량"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Emission Source: "
-msgstr "ì—미션 채움:"
+msgstr "ì—미션 소스: "
#: editor/plugins/particles_editor_plugin.cpp
#, fuzzy
@@ -4561,14 +4062,12 @@ msgid "Remove Point from Curve"
msgstr "커브ì—서 í¬ì¸íЏ ì‚­ì œ"
#: editor/plugins/path_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove Out-Control from Curve"
-msgstr "ì»¤ë¸Œì˜ ì•„ì›ƒ-컨트롤 ì´ë™"
+msgstr "ì»¤ë¸Œì˜ ì•„ì›ƒ-컨트롤 ì‚­ì œ"
#: editor/plugins/path_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove In-Control from Curve"
-msgstr "커브ì—서 í¬ì¸íЏ ì‚­ì œ"
+msgstr "ì»¤ë¸Œì˜ ì¸-컨트롤 ì‚­ì œ"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
@@ -4611,11 +4110,11 @@ msgstr "커브 í¬ì¸íЏ 위치 설정"
#: editor/plugins/path_editor_plugin.cpp
msgid "Set Curve In Position"
-msgstr "커브 í¬ì¸íЏ In 설정"
+msgstr "ì»¤ë¸Œì˜ In 위치 설정"
#: editor/plugins/path_editor_plugin.cpp
msgid "Set Curve Out Position"
-msgstr "커브 í¬ì¸íЏ Out 설정"
+msgstr "ì»¤ë¸Œì˜ Out 위치 설정"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4626,14 +4125,12 @@ msgid "Remove Path Point"
msgstr "경로 í¬ì¸íЏ ì‚­ì œ"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Remove Out-Control Point"
-msgstr "ì»¤ë¸Œì˜ ì•„ì›ƒ-컨트롤 ì´ë™"
+msgstr "아웃-컨트롤 í¬ì¸íЏ ì‚­ì œ"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Remove In-Control Point"
-msgstr "ì»¤ë¸Œì˜ ì¸-컨트롤 ì´ë™"
+msgstr "ì¸-컨트롤 í¬ì¸íЏ ì‚­ì œ"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
@@ -4676,6 +4173,14 @@ msgid "Scale Polygon"
msgstr "í´ë¦¬ê³¤ í¬ê¸° ì¡°ì ˆ"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "편집"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr "í´ë¦¬ê³¤->UV"
@@ -4730,73 +4235,21 @@ msgstr "리소스 로드"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "붙여넣기"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr "BBCode ì½ê¸°"
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr "길ì´:"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr "샘플 íŒŒì¼ ì—´ê¸°"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr "ì—러: ìƒ˜í”Œì„ ë¡œë“œí•  수 없습니다!"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr "샘플 추가"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr "샘플 ì´ë¦„ 변경"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr "샘플 삭제"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr "16 비트"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr "8 비트"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr "스테레오"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr "모노"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr "í¬ë©§"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr "피치"
-
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Clear Recent Files"
-msgstr "Bones 없애기"
+msgstr "최근 íŒŒì¼ ì§€ìš°ê¸°"
#: editor/plugins/script_editor_plugin.cpp
msgid ""
"Close and save changes?\n"
"\""
msgstr ""
+"ë³€ê²½ì‚¬í•­ì„ ì €ìž¥í•˜ê³  닫겠습니까?\n"
+"\""
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4878,10 +4331,13 @@ msgstr "문서 닫기"
msgid "Close All"
msgstr "ëª¨ë‘ ë‹«ê¸°"
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr "실행"
+
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Toggle Scripts Panel"
-msgstr "ì¦ê²¨ì°¾ê¸° 토글"
+msgstr "스í¬ë¦½íЏ íŒ¨ë„ í† ê¸€"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -4907,7 +4363,8 @@ msgstr "프로시저 단위 실행"
msgid "Break"
msgstr "ì •ì§€"
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr "계ì†"
@@ -4916,26 +4373,12 @@ 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 "Window"
-msgstr "윈ë„ìš°"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr "왼쪽으로 ì´ë™"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr "오른쪽으로 ì´ë™"
-
-#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Open Godot online documentation"
-msgstr "ë ˆí¼ëŸ°ìФ 문서 검색."
+msgstr "Godot 온ë¼ì¸ 문서 열기"
#: editor/plugins/script_editor_plugin.cpp
msgid "Search the class hierarchy."
@@ -4954,9 +4397,8 @@ msgid "Go to next edited document."
msgstr "ë‹¤ìŒ íŽ¸ì§‘ 문서로 ì´ë™."
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Discard"
-msgstr "비연ì†ì ì¸"
+msgstr "저장 안함"
#: editor/plugins/script_editor_plugin.cpp
msgid "Create Script"
@@ -4996,9 +4438,8 @@ msgid "Pick Color"
msgstr "ìƒ‰ìƒ ì„ íƒ"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Case"
-msgstr "ì´ë¯¸ì§€ 변환 중"
+msgstr "ëŒ€ì†Œë¬¸ìž ë³€í™˜"
#: editor/plugins/script_text_editor.cpp
msgid "Uppercase"
@@ -5019,8 +4460,9 @@ msgid "Cut"
msgstr "잘ë¼ë‚´ê¸°"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "복사하기"
@@ -5039,9 +4481,8 @@ msgid "Move Down"
msgstr "아래로 ì´ë™"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Delete Line"
-msgstr "í¬ì¸íЏ ì‚­ì œ"
+msgstr "ë¼ì¸ ì‚­ì œ"
#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
@@ -5097,14 +4538,12 @@ msgid "Goto Previous Breakpoint"
msgstr "ì´ì „ 중단ì ìœ¼ë¡œ ì´ë™"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert To Uppercase"
-msgstr "변환.."
+msgstr "대문ìžë¡œ 변환"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert To Lowercase"
-msgstr "변환.."
+msgstr "소문ìžë¡œ 변환"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
@@ -5286,10 +4725,6 @@ msgid "View Plane Transform."
msgstr "ë·° í‰ë©´ 변형."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr "%s%%로 í¬ê¸° 변경."
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr "%së„로 회전."
@@ -5306,10 +4741,6 @@ msgid "Top View."
msgstr "윗면 보기."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr "윗면"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr "뒷면 보기."
@@ -5354,28 +4785,24 @@ msgid "Objects Drawn"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Material Changes"
-msgstr "변경사항만 갱신"
+msgstr "머터리얼 변경"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Shader Changes"
-msgstr "변경사항만 갱신"
+msgstr "ì…°ì´ë” 변경"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Surface Changes"
-msgstr "변경사항만 갱신"
+msgstr "서피스 변경"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Draw Calls"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Vertices"
-msgstr "버í…스"
+msgstr "버틱스"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -5394,19 +4821,16 @@ msgid "Display Overdraw"
msgstr "Overdraw 표시"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Display Unshaded"
-msgstr "Shadeless 표시"
+msgstr "ìŒì˜ ì—†ì´ í‘œì‹œ"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Environment"
-msgstr "환경"
+msgstr "환경 보기"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Gizmos"
-msgstr "기즈모"
+msgstr "기즈모 보기"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Information"
@@ -5417,9 +4841,8 @@ msgid "Audio Listener"
msgstr "오디오 리스너"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Doppler Enable"
-msgstr "활성화"
+msgstr "ë„플러 활성화"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
@@ -5430,30 +4853,26 @@ msgid "Freelook Right"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Freelook Forward"
-msgstr "앞으로 가기"
+msgstr "ìžìœ ì‹œì  앞으로 ì´ë™"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Freelook Backwards"
-msgstr "뒤로"
+msgstr "ìžìœ ì‹œì  뒤로 ì´ë™"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Up"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Freelook Down"
-msgstr "휠 아래로."
+msgstr "ìžìœ ì‹œì  아래로 ì´ë™"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Speed Modifier"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "preview"
msgstr "미리보기"
@@ -5462,17 +4881,18 @@ msgid "XForm Dialog"
msgstr "변환 다ì´ì–¼ë¡œê·¸"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Select Mode (Q)\n"
-msgstr "ì„ íƒ ëª¨ë“œ"
+msgstr "ì„ íƒ ëª¨ë“œ (Q)\n"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid ""
"Drag: Rotate\n"
"Alt+Drag: Move\n"
"Alt+RMB: Depth list selection"
-msgstr "알트+ìš°í´ë¦­: 겹친 오브ì íЏ ì„ íƒ"
+msgstr ""
+"드래그: 회전\n"
+"알트+드래그: ì´ë™\n"
+"알트+ìš°í´ë¦­: 겹친 오브ì íЏ ì„ íƒ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
@@ -5531,30 +4951,30 @@ msgid "Align Selection With View"
msgstr "ì„ íƒ í•­ëª©ì„ ë·°ì— ì •ë ¬"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Select"
-msgstr "ì„ íƒ"
+msgstr "ì„ íƒ íˆ´"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Move"
-msgstr "ì´ë™"
+msgstr "ì´ë™ 툴"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Rotate"
-msgstr "컨트롤: 회전"
+msgstr "회전 툴"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Scale"
-msgstr "í¬ê¸°:"
+msgstr "í¬ê¸°ì¡°ì ˆ 툴"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform"
msgstr "변환"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr "스냅 설정.."
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr "로컬 좌표"
@@ -5700,6 +5120,10 @@ msgid "Speed (FPS):"
msgstr "ì†ë„ (FPS):"
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr "루프"
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr "애니메ì´ì…˜ 프레임"
@@ -5712,19 +5136,18 @@ msgid "Insert Empty (After)"
msgstr "빈 프레임 삽입 (ì´í›„)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr "위"
+msgid "Move (Before)"
+msgstr "ì´ë™ (ì´ì „)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
-msgstr "아래"
+msgid "Move (After)"
+msgstr "ì´ë™ (ì´í›„)"
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "StyleBox 미리보기:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#, fuzzy
msgid "Set Region Rect"
msgstr "구역 설정"
@@ -5786,18 +5209,20 @@ msgid "Remove Item"
msgstr "ì•„ì´í…œ ì‚­ì œ"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All Items"
-msgstr "í´ëž˜ìФ ì•„ì´í…œ ì‚­ì œ"
+msgstr "모든 ì•„ì´í…œ ì‚­ì œ"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All"
-msgstr "삭제"
+msgstr "ëª¨ë‘ ì‚­ì œ"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
-msgstr "테마"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Class Items"
@@ -5881,13 +5306,16 @@ msgid "Style"
msgstr "스타ì¼"
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr "í°íЏ"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr "색깔"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase Selection"
-msgstr "ì„ íƒë¶€ë¶„ 지우기"
+msgstr "ì„ íƒ ì§€ìš°ê¸°"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Paint TileMap"
@@ -5932,8 +5360,9 @@ msgid "Mirror Y"
msgstr "Y축 뒤집기"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
-msgstr "채우기"
+#, fuzzy
+msgid "Paint Tile"
+msgstr "타ì¼ë§µ 칠하기"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Pick Tile"
@@ -5999,6 +5428,10 @@ msgid "Delete preset '%s'?"
msgstr "ì„ íƒëœ 파ì¼ë“¤ì„ 삭제하시겠습니까?"
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
#, fuzzy
msgid "Presets"
msgstr "프리셋.."
@@ -6080,34 +5513,62 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
#, fuzzy
msgid "Export With Debug"
msgstr "íƒ€ì¼ ì…‹ 내보내기"
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
-msgstr "프로ì íЏ 경로가 유효하지 않습니다. 경로가 반드시 존재해야 합니다!"
+#, fuzzy
+msgid "The path does not exist."
+msgstr "파ì¼ì´ 존재하지 않습니다."
#: editor/project_manager.cpp
#, fuzzy
-msgid "Invalid project path, project.godot must not exist."
-msgstr "프로ì íЏ 경로가 유효하지 않습니다. engine.cfgê°€ 있으면 안ë©ë‹ˆë‹¤."
+msgid "Please choose a 'project.godot' file."
+msgstr "프로ì íЏ í´ë” ë°”ê¹¥ì— ë‚´ë³´ë‚´ê¸°ë¥¼ 하세요!"
#: editor/project_manager.cpp
-#, fuzzy
-msgid "Invalid project path, project.godot must exist."
-msgstr "프로ì íЏ 경로가 유효하지 않습니다. engine.cfgê°€ 존재해야합니다."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose a folder that does not contain a 'project.godot' file."
+msgstr ""
#: editor/project_manager.cpp
msgid "Imported Project"
msgstr "가져온 프로ì íЏ"
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr "유효하지 ì•Šì€ í”„ë¡œì íЏ 경로 (뭔가 변경하신 ê±°ë¼ë„?)."
#: editor/project_manager.cpp
#, fuzzy
+msgid "Couldn't get project.godot in project path."
+msgstr "프로ì íЏ ê²½ë¡œì— engine.cfg를 ìƒì„±í•  수 없습니다."
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't edit project.godot in project path."
+msgstr "프로ì íЏ ê²½ë¡œì— engine.cfg를 ìƒì„±í•  수 없습니다."
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Couldn't create project.godot in project path."
msgstr "프로ì íЏ ê²½ë¡œì— engine.cfg를 ìƒì„±í•  수 없습니다."
@@ -6116,38 +5577,49 @@ msgid "The following files failed extraction from package:"
msgstr "다ìŒì˜ 파ì¼ë“¤ì„ 패키지로부터 ì¶”ì¶œí•˜ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤:"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Rename Project"
+msgstr "ì´ë¦„없는 프로ì íЏ"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't get project.godot in the project path."
+msgstr "프로ì íЏ ê²½ë¡œì— engine.cfg를 ìƒì„±í•  수 없습니다."
+
+#: editor/project_manager.cpp
+msgid "New Game Project"
+msgstr "새 게임 프로ì íЏ"
+
+#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "기존 프로ì íЏ 가져오기"
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
-msgstr "프로ì íЏ 경로 (반드시 í•„ìš”):"
+msgid "Create New Project"
+msgstr "새 프로ì íЏ 만들기"
+
+#: editor/project_manager.cpp
+msgid "Install Project:"
+msgstr "프로ì íЏ 설치:"
#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "프로ì íЏ 명:"
#: editor/project_manager.cpp
-msgid "Create New Project"
-msgstr "새 프로ì íЏ 만들기"
+#, fuzzy
+msgid "Create folder"
+msgstr "í´ë” ìƒì„±"
#: editor/project_manager.cpp
msgid "Project Path:"
msgstr "프로ì íЏ 경로:"
#: editor/project_manager.cpp
-msgid "Install Project:"
-msgstr "프로ì íЏ 설치:"
-
-#: editor/project_manager.cpp
msgid "Browse"
msgstr "찾아보기"
#: editor/project_manager.cpp
-msgid "New Game Project"
-msgstr "새 게임 프로ì íЏ"
-
-#: editor/project_manager.cpp
msgid "That's a BINGO!"
msgstr "빙고!"
@@ -6156,6 +5628,11 @@ msgid "Unnamed Project"
msgstr "ì´ë¦„없는 프로ì íЏ"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't open project"
+msgstr "연결하기.."
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr "ë‘ê°œ ì´ìƒì˜ 프로ì íŠ¸ë¥¼ 열려는 ê²ƒì´ í™•ì‹¤í•©ë‹ˆê¹Œ?"
@@ -6186,6 +5663,12 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
"You are about the scan %s folders for existing Godot projects. Do you "
"confirm?"
msgstr "%s ì—서 기존 Godot 프로ì íŠ¸ë“¤ì„ ìŠ¤ìº”í•˜ë ¤ê³  합니다. 진행하시겠습니까?"
@@ -6195,10 +5678,6 @@ msgid "Project List"
msgstr "프로ì íЏ 목ë¡"
#: editor/project_manager.cpp
-msgid "Run"
-msgstr "실행"
-
-#: editor/project_manager.cpp
msgid "Scan"
msgstr "스캔"
@@ -6221,6 +5700,11 @@ msgstr "종료"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Restart Now"
+msgstr "재시작 (초):"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Can't run project"
msgstr "연결하기.."
@@ -6257,17 +5741,14 @@ msgid "Add Input Action Event"
msgstr "ìž…ë ¥ ì•¡ì…˜ ì´ë²¤íЏ 추가"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "메타+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "쉬프트+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "알트+"
@@ -6329,7 +5810,7 @@ msgstr "변경"
msgid "Joypad Axis Index:"
msgstr "ì¡°ì´ìŠ¤í‹± ì¶• ì¸ë±ìФ:"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "ì¶•"
@@ -6351,31 +5832,31 @@ msgstr "ìž…ë ¥ ì•¡ì…˜ ì´ë²¤íЏ ì‚­ì œ"
msgid "Add Event"
msgstr "빈 프레임 추가"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "기기"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "버튼"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "왼쪽 버튼."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "오른쪽 버튼."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "ê°€ìš´ë° ë²„íŠ¼."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr "휠 위로."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr "휠 아래로."
@@ -6384,7 +5865,7 @@ msgid "Add Global Property"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6403,6 +5884,16 @@ msgid "Delete Item"
msgstr "입력 삭제"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Can't contain '/' or ':'"
+msgstr "í˜¸ìŠ¤íŠ¸ì— ì—°ê²°í•  수 ì—†ìŒ:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Already existing"
+msgstr "ì§€ì† ì „í™˜"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "설정 저장 중 ì—러."
@@ -6444,6 +5935,15 @@ msgstr "리소스 리맵핑 옵션 제거"
#: editor/project_settings_editor.cpp
#, fuzzy
+msgid "Changed Locale Filter"
+msgstr "연결 시간 변경"
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Project Settings (project.godot)"
msgstr "프로ì íЏ 설정 (engine.cfg)"
@@ -6504,6 +6004,30 @@ msgid "Locale"
msgstr "지역"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales Filter"
+msgstr "ì´ë¯¸ì§€ í•„í„°:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Show all locales"
+msgstr "뼈대 보기"
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "í•„í„°"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales:"
+msgstr "지역"
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "ìžë™ 로드"
@@ -6555,10 +6079,20 @@ msgstr "새 스í¬ë¦½íЏ"
#: editor/property_editor.cpp
#, fuzzy
+msgid "Make Unique"
+msgstr "Bones 만들기"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "Show in File System"
msgstr "íŒŒì¼ ì‹œìŠ¤í…œ"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Convert To %s"
+msgstr "변환.."
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr "íŒŒì¼ ë¡œë“œ ì—러: 리소스가 아닙니다!"
@@ -6597,6 +6131,11 @@ msgid "Select Property"
msgstr "ì†ì„± ì„ íƒ"
#: editor/property_selector.cpp
+#, fuzzy
+msgid "Select Virtual Method"
+msgstr "메소드 ì„ íƒ"
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr "메소드 ì„ íƒ"
@@ -6624,26 +6163,6 @@ msgstr "현재 모양새 유지"
msgid "Reparent"
msgstr "부모노드 재지정"
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr "새 리소스 만들기"
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr "리소스 열기"
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr "리로스 저장"
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr "리소스 ë„구"
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr "로컬로 만들기"
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr "실행 모드:"
@@ -6772,14 +6291,6 @@ msgid "Sub-Resources:"
msgstr "리소스:"
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr "그룹 편집"
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr "연결 편집"
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr "ìƒì† 없애기"
@@ -6967,6 +6478,15 @@ msgid "Invalid base path"
msgstr "기본 경로가 유요하지 않ìŒ"
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "File exists, will be reused"
+msgstr "파ì¼ì´ 존재합니다. ë®ì–´ì“°ì‹œê² ìŠµë‹ˆê¹Œ?"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr "확장ìžê°€ 유요하지 않ìŒ"
@@ -7012,6 +6532,10 @@ msgid "Load existing script file"
msgstr "기존 스í¬ë¦½íЏ 로드하기"
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr "언어"
+
+#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Inherits"
msgstr "ìƒì†:"
@@ -7056,6 +6580,10 @@ msgid "Function:"
msgstr "함수:"
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr "ì—러"
@@ -7136,6 +6664,10 @@ msgid "Type"
msgstr "타입"
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr "í¬ë©§"
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr "사용"
@@ -7211,13 +6743,31 @@ msgstr ""
msgid "Change Probe Extents"
msgstr "프로브 범위 변경"
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Library"
+msgstr "메쉬 ë¼ì´ë¸ŒëŸ¬ë¦¬.."
+
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Status"
+msgstr "ìƒíƒœ:"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr ""
"convert()하기 위한 ì¸ìž íƒ€ìž…ì´ ìœ íš¨í•˜ì§€ 않습니다, TYPE_* ìƒìˆ˜ë¥¼ 사용하세요."
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "디코딩할 ë°”ì´íŠ¸ê°€ 모ìžë¼ê±°ë‚˜, 유효하지 ì•Šì€ í˜•ì‹ìž…니다."
@@ -7271,10 +6821,6 @@ msgid "GridMap Duplicate Selection"
msgstr "ì„ íƒí‚¤ 복제"
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Snap View"
msgstr "ìƒë‹¨ ë·°"
@@ -7378,13 +6924,8 @@ msgstr "스냅 설정"
msgid "Pick Distance:"
msgstr "ì¸ìŠ¤í„´ìŠ¤:"
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr "파ì¼"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7585,10 +7126,18 @@ msgid "Return"
msgstr "리턴"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr "호출"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr "얻기"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Input Value"
msgstr "ìž…ë ¥ ì´ë¦„ 변경"
@@ -7990,6 +7539,12 @@ msgstr ""
"AnimatedSprite3Dê°€ í”„ë ˆìž„ì„ ë³´ì—¬ì£¼ê¸° 위해서는 'Frames' ì†ì„±ì— SpriteFrames 리"
"소스 만들거나 지정해야 합니다."
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
#, fuzzy
msgid "Raw Mode"
@@ -8000,6 +7555,10 @@ msgid "Add current color as a preset"
msgstr ""
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "취소"
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr "경고!"
@@ -8007,10 +7566,6 @@ msgstr "경고!"
msgid "Please Confirm..."
msgstr "확ì¸í•´ì£¼ì„¸ìš”..."
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "컨트롤+"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -8045,6 +7600,620 @@ msgstr ""
"합니다. 그렇지 ì•Šì„ ê²½ìš°, í™”ë©´ì— í‘œì‹œí•˜ê¸° 위해서는 Render target으로 설정하"
"ê³  ë‚´ë¶€ì ì¸ í…스ì³ë¥¼ 다른 ë…¸ë“œì— í• ë‹¹í•´ì•¼ 합니다."
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr "FreeType 초기화 ì—러."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "알 수 없는 í°íЏ í¬ë©§."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "í°íЏ 로딩 ì—러."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr "유요하지 ì•Šì€ í°íЏ 사ì´ì¦ˆ."
+
+#~ msgid "Filter:"
+#~ msgstr "í•„í„°:"
+
+#~ msgid "Theme"
+#~ msgstr "테마"
+
+#~ msgid "Method List For '%s':"
+#~ msgstr "'%s' 함수 목ë¡:"
+
+#~ msgid "Arguments:"
+#~ msgstr "ì¸ìˆ˜:"
+
+#~ msgid "Return:"
+#~ msgstr "리턴:"
+
+#~ msgid "Added:"
+#~ msgstr "추가ë¨:"
+
+#~ msgid "Removed:"
+#~ msgstr "제거ë¨:"
+
+#~ msgid "Error saving atlas:"
+#~ msgstr "ì•„í‹€ë¼ìФ 저장 중 ì—러:"
+
+#~ msgid "Could not save atlas subtexture:"
+#~ msgstr "ì•„í‹€ë¼ìФ 서브 í…스ì³ë¥¼ 저장할 수 없습니다:"
+
+#~ msgid "Exporting for %s"
+#~ msgstr "%s 내보내기"
+
+#~ msgid "Setting Up.."
+#~ msgstr "설정 중.."
+
+#~ msgid "Error loading scene."
+#~ msgstr "씬 로딩 중 ì—러."
+
+#~ msgid "Re-Import"
+#~ msgstr "다시 가져오기"
+
+#~ msgid "Please wait for scan to complete."
+#~ msgstr "ìŠ¤ìº”ì´ ì™„ë£Œë  ë•Œê¹Œì§€ 기다려주세요."
+
+#~ msgid "Current scene must be saved to re-import."
+#~ msgstr "다시 가져오기 위해서는 현재 ì”¬ì„ ì €ìž¥í•´ì•¼ 합니다."
+
+#~ msgid "Save & Re-Import"
+#~ msgstr "저장 ë° ë‹¤ì‹œ 가져오기"
+
+#~ msgid "Re-Importing"
+#~ msgstr "다시 가져오기"
+
+#~ msgid "Re-Import Changed Resources"
+#~ msgstr "ë³€ê²½ëœ ë¦¬ì†ŒìŠ¤ 다시 가져오기"
+
+#~ msgid "Loading Export Templates"
+#~ msgstr "내보내기 템플릿 로딩 중"
+
+#~ msgid ""
+#~ "\n"
+#~ "Status: Needs Re-Import"
+#~ msgstr ""
+#~ "\n"
+#~ "ìƒíƒœ: 다시 ìž„í¬íЏ í•„ìš”"
+
+#~ msgid "Same source and destination files, doing nothing."
+#~ msgstr "소스와 ëŒ€ìƒ íŒŒì¼ì´ ë™ì¼í•˜ì—¬, 무시ë©ë‹ˆë‹¤."
+
+#~ msgid "Same source and destination paths, doing nothing."
+#~ msgstr "소스와 ëŒ€ìƒ ê²½ë¡œê°€ ë™ì¼í•˜ì—¬, 무시ë©ë‹ˆë‹¤."
+
+#~ msgid "Can't move directories to within themselves."
+#~ msgstr "디렉토리를 ìžì‹ ìœ¼ë¡œ ì´ë™í•  수 없습니다."
+
+#~ msgid "Error moving file:\n"
+#~ msgstr "íŒŒì¼ ì´ë™ ì—러:\n"
+
+#~ msgid "Pick New Name and Location For:"
+#~ msgstr "새로운 ì´ë¦„ê³¼ 위치를 고르세요:"
+
+#~ msgid "No files selected!"
+#~ msgstr "파ì¼ì´ ì„ íƒë˜ì§€ 않았습니다!"
+
+#~ msgid "Info"
+#~ msgstr "ì •ë³´"
+
+#~ msgid "Re-Import.."
+#~ msgstr "다시 가져오기.."
+
+#~ msgid "No bit masks to import!"
+#~ msgstr "가져올 비트 마스í¬ê°€ 없습니다!"
+
+#~ msgid "Target path is empty."
+#~ msgstr "ëŒ€ìƒ ê²½ë¡œê°€ 없습니다."
+
+#~ msgid "Target path must be a complete resource path."
+#~ msgstr "ëŒ€ìƒ ê²½ë¡œëŠ” 완전한 리소스 경로여야 합니다."
+
+#~ msgid "Target path must exist."
+#~ msgstr "ëŒ€ìƒ ê²½ë¡œê°€ 존재해야 합니다."
+
+#~ msgid "Save path is empty!"
+#~ msgstr "저장 경로가 없습니다!"
+
+#~ msgid "Import BitMasks"
+#~ msgstr "ë¹„íŠ¸ë§ˆìŠ¤í¬ ê°€ì ¸ì˜¤ê¸°"
+
+#~ msgid "Source Texture(s):"
+#~ msgstr "소스 í…스ì³:"
+
+#~ msgid "Target Path:"
+#~ msgstr "ëŒ€ìƒ ê²½ë¡œ:"
+
+#~ msgid "Accept"
+#~ msgstr "수ë½"
+
+#~ msgid "Bit Mask"
+#~ msgstr "비트 마스í¬"
+
+#~ msgid "No source font file!"
+#~ msgstr "소스 í°íЏ 파ì¼ì´ 없습니다!"
+
+#~ msgid "No target font resource!"
+#~ msgstr "í°íЏ 리소스 경로가 없습니다!"
+
+#~ msgid ""
+#~ "Invalid file extension.\n"
+#~ "Please use .font."
+#~ msgstr ""
+#~ "유효하지 ì•Šì€ íŒŒì¼ í™•ìž¥ìž.\n"
+#~ ".font 를 사용하세요."
+
+#~ msgid "Couldn't save font."
+#~ msgstr "í°íŠ¸ë¥¼ 저장할 수 없습니다."
+
+#~ msgid "Source Font:"
+#~ msgstr "소스 í°íЏ:"
+
+#~ msgid "Source Font Size:"
+#~ msgstr "소스 í°íЏ í¬ê¸°:"
+
+#~ msgid "Dest Resource:"
+#~ msgstr "리소스 경로:"
+
+#~ msgid "The quick brown fox jumps over the lazy dog."
+#~ msgstr ""
+#~ "The quick brown fox jumps over the lazy dog.\n"
+#~ "ë‹¤ëžŒì¥ í—Œ ì³‡ë°”í€´ì— íƒ€ê³ íŒŒ."
+
+#~ msgid "Test:"
+#~ msgstr "테스트:"
+
+#~ msgid "Options:"
+#~ msgstr "옵션:"
+
+#~ msgid "Font Import"
+#~ msgstr "í°íЏ 가져오기"
+
+#~ msgid ""
+#~ "This file is already a Godot font file, please supply a BMFont type file "
+#~ "instead."
+#~ msgstr "ì´ íŒŒì¼ì€ ì´ë¯¸ Godot í°íЏ 파ì¼ìž…니다. BMFont 파ì¼ì„ ì„ íƒí•˜ì„¸ìš”."
+
+#~ msgid "Failed opening as BMFont file."
+#~ msgstr "BMFont 파ì¼ì„ ì—¬ëŠ”ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤."
+
+#~ msgid "Invalid font custom source."
+#~ msgstr "ì‚¬ìš©ìž ì§€ì • í°íЏ 소스가 유효하지 않습니다."
+
+#~ msgid "No meshes to import!"
+#~ msgstr "가져올 메쉬가 없습니다!"
+
+#~ msgid "Single Mesh Import"
+#~ msgstr "ë‹¨ì¼ ë©”ì‰¬ 가져오기"
+
+#~ msgid "Source Mesh(es):"
+#~ msgstr "소스 메쉬:"
+
+#~ msgid "Surface %d"
+#~ msgstr "서페ì´ìФ %d"
+
+#~ msgid "No samples to import!"
+#~ msgstr "가져올 ìƒ˜í”Œì´ ì—†ìŠµë‹ˆë‹¤!"
+
+#~ msgid "Import Audio Samples"
+#~ msgstr "오디오 샘플 가져오기"
+
+#~ msgid "Source Sample(s):"
+#~ msgstr "소스 샘플:"
+
+#~ msgid "Audio Sample"
+#~ msgstr "오디오 샘플"
+
+#~ msgid "New Clip"
+#~ msgstr "새 í´ë¦½"
+
+#~ msgid "Flags"
+#~ msgstr "플래그"
+
+#~ msgid "Bake FPS:"
+#~ msgstr "FPS 설정:"
+
+#~ msgid "Optimizer"
+#~ msgstr "최ì í™”"
+
+#~ msgid "Max Linear Error"
+#~ msgstr "최대 선형 오류"
+
+#~ msgid "Max Angular Error"
+#~ msgstr "최대 ê°ë„ 오류"
+
+#~ msgid "Max Angle"
+#~ msgstr "최대 ê°ë„"
+
+#~ msgid "Clips"
+#~ msgstr "í´ë¦½"
+
+#~ msgid "Start(s)"
+#~ msgstr "시작(초)"
+
+#~ msgid "End(s)"
+#~ msgstr "ë(ì´ˆ)"
+
+#~ msgid "Filters"
+#~ msgstr "í•„í„°"
+
+#~ msgid "Source path is empty."
+#~ msgstr "소스 경로가 비어있습니다."
+
+#~ msgid "Couldn't load post-import script."
+#~ msgstr "가져오기 후 실행할 스í¬ë¦½íŠ¸ë¥¼ 로드할 수 없습니다."
+
+#~ msgid "Invalid/broken script for post-import."
+#~ msgstr "가져오기 후 실행할 스í¬ë¦½íŠ¸ê°€ 유효하지 않거나 깨져있습니다."
+
+#~ msgid "Error importing scene."
+#~ msgstr "씬 가져오기 ì—러."
+
+#~ msgid "Import 3D Scene"
+#~ msgstr "3D 씬 가져오기"
+
+#~ msgid "Source Scene:"
+#~ msgstr "소스 씬:"
+
+#~ msgid "Same as Target Scene"
+#~ msgstr "ëŒ€ìƒ ì”¬ê³¼ ê°™ìŒ"
+
+#~ msgid "Shared"
+#~ msgstr "공유ë¨"
+
+#~ msgid "Target Texture Folder:"
+#~ msgstr "ëŒ€ìƒ í…ìŠ¤ì³ í´ë”:"
+
+#~ msgid "Post-Process Script:"
+#~ msgstr "가져오기 후 수행할 스í¬ë¦½íЏ:"
+
+#~ msgid "Custom Root Node Type:"
+#~ msgstr "ì‚¬ìš©ìž ì •ì˜ ë£¨íŠ¸ 노드 타입:"
+
+#~ msgid "Auto"
+#~ msgstr "ìžë™"
+
+#~ msgid "Root Node Name:"
+#~ msgstr "루트 노드 ì´ë¦„:"
+
+#~ msgid "The Following Files are Missing:"
+#~ msgstr "다ìŒì˜ 파ì¼ë“¤ì´ 빠져있습니다:"
+
+#~ msgid "Import Anyway"
+#~ msgstr "무시하고 가져오기"
+
+#~ msgid "Import & Open"
+#~ msgstr "가져오기 후 열기"
+
+#~ msgid "Edited scene has not been saved, open imported scene anyway?"
+#~ msgstr "íŽ¸ì§‘ëœ ì”¬ì´ ì €ìž¥ë˜ì§€ 않았습니다. 무시하고 가져온 ì”¬ì„ ì—¬ì‹œê² ìŠµë‹ˆê¹Œ?"
+
+#~ msgid "Import Image:"
+#~ msgstr "ì´ë¯¸ì§€ 가져오기:"
+
+#~ msgid "Couldn't localize path: %s (already local)"
+#~ msgstr "경로를 로컬 경로로 바꿀 수 없습니다: %s (ì´ë¯¸ 로컬 경로)"
+
+#~ msgid "3D Scene Animation"
+#~ msgstr "3D 씬 애니메ì´ì…˜"
+
+#~ msgid "Uncompressed"
+#~ msgstr "무압축"
+
+#~ msgid "Compress Lossless (PNG)"
+#~ msgstr "무ì†ì‹¤ ì••ì¶• (PNG)"
+
+#~ msgid "Compress Lossy (WebP)"
+#~ msgstr "ì†ì‹¤ ì••ì¶• (PNG)"
+
+#~ msgid "Compress (VRAM)"
+#~ msgstr "ì••ì¶• (VRAM)"
+
+#~ msgid "Texture Format"
+#~ msgstr "í…ìŠ¤ì³ í¬ë©§"
+
+#~ msgid "Texture Compression Quality (WebP):"
+#~ msgstr "í…ìŠ¤ì³ ì••ì¶• 품질 (WebP):"
+
+#~ msgid "Texture Options"
+#~ msgstr "í…ìŠ¤ì³ ì˜µì…˜"
+
+#~ msgid "Please specify some files!"
+#~ msgstr "파ì¼ì„ 지정하세요!"
+
+#~ msgid "At least one file needed for Atlas."
+#~ msgstr "ì•„í‹€ë¼ìФ ìƒì„±ì„ 위해서는 최소 1ê°œ ì´ìƒì˜ 파ì¼ì´ 필요합니다."
+
+#~ msgid "Error importing:"
+#~ msgstr "가져오기 ì—러:"
+
+#~ msgid "Only one file is required for large texture."
+#~ msgstr "í° í…스ì³ë¥¼ 위해서는 단 í•˜ë‚˜ì˜ íŒŒì¼ë§Œ 요구ë©ë‹ˆë‹¤."
+
+#~ msgid "Max Texture Size:"
+#~ msgstr "최대 í…ìŠ¤ì³ ì‚¬ì´ì¦ˆ:"
+
+#~ msgid "Import Textures for Atlas (2D)"
+#~ msgstr "ì•„í‹€ë¼ìŠ¤ë¥¼ 위한 í…ìŠ¤ì³ ê°€ì ¸ì˜¤ê¸° (2D)"
+
+#~ msgid "Cell Size:"
+#~ msgstr "쎌 사ì´ì¦ˆ:"
+
+#~ msgid "Large Texture"
+#~ msgstr "í° í…스ì³"
+
+#~ msgid "Import Large Textures (2D)"
+#~ msgstr "í° í…ìŠ¤ì³ ê°€ì ¸ì˜¤ê¸° (2D)"
+
+#~ msgid "Source Texture"
+#~ msgstr "소스 í…스ì³"
+
+#~ msgid "Base Atlas Texture"
+#~ msgstr "기본 ì•„í‹€ë¼ìФ í…스ì³"
+
+#~ msgid "Source Texture(s)"
+#~ msgstr "소트 í…스ì³"
+
+#~ msgid "Import Textures for 2D"
+#~ msgstr "2D í…ìŠ¤ì³ ê°€ì ¸ì˜¤ê¸°"
+
+#~ msgid "Import Textures for 3D"
+#~ msgstr "3D í…ìŠ¤ì³ ê°€ì ¸ì˜¤ê¸°"
+
+#~ msgid "Import Textures"
+#~ msgstr "í…ìŠ¤ì³ ê°€ì ¸ì˜¤ê¸°"
+
+#~ msgid "2D Texture"
+#~ msgstr "2D í…스ì³"
+
+#~ msgid "3D Texture"
+#~ msgstr "3D í…스ì³"
+
+#~ msgid "Atlas Texture"
+#~ msgstr "í…ìŠ¤ì³ ì•„í‹€ë¼ìФ"
+
+#~ msgid ""
+#~ "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files "
+#~ "to the project."
+#~ msgstr ""
+#~ "알림: 2D í…ìŠ¤ì³ ê°€ì ¸ì˜¤ê¸°ê°€ 필수는 아닙니다. png/jpg 파ì¼ë“¤ì„ 프로ì íŠ¸ì— ë³µ"
+#~ "사해서 ì‚¬ìš©í•´ë„ ë©ë‹ˆë‹¤."
+
+#~ msgid "Crop empty space."
+#~ msgstr "빈 ì˜ì—­ 잘ë¼ë‚´ê¸°."
+
+#~ msgid "Texture"
+#~ msgstr "í…스ì³"
+
+#~ msgid "Import Large Texture"
+#~ msgstr "í° í…ìŠ¤ì³ ê°€ì ¸ì˜¤ê¸°"
+
+#~ msgid "Load Source Image"
+#~ msgstr "소스 ì´ë¯¸ì§€ 로드"
+
+#~ msgid "Slicing"
+#~ msgstr "ìžë¥´ëŠ” 중"
+
+#~ msgid "Saving"
+#~ msgstr "저장 중"
+
+#~ msgid "Couldn't save large texture:"
+#~ msgstr "í° í…스ì³ë¥¼ 저장할 수 ì—†ìŒ:"
+
+#~ msgid "Build Atlas For:"
+#~ msgstr "ì•„í‹€ë¼ìФ ìƒì„±:"
+
+#~ msgid "Loading Image:"
+#~ msgstr "ì´ë¯¸ì§€ 로딩:"
+
+#~ msgid "Couldn't load image:"
+#~ msgstr "ì´ë¯¸ì§€ë¥¼ 로드할 수 ì—†ìŒ:"
+
+#~ msgid "Converting Images"
+#~ msgstr "ì´ë¯¸ì§€ 변환 중"
+
+#~ msgid "Cropping Images"
+#~ msgstr "ì´ë¯¸ì§€ ìžë¥´ëŠ” 중"
+
+#~ msgid "Blitting Images"
+#~ msgstr "ì´ë¯¸ì§€ 병합 중"
+
+#~ msgid "Couldn't save atlas image:"
+#~ msgstr "ì•„í‹€ë¼ìФ ì´ë¯¸ì§€ë¥¼ 저장할 수 ì—†ìŒ:"
+
+#~ msgid "Couldn't save converted texture:"
+#~ msgstr "ë³€í™˜ëœ í…스ì³ë¥¼ 저장할 수 ì—†ìŒ:"
+
+#~ msgid "Invalid source!"
+#~ msgstr "유효하지 ì•Šì€ ì†ŒìŠ¤!"
+
+#~ msgid "Invalid translation source!"
+#~ msgstr "유효하지 ì•Šì€ ë²ˆì—­ 소스!"
+
+#~ msgid "Column"
+#~ msgstr "ì—´"
+
+#~ msgid "No items to import!"
+#~ msgstr "가져올 í•­ëª©ì´ ì—†ìŠµë‹ˆë‹¤!"
+
+#~ msgid "No target path!"
+#~ msgstr "ëŒ€ìƒ ê²½ë¡œê°€ 없습니다!"
+
+#~ msgid "Import Translations"
+#~ msgstr "번역 가져오기"
+
+#~ msgid "Couldn't import!"
+#~ msgstr "가져올 수 없습니다!"
+
+#~ msgid "Import Translation"
+#~ msgstr "번역 가져오기"
+
+#~ msgid "Source CSV:"
+#~ msgstr "소스 CSV:"
+
+#~ msgid "Ignore First Row"
+#~ msgstr "첫째줄 무시"
+
+#~ msgid "Compress"
+#~ msgstr "ì••ì¶•"
+
+#~ msgid "Add to Project (project.godot)"
+#~ msgstr "프로ì íŠ¸ì— ì¶”ê°€ (project.godot)"
+
+#~ msgid "Import Languages:"
+#~ msgstr "언어 가져오기:"
+
+#~ msgid "Translation"
+#~ msgstr "번역"
+
+#~ msgid "Parsing %d Triangles:"
+#~ msgstr "%dê°œ 삼ê°í˜• ë¶„ì„ ì¤‘:"
+
+#~ msgid "Triangle #"
+#~ msgstr "삼ê°í˜• #"
+
+#~ msgid "Light Baker Setup:"
+#~ msgstr "ë¼ì´íЏ ë² ì´ì»¤ 설정:"
+
+#~ msgid "Fixing Lights"
+#~ msgstr "ë¼ì´íЏ 수정 중"
+
+#~ msgid "Making BVH"
+#~ msgstr "BVH 만드는 중"
+
+#~ msgid "Transfer to Lightmaps:"
+#~ msgstr "ë¼ì´íŠ¸ë§µìœ¼ë¡œ 전송:"
+
+#~ msgid "Allocating Texture #"
+#~ msgstr "í…ìŠ¤ì³ í• ë‹¹ 중 #"
+
+#~ msgid "Baking Triangle #"
+#~ msgstr "삼ê°í˜• 굽는 중 #"
+
+#~ msgid "Post-Processing Texture #"
+#~ msgstr "í…ìŠ¤ì³ í›„ì²˜ë¦¬ 중 #"
+
+#~ msgid "Reset the lightmap octree baking process (start over)."
+#~ msgstr "ë¼ì´íŠ¸ë§µ 오í¬íŠ¸ë¦¬ 굽기 프로세스 재설정 (처ìŒë¶€í„° 다시)."
+
+#~ msgid "Zoom (%):"
+#~ msgstr "확대 (%):"
+
+#~ msgid "Skeleton.."
+#~ msgstr "스켈레톤.."
+
+#~ msgid "Zoom Reset"
+#~ msgstr "확대 초기화"
+
+#~ msgid "Zoom Set.."
+#~ msgstr "확대 설정.."
+
+#~ msgid "Set a Value"
+#~ msgstr "값 설정"
+
+#~ msgid "Snap (Pixels):"
+#~ msgstr "스냅 (픽셀):"
+
+#~ msgid "Parse BBCode"
+#~ msgstr "BBCode ì½ê¸°"
+
+#~ msgid "Length:"
+#~ msgstr "길ì´:"
+
+#~ msgid "Open Sample File(s)"
+#~ msgstr "샘플 íŒŒì¼ ì—´ê¸°"
+
+#~ msgid "ERROR: Couldn't load sample!"
+#~ msgstr "ì—러: ìƒ˜í”Œì„ ë¡œë“œí•  수 없습니다!"
+
+#~ msgid "Add Sample"
+#~ msgstr "샘플 추가"
+
+#~ msgid "Rename Sample"
+#~ msgstr "샘플 ì´ë¦„ 변경"
+
+#~ msgid "Delete Sample"
+#~ msgstr "샘플 삭제"
+
+#~ msgid "16 Bits"
+#~ msgstr "16 비트"
+
+#~ msgid "8 Bits"
+#~ msgstr "8 비트"
+
+#~ msgid "Stereo"
+#~ msgstr "스테레오"
+
+#~ msgid "Mono"
+#~ msgstr "모노"
+
+#~ msgid "Pitch"
+#~ msgstr "피치"
+
+#~ msgid "Window"
+#~ msgstr "윈ë„ìš°"
+
+#~ msgid "Move Right"
+#~ msgstr "오른쪽으로 ì´ë™"
+
+#~ msgid "Scaling to %s%%."
+#~ msgstr "%s%%로 í¬ê¸° 변경."
+
+#~ msgid "Up"
+#~ msgstr "위"
+
+#~ msgid "Down"
+#~ msgstr "아래"
+
+#~ msgid "Bucket"
+#~ msgstr "채우기"
+
+#~ msgid "Invalid project path, the path must exist!"
+#~ msgstr "프로ì íЏ 경로가 유효하지 않습니다. 경로가 반드시 존재해야 합니다!"
+
+#, fuzzy
+#~ msgid "Invalid project path, project.godot must not exist."
+#~ msgstr "프로ì íЏ 경로가 유효하지 않습니다. engine.cfgê°€ 있으면 안ë©ë‹ˆë‹¤."
+
+#, fuzzy
+#~ msgid "Invalid project path, project.godot must exist."
+#~ msgstr "프로ì íЏ 경로가 유효하지 않습니다. engine.cfgê°€ 존재해야합니다."
+
+#~ msgid "Project Path (Must Exist):"
+#~ msgstr "프로ì íЏ 경로 (반드시 í•„ìš”):"
+
+#~ msgid "Create New Resource"
+#~ msgstr "새 리소스 만들기"
+
+#~ msgid "Open Resource"
+#~ msgstr "리소스 열기"
+
+#~ msgid "Save Resource"
+#~ msgstr "리로스 저장"
+
+#~ msgid "Resource Tools"
+#~ msgstr "리소스 ë„구"
+
+#~ msgid "Make Local"
+#~ msgstr "로컬로 만들기"
+
+#~ msgid "Edit Groups"
+#~ msgstr "그룹 편집"
+
+#~ msgid "Edit Connections"
+#~ msgstr "연결 편집"
+
+#, fuzzy
+#~ msgid "Tiles"
+#~ msgstr "파ì¼"
+
+#~ msgid "Ctrl+"
+#~ msgstr "컨트롤+"
+
#~ msgid "Close scene? (Unsaved changes will be lost)"
#~ msgstr "ì”¬ì„ ë‹«ìœ¼ì‹œê² ìŠµë‹ˆê¹Œ? (저장하지 ì•Šì€ ë³€ê²½ì‚¬í•­ì€ ì‚¬ë¼ì§‘니다.)"
@@ -8058,9 +8227,6 @@ msgstr ""
#~ msgid "Close Goto Prev. Scene"
#~ msgstr "ë‹«ê³  ì´ì „ 씬으로 ì´ë™"
-#~ msgid "Expand to Parent"
-#~ msgstr "부모로 확장"
-
#~ msgid "Del"
#~ msgstr "삭제"
@@ -8216,18 +8382,12 @@ msgstr ""
#~ msgid "Save Translatable Strings"
#~ msgstr "번역가능한 문ìžì—´ 저장"
-#~ msgid "Translatable Strings.."
-#~ msgstr "번역 가능한 문ìžì—´.."
-
#~ msgid "Install Export Templates"
#~ msgstr "내보내기 템플릿 설치"
#~ msgid "Edit Script Options"
#~ msgstr "스í¬ë¦½íЏ 옵션 편집"
-#~ msgid "Please export outside the project folder!"
-#~ msgstr "프로ì íЏ í´ë” ë°”ê¹¥ì— ë‚´ë³´ë‚´ê¸°ë¥¼ 하세요!"
-
#~ msgid "Error exporting project!"
#~ msgstr "프로ì íЏ 내보내기 중 ì—러!"
@@ -8261,18 +8421,12 @@ msgstr ""
#~ msgid "Include"
#~ msgstr "í¬í•¨"
-#~ msgid "Change Image Group"
-#~ msgstr "ì´ë¯¸ì§€ 그룹 변경"
-
#~ msgid "Group name can't be empty!"
#~ msgstr "그룹 ì´ë¦„ì„ ì§€ì •í•´ì•¼ 합니다!"
#~ msgid "Invalid character in group name!"
#~ msgstr "그룹 ì´ë¦„ì— ìœ íš¨í•˜ì§€ ì•Šì€ ë¬¸ìžê°€ 사용ë˜ì—ˆìŠµë‹ˆë‹¤!"
-#~ msgid "Group name already exists!"
-#~ msgstr "그룹 ì´ë¦„ì´ ì´ë¯¸ 사용중입니다!"
-
#~ msgid "Add Image Group"
#~ msgstr "ì´ë¯¸ì§€ 그룹 추가"
@@ -8351,9 +8505,6 @@ msgstr ""
#~ msgid "Preview Atlas"
#~ msgstr "ì•„í‹€ë¼ìФ 미리보기"
-#~ msgid "Image Filter:"
-#~ msgstr "ì´ë¯¸ì§€ í•„í„°:"
-
#~ msgid "Images:"
#~ msgstr "ì´ë¯¸ì§€:"
@@ -8420,9 +8571,6 @@ msgstr ""
#~ msgid "Lighting"
#~ msgstr "ë¼ì´íŒ…"
-#~ msgid "Toggle Persisting"
-#~ msgstr "ì§€ì† ì „í™˜"
-
#~ msgid "Global"
#~ msgstr "Global"
diff --git a/editor/translations/lt.po b/editor/translations/lt.po
new file mode 100644
index 0000000000..b85e8e01aa
--- /dev/null
+++ b/editor/translations/lt.po
@@ -0,0 +1,7371 @@
+# Lithuanian translation of the Godot Engine editor
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
+# This file is distributed under the same license as the Godot source code.
+#
+# Ignas Kiela <ignaskiela@super.lt>, 2017.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Godot Engine editor\n"
+"PO-Revision-Date: 2017-10-23 18:47+0000\n"
+"Last-Translator: Ignas Kiela <ignaskiela@super.lt>\n"
+"Language-Team: Lithuanian <https://hosted.weblate.org/projects/godot-engine/"
+"godot/lt/>\n"
+"Language: lt\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"Plural-Forms: nplurals=4; plural=n==1 ? 0 : n%10>=2 && (n%100<10 || n"
+"%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3;\n"
+"X-Generator: Weblate 2.17\n"
+
+#: editor/animation_editor.cpp
+msgid "Disabled"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "All Selection"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Move Add Key"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Change Transition"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Change Transform"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Change Value"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Change Call"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Add Track"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Duplicate Keys"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Move Anim Track Up"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Move Anim Track Down"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Remove Anim Track"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Set Transitions to:"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Track Rename"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Track Change Interpolation"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Track Change Value Mode"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Track Change Wrap Mode"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Edit Node Curve"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Edit Selection Curve"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Delete Keys"
+msgstr ""
+
+#: editor/animation_editor.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Duplicate Selection"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Duplicate Transposed"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Remove Selection"
+msgstr "Panaikinti pasirinkimÄ…"
+
+#: editor/animation_editor.cpp
+msgid "Continuous"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Discrete"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Trigger"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Add Key"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Move Keys"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Scale Selection"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Scale From Cursor"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Goto Next Step"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Goto Prev Step"
+msgstr ""
+
+#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
+#: editor/property_editor.cpp
+msgid "Linear"
+msgstr ""
+
+#: editor/animation_editor.cpp editor/plugins/theme_editor_plugin.cpp
+msgid "Constant"
+msgstr "Konstanta"
+
+#: editor/animation_editor.cpp
+msgid "In"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Out"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "In-Out"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Out-In"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Transitions"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Optimize Animation"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Clean-Up Animation"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Create NEW track for %s and insert key?"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Create %d NEW tracks and insert keys?"
+msgstr ""
+
+#: editor/animation_editor.cpp editor/create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_create_dialog.cpp
+msgid "Create"
+msgstr "Sukurti"
+
+#: editor/animation_editor.cpp
+msgid "Anim Create & Insert"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Insert Track & Key"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Insert Key"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Change Anim Len"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Change Anim Loop"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Create Typed Value Key"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Insert"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Scale Keys"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim Add Call Track"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Animation zoom."
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Length (s):"
+msgstr "Ilgis:"
+
+#: editor/animation_editor.cpp
+msgid "Animation length (in seconds)."
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Step (s):"
+msgstr "Žingsnis(iai):"
+
+#: editor/animation_editor.cpp
+msgid "Cursor step snap (in seconds)."
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Enable/Disable looping in animation."
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Add new tracks."
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Move current track up."
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Move current track down."
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Remove selected track."
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Track tools"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Enable editing of individual keys by clicking them."
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Anim. Optimizer"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Max. Linear Error:"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Max. Angular Error:"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Max Optimizable Angle:"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Optimize"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Select an AnimationPlayer from the Scene Tree to edit animations."
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Key"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Transition"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Scale Ratio:"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Call Functions in Which Node?"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Remove invalid keys"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Remove unresolved and empty tracks"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Clean-up all animations"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Clean-Up Animation(s) (NO UNDO!)"
+msgstr ""
+
+#: editor/animation_editor.cpp
+msgid "Clean-Up"
+msgstr ""
+
+#: editor/array_property_edit.cpp
+msgid "Resize Array"
+msgstr ""
+
+#: editor/array_property_edit.cpp
+msgid "Change Array Value Type"
+msgstr ""
+
+#: editor/array_property_edit.cpp
+msgid "Change Array Value"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Go to Line"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Line Number:"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "No Matches"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Replaced %d occurrence(s)."
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Replace"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Replace All"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Match Case"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Whole Words"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Selection Only"
+msgstr ""
+
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr ""
+
+#: editor/code_editor.cpp editor/editor_help.cpp
+msgid "Find"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Next"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Not found!"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Replace By"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Case Sensitive"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Backwards"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Prompt On Replace"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Skip"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Zoom In"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Zoom Out"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Reset Zoom"
+msgstr ""
+
+#: editor/code_editor.cpp editor/script_editor_debugger.cpp
+msgid "Line:"
+msgstr ""
+
+#: editor/code_editor.cpp
+msgid "Col:"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Method in target Node must be specified!"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+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:"
+msgstr ""
+
+#: editor/connections_dialog.cpp editor/editor_autoload_settings.cpp
+#: editor/groups_editor.cpp editor/plugins/item_list_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Add"
+msgstr ""
+
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp
+msgid "Remove"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Add Extra Call Argument:"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Extra Call Arguments:"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Path to Node:"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Make Function"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Deferred"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Oneshot"
+msgstr ""
+
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Connect"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Connect '%s' to '%s'"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Connecting Signal:"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Create Subscription"
+msgstr ""
+
+#: editor/connections_dialog.cpp
+msgid "Connect.."
+msgstr ""
+
+#: editor/connections_dialog.cpp
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Disconnect"
+msgstr ""
+
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
+msgid "Signals"
+msgstr ""
+
+#: editor/create_dialog.cpp
+msgid "Create New"
+msgstr ""
+
+#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
+#: editor/filesystem_dock.cpp
+msgid "Favorites:"
+msgstr ""
+
+#: editor/create_dialog.cpp editor/editor_file_dialog.cpp
+msgid "Recent:"
+msgstr ""
+
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr ""
+
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp
+msgid "Matches:"
+msgstr ""
+
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Search Replacement For:"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Dependencies For:"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid ""
+"Scene '%s' is currently being edited.\n"
+"Changes will not take effect unless reloaded."
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid ""
+"Resource '%s' is in use.\n"
+"Changes will take effect when reloaded."
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Dependencies"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Resource"
+msgstr ""
+
+#: editor/dependency_editor.cpp editor/editor_autoload_settings.cpp
+#: editor/project_manager.cpp editor/project_settings_editor.cpp
+#: editor/script_create_dialog.cpp
+msgid "Path"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Dependencies:"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Fix Broken"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Dependency Editor"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Search Replacement Resource:"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Owners Of:"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid ""
+"The files being removed are required by other resources in order for them to "
+"work.\n"
+"Remove them anyway? (no undo)"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Cannot remove:\n"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Error loading:"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Scene failed to load due to missing dependencies:"
+msgstr ""
+
+#: editor/dependency_editor.cpp editor/editor_node.cpp
+msgid "Open Anyway"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Which action should be taken?"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Fix Dependencies"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Errors loading!"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Permanently delete %d item(s)? (No undo!)"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Owns"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Resources Without Explicit Ownership:"
+msgstr ""
+
+#: editor/dependency_editor.cpp editor/editor_node.cpp
+msgid "Orphan Resource Explorer"
+msgstr ""
+
+#: editor/dependency_editor.cpp
+msgid "Delete selected files?"
+msgstr ""
+
+#: editor/dependency_editor.cpp editor/editor_audio_buses.cpp
+#: editor/editor_node.cpp editor/filesystem_dock.cpp
+#: editor/plugins/item_list_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/scene_tree_dock.cpp
+msgid "Delete"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thanks from the Godot community!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thanks!"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Godot Engine contributors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Project Founders"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Lead Developer"
+msgstr ""
+
+#: editor/editor_about.cpp editor/project_manager.cpp
+msgid "Project Manager"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Developers"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid ""
+"Godot Engine relies on a number of thirdparty free and open source "
+"libraries, all compatible with the terms of its MIT license. The following "
+"is an exhaustive list of all such thirdparty components with their "
+"respective copyright statements and license terms."
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "All Components"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Components"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Licenses"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Error opening package file, not in zip format."
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Uncompressing Assets"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp editor/project_manager.cpp
+msgid "Package Installed Successfully!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+msgid "Package Installer"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Speakers"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Rename Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Toggle Audio Bus Bypass Effects"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Select Audio Bus Send"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Bus Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Audio Bus, Drag and Drop to rearrange."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Solo"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Mute"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bypass"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Reset Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Effect"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Master bus can't be deleted!"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Delete Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Duplicate Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Reset Bus Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Move Audio Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Save Audio Bus Layout As.."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Location for New Layout.."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Open Audio Bus Layout"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "There is no 'res://default_bus_layout.tres' file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Invalid file, not an audio bus layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Add Bus"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Create a new Bus Layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
+msgid "Load"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Load an existing Bus Layout."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Save As"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Save this Bus Layout to a file."
+msgstr ""
+
+#: editor/editor_audio_buses.cpp editor/import_dock.cpp
+msgid "Load Default"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
+msgid "Load the default Bus Layout."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Invalid name."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Valid characters:"
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Invalid name. Must not collide with an existing engine class name."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Invalid name. Must not collide with an existing buit-in type name."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Invalid name. Must not collide with an existing global constant name."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Invalid Path."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "File does not exist."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Not in resource path."
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Add AutoLoad"
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Autoload '%s' already exists!"
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Rename Autoload"
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Toggle AutoLoad Globals"
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Move Autoload"
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Remove Autoload"
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Enable"
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Rearrange Autoloads"
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
+#: scene/gui/file_dialog.cpp
+msgid "Path:"
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Node Name:"
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
+msgid "Name"
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "Singleton"
+msgstr ""
+
+#: editor/editor_autoload_settings.cpp
+msgid "List:"
+msgstr ""
+
+#: editor/editor_data.cpp
+msgid "Updating Scene"
+msgstr ""
+
+#: editor/editor_data.cpp
+msgid "Storing local changes.."
+msgstr ""
+
+#: editor/editor_data.cpp
+msgid "Updating scene.."
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp
+msgid "Please select a base directory first"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp
+msgid "Choose a Directory"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
+msgid "Create Folder"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
+msgid "Name:"
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
+msgid "Could not create folder."
+msgstr ""
+
+#: editor/editor_dir_dialog.cpp
+msgid "Choose"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Storing File:"
+msgstr ""
+
+#: editor/editor_export.cpp
+msgid "Packing"
+msgstr ""
+
+#: editor/editor_export.cpp platform/javascript/export/export.cpp
+msgid "Template file not found:\n"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "File Exists, Overwrite?"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "All Recognized"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "All Files (*)"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp editor/editor_help.cpp editor/editor_node.cpp
+#: editor/filesystem_dock.cpp editor/plugins/script_editor_plugin.cpp
+#: editor/property_selector.cpp editor/quick_open.cpp scene/gui/file_dialog.cpp
+msgid "Open"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open File(s)"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a Directory"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Open a File or Directory"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp scene/gui/file_dialog.cpp
+msgid "Save"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Save a File"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp
+msgid "Go Back"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp
+msgid "Go Forward"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp
+msgid "Go Up"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp
+msgid "Refresh"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp
+msgid "Toggle Hidden Files"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp
+msgid "Toggle Favorite"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp
+msgid "Toggle Mode"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp
+msgid "Focus Path"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp
+msgid "Move Favorite Up"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp
+msgid "Move Favorite Down"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp
+msgid "Go to parent folder"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Directories & Files:"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp
+msgid "Preview:"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp editor/script_editor_debugger.cpp
+#: scene/gui/file_dialog.cpp
+msgid "File:"
+msgstr ""
+
+#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
+msgid "Must use a valid extension."
+msgstr ""
+
+#: editor/editor_file_system.cpp
+msgid "ScanSources"
+msgstr ""
+
+#: editor/editor_file_system.cpp
+msgid "(Re)Importing Assets"
+msgstr ""
+
+#: editor/editor_help.cpp editor/editor_node.cpp
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Search Help"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Class List:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Search Classes"
+msgstr ""
+
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr ""
+
+#: editor/editor_help.cpp editor/property_editor.cpp
+msgid "Class:"
+msgstr ""
+
+#: editor/editor_help.cpp editor/scene_tree_editor.cpp
+msgid "Inherits:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Inherited by:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Brief Description:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Members"
+msgstr ""
+
+#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
+msgid "Members:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Public Methods"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Public Methods:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "GUI Theme Items:"
+msgstr ""
+
+#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
+msgid "Signals:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Enumerations"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Enumerations:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "enum "
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Constants"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Constants:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Description"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Property Description:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Methods"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Method Description:"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Search Text"
+msgstr ""
+
+#: editor/editor_log.cpp
+msgid "Output:"
+msgstr ""
+
+#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Clear"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
+msgid "Error saving resource!"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
+msgid "Save Resource As.."
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "I see.."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Can't open file for writing:"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Requested file format unknown:"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error while saving."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Can't open '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error while parsing '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error while loading '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Saving Scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Analyzing"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Creating Thumbnail"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "This operation can't be done without a tree root."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Failed to load resource."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Can't load MeshLibrary for merging!"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error saving MeshLibrary!"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Can't load TileSet for merging!"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error saving TileSet!"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error trying to save layout!"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Default editor layout overridden."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Layout name not found!"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Restored default layout to base settings."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Copy Params"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Paste Params"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "Paste Resource"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Copy Resource"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Make Built-In"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Make Sub-Resources Unique"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open in Help"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "There is no defined scene to run."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"No main scene has ever been defined, select one?\n"
+"You can change it later in \"Project Settings\" under the 'application' "
+"category."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"Selected scene '%s' does not exist, select a valid one?\n"
+"You can change it later in \"Project Settings\" under the 'application' "
+"category."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"Selected scene '%s' is not a scene file, select a valid one?\n"
+"You can change it later in \"Project Settings\" under the 'application' "
+"category."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Current scene was never saved, please save it prior to running."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Could not start subprocess!"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Base Scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Quick Open Scene.."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Quick Open Script.."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save & Close"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to '%s' before closing?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save Scene As.."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "No"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Yes"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "This scene has never been saved. Save before running?"
+msgstr ""
+
+#: editor/editor_node.cpp editor/scene_tree_dock.cpp
+msgid "This operation can't be done without a scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Export Mesh Library"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Export Tile Set"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "This operation can't be done without a selected node."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Current scene not saved. Open anyway?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Can't reload a scene that was never saved."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Revert"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "This action cannot be undone. Revert anyway?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Quick Run Scene.."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Exit the editor?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Project Manager?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save & Quit"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes to the following scene(s) before quitting?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save changes the following scene(s) before opening Project Manager?"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Pick a Main Scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"Scene '%s' was automatically imported, so it can't be modified.\n"
+"To make changes to it, a new inherited scene can be created."
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Ugh"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"Error loading scene, it must be inside the project path. Use 'Import' to "
+"open the scene, then save it inside the project path."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Scene '%s' has broken dependencies:"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Clear Recent Scenes"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save Layout"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Delete Layout"
+msgstr ""
+
+#: editor/editor_node.cpp editor/import_dock.cpp
+#: editor/script_create_dialog.cpp
+msgid "Default"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Switch Scene Tab"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "%d more file(s)"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "%d more file(s) or folder(s)"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Distraction Free Mode"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Toggle distraction-free mode."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Go to previously opened scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Next tab"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Previous tab"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Filter Files.."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Operations with scene files."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "New Scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "New Inherited Scene.."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Scene.."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save Scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save all Scenes"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Close Scene"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+msgid "Open Recent"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Convert To.."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "MeshLibrary.."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "TileSet.."
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp scene/gui/line_edit.cpp
+#: scene/gui/text_edit.cpp
+msgid "Undo"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Redo"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Revert Scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Miscellaneous project or scene-wide tools."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Project"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Project Settings"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Run Script"
+msgstr ""
+
+#: editor/editor_node.cpp editor/project_export.cpp
+msgid "Export"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Tools"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Quit to Project List"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+msgid "Debug"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Deploy with Remote Debug"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"When exporting or deploying, the resulting executable will attempt to "
+"connect to the IP of this computer in order to be debugged."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Small Deploy with Network FS"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"When this option is enabled, export or deploy will produce a minimal "
+"executable.\n"
+"The filesystem will be provided from the project by the editor over the "
+"network.\n"
+"On Android, deploy will use the USB cable for faster performance. This "
+"option speeds up testing for games with a large footprint."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Visible Collision Shapes"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"Collision shapes and raycast nodes (for 2D and 3D) will be visible on the "
+"running game if this option is turned on."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Visible Navigation"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"Navigation meshes and polygons will be visible on the running game if this "
+"option is turned on."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Sync Scene Changes"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"When this option is turned on, any changes made to the scene in the editor "
+"will be replicated in the running game.\n"
+"When used remotely on a device, this is more efficient with network "
+"filesystem."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Sync Script Changes"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"When this option is turned on, any script that is saved will be reloaded on "
+"the running game.\n"
+"When used remotely on a device, this is more efficient with network "
+"filesystem."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Editor"
+msgstr ""
+
+#: editor/editor_node.cpp editor/settings_config_dialog.cpp
+msgid "Editor Settings"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Editor Layout"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Toggle Fullscreen"
+msgstr ""
+
+#: editor/editor_node.cpp editor/project_export.cpp
+msgid "Manage Export Templates"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Help"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+msgid "Classes"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+msgid "Online Docs"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Q&A"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Issue Tracker"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "About"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Play the project."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Play"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Pause the scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Pause Scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Stop the scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Stop"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Play the edited scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Play Scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Play custom scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Play Custom Scene"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Spins when the editor window repaints!"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Update Always"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Update Changes"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Disable Update Spinner"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Inspector"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Create a new resource in memory and edit it."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Load an existing resource from disk and edit it."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Save the currently edited resource."
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
+msgid "Save As.."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Go to the previous edited object in history."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Go to the next edited object in history."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "History of recently edited objects."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Object properties."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "FileSystem"
+msgstr ""
+
+#: editor/editor_node.cpp editor/node_dock.cpp
+msgid "Node"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Output"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Don't Save"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Import Templates From ZIP File"
+msgstr ""
+
+#: editor/editor_node.cpp editor/project_export.cpp
+msgid "Export Project"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Export Library"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Merge With Existing"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Password:"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open & Run a Script"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "New Inherited"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Load Errors"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/tile_map_editor_plugin.cpp
+msgid "Select"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open 2D Editor"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open 3D Editor"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Script Editor"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open Asset Library"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open the next Editor"
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Open the previous Editor"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+msgid "Installed Plugins:"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+msgid "Author:"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+msgid "Status:"
+msgstr ""
+
+#: editor/editor_profiler.cpp
+msgid "Stop Profiling"
+msgstr ""
+
+#: editor/editor_profiler.cpp
+msgid "Start Profiling"
+msgstr ""
+
+#: editor/editor_profiler.cpp
+msgid "Measure:"
+msgstr ""
+
+#: editor/editor_profiler.cpp
+msgid "Frame Time (sec)"
+msgstr ""
+
+#: editor/editor_profiler.cpp
+msgid "Average Time (sec)"
+msgstr ""
+
+#: editor/editor_profiler.cpp
+msgid "Frame %"
+msgstr ""
+
+#: editor/editor_profiler.cpp
+msgid "Physics Frame %"
+msgstr ""
+
+#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
+msgid "Time:"
+msgstr ""
+
+#: editor/editor_profiler.cpp
+msgid "Inclusive"
+msgstr ""
+
+#: editor/editor_profiler.cpp
+msgid "Self"
+msgstr ""
+
+#: editor/editor_profiler.cpp
+msgid "Frame #:"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid "Select device from the list"
+msgstr ""
+
+#: editor/editor_run_native.cpp
+msgid ""
+"No runnable export preset found for this platform.\n"
+"Please add a runnable preset in the export menu."
+msgstr ""
+
+#: editor/editor_run_script.cpp
+msgid "Write your logic in the _run() method."
+msgstr ""
+
+#: editor/editor_run_script.cpp
+msgid "There is an edited scene already."
+msgstr ""
+
+#: editor/editor_run_script.cpp
+msgid "Couldn't instance script:"
+msgstr ""
+
+#: editor/editor_run_script.cpp
+msgid "Did you forget the 'tool' keyword?"
+msgstr ""
+
+#: editor/editor_run_script.cpp
+msgid "Couldn't run script:"
+msgstr ""
+
+#: editor/editor_run_script.cpp
+msgid "Did you forget the '_run' method?"
+msgstr ""
+
+#: editor/editor_settings.cpp
+msgid "Default (Same as Editor)"
+msgstr ""
+
+#: editor/editor_sub_scene.cpp
+msgid "Select Node(s) to Import"
+msgstr ""
+
+#: editor/editor_sub_scene.cpp
+msgid "Scene Path:"
+msgstr ""
+
+#: editor/editor_sub_scene.cpp
+msgid "Import From Node:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Re-Download"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Uninstall"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "(Installed)"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Download"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "(Missing)"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "(Current)"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Remove template version '%s'?"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Can't open export templates zip."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Invalid version.txt format inside templates."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid ""
+"Invalid version.txt format inside templates. Revision is not a valid "
+"identifier."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "No version.txt found inside templates."
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Error creating path for templates:\n"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Extracting Export Templates"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Importing:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Current Version:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Installed Versions:"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Install From File"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Remove Template"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Select template file"
+msgstr ""
+
+#: editor/export_template_manager.cpp
+msgid "Export Template Manager"
+msgstr ""
+
+#: editor/file_type_cache.cpp
+msgid "Can't open file_type_cache.cch for writing, not saving file type cache!"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Cannot navigate to '"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Status: Import of file failed. Please fix file and reimport manually."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid ""
+"\n"
+"Source: "
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Cannot move/rename resources root."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Cannot move a folder into itself.\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Error moving:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Unable to update dependencies:\n"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "No name provided"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Provided name contains invalid characters"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "No name provided."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Name contains invalid characters."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "A file or folder with this name already exists."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Renaming file:"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Renaming folder:"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Expand all"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Collapse all"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Copy Path"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Rename.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Move To.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "New Folder.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Show In File Manager"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Instance"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Edit Dependencies.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View Owners.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Previous Directory"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Next Directory"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Re-Scan Filesystem"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Toggle folder status as Favorite"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Instance the selected scene(s) as child of the selected node."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid ""
+"Scanning Files,\n"
+"Please Wait.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Move"
+msgstr ""
+
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr ""
+
+#: editor/groups_editor.cpp
+msgid "Add to Group"
+msgstr ""
+
+#: editor/groups_editor.cpp
+msgid "Remove from Group"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Single Scene"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import as Multiple Scenes+Materials"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+#: editor/plugins/cube_grid_theme_editor_plugin.cpp
+msgid "Import Scene"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Importing Scene.."
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Running Custom Script.."
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Couldn't load post-import script:"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Invalid/broken script for post-import (check console):"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Error running post-import script:"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Saving.."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Set as Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Clear Default for '%s'"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid " Files"
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Import As:"
+msgstr ""
+
+#: editor/import_dock.cpp editor/property_editor.cpp
+msgid "Preset.."
+msgstr ""
+
+#: editor/import_dock.cpp
+msgid "Reimport"
+msgstr ""
+
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
+msgstr ""
+
+#: editor/node_dock.cpp
+msgid "Groups"
+msgstr ""
+
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
+msgstr ""
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
+msgstr ""
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr ""
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
+msgstr ""
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr ""
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
+msgstr ""
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
+msgstr ""
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Toggle Autoplay"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "New Animation Name:"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "New Anim"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Change Animation Name:"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Delete Animation?"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Remove Animation"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "ERROR: Invalid animation name!"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "ERROR: Animation name already exists!"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Rename Animation"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Add Animation"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Blend Next Changed"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Change Blend Time"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Load Animation"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Duplicate Animation"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "ERROR: No animation to copy!"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "ERROR: No animation resource on clipboard!"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Pasted Animation"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Paste Animation"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "ERROR: No animation to edit!"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Play selected animation backwards from current pos. (A)"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Play selected animation backwards from end. (Shift+A)"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Stop animation playback. (S)"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Play selected animation from start. (Shift+D)"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Play selected animation from current pos. (D)"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Animation position (in seconds)."
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Scale animation playback globally for the node."
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Create new animation in player."
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Load animation from disk."
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Load an animation from disk."
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Save the current animation"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Display list of animations in player."
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Autoplay on Load"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Edit Target Blend Times"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Animation Tools"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Copy Animation"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Create New Animation"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Animation Name:"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
+msgid "Error!"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Blend Times:"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Next (Auto Queue):"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+msgid "Cross-Animation Blend Times"
+msgstr ""
+
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Animation"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "New name:"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Edit Filters"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Scale:"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Fade In (s):"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Fade Out (s):"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Blend"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Mix"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Auto Restart:"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Restart (s):"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Random Restart (s):"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Start!"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Amount:"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Blend:"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Blend 0:"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Blend 1:"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "X-Fade Time (s):"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Current:"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Add Input"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Clear Auto-Advance"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Set Auto-Advance"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Delete Input"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Animation tree is valid."
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Animation tree is invalid."
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Animation Node"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "OneShot Node"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Mix Node"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Blend2 Node"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Blend3 Node"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Blend4 Node"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "TimeScale Node"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "TimeSeek Node"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Transition Node"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Import Animations.."
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Edit Node Filters"
+msgstr ""
+
+#: editor/plugins/animation_tree_editor_plugin.cpp
+msgid "Filters.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr ""
+
+#: editor/plugins/camera_editor_plugin.cpp
+msgid "Preview"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Configure Snap"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Grid Offset:"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Grid Step:"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Rotation Offset:"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Rotation Step:"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Move Pivot"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Move Action"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Edit IK Chain"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Edit CanvasItem"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Anchors only"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors and Margins"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Paste Pose"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Select Mode"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Drag: Rotate"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Alt+Drag: Move"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Alt+RMB: Depth list selection"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Move Mode"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Rotate Mode"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid ""
+"Show a list of all objects at the position clicked\n"
+"(same as Alt+RMB in select mode)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Click to change object's rotation pivot."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Pan Mode"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Toggles snapping"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snapping options"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to grid"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Use Rotation Snap"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Configure Snap..."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap Relative"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Use Pixel Snap"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Smart snapping"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to parent"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to node anchor"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Make Bones"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Clear Bones"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show Bones"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Make IK Chain"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Clear IK Chain"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show helpers"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show rulers"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Center Selection"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Frame Selection"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Layout"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Insert Keys"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Insert Key"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Insert Key (Existing Tracks)"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Copy Pose"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Clear Pose"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Drag pivot from mouse position"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Set pivot at mouse position"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Divide grid step by 2"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Add %s"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Adding %s..."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Create Node"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "Error instancing scene from %s"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "OK :("
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "No parent to instance a child at."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
+msgid "This operation requires a single selected node."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change default type"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid ""
+"Drag & drop + Shift : Add node as sibling\n"
+"Drag & drop + Alt : Change node type"
+msgstr ""
+
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+msgid "Create Poly3D"
+msgstr ""
+
+#: editor/plugins/collision_shape_2d_editor_plugin.cpp
+msgid "Set Handle"
+msgstr ""
+
+#: editor/plugins/cube_grid_theme_editor_plugin.cpp
+msgid "Remove item %d?"
+msgstr ""
+
+#: editor/plugins/cube_grid_theme_editor_plugin.cpp
+#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Add Item"
+msgstr ""
+
+#: editor/plugins/cube_grid_theme_editor_plugin.cpp
+msgid "Remove Selected Item"
+msgstr ""
+
+#: editor/plugins/cube_grid_theme_editor_plugin.cpp
+msgid "Import from Scene"
+msgstr ""
+
+#: editor/plugins/cube_grid_theme_editor_plugin.cpp
+msgid "Update from Scene"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease in"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Load Curve Preset"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Add point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Remove point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Left linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Right linear"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Load preset"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Remove Curve Point"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Toggle Curve Linear Tangent"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Hold Shift to edit tangents individually"
+msgstr ""
+
+#: editor/plugins/gradient_editor_plugin.cpp
+msgid "Add/Remove Color Ramp Point"
+msgstr ""
+
+#: editor/plugins/gradient_editor_plugin.cpp
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Modify Color Ramp"
+msgstr ""
+
+#: editor/plugins/item_list_editor_plugin.cpp
+msgid "Item %d"
+msgstr ""
+
+#: editor/plugins/item_list_editor_plugin.cpp
+msgid "Items"
+msgstr ""
+
+#: editor/plugins/item_list_editor_plugin.cpp
+msgid "Item List Editor"
+msgstr ""
+
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid ""
+"No OccluderPolygon2D resource on this node.\n"
+"Create and assign one?"
+msgstr ""
+
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Occluder Polygon"
+msgstr ""
+
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit existing polygon:"
+msgstr ""
+
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "LMB: Move Point."
+msgstr ""
+
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Ctrl+LMB: Split Segment."
+msgstr ""
+
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "RMB: Erase Point."
+msgstr ""
+
+#: editor/plugins/line_2d_editor_plugin.cpp
+msgid "Remove Point from Line2D"
+msgstr ""
+
+#: editor/plugins/line_2d_editor_plugin.cpp
+msgid "Add Point to Line2D"
+msgstr ""
+
+#: editor/plugins/line_2d_editor_plugin.cpp
+msgid "Move Point in Line2D"
+msgstr ""
+
+#: editor/plugins/line_2d_editor_plugin.cpp
+#: editor/plugins/path_2d_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Select Points"
+msgstr ""
+
+#: editor/plugins/line_2d_editor_plugin.cpp
+#: editor/plugins/path_2d_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Shift+Drag: Select Control Points"
+msgstr ""
+
+#: editor/plugins/line_2d_editor_plugin.cpp
+#: editor/plugins/path_2d_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Click: Add Point"
+msgstr ""
+
+#: editor/plugins/line_2d_editor_plugin.cpp
+#: editor/plugins/path_2d_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Right Click: Delete Point"
+msgstr ""
+
+#: editor/plugins/line_2d_editor_plugin.cpp
+#: editor/plugins/path_2d_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Add Point (in empty space)"
+msgstr ""
+
+#: editor/plugins/line_2d_editor_plugin.cpp
+msgid "Split Segment (in line)"
+msgstr ""
+
+#: editor/plugins/line_2d_editor_plugin.cpp
+#: editor/plugins/path_2d_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Delete Point"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh is empty!"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Static Trimesh Body"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Static Convex Body"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "This doesn't work on scene root!"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Trimesh Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Convex Shape"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Navigation Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "MeshInstance lacks a Mesh!"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh has not surface to create outlines from!"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Could not create outline!"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Outline"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Trimesh Static Body"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Convex Static Body"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Trimesh Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Convex Collision Sibling"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Outline Mesh.."
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Create Outline Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Outline Size:"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "No mesh source specified (and no MultiMesh set in node)."
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "No mesh source specified (and MultiMesh contains no Mesh)."
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Mesh source is invalid (invalid path)."
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Mesh source is invalid (not a MeshInstance)."
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Mesh source is invalid (contains no Mesh resource)."
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "No surface source specified."
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Surface source is invalid (invalid path)."
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Surface source is invalid (no geometry)."
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Surface source is invalid (no faces)."
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Parent has no solid faces to populate."
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Couldn't map area."
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Select a Source Mesh:"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Select a Target Surface:"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Populate Surface"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Populate MultiMesh"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Target Surface:"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Source Mesh:"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "X-Axis"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Y-Axis"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Z-Axis"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Mesh Up Axis:"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Random Rotation:"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Random Tilt:"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Random Scale:"
+msgstr ""
+
+#: editor/plugins/multimesh_editor_plugin.cpp
+msgid "Populate"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Marking walkable triangles..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Partitioning..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
+msgstr ""
+
+#: editor/plugins/navigation_polygon_editor_plugin.cpp
+msgid "Create Navigation Polygon"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+msgid "Clear Emission Mask"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Generating AABB"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+msgid "Can only set point into a ParticlesMaterial process material"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+msgid "Error loading image:"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+msgid "No pixels with transparency > 128 in image.."
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+msgid "Set Emission Mask"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+msgid "Generate Visibility Rect"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+msgid "Load Emission Mask"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Particles"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+msgid "Generated Point Count:"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Generation Time (sec):"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+msgid "Emission Mask"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+msgid "Capture from Pixel"
+msgstr ""
+
+#: editor/plugins/particles_2d_editor_plugin.cpp
+msgid "Emission Colors"
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Node does not contain geometry."
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Node does not contain geometry (faces)."
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "A processor material of type 'ParticlesMaterial' is required."
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Faces contain no area!"
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "No faces!"
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Generate AABB"
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Create Emission Points From Mesh"
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Create Emission Points From Node"
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Clear Emitter"
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Create Emitter"
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Emission Points:"
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Surface Points"
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Surface Points+Normal (Directed)"
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Volume"
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Emission Source: "
+msgstr ""
+
+#: editor/plugins/particles_editor_plugin.cpp
+msgid "Generate Visibility AABB"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Remove Point from Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Remove Out-Control from Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Remove In-Control from Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Add Point to Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Move Point in Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Move In-Control in Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Move Out-Control in Curve"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+msgid "Select Control Points (Shift+Drag)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Segment (in curve)"
+msgstr ""
+
+#: editor/plugins/path_2d_editor_plugin.cpp
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Close Curve"
+msgstr ""
+
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Curve Point #"
+msgstr ""
+
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Set Curve Point Position"
+msgstr ""
+
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Set Curve In Position"
+msgstr ""
+
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Set Curve Out Position"
+msgstr ""
+
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Split Path"
+msgstr ""
+
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Remove Path Point"
+msgstr ""
+
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Remove Out-Control Point"
+msgstr ""
+
+#: editor/plugins/path_editor_plugin.cpp
+msgid "Remove In-Control Point"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Create UV Map"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Transform UV Map"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Polygon 2D UV Editor"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Move Point"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Ctrl: Rotate"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Shift: Move All"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Shift+Ctrl: Scale"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Move Polygon"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Rotate Polygon"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Scale Polygon"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Polygon->UV"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "UV->Polygon"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Clear UV"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Snap"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Enable Snap"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Grid"
+msgstr ""
+
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "ERROR: Couldn't load resource!"
+msgstr ""
+
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "Add Resource"
+msgstr ""
+
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "Rename Resource"
+msgstr ""
+
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Delete Resource"
+msgstr ""
+
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+msgid "Resource clipboard is empty!"
+msgstr ""
+
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Load Resource"
+msgstr ""
+
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Paste"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Clear Recent Files"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Close and save changes?\n"
+"\""
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error while saving theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error saving"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error importing theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Error importing"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Import Theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Save Theme As.."
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid " Class Reference"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Next script"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Previous script"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "File"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp editor/property_editor.cpp
+msgid "New"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Save All"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Soft Reload Script"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "History Prev"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "History Next"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Reload Theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Save Theme"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Save Theme As"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Close Docs"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Close All"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Toggle Scripts Panel"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Find.."
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Find Next"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+msgid "Step Over"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+msgid "Step Into"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+msgid "Break"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Continue"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Keep Debugger Open"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Debug with external editor"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Open Godot online documentation"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Search the class hierarchy."
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Search the reference documentation."
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Go to previous edited document."
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Go to next edited document."
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Discard"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Create Script"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"The following files are newer on disk.\n"
+"What action should be taken?:"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Reload"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid "Resave"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+msgid "Debugger"
+msgstr ""
+
+#: editor/plugins/script_editor_plugin.cpp
+msgid ""
+"Built-in scripts can only be edited when the scene they belong to is loaded"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Only resources from filesystem can be dropped."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Pick Color"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Convert Case"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Uppercase"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Lowercase"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Capitalize"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp scene/gui/line_edit.cpp
+#: scene/gui/text_edit.cpp
+msgid "Cut"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+msgid "Copy"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp scene/gui/line_edit.cpp
+#: scene/gui/text_edit.cpp
+msgid "Select All"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
+msgid "Move Up"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp editor/scene_tree_dock.cpp
+msgid "Move Down"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Delete Line"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Indent Left"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Indent Right"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Toggle Comment"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Clone Down"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Complete Symbol"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Trim Trailing Whitespace"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Convert Indent To Spaces"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Convert Indent To Tabs"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Auto Indent"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Toggle Breakpoint"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Remove All Breakpoints"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Goto Next Breakpoint"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Goto Previous Breakpoint"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Convert To Uppercase"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Convert To Lowercase"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Find Previous"
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Replace.."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Goto Function.."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Goto Line.."
+msgstr ""
+
+#: editor/plugins/script_text_editor.cpp
+msgid "Contextual Help"
+msgstr ""
+
+#: editor/plugins/shader_editor_plugin.cpp
+msgid "Shader"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Scalar Constant"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Vec Constant"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change RGB Constant"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Scalar Operator"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Vec Operator"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Vec Scalar Operator"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change RGB Operator"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Toggle Rot Only"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Scalar Function"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Vec Function"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Scalar Uniform"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Vec Uniform"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change RGB Uniform"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Default Value"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change XForm Uniform"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Texture Uniform"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Cubemap Uniform"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Comment"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Add/Remove to Color Ramp"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Add/Remove to Curve Map"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Modify Curve Map"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Change Input Name"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Connect Graph Nodes"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Disconnect Graph Nodes"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Remove Shader Graph Node"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Move Shader Graph Node"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Duplicate Graph Node(s)"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Delete Shader Graph Node(s)"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Error: Cyclic Connection Link"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Error: Missing Input Connections"
+msgstr ""
+
+#: editor/plugins/shader_graph_editor_plugin.cpp
+msgid "Add Shader Graph Node"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Orthogonal"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Perspective"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Transform Aborted."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "X-Axis Transform."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Y-Axis Transform."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Z-Axis Transform."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Plane Transform."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotating %s degrees."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Bottom View."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Bottom"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Top View."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rear View."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rear"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Front View."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Front"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Left View."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Left"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right View."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Keying is disabled (no key inserted)."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Animation Key Inserted."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Objects Drawn"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Material Changes"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Shader Changes"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Surface Changes"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Draw Calls"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Vertices"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Align with view"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Display Normal"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Display Wireframe"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Display Overdraw"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Display Unshaded"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Environment"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Gizmos"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Information"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Audio Listener"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Doppler Enable"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Left"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Right"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Forward"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Backwards"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Up"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Down"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Freelook Speed Modifier"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "preview"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "XForm Dialog"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Select Mode (Q)\n"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid ""
+"Drag: Rotate\n"
+"Alt+Drag: Move\n"
+"Alt+RMB: Depth list selection"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Move Mode (W)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate Mode (E)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale Mode (R)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Bottom View"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Top View"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rear View"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Front View"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Left View"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Right View"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Switch Perspective/Orthogonal view"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Insert Animation Key"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Focus Origin"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Focus Selection"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Align Selection With View"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Tool Select"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Tool Move"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Tool Rotate"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Tool Scale"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Transform"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Local Coords"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Transform Dialog.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "1 Viewport"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "2 Viewports"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "2 Viewports (Alt)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "3 Viewports"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "3 Viewports (Alt)"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "4 Viewports"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Origin"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Grid"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Settings"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Snap Settings"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate Snap:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate Snap (deg.):"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale Snap (%):"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Viewport Settings"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Perspective FOV (deg.):"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Z-Near:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "View Z-Far:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Transform Change"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Translate:"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Rotate (deg.):"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Scale (ratio):"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Transform Type"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Pre"
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Post"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "ERROR: Couldn't load frame resource!"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Add Frame"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Resource clipboard is empty or not a texture!"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Paste Frame"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Add Empty"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Change Animation Loop"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Change Animation FPS"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "(empty)"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Animations"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Speed (FPS):"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Animation Frames"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Insert Empty (Before)"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Insert Empty (After)"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Move (Before)"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Move (After)"
+msgstr ""
+
+#: editor/plugins/style_box_editor_plugin.cpp
+msgid "StyleBox Preview:"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Set Region Rect"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Snap Mode:"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "<None>"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Pixel Snap"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Grid Snap"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Auto Slice"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Offset:"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Step:"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Separation:"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Texture Region"
+msgstr ""
+
+#: editor/plugins/texture_region_editor_plugin.cpp
+msgid "Texture Region Editor"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Can't save theme to file:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Remove Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove All"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Add Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Remove Class Items"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Create Empty Template"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Create Empty Editor Template"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "CheckBox Radio1"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "CheckBox Radio2"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Check Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Checked Item"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Has"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Many"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+msgid "Options"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Have,Many,Several,Options!"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Tab 1"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Tab 2"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Tab 3"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp editor/project_settings_editor.cpp
+#: editor/scene_tree_editor.cpp editor/script_editor_debugger.cpp
+msgid "Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Data Type:"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Icon"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Style"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Color"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Erase Selection"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Paint TileMap"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Line Draw"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rectangle Paint"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Bucket Fill"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Erase TileMap"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Erase selection"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Find tile"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Transpose"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Mirror X"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Mirror Y"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Paint Tile"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Pick Tile"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rotate 0 degrees"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rotate 90 degrees"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rotate 180 degrees"
+msgstr ""
+
+#: editor/plugins/tile_map_editor_plugin.cpp
+msgid "Rotate 270 degrees"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Could not find tile:"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Item name or ID:"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Create from scene?"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Merge from scene?"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Create from Scene"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp
+msgid "Merge from Scene"
+msgstr ""
+
+#: editor/plugins/tile_set_editor_plugin.cpp editor/script_editor_debugger.cpp
+msgid "Error"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Runnable"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Delete patch '"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Delete preset '%s'?"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Presets"
+msgstr ""
+
+#: editor/project_export.cpp editor/project_settings_editor.cpp
+msgid "Add.."
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Resources"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export all resources in the project"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export selected scenes (and dependencies)"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export selected resources (and dependencies)"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export Mode:"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Resources to export:"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid ""
+"Filters to export non-resource files (comma separated, e.g: *.json, *.txt)"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid ""
+"Filters to exclude files from project (comma separated, e.g: *.json, *.txt)"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Patches"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Make Patch"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Features"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Custom (comma-separated):"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Feature List:"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export PCK/Zip"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export templates for this platform are missing:"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
+msgid "Export With Debug"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The path does not exist."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose a 'project.godot' file."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose a folder that does not contain a 'project.godot' file."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Imported Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Invalid project path (changed anything?)."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't edit project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't create project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "The following files failed extraction from package:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Rename Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in the project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "New Game Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Import Existing Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Create New Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Install Project:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Project Name:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Create folder"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Project Path:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Browse"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "That's a BINGO!"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Unnamed Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Can't open project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Are you sure to open more than one project?"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: no main scene defined.\n"
+"Please edit the project and set the main scene in \"Project Settings\" under "
+"the \"Application\" category."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Can't run project: Assets need to be imported.\n"
+"Please edit the project to trigger the initial import."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Are you sure to run more than one project?"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Remove project from the list? (Folder contents will not be modified)"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
+"You are about the scan %s folders for existing Godot projects. Do you "
+"confirm?"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Project List"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Scan"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Select a Folder to Scan"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "New Project"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Templates"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Exit"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Restart Now"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Can't run project"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Key "
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Joy Button"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Joy Axis"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Mouse Button"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Invalid action (anything goes but '/' or ':')."
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Action '%s' already exists!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Rename Input Action Event"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Add Input Action Event"
+msgstr ""
+
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
+msgid "Meta+"
+msgstr ""
+
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
+msgid "Shift+"
+msgstr ""
+
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
+msgid "Alt+"
+msgstr ""
+
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
+msgid "Control+"
+msgstr ""
+
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
+msgid "Press a Key.."
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Mouse Button Index:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Left Button"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Right Button"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Middle Button"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Wheel Up Button"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Wheel Down Button"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Button 6"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Button 7"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Button 8"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Button 9"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Joypad Axis Index:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Axis"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Joypad Button Index:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Add Input Action"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Erase Input Action Event"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Add Event"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Device"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Button"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Left Button."
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Right Button."
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Middle Button."
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Wheel Up."
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Wheel Down."
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Add Global Property"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Select a setting item first!"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "No property '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Setting '"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Delete Item"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Can't contain '/' or ':'"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Error saving settings."
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Settings saved OK."
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Override for Feature"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Add Translation"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Remove Translation"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Add Remapped Path"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Resource Remap Add Remap"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Change Resource Remap Language"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Remove Resource Remap"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Remove Resource Remap Option"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Project Settings (project.godot)"
+msgstr ""
+
+#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
+msgid "General"
+msgstr ""
+
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+msgid "Property:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Override For.."
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Input Map"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Action:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Device:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Index:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Localization"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Translations"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Translations:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Remaps"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Resources:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Remaps by Locale:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Locale"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Locales Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show all locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Filter mode:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Locales:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "AutoLoad"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Pick a Viewport"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Ease In"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Ease Out"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Zero"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Easing In-Out"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Easing Out-In"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "File.."
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Dir.."
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Assign"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Select Node"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "New Script"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Show in File System"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Convert To %s"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Error loading file: Not a resource!"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Selected node is not a Viewport!"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Pick a Node"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Bit %d, val %d."
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "On"
+msgstr ""
+
+#: editor/property_editor.cpp modules/visual_script/visual_script_editor.cpp
+msgid "Set"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Properties:"
+msgstr ""
+
+#: editor/property_editor.cpp
+msgid "Sections:"
+msgstr ""
+
+#: editor/property_selector.cpp
+msgid "Select Property"
+msgstr ""
+
+#: editor/property_selector.cpp
+msgid "Select Virtual Method"
+msgstr ""
+
+#: editor/property_selector.cpp
+msgid "Select Method"
+msgstr ""
+
+#: editor/pvrtc_compress.cpp
+msgid "Could not execute PVRTC tool:"
+msgstr ""
+
+#: editor/pvrtc_compress.cpp
+msgid "Can't load back converted image using PVRTC tool:"
+msgstr ""
+
+#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp
+msgid "Reparent Node"
+msgstr ""
+
+#: editor/reparent_dialog.cpp
+msgid "Reparent Location (Select new Parent):"
+msgstr ""
+
+#: editor/reparent_dialog.cpp
+msgid "Keep Global Transform"
+msgstr ""
+
+#: editor/reparent_dialog.cpp editor/scene_tree_dock.cpp
+msgid "Reparent"
+msgstr ""
+
+#: editor/run_settings_dialog.cpp
+msgid "Run Mode:"
+msgstr ""
+
+#: editor/run_settings_dialog.cpp
+msgid "Current Scene"
+msgstr ""
+
+#: editor/run_settings_dialog.cpp
+msgid "Main Scene"
+msgstr ""
+
+#: editor/run_settings_dialog.cpp
+msgid "Main Scene Arguments:"
+msgstr ""
+
+#: editor/run_settings_dialog.cpp
+msgid "Scene Run Settings"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/script_create_dialog.cpp
+#: scene/gui/dialogs.cpp
+msgid "OK"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "No parent to instance the scenes at."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Error loading scene from %s"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Ok"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Cannot instance the scene '%s' because the current scene exists within one "
+"of its nodes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Instance Scene(s)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on the tree root."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Move Node In Parent"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Move Nodes In Parent"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Duplicate Node(s)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Delete Node(s)?"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Can not perform with the root node."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "This operation can't be done on instanced scenes."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Save New Scene As.."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Editable Children"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Load As Placeholder"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Discard Instancing"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Makes Sense!"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Can't operate on nodes from a foreign scene!"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Can't operate on nodes the current scene inherits from!"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Remove Node(s)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Couldn't save new scene. Likely dependencies (instances) couldn't be "
+"satisfied."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Error saving scene."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Error duplicating scene to save it."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Sub-Resources:"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp editor/scene_tree_editor.cpp
+msgid "Open in Editor"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Delete Node(s)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Add Child Node"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Instance Child Scene"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Change Type"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Attach Script"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear Script"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Merge From Scene"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Save Branch as Scene"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Copy Node Path"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Delete (No Confirm)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Add/Create a New Node"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid ""
+"Instance a scene file as a Node. Creates an inherited scene if no root node "
+"exists."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Filter nodes"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Attach a new or existing script for the selected node."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear a script for the selected node."
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear Inheritance? (No Undo!)"
+msgstr ""
+
+#: editor/scene_tree_dock.cpp
+msgid "Clear!"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid "Toggle Spatial Visible"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid "Toggle CanvasItem Visible"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid "Node configuration warning:"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid ""
+"Node has connection(s) and group(s)\n"
+"Click to show signals dock."
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid ""
+"Node has connections.\n"
+"Click to show signals dock."
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid ""
+"Node is in group(s).\n"
+"Click to show groups dock."
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid "Instance:"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid "Open script"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid ""
+"Node is locked.\n"
+"Click to unlock"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid ""
+"Children are not selectable.\n"
+"Click to make selectable"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid "Toggle Visibility"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid "Invalid node name, the following characters are not allowed:"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid "Rename Node"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid "Scene Tree (Nodes):"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid "Node Configuration Warning!"
+msgstr ""
+
+#: editor/scene_tree_editor.cpp
+msgid "Select a Node"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Error loading template '%s'"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Error - Could not create script in filesystem."
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Error loading script from %s"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "N/A"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Path is empty"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Path is not local"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Invalid base path"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "File exists, will be reused"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Invalid extension"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Wrong extension chosen"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Invalid Path"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Invalid class name"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Invalid inherited parent name or path"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Script valid"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Allowed: a-z, A-Z, 0-9 and _"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Built-in script (into scene file)"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Create new script file"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Load existing script file"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Inherits"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Class Name"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Template"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Built-in Script"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "Attach Node Script"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Bytes:"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Warning"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Error:"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Source:"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Function:"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Errors"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Child Process Connected"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Inspect Previous Instance"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Inspect Next Instance"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Stack Frames"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Variable"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Errors:"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Stack Trace (if applicable):"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Remote Inspector"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Live Scene Tree:"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Remote Object Properties: "
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Profiler"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Monitor"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Value"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Monitors"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "List of Video Memory Usage by Resource:"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Total:"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Video Mem"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Resource Path"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Type"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Usage"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Misc"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Clicked Control:"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Clicked Control Type:"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Live Edit Root:"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
+msgid "Set From Tree"
+msgstr ""
+
+#: editor/settings_config_dialog.cpp
+msgid "Shortcuts"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change Light Radius"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change AudioStreamPlayer3D Emission Angle"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change Camera FOV"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change Camera Size"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change Sphere Shape Radius"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change Box Shape Extents"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change Capsule Shape Radius"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change Capsule Shape Height"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change Ray Shape Length"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change Notifier Extents"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change Particles AABB"
+msgstr ""
+
+#: editor/spatial_editor_gizmos.cpp
+msgid "Change Probe Extents"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Library"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Status"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
+#: modules/gdscript/gd_functions.cpp
+#: modules/visual_script/visual_script_builtin_funcs.cpp
+msgid "Invalid type argument to convert(), use TYPE_* constants."
+msgstr ""
+
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
+#: modules/visual_script/visual_script_builtin_funcs.cpp
+msgid "Not enough bytes for decoding bytes, or invalid format."
+msgstr ""
+
+#: modules/gdscript/gd_functions.cpp
+msgid "step argument is zero!"
+msgstr ""
+
+#: modules/gdscript/gd_functions.cpp
+msgid "Not a script with an instance"
+msgstr ""
+
+#: modules/gdscript/gd_functions.cpp
+msgid "Not based on a script"
+msgstr ""
+
+#: modules/gdscript/gd_functions.cpp
+msgid "Not based on a resource file"
+msgstr ""
+
+#: modules/gdscript/gd_functions.cpp
+msgid "Invalid instance dictionary format (missing @path)"
+msgstr ""
+
+#: modules/gdscript/gd_functions.cpp
+msgid "Invalid instance dictionary format (can't load script at @path)"
+msgstr ""
+
+#: modules/gdscript/gd_functions.cpp
+msgid "Invalid instance dictionary format (invalid script at @path)"
+msgstr ""
+
+#: modules/gdscript/gd_functions.cpp
+msgid "Invalid instance dictionary (invalid subclasses)"
+msgstr ""
+
+#: modules/gdscript/gd_functions.cpp
+msgid "Object can't provide a length."
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Delete Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Duplicate Selection"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Snap View"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Prev Level (%sDown Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Next Level (%sUp Wheel)"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Disabled"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Above"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Clip Below"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit X Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Y Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Edit Z Axis"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate X"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Y"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Back Rotate Z"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Cursor Clear Rotation"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Create Exterior Connector"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Erase Area"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Selection -> Duplicate"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Selection -> Clear"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "GridMap Settings"
+msgstr ""
+
+#: modules/gridmap/grid_map_editor_plugin.cpp
+msgid "Pick Distance:"
+msgstr ""
+
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
+msgstr ""
+
+#: modules/visual_script/visual_script.cpp
+msgid ""
+"A node yielded without working memory, please read the docs on how to yield "
+"properly!"
+msgstr ""
+
+#: modules/visual_script/visual_script.cpp
+msgid ""
+"Node yielded, but did not return a function state in the first working "
+"memory."
+msgstr ""
+
+#: modules/visual_script/visual_script.cpp
+msgid ""
+"Return value must be assigned to first element of node working memory! Fix "
+"your node please."
+msgstr ""
+
+#: modules/visual_script/visual_script.cpp
+msgid "Node returned an invalid sequence output: "
+msgstr ""
+
+#: modules/visual_script/visual_script.cpp
+msgid "Found sequence bit but not the node in the stack, report bug!"
+msgstr ""
+
+#: modules/visual_script/visual_script.cpp
+msgid "Stack overflow with stack depth: "
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Signal Arguments"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Argument Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Argument name"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Set Variable Default Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Set Variable Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Functions:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Variables:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Name is not a valid identifier:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Name already in use by another func/var/signal:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Rename Function"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Rename Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Rename Signal"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Function"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Signal"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Expression"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Node"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Duplicate VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Hold Ctrl to drop a Getter. Hold Shift to drop a generic signature."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Hold Meta to drop a simple reference to the node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Hold Ctrl to drop a simple reference to the node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Hold Meta to drop a Variable Setter."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Hold Ctrl to drop a Variable Setter."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Preload Node"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Node(s) From Tree"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Getter Property"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Add Setter Property"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Base Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Move Node(s)"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove VisualScript Node"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Connect Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Condition"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Sequence"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Switch"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Iterator"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "While"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Return"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Get"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Change Input Value"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Can't copy the function node."
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Clipboard is empty!"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Paste VisualScript Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Function"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Variable"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit Signal"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Remove Signal"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Variable:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Editing Signal:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Base Type:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Available Nodes:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Select or create a function to edit graph"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit Signal Arguments:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit Variable:"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Delete Selected"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Find Node Type"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Copy Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Cut Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Paste Nodes"
+msgstr ""
+
+#: modules/visual_script/visual_script_flow_control.cpp
+msgid "Input type not iterable: "
+msgstr ""
+
+#: modules/visual_script/visual_script_flow_control.cpp
+msgid "Iterator became invalid"
+msgstr ""
+
+#: modules/visual_script/visual_script_flow_control.cpp
+msgid "Iterator became invalid: "
+msgstr ""
+
+#: modules/visual_script/visual_script_func_nodes.cpp
+msgid "Invalid index property name."
+msgstr ""
+
+#: modules/visual_script/visual_script_func_nodes.cpp
+msgid "Base object is not a Node!"
+msgstr ""
+
+#: modules/visual_script/visual_script_func_nodes.cpp
+msgid "Path does not lead Node!"
+msgstr ""
+
+#: modules/visual_script/visual_script_func_nodes.cpp
+msgid "Invalid index property name '%s' in node %s."
+msgstr ""
+
+#: modules/visual_script/visual_script_nodes.cpp
+msgid ": Invalid argument of type: "
+msgstr ""
+
+#: modules/visual_script/visual_script_nodes.cpp
+msgid ": Invalid arguments: "
+msgstr ""
+
+#: modules/visual_script/visual_script_nodes.cpp
+msgid "VariableGet not found in script: "
+msgstr ""
+
+#: modules/visual_script/visual_script_nodes.cpp
+msgid "VariableSet not found in script: "
+msgstr ""
+
+#: modules/visual_script/visual_script_nodes.cpp
+msgid "Custom node has no _step() method, can't process graph."
+msgstr ""
+
+#: modules/visual_script/visual_script_nodes.cpp
+msgid ""
+"Invalid return value from _step(), must be integer (seq out), or string "
+"(error)."
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Run in Browser"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Run exported HTML in the system's default browser."
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Could not write file:\n"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Could not read file:\n"
+msgstr ""
+
+#: platform/javascript/export/export.cpp
+msgid "Could not open template for export:\n"
+msgstr ""
+
+#: scene/2d/animated_sprite.cpp
+msgid ""
+"A SpriteFrames resource must be created or set in the 'Frames' property in "
+"order for AnimatedSprite to display frames."
+msgstr ""
+
+#: scene/2d/canvas_modulate.cpp
+msgid ""
+"Only one visible CanvasModulate is allowed per scene (or set of instanced "
+"scenes). The first created one will work, while the rest will be ignored."
+msgstr ""
+
+#: scene/2d/collision_polygon_2d.cpp
+msgid ""
+"CollisionPolygon2D only serves to provide a collision shape to a "
+"CollisionObject2D derived node. Please only use it as a child of Area2D, "
+"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape."
+msgstr ""
+
+#: scene/2d/collision_polygon_2d.cpp
+msgid "An empty CollisionPolygon2D has no effect on collision."
+msgstr ""
+
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"CollisionShape2D only serves to provide a collision shape to a "
+"CollisionObject2D derived node. Please only use it as a child of Area2D, "
+"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape."
+msgstr ""
+
+#: scene/2d/collision_shape_2d.cpp
+msgid ""
+"A shape must be provided for CollisionShape2D to function. Please create a "
+"shape resource for it!"
+msgstr ""
+
+#: scene/2d/light_2d.cpp
+msgid ""
+"A texture with the shape of the light must be supplied to the 'texture' "
+"property."
+msgstr ""
+
+#: scene/2d/light_occluder_2d.cpp
+msgid ""
+"An occluder polygon must be set (or drawn) for this occluder to take effect."
+msgstr ""
+
+#: scene/2d/light_occluder_2d.cpp
+msgid "The occluder polygon for this occluder is empty. Please draw a polygon!"
+msgstr ""
+
+#: scene/2d/navigation_polygon.cpp
+msgid ""
+"A NavigationPolygon resource must be set or created for this node to work. "
+"Please set a property or draw a polygon."
+msgstr ""
+
+#: scene/2d/navigation_polygon.cpp
+msgid ""
+"NavigationPolygonInstance must be a child or grandchild to a Navigation2D "
+"node. It only provides navigation data."
+msgstr ""
+
+#: scene/2d/parallax_layer.cpp
+msgid ""
+"ParallaxLayer node only works when set as child of a ParallaxBackground node."
+msgstr ""
+
+#: scene/2d/particles_2d.cpp scene/3d/particles.cpp
+msgid ""
+"A material to process the particles is not assigned, so no behavior is "
+"imprinted."
+msgstr ""
+
+#: scene/2d/path_2d.cpp
+msgid "PathFollow2D only works when set as a child of a Path2D node."
+msgstr ""
+
+#: scene/2d/physics_body_2d.cpp
+msgid ""
+"Size changes to RigidBody2D (in character or rigid modes) will be overriden "
+"by the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
+#: scene/2d/remote_transform_2d.cpp
+msgid "Path property must point to a valid Node2D node to work."
+msgstr ""
+
+#: scene/2d/sprite.cpp
+msgid ""
+"Path property must point to a valid Viewport node to work. Such Viewport "
+"must be set to 'render target' mode."
+msgstr ""
+
+#: scene/2d/sprite.cpp
+msgid ""
+"The Viewport set in the path property must be set as 'render target' in "
+"order for this sprite to work."
+msgstr ""
+
+#: scene/2d/visibility_notifier_2d.cpp
+msgid ""
+"VisibilityEnable2D works best when used with the edited scene root directly "
+"as parent."
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRCamera must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRController must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid ""
+"The controller id must not be 0 or this controller will not be bound to an "
+"actual controller"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVRAnchor must have an ARVROrigin node as its parent"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid ""
+"The anchor id must not be 0 or this anchor will not be bound to an actual "
+"anchor"
+msgstr ""
+
+#: scene/3d/arvr_nodes.cpp
+msgid "ARVROrigin requires an ARVRCamera child node"
+msgstr ""
+
+#: scene/3d/collision_polygon.cpp
+msgid ""
+"CollisionPolygon only serves to provide a collision shape to a "
+"CollisionObject derived node. Please only use it as a child of Area, "
+"StaticBody, RigidBody, KinematicBody, etc. to give them a shape."
+msgstr ""
+
+#: scene/3d/collision_polygon.cpp
+msgid "An empty CollisionPolygon has no effect on collision."
+msgstr ""
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"CollisionShape only serves to provide a collision shape to a CollisionObject "
+"derived node. Please only use it as a child of Area, StaticBody, RigidBody, "
+"KinematicBody, etc. to give them a shape."
+msgstr ""
+
+#: scene/3d/collision_shape.cpp
+msgid ""
+"A shape must be provided for CollisionShape to function. Please create a "
+"shape resource for it!"
+msgstr ""
+
+#: scene/3d/navigation_mesh.cpp
+msgid "A NavigationMesh resource must be set or created for this node to work."
+msgstr ""
+
+#: scene/3d/navigation_mesh.cpp
+msgid ""
+"NavigationMeshInstance must be a child or grandchild to a Navigation node. "
+"It only provides navigation data."
+msgstr ""
+
+#: scene/3d/particles.cpp
+msgid ""
+"Nothing is visible because meshes have not been assigned to draw passes."
+msgstr ""
+
+#: scene/3d/physics_body.cpp
+msgid ""
+"Size changes to RigidBody (in character or rigid modes) will be overriden by "
+"the physics engine when running.\n"
+"Change the size in children collision shapes instead."
+msgstr ""
+
+#: scene/3d/remote_transform.cpp
+msgid "Path property must point to a valid Spatial node to work."
+msgstr ""
+
+#: scene/3d/scenario_fx.cpp
+msgid ""
+"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)."
+msgstr ""
+
+#: scene/3d/sprite_3d.cpp
+msgid ""
+"A SpriteFrames resource must be created or set in the 'Frames' property in "
+"order for AnimatedSprite3D to display frames."
+msgstr ""
+
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
+#: scene/gui/color_picker.cpp
+msgid "Raw Mode"
+msgstr ""
+
+#: scene/gui/color_picker.cpp
+msgid "Add current color as a preset"
+msgstr ""
+
+#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr ""
+
+#: scene/gui/dialogs.cpp
+msgid "Alert!"
+msgstr ""
+
+#: scene/gui/dialogs.cpp
+msgid "Please Confirm..."
+msgstr ""
+
+#: scene/gui/popup.cpp
+msgid ""
+"Popups will hide by default unless you call popup() or any of the popup*() "
+"functions. Making them visible for editing is fine though, but they will "
+"hide upon running."
+msgstr ""
+
+#: scene/gui/scroll_container.cpp
+msgid ""
+"ScrollContainer is intended to work with a single child control.\n"
+"Use a container as child (VBox,HBox,etc), or a Control and set the custom "
+"minimum size manually."
+msgstr ""
+
+#: scene/main/scene_tree.cpp
+msgid ""
+"Default Environment as specified in Project Setings (Rendering -> Viewport -"
+"> Default Environment) could not be loaded."
+msgstr ""
+
+#: scene/main/viewport.cpp
+msgid ""
+"This viewport is not set as render target. If you intend for it to display "
+"its contents directly to the screen, make it a child of a Control so it can "
+"obtain a size. Otherwise, make it a RenderTarget and assign its internal "
+"texture to some node for display."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr ""
diff --git a/editor/translations/nb.po b/editor/translations/nb.po
index 6dc635daa6..b4c3df0fb9 100644
--- a/editor/translations/nb.po
+++ b/editor/translations/nb.po
@@ -1,5 +1,6 @@
# Norwegian Bokmål translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# Anonymous <GentleSaucepan@protonmail.com>, 2017.
@@ -192,10 +193,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr ""
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -357,262 +357,6 @@ msgstr ""
msgid "Change Array Value"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Contents:"
-msgstr "Kontinuerlig"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "Lukk"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connecting.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Requesting.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Error making request"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr ""
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "Ring"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr ""
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr ""
@@ -649,6 +393,14 @@ msgstr ""
msgid "Selection Only"
msgstr ""
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr ""
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr ""
@@ -681,11 +433,11 @@ msgstr ""
msgid "Skip"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr ""
@@ -752,6 +504,20 @@ msgstr ""
msgid "Oneshot"
msgstr ""
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "Lukk"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr ""
@@ -777,7 +543,7 @@ msgstr ""
msgid "Disconnect"
msgstr ""
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr ""
@@ -794,12 +560,25 @@ msgstr ""
msgid "Recent:"
msgstr ""
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr ""
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr ""
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr ""
@@ -855,6 +634,10 @@ msgid "Owners Of:"
msgstr ""
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr ""
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -862,7 +645,7 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
+msgid "Cannot remove:\n"
msgstr ""
#: editor/dependency_editor.cpp
@@ -929,10 +712,6 @@ msgid "Godot Engine contributors"
msgstr ""
#: editor/editor_about.cpp
-msgid "Authors"
-msgstr ""
-
-#: editor/editor_about.cpp
msgid "Project Founders"
msgstr ""
@@ -949,6 +728,38 @@ msgid "Developers"
msgstr ""
#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
msgid "License"
msgstr ""
@@ -991,6 +802,16 @@ msgid "Package Installed Successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
msgstr ""
@@ -1040,10 +861,6 @@ msgid "Audio Bus, Drag and Drop to rearrange."
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
msgid "Solo"
msgstr ""
@@ -1055,12 +872,20 @@ msgstr ""
msgid "Bypass"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Reset Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
#, fuzzy
msgid "Delete Effect"
msgstr "Slett Valgte"
@@ -1083,6 +908,10 @@ msgid "Duplicate Audio Bus"
msgstr "Dupliser Utvalg"
#: editor/editor_audio_buses.cpp
+msgid "Reset Bus Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
#, fuzzy
msgid "Move Audio Bus"
msgstr "Flytt Legg til Nøkkel"
@@ -1115,7 +944,8 @@ msgstr ""
msgid "Create a new Bus Layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
@@ -1205,7 +1035,7 @@ msgid "Rearrange Autoloads"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr ""
@@ -1213,9 +1043,7 @@ msgstr ""
msgid "Node Name:"
msgstr ""
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr ""
@@ -1248,18 +1076,19 @@ msgid "Choose a Directory"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr ""
@@ -1279,30 +1108,6 @@ msgstr ""
msgid "Template file not found:\n"
msgstr ""
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr ""
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr ""
@@ -1387,6 +1192,10 @@ msgstr ""
msgid "Move Favorite Down"
msgstr ""
+#: editor/editor_file_dialog.cpp
+msgid "Go to parent folder"
+msgstr ""
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr ""
@@ -1401,10 +1210,6 @@ msgid "File:"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr ""
@@ -1429,6 +1234,10 @@ msgstr ""
msgid "Search Classes"
msgstr ""
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr ""
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr ""
@@ -1445,15 +1254,28 @@ msgstr ""
msgid "Brief Description:"
msgstr ""
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Members"
+msgstr "Medlemmer:"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "Medlemmer:"
#: editor/editor_help.cpp
+msgid "Public Methods"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr ""
#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr ""
@@ -1463,6 +1285,11 @@ msgstr "Signaler:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Enumerations"
+msgstr "Funksjoner:"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Enumerations:"
msgstr "Funksjoner:"
@@ -1471,18 +1298,46 @@ msgid "enum "
msgstr ""
#: editor/editor_help.cpp
+msgid "Constants"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Description"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Property Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Methods"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr ""
@@ -1491,24 +1346,21 @@ msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr ""
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr ""
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1525,6 +1377,26 @@ msgid "Error while saving."
msgstr ""
#: editor/editor_node.cpp
+msgid "Can't open '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error while parsing '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error while loading '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr ""
@@ -1582,6 +1454,33 @@ msgid "Restored default layout to base settings."
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr ""
@@ -1743,23 +1642,34 @@ msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgid "Unable to load addon script from path: '%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -1769,7 +1679,7 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr ""
@@ -1780,11 +1690,11 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp
-msgid "Error loading scene."
+msgid "Scene '%s' has broken dependencies:"
msgstr ""
#: editor/editor_node.cpp
-msgid "Scene '%s' has broken dependencies:"
+msgid "Clear Recent Scenes"
msgstr ""
#: editor/editor_node.cpp
@@ -1820,7 +1730,7 @@ msgstr ""
msgid "Toggle distraction-free mode."
msgstr ""
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr ""
@@ -2040,6 +1950,10 @@ msgstr ""
msgid "Issue Tracker"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "About"
msgstr ""
@@ -2048,7 +1962,7 @@ msgstr ""
msgid "Play the project."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr ""
@@ -2064,7 +1978,7 @@ msgstr ""
msgid "Stop the scene."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr ""
@@ -2137,6 +2051,15 @@ msgid "Object properties."
msgstr ""
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr ""
@@ -2152,14 +2075,6 @@ msgstr ""
msgid "Don't Save"
msgstr ""
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr ""
-
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
@@ -2220,11 +2135,28 @@ msgstr ""
msgid "Open the previous Editor"
msgstr ""
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr ""
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr ""
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr ""
@@ -2257,7 +2189,7 @@ msgid "Frame %"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+msgid "Physics Frame %"
msgstr ""
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2276,26 +2208,6 @@ msgstr ""
msgid "Frame #:"
msgstr ""
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr ""
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2405,10 +2317,6 @@ msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr ""
@@ -2441,9 +2349,17 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
+"Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2453,87 +2369,87 @@ msgid ""
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
+msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
+msgid "Cannot move a folder into itself.\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
+msgid "Error moving:\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
+msgid "Unable to update dependencies:\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "No name provided"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving file:\n"
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving dir:\n"
+msgid "No name provided."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
+msgid "Name contains invalid characters."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
+msgid "A file or folder with this name already exists."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
+msgid "Renaming file:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Expand all"
+msgid "Renaming folder:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Collapse all"
+msgid "Expand all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
+msgid "Collapse all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Instance"
+msgid "Copy Path"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
+msgid "Rename.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
+msgid "Move To.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
+msgid "New Folder.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
+msgid "Show In File Manager"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move To.."
+msgid "Instance"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Info"
+msgid "Edit Dependencies.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
+msgid "View Owners.."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2566,6 +2482,11 @@ msgstr ""
msgid "Move"
msgstr ""
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr ""
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr ""
@@ -2579,6 +2500,10 @@ msgid "Import as Single Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -2591,6 +2516,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
msgstr ""
@@ -2599,38 +2536,31 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr ""
@@ -2658,579 +2588,54 @@ msgstr ""
msgid "Reimport"
msgstr ""
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
+#: editor/node_dock.cpp
+msgid "Groups"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr ""
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Select a Node to edit Signals and Groups."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -3386,7 +2791,6 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3497,10 +2901,6 @@ msgid "Delete Input"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr ""
@@ -3556,64 +2956,182 @@ msgstr ""
msgid "Filters.."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Contents:"
+msgstr "Kontinuerlig"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3656,11 +3174,15 @@ msgid "Edit CanvasItem"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+msgid "Anchors only"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors and Margins"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
+msgid "Change Anchors"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3711,59 +3233,72 @@ msgid "Pan Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
+msgid "Toggles snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
+msgid "Snapping options"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
+msgid "Snap to grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "Rediger"
+msgid "Use Rotation Snap"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Configure Snap..."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
+msgid "Snap Relative"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
+msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
+msgid "Smart snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
+msgid "Snap to parent"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
+msgid "Snap to node anchor"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3792,11 +3327,16 @@ msgid "View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show helpers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
+msgid "Show rulers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3808,7 +3348,7 @@ msgid "Frame Selection"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
+msgid "Layout"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3832,11 +3372,20 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
+msgid "Drag pivot from mouse position"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "Fjern Funksjon"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
+msgid "Divide grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3847,23 +3396,28 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr ""
@@ -3877,45 +3431,6 @@ msgid ""
"Drag & drop + Alt : Change node type"
msgstr ""
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3925,14 +3440,6 @@ msgid "Set Handle"
msgstr ""
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr ""
@@ -3955,6 +3462,27 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Ease in"
+msgstr "Fjern Utvalg"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
msgstr ""
@@ -4032,22 +3560,18 @@ msgid "Create Occluder Polygon"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr ""
@@ -4148,6 +3672,10 @@ msgid "Create Outline"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr ""
@@ -4275,12 +3803,72 @@ msgstr ""
msgid "Populate"
msgstr ""
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create Navigation Polygon"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Marking walkable triangles..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Partitioning..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
msgstr ""
#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
+msgid "Create Navigation Polygon"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -4454,16 +4042,19 @@ msgid "Curve Point #"
msgstr ""
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
-msgstr ""
+msgstr "Fjern Funksjon"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
-msgstr ""
+msgstr "Fjern Funksjon"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
-msgstr ""
+msgstr "Fjern Funksjon"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4523,6 +4114,14 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "Rediger"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr ""
@@ -4577,63 +4176,10 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr ""
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr ""
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr ""
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
@@ -4724,6 +4270,10 @@ msgstr ""
msgid "Close All"
msgstr ""
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
msgstr ""
@@ -4752,7 +4302,8 @@ msgstr ""
msgid "Break"
msgstr ""
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr ""
@@ -4765,18 +4316,6 @@ msgid "Debug with external editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
msgstr ""
@@ -4858,8 +4397,9 @@ msgid "Cut"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr ""
@@ -5123,10 +4663,6 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr ""
@@ -5143,10 +4679,6 @@ msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr ""
@@ -5376,6 +4908,10 @@ msgid "Transform"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr ""
@@ -5521,6 +5057,10 @@ msgid "Speed (FPS):"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr ""
@@ -5533,11 +5073,12 @@ msgid "Insert Empty (After)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr ""
+#, fuzzy
+msgid "Move (Before)"
+msgstr "Kopier Noder"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
+msgid "Move (After)"
msgstr ""
#: editor/plugins/style_box_editor_plugin.cpp
@@ -5615,7 +5156,11 @@ msgid "Remove All"
msgstr "Fjern Funksjon"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
@@ -5700,6 +5245,10 @@ msgid "Style"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr ""
@@ -5749,7 +5298,7 @@ msgid "Mirror Y"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
+msgid "Paint Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5813,6 +5362,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr ""
@@ -5883,19 +5436,29 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
+msgid "The path does not exist."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
+msgid "Please choose a folder that does not contain a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
@@ -5903,10 +5466,26 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't edit project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr ""
@@ -5915,23 +5494,23 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Import Existing Project"
+msgid "Rename Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
+msgid "Couldn't get project.godot in the project path."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Name:"
+msgid "New Game Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Create New Project"
+msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path:"
+msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
@@ -5939,11 +5518,19 @@ msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Browse"
+msgid "Project Name:"
msgstr ""
#: editor/project_manager.cpp
-msgid "New Game Project"
+msgid "Create folder"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Project Path:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
@@ -5955,6 +5542,10 @@ msgid "Unnamed Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Can't open project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr ""
@@ -5981,16 +5572,18 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
-"You are about the scan %s folders for existing Godot projects. Do you "
-"confirm?"
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project List"
+msgid ""
+"You are about the scan %s folders for existing Godot projects. Do you "
+"confirm?"
msgstr ""
#: editor/project_manager.cpp
-msgid "Run"
+msgid "Project List"
msgstr ""
#: editor/project_manager.cpp
@@ -6014,6 +5607,10 @@ msgid "Exit"
msgstr ""
#: editor/project_manager.cpp
+msgid "Restart Now"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -6050,17 +5647,14 @@ msgid "Add Input Action Event"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
@@ -6121,7 +5715,7 @@ msgstr "Forandre"
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr ""
@@ -6141,31 +5735,31 @@ msgstr ""
msgid "Add Event"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr ""
@@ -6174,7 +5768,7 @@ msgid "Add Global Property"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6191,6 +5785,14 @@ msgid "Delete Item"
msgstr "Slett Valgte"
#: editor/project_settings_editor.cpp
+msgid "Can't contain '/' or ':'"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
@@ -6231,6 +5833,14 @@ msgid "Remove Resource Remap Option"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
@@ -6291,6 +5901,27 @@ msgid "Locale"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Locales Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show all locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "Lim inn Noder"
+
+#: editor/project_settings_editor.cpp
+msgid "Locales:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -6340,10 +5971,18 @@ msgid "New Script"
msgstr ""
#: editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr ""
#: editor/property_editor.cpp
+msgid "Convert To %s"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr ""
@@ -6381,6 +6020,10 @@ msgid "Select Property"
msgstr ""
#: editor/property_selector.cpp
+msgid "Select Virtual Method"
+msgstr ""
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr ""
@@ -6408,26 +6051,6 @@ msgstr ""
msgid "Reparent"
msgstr ""
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr ""
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr ""
@@ -6554,14 +6177,6 @@ msgid "Sub-Resources:"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr ""
@@ -6744,6 +6359,14 @@ msgid "Invalid base path"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "File exists, will be reused"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr ""
@@ -6785,6 +6408,10 @@ msgid "Load existing script file"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Inherits"
msgstr ""
@@ -6825,6 +6452,10 @@ msgid "Function:"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr ""
@@ -6905,6 +6536,10 @@ msgid "Type"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr ""
@@ -6980,12 +6615,28 @@ msgstr ""
msgid "Change Probe Extents"
msgstr ""
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Library"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Status"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr "Ugyldig argument til convert(), bruk TYPE_*-konstantene."
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr ""
@@ -7037,10 +6688,6 @@ msgid "GridMap Duplicate Selection"
msgstr "Dupliser Utvalg"
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Snap View"
msgstr ""
@@ -7134,12 +6781,8 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Tiles"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7337,10 +6980,18 @@ msgid "Return"
msgstr "Returner"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr "Ring"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr "FÃ¥"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Input Value"
msgstr "Anim Forandre Verdi"
@@ -7699,6 +7350,12 @@ msgid ""
"order for AnimatedSprite3D to display frames."
msgstr ""
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -7708,15 +7365,15 @@ msgid "Add current color as a preset"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Alert!"
+msgid "Cancel"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Please Confirm..."
+msgid "Alert!"
msgstr ""
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
+#: scene/gui/dialogs.cpp
+msgid "Please Confirm..."
msgstr ""
#: scene/gui/popup.cpp
@@ -7746,3 +7403,19 @@ msgid ""
"obtain a size. Otherwise, make it a RenderTarget and assign its internal "
"texture to some node for display."
msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr ""
diff --git a/editor/translations/nl.po b/editor/translations/nl.po
index b13d86e0f2..a9ed678eac 100644
--- a/editor/translations/nl.po
+++ b/editor/translations/nl.po
@@ -1,21 +1,24 @@
# Dutch translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
-# Aram Nap <xyphex.aram@gmail.com>, 2017
+# Aram Nap <xyphex.aram@gmail.com>, 2017.
+# Robin Arys <robinarys@hotmail.com>, 2017.
+# Senno Kaasjager <senno.kaasjager@gmail.com>, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-04-13 18:15+0000\n"
-"Last-Translator: Aram Nap <xyphex.aram@gmail.com>\n"
+"PO-Revision-Date: 2017-10-25 23:45+0000\n"
+"Last-Translator: Robin Arys <robinarys@hotmail.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 2.14-dev\n"
+"X-Generator: Weblate 2.17\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -84,7 +87,7 @@ msgstr "Anim Track Wijzig Waarde Modus"
#: editor/animation_editor.cpp
#, fuzzy
msgid "Anim Track Change Wrap Mode"
-msgstr "Anim Track Wijzig Waarde Modus"
+msgstr "Animatiespoor Wijzig Wikkelmodus"
#: editor/animation_editor.cpp
msgid "Edit Node Curve"
@@ -153,7 +156,7 @@ msgstr "Lineair"
#: editor/animation_editor.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constant"
-msgstr "Constant"
+msgstr "Constante"
#: editor/animation_editor.cpp
msgid "In"
@@ -192,10 +195,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr "Maak %d NIEUWE tracks aan en keys invoeren?"
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -279,7 +281,7 @@ msgstr "Verwijder geselecteerde track."
#: editor/animation_editor.cpp
msgid "Track tools"
-msgstr "Track tools"
+msgstr "Spoorgereedschappen"
#: editor/animation_editor.cpp
msgid "Enable editing of individual keys by clicking them."
@@ -312,7 +314,7 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Key"
-msgstr "Key"
+msgstr "Sleutel"
#: editor/animation_editor.cpp
msgid "Transition"
@@ -358,277 +360,13 @@ msgstr "Wijzig Array Waarde Type"
msgid "Change Array Value"
msgstr "Wijzig Array Waarde"
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Contents:"
-msgstr "Constanten:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "View Files"
-msgstr "Bestand:"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr "Omschrijving:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "Sluiten"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect."
-msgstr "Verbind.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect to host:"
-msgstr "Verbind Aan Node:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Request failed, return code:"
-msgstr "Opgevraagde bestandsformaat onbekend:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Connecting.."
-msgstr "Verbind.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Requesting.."
-msgstr "Testen"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Error making request"
-msgstr "Error bij het opslaan van resource!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "Alle"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "Zoeken:"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Zoeken"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "Sorteren:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr "Omkeren"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "Categorie:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "Site:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr "Ondersteuning.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr "Officieel"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "Gemeenschap"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Testing"
-msgstr "Testen"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr "Assets ZIP Bestand"
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr "Methode Lijst Voor '%s':"
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "Aanroep"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr "Methode Lijst:"
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr "Argumenten:"
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr "Teruggave:"
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr "Ga naar Regel"
#: editor/code_editor.cpp
msgid "Line Number:"
-msgstr "Regel Nummer:"
+msgstr "Regelnummer:"
#: editor/code_editor.cpp
msgid "No Matches"
@@ -659,6 +397,14 @@ msgstr "Hele Woorden"
msgid "Selection Only"
msgstr "Alleen Selectie"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Zoeken"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr "Zoeken"
@@ -691,11 +437,11 @@ msgstr "Vragen Bij Vervangen"
msgid "Skip"
msgstr "Overslaan"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "Inzoomen"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr "Uitzoomen"
@@ -764,6 +510,20 @@ msgstr "Uitgesteld"
msgid "Oneshot"
msgstr "Eénschots"
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "Sluiten"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr "Verbinden"
@@ -790,7 +550,7 @@ msgstr "Verbind.."
msgid "Disconnect"
msgstr "Losmaken"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr "Signalen"
@@ -807,11 +567,24 @@ msgstr "Favorieten:"
msgid "Recent:"
msgstr "Recente:"
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "Zoeken:"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
-msgstr "Matches:"
+msgstr "Overeenkomsten:"
+
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "Omschrijving:"
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
@@ -872,6 +645,12 @@ msgid "Owners Of:"
msgstr "Eigenaren Van:"
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr ""
+"Verwijder geselecteerde bestanden van het project? (Kan niet ongedaan "
+"worden.)"
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -882,10 +661,8 @@ msgstr ""
"Toch verwijderen? (Kan niet ongedaan worden.)"
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
-msgstr ""
-"Verwijder geselecteerde bestanden van het project? (Kan niet ongedaan "
-"worden.)"
+msgid "Cannot remove:\n"
+msgstr "Niet wisbaar:\n"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -940,43 +717,71 @@ msgstr "Verwijder"
#: editor/editor_about.cpp
msgid "Thanks from the Godot community!"
-msgstr ""
+msgstr "Bedankt van de Godot gemeenschap!"
#: editor/editor_about.cpp
msgid "Thanks!"
-msgstr ""
+msgstr "Bedankt!"
#: editor/editor_about.cpp
msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_about.cpp
-msgid "Authors"
-msgstr ""
+msgstr "Godot Engine medewerkers"
#: editor/editor_about.cpp
msgid "Project Founders"
-msgstr ""
+msgstr "Projectoprichters"
#: editor/editor_about.cpp
msgid "Lead Developer"
-msgstr ""
+msgstr "Hoofdontwikkelaar"
#: editor/editor_about.cpp editor/project_manager.cpp
msgid "Project Manager"
-msgstr ""
+msgstr "Project Manager"
#: editor/editor_about.cpp
msgid "Developers"
-msgstr ""
+msgstr "Ontwikkelaars"
+
+#: editor/editor_about.cpp
+msgid "Authors"
+msgstr "Auteurs"
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr "Platina Sponsors"
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr "Gouden Sponsors"
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr "Mini Sponsors"
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr "Gouden Donors"
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr "Zilveren Donors"
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr "Bronzen Donors"
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr "Donors"
#: editor/editor_about.cpp
msgid "License"
-msgstr ""
+msgstr "Licentie"
#: editor/editor_about.cpp
msgid "Thirdparty License"
-msgstr ""
+msgstr "Derde partijslicentie"
#: editor/editor_about.cpp
msgid ""
@@ -985,135 +790,146 @@ msgid ""
"is an exhaustive list of all such thirdparty components with their "
"respective copyright statements and license terms."
msgstr ""
+"Godot Engine maakt gebruik van enkele gratis en open-source bibliotheken, "
+"ontwikkeld door derden, die compatibel zijn met onze MIT licentie. Wat volgt "
+"is een exhaustieve lijst van alle componenten van een derde partij met hun "
+"respectievelijke copyrightberichten en licentietermen."
#: editor/editor_about.cpp
-#, fuzzy
msgid "All Components"
-msgstr "Constanten:"
+msgstr "Alle Componenten"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Components"
-msgstr "Constanten:"
+msgstr "Componenten"
#: editor/editor_about.cpp
msgid "Licenses"
-msgstr ""
+msgstr "Licenties"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Error opening package file, not in zip format."
-msgstr ""
+msgstr "Fout bij het openen van het pakketbestand, geen zip-formaat."
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Uncompressing Assets"
-msgstr "Aan Het Herimporteren"
+msgstr "Bronnen aan het uitpakken"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Package Installed Successfully!"
-msgstr ""
+msgstr "Pakket Succesvol Geïnstalleerd!"
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr "Succes!"
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr "Installeer"
#: editor/editor_asset_installer.cpp
msgid "Package Installer"
-msgstr ""
+msgstr "Pakketinstalleerder"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
-msgstr ""
+msgstr "Luidsprekers"
#: editor/editor_audio_buses.cpp
msgid "Add Effect"
-msgstr ""
+msgstr "Geluidseffect Toevoegen"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Rename Audio Bus"
-msgstr "Open Audio Bus Layout"
+msgstr "Hernoem audiobus"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Toggle Audio Bus Solo"
-msgstr "Open Audio Bus Layout"
+msgstr "Verander audiobus solo"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Toggle Audio Bus Mute"
-msgstr "Open Audio Bus Layout"
+msgstr "Verander audiobus stil"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Bypass Effects"
-msgstr ""
+msgstr "Verander audiobusomleiding"
#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Select Audio Bus Send"
-msgstr ""
+msgstr "Selecteer audiobus verzend"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus Effect"
-msgstr ""
+msgstr "Voeg audiobuseffect toe"
#: editor/editor_audio_buses.cpp
msgid "Move Bus Effect"
-msgstr ""
+msgstr "Verplaats audiobuseffect"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Bus Effect"
-msgstr "Geselecteerde Verwijderen"
+msgstr "Verwijder audiobuseffect"
#: editor/editor_audio_buses.cpp
msgid "Audio Bus, Drag and Drop to rearrange."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
+msgstr "Audiobus, versleep om volgorde te veranderen."
#: editor/editor_audio_buses.cpp
msgid "Solo"
-msgstr ""
+msgstr "Solo"
#: editor/editor_audio_buses.cpp
msgid "Mute"
-msgstr ""
+msgstr "Stil"
#: editor/editor_audio_buses.cpp
msgid "Bypass"
-msgstr ""
+msgstr "Omleiden"
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr "Audiobusopties"
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
msgid "Duplicate"
-msgstr ""
+msgstr "Dupliceren"
+
+#: editor/editor_audio_buses.cpp
+msgid "Reset Volume"
+msgstr "Herstel Volume"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Effect"
-msgstr "Geselecteerde Verwijderen"
+msgstr "Effect Verwijderen"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Audio Bus"
-msgstr "Bus Toevoegen"
+msgstr "Audiobus Toevoegen"
#: editor/editor_audio_buses.cpp
msgid "Master bus can't be deleted!"
-msgstr ""
+msgstr "Hoofdaudiobus kan niet verwijderd worden!"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Audio Bus"
-msgstr "Optimaliseer Animatie"
+msgstr "Verwijder audiobus"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Duplicate Audio Bus"
-msgstr "Dupliceer Selectie"
+msgstr "Dupliceer Audiobus"
+
+#: editor/editor_audio_buses.cpp
+msgid "Reset Bus Volume"
+msgstr "Reset Audiobus Volume"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Move Audio Bus"
-msgstr "Open Audio Bus Layout"
+msgstr "Verplaats audiobus"
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
@@ -1125,32 +941,32 @@ msgstr "Locatie voor Nieuwe Layout.."
#: editor/editor_audio_buses.cpp
msgid "Open Audio Bus Layout"
-msgstr "Open Audio Bus Layout"
+msgstr "Open Audio Bus Lay-out"
#: editor/editor_audio_buses.cpp
msgid "There is no 'res://default_bus_layout.tres' file."
-msgstr ""
+msgstr "Er is geen 'res://default_bus_layout.tres' bestand."
#: editor/editor_audio_buses.cpp
msgid "Invalid file, not an audio bus layout."
-msgstr ""
+msgstr "Ongeldig bestand, geen audiobus layout."
#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr "Bus Toevoegen"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Create a new Bus Layout."
-msgstr "Sla Audio Bus Layout Op Als.."
+msgstr "Maak een nieuwe audiobus layout."
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr "Laden"
#: editor/editor_audio_buses.cpp
msgid "Load an existing Bus Layout."
-msgstr ""
+msgstr "Laad een bestaand audiobus layout."
#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -1158,18 +974,16 @@ msgid "Save As"
msgstr "Opslaan Als"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Save this Bus Layout to a file."
-msgstr "Sla Audio Bus Layout Op Als.."
+msgstr "Sla deze audiobus layout op in een bestand."
#: editor/editor_audio_buses.cpp editor/import_dock.cpp
-#, fuzzy
msgid "Load Default"
-msgstr "Standaard"
+msgstr "Laad Standaard"
#: editor/editor_audio_buses.cpp
msgid "Load the default Bus Layout."
-msgstr ""
+msgstr "Laad de standaard audiobus layout."
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
@@ -1220,7 +1034,7 @@ msgstr "Autoload Hernoemen"
#: editor/editor_autoload_settings.cpp
msgid "Toggle AutoLoad Globals"
-msgstr "Toggle AutoLoad Globals"
+msgstr "AutoLoad-Globalen omschakelen"
#: editor/editor_autoload_settings.cpp
msgid "Move Autoload"
@@ -1239,7 +1053,7 @@ msgid "Rearrange Autoloads"
msgstr "Herschik Autoloads"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "Pad:"
@@ -1247,9 +1061,7 @@ msgstr "Pad:"
msgid "Node Name:"
msgstr "Node Naam:"
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr "Naam"
@@ -1275,25 +1087,26 @@ msgstr "Scene aan het updaten.."
#: editor/editor_dir_dialog.cpp
msgid "Please select a base directory first"
-msgstr ""
+msgstr "Kies eerst een basisfolder"
#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "Kies een Map"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "Map Maken"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "Naam:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "Map kon niet gemaakt worden."
@@ -1302,12 +1115,10 @@ msgid "Choose"
msgstr "Kies"
#: editor/editor_export.cpp
-#, fuzzy
msgid "Storing File:"
-msgstr "Opslag Bestand:"
+msgstr "Bestand Opslaan:"
#: editor/editor_export.cpp
-#, fuzzy
msgid "Packing"
msgstr "Inpakken"
@@ -1315,30 +1126,6 @@ msgstr "Inpakken"
msgid "Template file not found:\n"
msgstr "Template bestand niet gevonden:\n"
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr "Toegevoegd:"
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr "Verwijderd:"
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr "Error bij het opslaan van atlas:"
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr "Kon atlas subtexture niet opslaan:"
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr "Aan het exporteren voor %s"
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr "Aan Het Opzetten.."
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "Bestand Bestaat, Overschrijven?"
@@ -1423,13 +1210,17 @@ msgstr "Verplaats Favoriet Naar Boven"
msgid "Move Favorite Down"
msgstr "Verplaats Favoriet Naar Beneden"
+#: editor/editor_file_dialog.cpp
+msgid "Go to parent folder"
+msgstr "Ga naar bovenliggende folder"
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "Mappen & Bestanden:"
#: editor/editor_file_dialog.cpp
msgid "Preview:"
-msgstr "Preview:"
+msgstr "Voorbeeld:"
#: editor/editor_file_dialog.cpp editor/script_editor_debugger.cpp
#: scene/gui/file_dialog.cpp
@@ -1437,10 +1228,6 @@ msgid "File:"
msgstr "Bestand:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "Filter:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "Een geldige extensie moet gebruikt worden."
@@ -1450,9 +1237,8 @@ msgid "ScanSources"
msgstr "Scan Bronnen"
#: editor/editor_file_system.cpp
-#, fuzzy
msgid "(Re)Importing Assets"
-msgstr "Aan Het Herimporteren"
+msgstr "Bronnen (Her)Importeren"
#: editor/editor_help.cpp editor/editor_node.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -1467,6 +1253,10 @@ msgstr "Klasse Lijst:"
msgid "Search Classes"
msgstr "Zoek Klasses"
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr "Boven"
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr "Klasse:"
@@ -1483,15 +1273,27 @@ msgstr "Geërfd door:"
msgid "Brief Description:"
msgstr "Korte Beschrijving:"
+#: editor/editor_help.cpp
+msgid "Members"
+msgstr "Leden"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "Leden:"
#: editor/editor_help.cpp
+msgid "Public Methods"
+msgstr "Publieke Methodes"
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr "Publieke Methodes:"
#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr "GUI Thema Items"
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr "GUI Thema Items:"
@@ -1500,55 +1302,85 @@ msgid "Signals:"
msgstr "Signalen:"
#: editor/editor_help.cpp
-#, fuzzy
+msgid "Enumerations"
+msgstr "Enumeraties"
+
+#: editor/editor_help.cpp
msgid "Enumerations:"
-msgstr "Functies:"
+msgstr "Enumeraties:"
#: editor/editor_help.cpp
msgid "enum "
-msgstr ""
+msgstr "enum "
+
+#: editor/editor_help.cpp
+msgid "Constants"
+msgstr "Constanten"
#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Constanten:"
#: editor/editor_help.cpp
+msgid "Description"
+msgstr "Beschrijving"
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr "Eigenschappen"
+
+#: editor/editor_help.cpp
msgid "Property Description:"
msgstr "Eigenschap Beschrijving:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"Er is momenteel geen beschrijving voor deze eigenschap. Help ons alsjeblieft "
+"door [color=$color][url=$url]een toe te voegen[/url][/color]!"
+
+#: editor/editor_help.cpp
+msgid "Methods"
+msgstr "Methodes"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr "Methode Beschrijving:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"Er is momenteel geen beschrijving voor deze methode. Help ons alsjeblieft "
+"door [color=$color][url=$url]een toe te voegen[/url][/color]!"
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr "Zoek Tekst"
#: editor/editor_log.cpp
-#, fuzzy
msgid "Output:"
-msgstr " Uitvoer:"
+msgstr "Uitvoer:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "Leegmaken"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr "Error bij het opslaan van resource!"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr "Resource Opslaan Als.."
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
-#, fuzzy
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Ik snap het.."
@@ -1562,7 +1394,27 @@ msgstr "Opgevraagde bestandsformaat onbekend:"
#: editor/editor_node.cpp
msgid "Error while saving."
-msgstr "Error bij het opslaan."
+msgstr "Fout bij het opslaan."
+
+#: editor/editor_node.cpp
+msgid "Can't open '%s'."
+msgstr "Kan '%s' niet openen."
+
+#: editor/editor_node.cpp
+msgid "Error while parsing '%s'."
+msgstr "Fout tijdens het parsen van '%s'."
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr "Onverwacht einde van het bestand '%s'."
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
+msgstr "'%s' of zijn afhankelijkheden ontbreken."
+
+#: editor/editor_node.cpp
+msgid "Error while loading '%s'."
+msgstr "Fout tijdens het laden van '%s'."
#: editor/editor_node.cpp
msgid "Saving Scene"
@@ -1578,7 +1430,7 @@ msgstr "Thumbnail Aan Het Maken"
#: editor/editor_node.cpp
msgid "This operation can't be done without a tree root."
-msgstr ""
+msgstr "Deze operatie kan niet gedaan worden zonder boomwortel."
#: editor/editor_node.cpp
msgid ""
@@ -1613,47 +1465,89 @@ msgstr "Error bij het opslaan van layout!"
#: editor/editor_node.cpp
msgid "Default editor layout overridden."
-msgstr ""
+msgstr "Standaard editor layout overschreven."
#: editor/editor_node.cpp
msgid "Layout name not found!"
-msgstr ""
+msgstr "Lay-out naam niet gevonden!"
#: editor/editor_node.cpp
msgid "Restored default layout to base settings."
+msgstr "Standaard layout hersteld naar basisinstellingen."
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
msgstr ""
+"Dit bestand hoort bij een scene die geïmporteerd werd, dus het is niet "
+"bewerkbaar.\n"
+"Lees de documentatie over scenes importeren om deze workflow beter te "
+"begrijpen."
#: editor/editor_node.cpp
-msgid "Copy Params"
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
msgstr ""
+"Dit bestand hoort bij een scene die werd geïnstantieerd of overgeërfd.\n"
+"Aanpassingen zullen niet worden bijgehouden bij het opslaan van de huidige "
+"scene."
#: editor/editor_node.cpp
-msgid "Paste Params"
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+"Dit bestand werd geïmporteerd, dus het is niet bewerkbaar. Pas de "
+"instellingen aan in het importeerpaneel en importeer het nadien opnieuw."
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
msgstr ""
+"Deze scene werd geïmporteerd, dus aanpassingen zullen niet worden "
+"opgeslagen.\n"
+"Instantieer het of erf het over om er aanpassingen aan te maken.\n"
+"Lees de documentatie over scenes importeren om deze workflow beter te "
+"begrijpen."
+
+#: editor/editor_node.cpp
+msgid "Copy Params"
+msgstr "Kopieer Parameters"
+
+#: editor/editor_node.cpp
+msgid "Paste Params"
+msgstr "Plak Parameters"
#: editor/editor_node.cpp editor/plugins/resource_preloader_editor_plugin.cpp
msgid "Paste Resource"
-msgstr ""
+msgstr "Plak Bron"
#: editor/editor_node.cpp
msgid "Copy Resource"
-msgstr ""
+msgstr "Kopieer Bron"
#: editor/editor_node.cpp
msgid "Make Built-In"
-msgstr ""
+msgstr "Integreer"
#: editor/editor_node.cpp
msgid "Make Sub-Resources Unique"
-msgstr ""
+msgstr "Maak Onderliggende Bronnen Uniek"
#: editor/editor_node.cpp
msgid "Open in Help"
-msgstr ""
+msgstr "Open in Help"
#: editor/editor_node.cpp
msgid "There is no defined scene to run."
-msgstr ""
+msgstr "Er is geen startscene gedefinieerd."
#: editor/editor_node.cpp
msgid ""
@@ -1661,6 +1555,9 @@ msgid ""
"You can change it later in \"Project Settings\" under the 'application' "
"category."
msgstr ""
+"Er is nooit een hoofdscene gekozen, wil je er een selecteren?\n"
+"Je kan dit later nog aanpassen in \"Projectinstellingen\" onder de categorie "
+"'toepassing'."
#: editor/editor_node.cpp
msgid ""
@@ -1668,6 +1565,9 @@ msgid ""
"You can change it later in \"Project Settings\" under the 'application' "
"category."
msgstr ""
+"De geselecteerde scene '%s' bestaat niet, selecteer een andere?\n"
+"Je kan dit later aanpassen in \"Projectinstellingen\" onder de categorie "
+"'toepassing'."
#: editor/editor_node.cpp
msgid ""
@@ -1675,169 +1575,197 @@ msgid ""
"You can change it later in \"Project Settings\" under the 'application' "
"category."
msgstr ""
+"De geselecteerde scene '%s' is geen scenebestand, selecteer een andere?\n"
+"Je kan dit later aanpassen in \"Projectinstellingen\" onder de categorie "
+"'toepassing'."
#: editor/editor_node.cpp
msgid "Current scene was never saved, please save it prior to running."
-msgstr ""
+msgstr "De huidige scene werd nooit opgeslagen, sla ze op voor het uitvoeren."
#: editor/editor_node.cpp
msgid "Could not start subprocess!"
-msgstr ""
+msgstr "Kon het subproces niet opstarten!"
#: editor/editor_node.cpp
msgid "Open Scene"
-msgstr ""
+msgstr "Scene Openen"
#: editor/editor_node.cpp
msgid "Open Base Scene"
-msgstr ""
+msgstr "Open Basisscene"
#: editor/editor_node.cpp
msgid "Quick Open Scene.."
-msgstr ""
+msgstr "Open Scene Snel..."
#: editor/editor_node.cpp
msgid "Quick Open Script.."
-msgstr ""
+msgstr "Open Script Snel..."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Close"
-msgstr "Sla een Bestand Op"
+msgstr "Opslaan & Sluiten"
#: editor/editor_node.cpp
msgid "Save changes to '%s' before closing?"
-msgstr ""
+msgstr "Sla wijzigen aan '%s' op voor het afsluiten?"
#: editor/editor_node.cpp
msgid "Save Scene As.."
-msgstr ""
+msgstr "Sla Scene Op Als..."
#: editor/editor_node.cpp
msgid "No"
-msgstr ""
+msgstr "Nee"
#: editor/editor_node.cpp
msgid "Yes"
-msgstr ""
+msgstr "Ja"
#: editor/editor_node.cpp
msgid "This scene has never been saved. Save before running?"
-msgstr ""
+msgstr "Deze scene is nooit opgeslagen. Sla op voor het uitvoeren?"
#: editor/editor_node.cpp editor/scene_tree_dock.cpp
msgid "This operation can't be done without a scene."
-msgstr ""
+msgstr "Deze operatie kan niet uitgevoerd worden zonder scene."
#: editor/editor_node.cpp
msgid "Export Mesh Library"
-msgstr ""
+msgstr "Exporteer Mesh Library"
#: editor/editor_node.cpp
msgid "Export Tile Set"
-msgstr ""
+msgstr "Exporteer Tile Set"
#: editor/editor_node.cpp
msgid "This operation can't be done without a selected node."
msgstr ""
+"Deze operatie kan niet uitgevoerd worden zonder een geselecteerde knoop."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
-msgstr ""
+msgstr "De huidige scene is nog niet opgeslagen. Toch openen?"
#: editor/editor_node.cpp
msgid "Can't reload a scene that was never saved."
-msgstr ""
+msgstr "Een scene die nooit opgeslagen is kan je niet opnieuw laden."
#: editor/editor_node.cpp
msgid "Revert"
-msgstr ""
+msgstr "Herstellen"
#: editor/editor_node.cpp
msgid "This action cannot be undone. Revert anyway?"
-msgstr ""
+msgstr "Deze actie kan niet ongedaan gemaakt worden. Toch herstellen?"
#: editor/editor_node.cpp
msgid "Quick Run Scene.."
-msgstr ""
+msgstr "Snel Scene Uitvoeren..."
#: editor/editor_node.cpp
msgid "Quit"
-msgstr ""
+msgstr "Afsluiten"
#: editor/editor_node.cpp
msgid "Exit the editor?"
-msgstr ""
+msgstr "Sluit de editor af?"
#: editor/editor_node.cpp
msgid "Open Project Manager?"
-msgstr ""
+msgstr "Open de Project Manager?"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Quit"
-msgstr "Sla een Bestand Op"
+msgstr "Opslaan & Afsluiten"
#: editor/editor_node.cpp
msgid "Save changes to the following scene(s) before quitting?"
msgstr ""
+"Wil je de wijzigen aan de volgende scene(s) opslaan voor het afsluiten?"
#: editor/editor_node.cpp
msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
+"Wil je de wijzigen aan de volgende scene(s) opslaan voor de Project Manager "
+"opent?"
#: editor/editor_node.cpp
-msgid "Pick a Main Scene"
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
msgstr ""
+"Deze optie is verouderd. Situaties waar een hernieuwing geforceerd moet "
+"worden zijn softwarefouten. Rapporteer dit alsjeblieft."
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
-msgstr ""
+msgid "Pick a Main Scene"
+msgstr "Kies een Hoofdscene"
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
-msgstr ""
+#, fuzzy
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
+msgstr "Onmogelijk om de plugin op: '"
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
-msgstr ""
+#, fuzzy
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
+msgstr "Onmogelijk om scriptveld te vinden voor de plugin op: 'res://addons/"
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
-msgstr ""
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "Volgend script kon niet geladen worden: '"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
+msgstr "Volgend script kon niet geladen worden: '"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
+msgstr "Volgend script kon niet geladen worden: '"
#: editor/editor_node.cpp
msgid ""
"Scene '%s' was automatically imported, so it can't be modified.\n"
"To make changes to it, a new inherited scene can be created."
msgstr ""
+"Scene '%s' werd automatisch geïmporteerd, dus ze kan niet aangepast worden.\n"
+"Om aanpassingen te doen kan je een erfende scene aanmaken."
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
-msgstr ""
+msgstr "Oeps"
#: editor/editor_node.cpp
msgid ""
"Error loading scene, it must be inside the project path. Use 'Import' to "
"open the scene, then save it inside the project path."
msgstr ""
+"Fout tijdens het laden van de scene, ze moet zich in het projectpad "
+"bevinden. Gebruik 'Importeer' om de scene te openen en sla ze nadien ergens "
+"in het projectpad op."
#: editor/editor_node.cpp
-msgid "Error loading scene."
-msgstr ""
+msgid "Scene '%s' has broken dependencies:"
+msgstr "De scene '%s' heeft kapotte afhankelijkheden:"
#: editor/editor_node.cpp
-msgid "Scene '%s' has broken dependencies:"
-msgstr ""
+msgid "Clear Recent Scenes"
+msgstr "Maak Leeg"
#: editor/editor_node.cpp
msgid "Save Layout"
-msgstr ""
+msgstr "Layout Opslaan"
#: editor/editor_node.cpp
msgid "Delete Layout"
-msgstr ""
+msgstr "Layout Verwijderen"
#: editor/editor_node.cpp editor/import_dock.cpp
#: editor/script_create_dialog.cpp
@@ -1846,87 +1774,87 @@ msgstr "Standaard"
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
-msgstr ""
+msgstr "Scenetab Wisselen"
#: editor/editor_node.cpp
msgid "%d more file(s)"
-msgstr ""
+msgstr "nog %d bestand(en)"
#: editor/editor_node.cpp
msgid "%d more file(s) or folder(s)"
-msgstr ""
+msgstr "nog %d bestand(en) of folder(s)"
#: editor/editor_node.cpp
msgid "Distraction Free Mode"
-msgstr ""
+msgstr "Afleidingsvrije Modus"
#: editor/editor_node.cpp
msgid "Toggle distraction-free mode."
-msgstr ""
+msgstr "Afleidingsvrije modus veranderen."
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
-msgstr ""
+msgstr "Scène"
#: editor/editor_node.cpp
msgid "Go to previously opened scene."
-msgstr ""
+msgstr "Ga naar de vorige geopende scene."
#: editor/editor_node.cpp
msgid "Next tab"
-msgstr ""
+msgstr "Volgend tabblad"
#: editor/editor_node.cpp
msgid "Previous tab"
-msgstr ""
+msgstr "Vorig tabblad"
#: editor/editor_node.cpp
msgid "Filter Files.."
-msgstr ""
+msgstr "Bestanden Filteren..."
#: editor/editor_node.cpp
msgid "Operations with scene files."
-msgstr ""
+msgstr "Operaties met scenebestanden."
#: editor/editor_node.cpp
msgid "New Scene"
-msgstr ""
+msgstr "Nieuwe Scene"
#: editor/editor_node.cpp
msgid "New Inherited Scene.."
-msgstr ""
+msgstr "Nieuwe Geërfde Scene..."
#: editor/editor_node.cpp
msgid "Open Scene.."
-msgstr ""
+msgstr "Scene Openen..."
#: editor/editor_node.cpp
msgid "Save Scene"
-msgstr ""
+msgstr "Scene Opslaan"
#: editor/editor_node.cpp
msgid "Save all Scenes"
-msgstr ""
+msgstr "Alle Scenes Opslaan"
#: editor/editor_node.cpp
msgid "Close Scene"
-msgstr ""
+msgstr "Scene Sluiten"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Open Recent"
-msgstr ""
+msgstr "Recente Scenes Openen"
#: editor/editor_node.cpp
msgid "Convert To.."
-msgstr ""
+msgstr "Converteer Naar..."
#: editor/editor_node.cpp
msgid "MeshLibrary.."
-msgstr ""
+msgstr "MeshLibrary..."
#: editor/editor_node.cpp
msgid "TileSet.."
-msgstr ""
+msgstr "TileSet..."
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp scene/gui/line_edit.cpp
@@ -1937,57 +1865,59 @@ msgstr "Ongedaan Maken"
#: editor/editor_node.cpp editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
msgid "Redo"
-msgstr ""
+msgstr "Opnieuw"
#: editor/editor_node.cpp
msgid "Revert Scene"
-msgstr ""
+msgstr "Scene Herstellen"
#: editor/editor_node.cpp
msgid "Miscellaneous project or scene-wide tools."
-msgstr ""
+msgstr "Diverse project of scene-brede gereedschappen."
#: editor/editor_node.cpp
msgid "Project"
-msgstr ""
+msgstr "Project"
#: editor/editor_node.cpp
msgid "Project Settings"
-msgstr ""
+msgstr "Projectinstellingen"
#: editor/editor_node.cpp
msgid "Run Script"
-msgstr ""
+msgstr "Voer Script Uit"
#: editor/editor_node.cpp editor/project_export.cpp
msgid "Export"
-msgstr ""
+msgstr "Exporteren"
#: editor/editor_node.cpp
msgid "Tools"
-msgstr ""
+msgstr "Gereedschappen"
#: editor/editor_node.cpp
msgid "Quit to Project List"
-msgstr ""
+msgstr "Sluit af naar Projectlijst"
#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
msgid "Debug"
-msgstr ""
+msgstr "Debuggen"
#: editor/editor_node.cpp
msgid "Deploy with Remote Debug"
-msgstr ""
+msgstr "Start met Debuggen op Afstand"
#: editor/editor_node.cpp
msgid ""
"When exporting or deploying, the resulting executable will attempt to "
"connect to the IP of this computer in order to be debugged."
msgstr ""
+"Na het exporteren of opstarten van het programma zal het proberen verbinding "
+"maken met het IP-adres van deze computer zodat het gedebugd kan worden."
#: editor/editor_node.cpp
msgid "Small Deploy with Network FS"
-msgstr ""
+msgstr "Kleine Deployatie over het Netwerk"
#: editor/editor_node.cpp
msgid ""
@@ -2001,7 +1931,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Visible Collision Shapes"
-msgstr ""
+msgstr "Collision Shapes Zichtbaar"
#: editor/editor_node.cpp
msgid ""
@@ -2011,7 +1941,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Visible Navigation"
-msgstr ""
+msgstr "Navigatie Zichtbaar"
#: editor/editor_node.cpp
msgid ""
@@ -2084,6 +2014,10 @@ msgstr ""
msgid "Issue Tracker"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "Gemeenschap"
+
#: editor/editor_node.cpp
msgid "About"
msgstr ""
@@ -2092,7 +2026,7 @@ msgstr ""
msgid "Play the project."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr ""
@@ -2108,7 +2042,7 @@ msgstr ""
msgid "Stop the scene."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr ""
@@ -2181,6 +2115,15 @@ msgid "Object properties."
msgstr ""
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr "Importeren"
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr ""
@@ -2196,14 +2139,6 @@ msgstr ""
msgid "Don't Save"
msgstr ""
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr ""
-
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
@@ -2269,11 +2204,28 @@ msgstr "Afhankelijkheden Editor"
msgid "Open the previous Editor"
msgstr ""
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr ""
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr ""
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Versie:"
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr ""
@@ -2306,7 +2258,7 @@ msgid "Frame %"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+msgid "Physics Frame %"
msgstr ""
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2325,26 +2277,6 @@ msgstr ""
msgid "Frame #:"
msgstr ""
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr "Aan Het Herimporteren"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr ""
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2455,10 +2387,6 @@ msgid "Importing:"
msgstr "Aan Het Importeren:"
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr ""
@@ -2493,9 +2421,17 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
+"Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2506,45 +2442,51 @@ msgid ""
msgstr "Resource"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
+msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
+msgid "Cannot move a folder into itself.\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
-msgstr ""
+#, fuzzy
+msgid "Error moving:\n"
+msgstr "Error bij het laden van:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Unable to update dependencies:\n"
+msgstr "Scene faalde om te laden door ontbrekende afhankelijkheden:"
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
+msgid "No name provided"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error moving file:\n"
-msgstr "Error bij het opslaan van TileSet!"
+msgid "No name provided."
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "Error bij het laden van:"
+msgid "Name contains invalid characters."
+msgstr "Geldige karakters:"
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
+msgid "A file or folder with this name already exists."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
-msgstr ""
+#, fuzzy
+msgid "Renaming file:"
+msgstr "Hernoem Variabele"
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
+msgid "Renaming folder:"
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2556,39 +2498,36 @@ msgid "Collapse all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
+msgid "Copy Path"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
+msgid "Rename.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
+msgid "Move To.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr ""
+#, fuzzy
+msgid "New Folder.."
+msgstr "Map Maken"
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
+msgid "Show In File Manager"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move To.."
+msgid "Instance"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Info"
+msgid "Edit Dependencies.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
+msgid "View Owners.."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2621,6 +2560,11 @@ msgstr ""
msgid "Move"
msgstr ""
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr ""
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr ""
@@ -2635,6 +2579,10 @@ msgid "Import as Single Scene"
msgstr "Scene aan het Updaten"
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -2647,6 +2595,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
msgstr ""
@@ -2655,38 +2615,31 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr ""
@@ -2717,579 +2670,54 @@ msgstr ""
msgid "Reimport"
msgstr "Aan Het Herimporteren"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr "Error bij het initialiseren van FreeType."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "Onbekende lettertype formaat."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "Error bij het laden van lettertype."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr "Ongeldige lettertype grootte."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Annuleren"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
+#: editor/node_dock.cpp
+msgid "Groups"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr ""
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Select a Node to edit Signals and Groups."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -3446,7 +2874,6 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3557,10 +2984,6 @@ msgid "Delete Input"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr ""
@@ -3616,64 +3039,182 @@ msgstr ""
msgid "Filters.."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
-msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr "Vrij"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
-msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
+msgstr "Inhoud:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
+msgstr "Bekijk Bestanden"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
+msgstr "Verbindingsfout, probeer het nog eens."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Kan niet verbinden."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
+msgstr "Kan niet verbinden met host:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
+msgstr "Geen antwoord van host:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Geen antwoord."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
+msgstr "Aanvraag mislukt, retourcode:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
+msgstr "Aanv. Mislukt."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
+msgstr "Aanvraag mislukt, te veel redirects"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
+msgstr "Redirectlus."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Mislukt:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr "Verwacht:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr "Gekregen:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr "Sha256 hash controle mislukt"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr "Asset download fout:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr "Ophalen:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting.."
+msgstr "Verbinden.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr "Opvragen..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
+msgstr "Fout bij opvragen"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr "Probeer opnieuw"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "Alle"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "Sorteren:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr "Omkeren"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "Categorie:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "Site:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr "Ondersteuning.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "Officieel"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Testing"
+msgstr "Testen"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr "Assets ZIP Bestand"
+
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3716,11 +3257,15 @@ msgid "Edit CanvasItem"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+msgid "Anchors only"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors and Margins"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
+msgid "Change Anchors"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3771,59 +3316,73 @@ msgid "Pan Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
+#, fuzzy
+msgid "Toggles snapping"
+msgstr "Breekpunt Aan- of Uitschakelen"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
+msgid "Snapping options"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
+msgid "Snap to grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
+msgid "Use Rotation Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "Bewerken"
+msgid "Configure Snap..."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Snap Relative"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
+msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
+msgid "Smart snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
+msgid "Snap to parent"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
+msgid "Snap to node anchor"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
+msgid "Lock the selected object in place (can't be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3852,11 +3411,16 @@ msgid "View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show helpers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
+msgid "Show rulers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3868,7 +3432,7 @@ msgid "Frame Selection"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
+msgid "Layout"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3892,11 +3456,20 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
+msgid "Drag pivot from mouse position"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "Verwijder Signaal"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Divide grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3907,23 +3480,28 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr ""
@@ -3937,45 +3515,6 @@ msgid ""
"Drag & drop + Alt : Change node type"
msgstr ""
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3985,14 +3524,6 @@ msgid "Set Handle"
msgstr ""
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr ""
@@ -4015,6 +3546,27 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Ease in"
+msgstr "Schaal Selectie"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
msgstr ""
@@ -4094,22 +3646,18 @@ msgid "Create Occluder Polygon"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr ""
@@ -4211,6 +3759,10 @@ msgid "Create Outline"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr ""
@@ -4338,12 +3890,73 @@ msgstr ""
msgid "Populate"
msgstr ""
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create Navigation Polygon"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Marking walkable triangles..."
+msgstr "Lokale wijziging aan het opslaan.."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Partitioning..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
msgstr ""
#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
+msgid "Create Navigation Polygon"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -4517,16 +4130,19 @@ msgid "Curve Point #"
msgstr ""
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
-msgstr ""
+msgstr "Verwijder Signaal"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
-msgstr ""
+msgstr "Verwijder Signaal"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
-msgstr ""
+msgstr "Verwijder Signaal"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4586,6 +4202,14 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "Bewerken"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr ""
@@ -4640,63 +4264,10 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "Plakken"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr ""
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr ""
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
@@ -4787,6 +4358,10 @@ msgstr ""
msgid "Close All"
msgstr ""
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Toggle Scripts Panel"
@@ -4816,7 +4391,8 @@ msgstr ""
msgid "Break"
msgstr ""
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr ""
@@ -4830,18 +4406,6 @@ msgid "Debug with external editor"
msgstr "Afhankelijkheden Editor"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
msgstr ""
@@ -4924,8 +4488,9 @@ msgid "Cut"
msgstr "Knippen"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "Kopiëren"
@@ -5190,10 +4755,6 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr ""
@@ -5210,10 +4771,6 @@ msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr ""
@@ -5449,6 +5006,10 @@ msgid "Transform"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr ""
@@ -5594,6 +5155,10 @@ msgid "Speed (FPS):"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr ""
@@ -5606,11 +5171,12 @@ msgid "Insert Empty (After)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr ""
+#, fuzzy
+msgid "Move (Before)"
+msgstr "Kopiëer Nodes"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
+msgid "Move (After)"
msgstr ""
#: editor/plugins/style_box_editor_plugin.cpp
@@ -5689,7 +5255,11 @@ msgid "Remove All"
msgstr "Verwijderen"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
@@ -5774,6 +5344,10 @@ msgid "Style"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr ""
@@ -5824,7 +5398,7 @@ msgid "Mirror Y"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
+msgid "Paint Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5891,6 +5465,10 @@ msgid "Delete preset '%s'?"
msgstr "Verwijder geselecteerde bestanden?"
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr ""
@@ -5963,19 +5541,30 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
+#, fuzzy
+msgid "The path does not exist."
+msgstr "Bestand bestaat niet."
+
+#: editor/project_manager.cpp
+msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
+msgid "Please choose a folder that does not contain a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
@@ -5983,10 +5572,26 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't edit project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr ""
@@ -5995,15 +5600,20 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Import Existing Project"
+#, fuzzy
+msgid "Rename Project"
+msgstr "Hernoem Functie"
+
+#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in the project path."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
+msgid "New Game Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Name:"
+msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
@@ -6011,19 +5621,24 @@ msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path:"
+msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Install Project:"
+msgid "Project Name:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Browse"
+#, fuzzy
+msgid "Create folder"
+msgstr "Map Maken"
+
+#: editor/project_manager.cpp
+msgid "Project Path:"
msgstr ""
#: editor/project_manager.cpp
-msgid "New Game Project"
+msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
@@ -6035,6 +5650,11 @@ msgid "Unnamed Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't open project"
+msgstr "Verbind.."
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr ""
@@ -6061,16 +5681,18 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
-"You are about the scan %s folders for existing Godot projects. Do you "
-"confirm?"
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project List"
+msgid ""
+"You are about the scan %s folders for existing Godot projects. Do you "
+"confirm?"
msgstr ""
#: editor/project_manager.cpp
-msgid "Run"
+msgid "Project List"
msgstr ""
#: editor/project_manager.cpp
@@ -6095,6 +5717,10 @@ msgid "Exit"
msgstr ""
#: editor/project_manager.cpp
+msgid "Restart Now"
+msgstr ""
+
+#: editor/project_manager.cpp
#, fuzzy
msgid "Can't run project"
msgstr "Verbind.."
@@ -6132,17 +5758,14 @@ msgid "Add Input Action Event"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
@@ -6203,7 +5826,7 @@ msgstr "Wijzig"
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "As"
@@ -6223,31 +5846,31 @@ msgstr ""
msgid "Add Event"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "Apparaat"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "Knop"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "Linker Knop."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "Rechter Knop."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "Middelste Knop."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr "Scrollwiel Omhoog."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr "Scrollwiel Omlaag."
@@ -6257,7 +5880,7 @@ msgid "Add Global Property"
msgstr "Getter Property Toevoegen"
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6275,6 +5898,15 @@ msgid "Delete Item"
msgstr "Verwijder"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Can't contain '/' or ':'"
+msgstr "Kan niet verbinden met host:"
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
@@ -6315,6 +5947,14 @@ msgid "Remove Resource Remap Option"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
@@ -6375,6 +6015,27 @@ msgid "Locale"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Locales Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show all locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "Filter:"
+
+#: editor/project_settings_editor.cpp
+msgid "Locales:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -6424,10 +6085,19 @@ msgid "New Script"
msgstr ""
#: editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr ""
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Convert To %s"
+msgstr "Verbind Aan Node:"
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr ""
@@ -6465,6 +6135,10 @@ msgid "Select Property"
msgstr ""
#: editor/property_selector.cpp
+msgid "Select Virtual Method"
+msgstr ""
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr ""
@@ -6492,26 +6166,6 @@ msgstr ""
msgid "Reparent"
msgstr ""
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr ""
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr ""
@@ -6639,14 +6293,6 @@ msgid "Sub-Resources:"
msgstr "Resource"
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr ""
@@ -6832,6 +6478,15 @@ msgid "Invalid base path"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "File exists, will be reused"
+msgstr "Bestand Bestaat, Overschrijven?"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr ""
@@ -6875,6 +6530,10 @@ msgid "Load existing script file"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Inherits"
msgstr "Erft:"
@@ -6918,6 +6577,10 @@ msgid "Function:"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr ""
@@ -6998,6 +6661,10 @@ msgid "Type"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr ""
@@ -7073,12 +6740,28 @@ msgstr ""
msgid "Change Probe Extents"
msgstr ""
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Library"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Status"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr "Ongeldige type argument voor convert(), gebruik TYPE_* constanten."
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Niet genoeg bytes om bytes te decoderen, of ongeldig formaat."
@@ -7131,10 +6814,6 @@ msgid "GridMap Duplicate Selection"
msgstr "Dupliceer Selectie"
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Snap View"
msgstr ""
@@ -7230,13 +6909,8 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr "Bestand:"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7449,10 +7123,18 @@ msgid "Return"
msgstr "Teruggave"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr "Aanroep"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr "Krijg"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Input Value"
msgstr "Wijzig Array Waarde"
@@ -7867,6 +7549,12 @@ msgstr ""
"Een SpriteFrames resource moet gemaakt of gegeven worden in de 'Frames' "
"eigenschap om AnimatedSprite3D frames te laten tonen."
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -7876,6 +7564,10 @@ msgid "Add current color as a preset"
msgstr ""
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr "Alarm!"
@@ -7883,10 +7575,6 @@ msgstr "Alarm!"
msgid "Please Confirm..."
msgstr "Bevestig Alsjeblieft..."
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -7922,6 +7610,69 @@ msgstr ""
"inhoud direct op het scherm te weergeven. Anders, maak er een RenderTarget "
"van en wijs zijn interne texture toe aan een node om te tonen."
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr "Error bij het initialiseren van FreeType."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "Onbekende lettertype formaat."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "Error bij het laden van lettertype."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr "Ongeldige lettertype grootte."
+
+#~ msgid "Filter:"
+#~ msgstr "Filter:"
+
+#~ msgid "' parsing of config failed."
+#~ msgstr "' te activeren. Het configuratiebestand kon niet gelezen worden."
+
+#~ msgid "Method List For '%s':"
+#~ msgstr "Methodelijst voor '%s':"
+
+#~ msgid "Arguments:"
+#~ msgstr "Argumenten:"
+
+#~ msgid "Return:"
+#~ msgstr "Teruggave:"
+
+#~ msgid "Added:"
+#~ msgstr "Toegevoegd:"
+
+#~ msgid "Removed:"
+#~ msgstr "Verwijderd:"
+
+#~ msgid "Error saving atlas:"
+#~ msgstr "Error bij het opslaan van atlas:"
+
+#~ msgid "Could not save atlas subtexture:"
+#~ msgstr "Kon atlas subtexture niet opslaan:"
+
+#~ msgid "Exporting for %s"
+#~ msgstr "Aan het exporteren voor %s"
+
+#~ msgid "Setting Up.."
+#~ msgstr "Aan Het Opzetten.."
+
+#~ msgid "Re-Importing"
+#~ msgstr "Aan Het Herimporteren"
+
+#, fuzzy
+#~ msgid "Error moving file:\n"
+#~ msgstr "Error bij het opslaan van TileSet!"
+
+#, fuzzy
+#~ msgid "Tiles"
+#~ msgstr "Bestand:"
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl+"
+
#~ msgid "just pressed"
#~ msgstr "reeds ingedrukt"
diff --git a/editor/translations/pl.po b/editor/translations/pl.po
index baffd09f33..1d14c94e1f 100644
--- a/editor/translations/pl.po
+++ b/editor/translations/pl.po
@@ -1,5 +1,6 @@
# Polish translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# 8-bit Pixel <dawdejw@gmail.com>, 2016.
@@ -11,13 +12,14 @@
# Maksymilian Świąć <maksymilian.swiac@gmail.com>, 2017.
# Mietek Szcześniak <ravaging@go2.pl>, 2016.
# Rafal Brozio <rafal.brozio@gmail.com>, 2016.
+# Sebastian Krzyszkowiak <dos@dosowisko.net>, 2017.
# siatek papieros <sbigneu@gmail.com>, 2016.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-06-26 08:24+0000\n"
-"Last-Translator: Daniel Lewan <vision360.daniel@gmail.com>\n"
+"PO-Revision-Date: 2017-10-23 16:47+0000\n"
+"Last-Translator: Sebastian Krzyszkowiak <dos@dosowisko.net>\n"
"Language-Team: Polish <https://hosted.weblate.org/projects/godot-engine/"
"godot/pl/>\n"
"Language: pl\n"
@@ -25,7 +27,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 2.15-dev\n"
+"X-Generator: Weblate 2.17\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -208,10 +210,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr "Utworzyć NOWĄ ścieżkę i dodać klatkę kluczową?"
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -378,272 +379,6 @@ msgstr "Zmień Typ Tablicy"
msgid "Change Array Value"
msgstr "Zmień Wartość Tablicy"
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr "Wersja:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Contents:"
-msgstr "Stałe:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "View Files"
-msgstr "Plik"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr "Opis:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr "Instaluj"
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "Zamknij"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect."
-msgstr "Połącz.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect to host:"
-msgstr "Podłącz do węzła:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Request failed, return code:"
-msgstr "Nieznany format pliku:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Resolving.."
-msgstr "Zapisywanie.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Connecting.."
-msgstr "Połącz.."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Requesting.."
-msgstr "Testowanie"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Error making request"
-msgstr "Błąd podczas zapisu zasobu!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Download Error"
-msgstr "Pobierz"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "Wszystko"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "Szukaj:"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Szukaj"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr "Importuj"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr "Wtyczki"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "Sortuj:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr "Odwróć"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "Kategoria:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "Źródło:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr "Wsparcie.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr "Oficjalny"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "Społeczność"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr "Testowanie"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Assets ZIP File"
-msgstr "Plik ZIP assetów"
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr "Lista metod '%s':"
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "Wywołanie"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr "Lista metod:"
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr "Argumenty:"
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr "Zwraca:"
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr "Idź do lini"
@@ -681,6 +416,14 @@ msgstr "Całe słowa"
msgid "Selection Only"
msgstr "Tylko zaznaczenie"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Szukaj"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr "Szukaj"
@@ -713,11 +456,11 @@ msgstr "Zaptytaj przy zastÄ…pieniu"
msgid "Skip"
msgstr "Pomiń"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "Przybliż"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr "Oddal"
@@ -788,6 +531,20 @@ msgstr "Odroczone"
msgid "Oneshot"
msgstr "Wywołaj raz"
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "Zamknij"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr "Połącz"
@@ -814,7 +571,7 @@ msgstr "Połącz.."
msgid "Disconnect"
msgstr "Rozłącz"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr "Sygnały"
@@ -831,12 +588,25 @@ msgstr "Ulubione:"
msgid "Recent:"
msgstr "Ostatnie:"
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "Szukaj:"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr "PasujÄ…ce:"
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "Opis:"
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr "Znajdź i zamień:"
@@ -897,6 +667,10 @@ msgid "Owners Of:"
msgstr "Właściciele:"
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr "Usunąć wybrane pliki z projektu? (Nie można tego cofnąć)"
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -906,8 +680,8 @@ msgstr ""
"Usunąć mimo to? (Nie można tego cofnąć)"
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
-msgstr "Usunąć wybrane pliki z projektu? (Nie można tego cofnąć)"
+msgid "Cannot remove:\n"
+msgstr ""
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -962,7 +736,7 @@ msgstr "Usuń"
#: editor/editor_about.cpp
msgid "Thanks from the Godot community!"
-msgstr "Podziękowania od społeczności Godot'a!"
+msgstr "Podziękowania od społeczności Godota!"
#: editor/editor_about.cpp
msgid "Thanks!"
@@ -974,11 +748,6 @@ msgstr ""
#: editor/editor_about.cpp
#, fuzzy
-msgid "Authors"
-msgstr "Autor:"
-
-#: editor/editor_about.cpp
-#, fuzzy
msgid "Project Founders"
msgstr "Menedżer projektów"
@@ -995,6 +764,40 @@ msgid "Developers"
msgstr ""
#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "Autor:"
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Bronze Donors"
+msgstr "Duplikuj liniÄ™"
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
msgid "License"
msgstr ""
@@ -1038,6 +841,16 @@ msgid "Package Installed Successfully!"
msgstr "Pakiet zastał zainstalowany poprawnie!"
#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr "Instaluj"
+
+#: editor/editor_asset_installer.cpp
#, fuzzy
msgid "Package Installer"
msgstr "Pakiet zastał zainstalowany poprawnie!"
@@ -1092,11 +905,6 @@ msgid "Audio Bus, Drag and Drop to rearrange."
msgstr ""
#: editor/editor_audio_buses.cpp
-#, fuzzy
-msgid "Bus options"
-msgstr "Opcje debugowania"
-
-#: editor/editor_audio_buses.cpp
msgid "Solo"
msgstr ""
@@ -1108,6 +916,11 @@ msgstr ""
msgid "Bypass"
msgstr ""
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "Opcje debugowania"
+
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
msgid "Duplicate"
@@ -1115,6 +928,11 @@ msgstr "Duplikuj"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Volume"
+msgstr "Wyzeruj przybliżenie"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Delete Effect"
msgstr "Usuń zaznaczone"
@@ -1139,6 +957,11 @@ msgstr "Duplikuj animacje"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Bus Volume"
+msgstr "Wyzeruj przybliżenie"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Move Audio Bus"
msgstr "Otwórz układ magistrali audio"
@@ -1174,7 +997,8 @@ msgstr "Dodaj magistralÄ™"
msgid "Create a new Bus Layout."
msgstr "Utwórz nowy zasób"
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr "Wczytaj"
@@ -1269,7 +1093,7 @@ msgid "Rearrange Autoloads"
msgstr "Przestaw Autoloady"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "Ścieżka:"
@@ -1277,9 +1101,7 @@ msgstr "Ścieżka:"
msgid "Node Name:"
msgstr "Nazwa węzła:"
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr "Nazwa"
@@ -1313,18 +1135,19 @@ msgid "Choose a Directory"
msgstr "Wybierz katalog"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "Utwórz katalog"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "Nazwa:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "Nie można utworzyć katalogu."
@@ -1344,30 +1167,6 @@ msgstr "Pakowanie"
msgid "Template file not found:\n"
msgstr "Nie znaleziono pliku szablonu:\n"
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr "Dodane:"
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr "Usunięte:"
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr "Błąd podczas zapisywania atlasu:"
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr "Nie udało się zapisać tekstury atlasu:"
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr "Exportowanie do %s"
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr "Konfigurowanie .."
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "Plik istnieje, nadpisać?"
@@ -1452,6 +1251,11 @@ msgstr "Przesuń Ulubiony w górę"
msgid "Move Favorite Down"
msgstr "Przesuń Ulubiony w dół"
+#: editor/editor_file_dialog.cpp
+#, fuzzy
+msgid "Go to parent folder"
+msgstr "Nie można utworzyć katalogu."
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "Katalogi i pliki:"
@@ -1466,10 +1270,6 @@ msgid "File:"
msgstr "Plik:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "Filtr:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "Rozszerzenie musi być poprawne."
@@ -1495,6 +1295,10 @@ msgstr "List klas:"
msgid "Search Classes"
msgstr "Przeszukaj klasy"
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr "Góra"
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr "Klasa:"
@@ -1511,15 +1315,30 @@ msgstr "Dziedziczone przez:"
msgid "Brief Description:"
msgstr "Krótki opis:"
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Members"
+msgstr "Członkowie:"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "Członkowie:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Public Methods"
+msgstr "Metody publiczne:"
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr "Metody publiczne:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "GUI Theme Items"
+msgstr "Elementy motywu GUI:"
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr "Elementy motywu GUI:"
@@ -1529,6 +1348,11 @@ msgstr "Sygnały:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Enumerations"
+msgstr "Animacje"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Enumerations:"
msgstr "Animacje"
@@ -1537,19 +1361,51 @@ msgid "enum "
msgstr ""
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Constants"
+msgstr "Stałe:"
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Stałe:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Description"
+msgstr "Opis:"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Properties"
+msgstr "Właściwości:"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Property Description:"
msgstr "Krótki opis:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Methods"
+msgstr "Lista metod:"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr "Opis metody:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr "Wyszukaj w tekście"
@@ -1559,24 +1415,21 @@ msgid "Output:"
msgstr " Konsola:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "Wyczyść"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr "Błąd podczas zapisu zasobu!"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr "Zapisz zasób jako..."
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "WidzÄ™.."
@@ -1593,6 +1446,30 @@ msgid "Error while saving."
msgstr "Błąd podczas zapisywania."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Can't open '%s'."
+msgstr "Nie można operować na '..'"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while parsing '%s'."
+msgstr "Błąd podczas zapisywania."
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Missing '%s' or its dependencies."
+msgstr "Scena '%s' ma niespełnione zależności:"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while loading '%s'."
+msgstr "Błąd podczas zapisywania."
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr "Zapisywanie Sceny"
@@ -1653,6 +1530,33 @@ msgid "Restored default layout to base settings."
msgstr "Przywrócono domyślny układ do ustawień bazowych."
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr "Kopiuj parametry"
@@ -1828,23 +1732,35 @@ msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Wybierz główną scenę"
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "Błąd przy ładowaniu sceny z %s"
+
+#: editor/editor_node.cpp
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -1858,7 +1774,7 @@ msgstr ""
"Aby dokonać na niej zmian, można utworzyć nową odziedziczoną scenę."
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
#, fuzzy
msgid "Ugh"
msgstr "Błąd"
@@ -1873,14 +1789,15 @@ msgstr ""
"projektu."
#: editor/editor_node.cpp
-msgid "Error loading scene."
-msgstr "Błąd ładowania sceny."
-
-#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
msgstr "Scena '%s' ma niespełnione zależności:"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Clear Recent Scenes"
+msgstr "Wyczyść Kości"
+
+#: editor/editor_node.cpp
msgid "Save Layout"
msgstr "Zapisz układ"
@@ -1914,7 +1831,7 @@ msgstr "Tryb bez rozproszeń"
msgid "Toggle distraction-free mode."
msgstr "Tryb bez rozproszeń"
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr "Scena"
@@ -2153,6 +2070,10 @@ msgstr ""
msgid "Issue Tracker"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "Społeczność"
+
#: editor/editor_node.cpp
msgid "About"
msgstr "O programie"
@@ -2161,7 +2082,7 @@ msgstr "O programie"
msgid "Play the project."
msgstr "Uruchom projekt."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr "Uruchom"
@@ -2177,7 +2098,7 @@ msgstr "Zapauzuj scenÄ™"
msgid "Stop the scene."
msgstr "Zatrzymaj scene."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr "Stop"
@@ -2251,6 +2172,16 @@ msgid "Object properties."
msgstr "Właściwości obiektu."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Changes may be lost!"
+msgstr "Zmień grupę obrazków"
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr "Importuj"
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr "System plików"
@@ -2266,14 +2197,6 @@ msgstr "Konsola"
msgid "Don't Save"
msgstr ""
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr "Importuj ponownie"
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr "Odśwież"
-
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "Zaimportuj Szablony z pliku ZIP"
@@ -2341,11 +2264,29 @@ msgstr "Otwórz w edytorze"
msgid "Open the previous Editor"
msgstr "Otwórz w edytorze"
+#: editor/editor_plugin.cpp
+#, fuzzy
+msgid "Creating Mesh Previews"
+msgstr "Tworzenie Mesh Library"
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr "Miniatura.."
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr "Zainstalowane wtyczki:"
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr "Odśwież"
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Wersja:"
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr "Autor:"
@@ -2378,7 +2319,8 @@ msgid "Frame %"
msgstr "% Ramek"
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+#, fuzzy
+msgid "Physics Frame %"
msgstr "% Ramek Fixed"
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2398,26 +2340,6 @@ msgstr "Ten obiekt"
msgid "Frame #:"
msgstr "Klatka #:"
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr "Proszę poczekać na zakończenie skanowania."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr "Bieżąca scena musi być zapisana aby ponownie zaimportować."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr "Zapisz i importuj ponownie"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr "Prze-Importowanie"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr "Zaimportuj ponownie zmienione zasoby"
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2535,10 +2457,6 @@ msgid "Importing:"
msgstr "Importowanie:"
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr "Wczytywanie szablonów eksportu"
-
-#: editor/export_template_manager.cpp
#, fuzzy
msgid "Current Version:"
msgstr "Aktualna scena"
@@ -2576,11 +2494,18 @@ msgid "Cannot navigate to '"
msgstr "Nie można przejść do '"
#: editor/filesystem_dock.cpp
-#, fuzzy
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
-msgstr "Zapisz i importuj ponownie"
+"Status: Import of file failed. Please fix file and reimport manually."
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
@@ -2591,48 +2516,56 @@ msgstr "Źródło:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Same source and destination files, doing nothing."
-msgstr "Pliki źródłowe i docelowe są te same, nie podjęto żadnej akcji."
+msgid "Cannot move/rename resources root."
+msgstr "Nie można wczytać/przetworzyć źródłowego fontu."
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
-msgstr ""
+#, fuzzy
+msgid "Cannot move a folder into itself.\n"
+msgstr "Nie można zaimportować pliku wewnątrz siebie samego:"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
-msgstr ""
-"Ścieżki źródłowa i docelowa są takie same, żadna akcja nie została wykonana."
+#, fuzzy
+msgid "Error moving:\n"
+msgstr "Błąd importowania:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Can't move directories to within themselves."
-msgstr "Nie możesz przenieść danego katalogu do jego wnętrza."
+msgid "Unable to update dependencies:\n"
+msgstr "Scena '%s' ma niespełnione zależności:"
+
+#: editor/filesystem_dock.cpp
+msgid "No name provided"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving file:\n"
-msgstr "Błąd wczytywania obrazu:"
+msgid "No name provided."
+msgstr "Zmień nazwę lub Przenieś..."
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "Błąd importowania:"
+msgid "Name contains invalid characters."
+msgstr "Dopuszczalne znaki:"
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
-msgstr "Nie można operować na '..'"
+#, fuzzy
+msgid "A file or folder with this name already exists."
+msgstr "Nazwa grupy już istnieje!"
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
-msgstr "Wybierz nowÄ… nazwÄ™ i lokacjÄ™ dla:"
+#, fuzzy
+msgid "Renaming file:"
+msgstr "Zmień nawę zmiennej"
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
-msgstr "Nie wybrano pliku!"
+#, fuzzy
+msgid "Renaming folder:"
+msgstr "Zmień nazwę węzła"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2643,40 +2576,38 @@ msgid "Collapse all"
msgstr "Zwiń foldery"
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
-msgstr "Pokaż w menadżerze plików"
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
-msgstr "Instancja"
+msgid "Copy Path"
+msgstr "Skopiuj Ścieżkę"
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
-msgstr "Edytuj Zależności..."
+#, fuzzy
+msgid "Rename.."
+msgstr "Zmień nazwę"
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
-msgstr "Pokaż właścicieli.."
+msgid "Move To.."
+msgstr "PrzenieÅ› Do..."
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr "Skopiuj Ścieżkę"
+#, fuzzy
+msgid "New Folder.."
+msgstr "Utwórz katalog"
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
-msgstr "Zmień nazwę lub Przenieś..."
+msgid "Show In File Manager"
+msgstr "Pokaż w menadżerze plików"
#: editor/filesystem_dock.cpp
-msgid "Move To.."
-msgstr "PrzenieÅ› Do..."
+msgid "Instance"
+msgstr "Instancja"
#: editor/filesystem_dock.cpp
-msgid "Info"
-msgstr "Informacje"
+msgid "Edit Dependencies.."
+msgstr "Edytuj Zależności..."
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
-msgstr "Importuj ponownie.."
+msgid "View Owners.."
+msgstr "Pokaż właścicieli.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2708,6 +2639,11 @@ msgstr ""
msgid "Move"
msgstr "PrzenieÅ›"
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr "Zmień nazwę"
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr "Dodaj do Grupy"
@@ -2722,6 +2658,11 @@ msgid "Import as Single Scene"
msgstr "Importowanie Sceny.."
#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Animations"
+msgstr "Zaimportuj animacje.."
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -2734,6 +2675,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
#, fuzzy
msgid "Import as Multiple Scenes"
msgstr "Zaimportuj Scene 3D"
@@ -2743,40 +2696,33 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr "Importuj ScenÄ™"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr "Importowanie Sceny.."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr "Uruchamiam skrypt..."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr "Nie udało się wczytać skryptu po imporcie:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
"Pojawiły się błędy podczas uruchamiania skryptu po imporcie (sprawdź "
"konsolÄ™):"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr "Błąd podczas uruchamiania skryptu po imporcie:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr "Zapisywanie.."
@@ -2806,589 +2752,56 @@ msgstr "Ustawienie predefiniowane.."
msgid "Reimport"
msgstr "Importuj ponownie"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr "Brak mask bitowych do zaimportowania!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr "Docelowa ścieżka jest pusta."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr "Ścieżka docelowa musi być bezwzględna."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr "Docelowa ścieżka musi istnieć."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr "Ścieżka zapisu jest pusta!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr "Importuj BitMasks"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr "Źródło tekstury:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr "Ścieżka docelowa:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr "Akceptuj"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr "BitMask"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr "Brak pliku źródłowego fontu!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr "Brak docelowego zasobu fontu!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-"Błędne rozszerzenie pliku.\n"
-"Proszę użyć .fnt."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr "Nie można wczytać/przetworzyć źródłowego fontu."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr "Nie udało się zapisać fontu."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr "Źródło fontu:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr "Wielkość oryginalna fontu:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr "Zasób docelowy:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr "ŻżŹźĆćŃńĄąÅłĘęÓó."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr "Test:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr "Opcje:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr "Import fontu"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr "Ten plik jest już plikiem fontu Godot, proszę podać plik typu BMFont."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr "Nie powiodło się, otwarcie pliku jako BMFont."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr "Błąd przy inicjalizacji FreeType."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "Nieznany format fontu."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "Błąd ładowania fonta."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr "Niepoprawny rozmiar fonta."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr "Nie rozpoznano typu fontu."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Font"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr "Brak siatek do zaimportowania!"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr "Importuj Mesh"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr "Źródło Mesh:"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr "Siatka"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "Powierzchnia %d"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr "Brak sampli do importu!"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr "Importuj pliki dźwiękowe"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr "Źródło dźwięku:"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr "Dźwięk"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr "Nowy klip"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr "Opcje animacji"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr "Flagi"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr "Wypal FPS:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr "Optymalizator"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr "Maksymalny błąd liniowy"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr "Maksymalny błąd kątowy"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr "Maksymalny KÄ…t"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr "Klipy"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr "Start"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr "Koniec"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr "Pętla"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr "Filtry"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr "Ścieżka źródłowa jest pusta."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr "Nie udało się wczytać skryptu po imporcie."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr "Niepoprawny/uszkodzony skrypt post-importu."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr "Błąd podczas wczytywania sceny."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr "Zaimportuj Scene 3D"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr "Scena źródłowa:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr "Taki sam jak scena docelowa"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr "Współdzielone"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr "Docelowy folder tekstur:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr "Skrypt do wywołania po imporcie:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr "Niestandardowy typ węzła głównego:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr "Automatyczny"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#, fuzzy
-msgid "Root Node Name:"
-msgstr "Nazwa węzła:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr "Brakuje następujących plików:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr "Zaimportuj Pomimo"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Anuluj"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr "Importuj i Otwórz"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
msgstr ""
-"Edytowana sceny nie została zapisana. Otworzyć importowaną scenę mimo tego?"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr "Zaimportuj Obraz:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr "Nie można zaimportować pliku wewnątrz siebie samego:"
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr "Nie można zlokalizować ścieżki: %s (już jest lokalna)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr "Scena animacji 3D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr "Nieskompresowany"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr "Bezstratna Kompresja (PNG)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr "Kompresja Stratna (WebP)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr "Skompresuj (VRAM)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr "Format Tekstury"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr "Jakość Kompresji Textury (WebP):"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr "Opcje Tekstury"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr "Proszę podać kilka plików !"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr "Co najmniej jeden plik potrzebny do \"Atlas'u\"."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr "Błąd importowania:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr "Tylko jeden plik jest wymagany dla dużych tekstur."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr "Maksymalny rozmiar tekstury:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr "Zaimportuj Tekstury z \"Atlas'u\" (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr "Rozmiar komórki:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr "Duża Tekstura"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr "Zaimportuj Duże Tekstury (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
-msgstr "Źródłowa Tekstura"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
-msgstr "Bazowa tekstura \"Atlas'u\""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
-msgstr "Tekstura(y) źródłowe"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
-msgstr "Importuj tekstury dla 2D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
-msgstr "Importuj tekstury dla 3D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
-msgstr "Zaimportuj Tekstury"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
-msgstr "Tekstura 2D"
+#: editor/node_dock.cpp
+msgid "Groups"
+msgstr "Grupy"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
-msgstr "Tekstura 3D"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
+msgstr "Wybierz węzeł do edycji sygnałów i grup."
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
-msgstr "Tekstura \"Atlas'u\""
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
+msgstr "Utwórz Polygon"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
msgstr ""
-"UWAGA: Importowanie tekstur 2D nie jest wymagane. Po prostu skopiuj pliki "
-"png/jpg do folderu projektu."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr "Przytnij pusty obszar."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr "Tekstura"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr "Importuj dużą teksturę"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr "Wczytaj obrazek źródłowy"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr "Przycinanie"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
+msgid "Insert Point"
msgstr "Wstawianie"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr "Zapisywanie"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr "Nie udało się zapisać dużej tekstury:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr "Zbuduj Atlas dla:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr "Åadowanie obrazu:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr "Nie można załadować obrazu:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr "Konwersja obrazków"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr "Przycinanie obrazków"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr "Nie można zapisać obrazu atlasu:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#, fuzzy
-msgid "Couldn't save converted texture:"
-msgstr "Nie można zapisać zkonwertowanej tekstury:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr "Wadliwe źródło!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr "Nieprawidłowe źródło tłumaczenia!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr "Kolumna"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr "Język"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr "Brak elementów do importu!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr "Brak ścieżki docelowej!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr "Importuj tłumaczenia"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr "Nie można zaimportować!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr "Importuj tłumaczenie"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr "Źródłowy CSV:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr "Ignoruj pierwszy wiersz"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr "Skompresuj"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
-msgid "Add to Project (project.godot)"
-msgstr "Dodaj do projektu (engine.cfg)"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr "Zaimportuj Język:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr "Tłumaczenie"
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
msgstr ""
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr "Grupy"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
+msgstr "Utwórz nowy wielokąt."
-#: editor/node_dock.cpp
-msgid "Select a Node to edit Signals and Groups."
-msgstr "Wybierz węzeł do edycji sygnałów i grup."
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Toggle Autoplay"
@@ -3544,7 +2957,6 @@ msgstr "Nazwa animacji:"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3655,10 +3067,6 @@ msgid "Delete Input"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr "Zmień nazwę"
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr "Drzewo animacji jest poprawne."
@@ -3714,64 +3122,192 @@ msgstr "Edytuj filtry węzłów"
msgid "Filters.."
msgstr "Filtry.."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Contents:"
+msgstr "Stałe:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "View Files"
+msgstr "Plik"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
-msgstr "Parsowanie Geometrii"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Can't connect."
+msgstr "Połącz.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Can't connect to host:"
+msgstr "Podłącz do węzła:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Request failed, return code:"
+msgstr "Nieznany format pliku:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
-msgstr "Tworzenie BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
+msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Resolving.."
+msgstr "Zapisywanie.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Connecting.."
+msgstr "Połącz.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Requesting.."
+msgstr "Testowanie"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Error making request"
+msgstr "Błąd podczas zapisu zasobu!"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Download Error"
+msgstr "Pobierz"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "Wszystko"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr "Wtyczki"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "Sortuj:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr "Odwróć"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "Kategoria:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "Źródło:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr "Wsparcie.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "Oficjalny"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr "Testowanie"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Assets ZIP File"
+msgstr "Plik ZIP assetów"
+
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr "PodglÄ…d"
@@ -3814,12 +3350,17 @@ msgid "Edit CanvasItem"
msgstr "Edytuj CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+msgid "Anchors only"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Change Anchors and Margins"
msgstr "Zmień zakotwiczenie"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
-msgstr "Powiększenie (%):"
+msgid "Change Anchors"
+msgstr "Zmień zakotwiczenie"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Paste Pose"
@@ -3874,60 +3415,77 @@ msgid "Pan Mode"
msgstr "Tryb przesuwania"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
-msgstr "Zablokuj wybrany obiekt w miejscu (nie można go przesuwać)."
+#, fuzzy
+msgid "Toggles snapping"
+msgstr "Przełącz pułapkę"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
-msgstr "Odblokuj wybrany obiekt (można go przesuwać)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
+msgstr "Użyj przyciągania"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
-msgstr "Zablokuj selekcję węzłów podrzędnych."
+#, fuzzy
+msgid "Snapping options"
+msgstr "Opcje animacji"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
-msgstr "Odblokuj selekcję węzłów podrzędnych."
+#, fuzzy
+msgid "Snap to grid"
+msgstr "Tryb przyciÄ…gania:"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "Edycja"
+msgid "Use Rotation Snap"
+msgstr "Użyj kroków obrotu"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
-msgstr "Użyj przyciągania"
+#, fuzzy
+msgid "Configure Snap..."
+msgstr "Konfiguruj krokowanie.."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
-msgstr "Pokaż siatkę"
+msgid "Snap Relative"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
-msgstr "Użyj kroków obrotu"
+msgid "Use Pixel Snap"
+msgstr "Użyj krokowania na poziomie pikseli"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
+msgid "Smart snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
-msgstr "Konfiguruj krokowanie.."
+msgid "Snap to parent"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
-msgstr "Użyj krokowania na poziomie pikseli"
+msgid "Snap to node anchor"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
-msgstr "Szkielet.."
+msgid "Lock the selected object in place (can't be moved)."
+msgstr "Zablokuj wybrany obiekt w miejscu (nie można go przesuwać)."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr "Odblokuj wybrany obiekt (można go przesuwać)."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
+msgstr "Zablokuj selekcję węzłów podrzędnych."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+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
msgid "Make Bones"
@@ -3956,12 +3514,19 @@ msgid "View"
msgstr "Widok"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
-msgstr "Wyzeruj przybliżenie"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr "Pokaż siatkę"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
-msgstr "Ustaw przybliżenie..."
+#, fuzzy
+msgid "Show helpers"
+msgstr "Utwórz Kości"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Show rulers"
+msgstr "Utwórz Kości"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -3972,8 +3537,9 @@ msgid "Frame Selection"
msgstr "Powiększ do zaznaczenia"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
-msgstr ""
+#, fuzzy
+msgid "Layout"
+msgstr "Zapisz układ"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Keys"
@@ -3996,12 +3562,21 @@ msgid "Clear Pose"
msgstr "Wyczyść Pozę"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
-msgstr "Ustaw Wartość"
+msgid "Drag pivot from mouse position"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "Ustaw pozycje punktu krzywej"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
-msgstr "PrzyciÄ…ganie (piksele):"
+msgid "Divide grid step by 2"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
#, fuzzy
@@ -4012,24 +3587,29 @@ msgstr "Dodaj wszystko"
msgid "Adding %s..."
msgstr "Dodawanie %s..."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr "Utwórz węzeł"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr "Błąd instancjacji sceny z %s"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr "OK :("
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
#, fuzzy
msgid "No parent to instance a child at."
msgstr "Brak elementu nadrzędnego do stworzenia instancji."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr "Ta operacja wymaga pojedynczego wybranego węzła."
@@ -4046,45 +3626,6 @@ msgstr ""
"Przeciągnij i upuść + Shift: dodaj węzeł równorzędny\n"
"Przeciągnij i upuść + Alt: Zmień typ węzła"
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr "Utwórz Polygon"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Utwórz nowy wielokąt."
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -4094,14 +3635,6 @@ msgid "Set Handle"
msgstr ""
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr "Tworzenie Mesh Library"
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr "Miniatura.."
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr "Usuń element %d?"
@@ -4124,6 +3657,27 @@ msgid "Update from Scene"
msgstr "Aktualizuj ze sceny"
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Ease in"
+msgstr "Usuń zaznaczenie"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
msgid "Modify Curve Point"
msgstr "Zamknij krzywÄ…"
@@ -4208,22 +3762,18 @@ msgid "Create Occluder Polygon"
msgstr "Stwórz Occluder Polygon"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr "Edytuj istniejÄ…cy polygon:"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr "LMB: Przesuń Punkt."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr "Ctrl + LPM: Podziału segmentu."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr "RMB: Wymaż Punkt."
@@ -4328,6 +3878,10 @@ msgid "Create Outline"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr "Siatka"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr ""
@@ -4455,12 +4009,75 @@ msgstr "Losowa skala:"
msgid "Populate"
msgstr ""
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create Navigation Polygon"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Marking walkable triangles..."
+msgstr "Zachowywanie lokalnych zmian.."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Partitioning..."
+msgstr "Ostrzeżenie"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Parsing Geometry..."
+msgstr "Parsowanie Geometrii"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
msgstr ""
#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
+msgid "Create Navigation Polygon"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -4644,16 +4261,19 @@ msgid "Curve Point #"
msgstr "Punkt Krzywej #"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
msgstr "Ustaw pozycje punktu krzywej"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
-msgstr ""
+msgstr "Ustaw pozycje punktu krzywej"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
-msgstr ""
+msgstr "Ustaw pozycje punktu krzywej"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4714,6 +4334,14 @@ msgid "Scale Polygon"
msgstr "Skaluj WielokÄ…t"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "Edycja"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr "WielokÄ…t->UV"
@@ -4768,63 +4396,10 @@ msgstr "Wczytaj Zasób"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "Wklej"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr "Parsuj BBCode"
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr "Długość:"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr "Otwórz plik(i) sampli"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr "Dodaj sampel"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr "Zmień nazwę sampla"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr "Usuń sampel"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr "16 Bits"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr "8 Bits"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr "Stereo"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr "Mono"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr "Format"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr "Wysokość"
-
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Clear Recent Files"
@@ -4917,6 +4492,10 @@ msgstr "Zamknij pliki pomocy"
msgid "Close All"
msgstr "Zamknij"
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr "Uruchom"
+
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Toggle Scripts Panel"
@@ -4949,7 +4528,8 @@ msgstr "Krok w"
msgid "Break"
msgstr "Przerwa"
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr "Kontynuuj"
@@ -4963,18 +4543,6 @@ msgid "Debug with external editor"
msgstr "Otwórz w edytorze"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr "Okno"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr "Przesuń w lewo"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr "Przesuń w prawo"
-
-#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Open Godot online documentation"
msgstr "Poszukaj w dokumentacji referencyjnej."
@@ -5064,8 +4632,9 @@ msgid "Cut"
msgstr "Wytnij"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "Kopiuj"
@@ -5331,10 +4900,6 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr "Skalowanie do %s%%."
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr "Obracanie o %s stopni."
@@ -5351,10 +4916,6 @@ msgid "Top View."
msgstr "Widok z góry."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr "Góra"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr "Widok z tyłu."
@@ -5599,6 +5160,10 @@ msgid "Transform"
msgstr "Przekształcanie"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr "Konfiguruj krokowanie.."
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr "Koordynaty lokalne"
@@ -5744,6 +5309,10 @@ msgid "Speed (FPS):"
msgstr "Prędkość (FPS):"
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr "Pętla"
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr "Klatki animacji"
@@ -5756,12 +5325,14 @@ msgid "Insert Empty (After)"
msgstr "Dodaj pusty (później)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr "Góra"
+#, fuzzy
+msgid "Move (Before)"
+msgstr "Usuń węzeł(y)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
-msgstr "Dół"
+#, fuzzy
+msgid "Move (After)"
+msgstr "Przesuń w lewo"
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
@@ -5840,9 +5411,12 @@ msgid "Remove All"
msgstr "Usuń"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Theme"
-msgstr "Zapisz motyw"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Class Items"
@@ -5927,6 +5501,10 @@ msgid "Style"
msgstr "Styl"
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr "Font"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr "Kolor"
@@ -5978,8 +5556,9 @@ msgid "Mirror Y"
msgstr "Odbij Y"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
-msgstr "Wiadro"
+#, fuzzy
+msgid "Paint Tile"
+msgstr "Maluj TileMap"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Pick Tile"
@@ -6045,6 +5624,11 @@ msgid "Delete preset '%s'?"
msgstr "Usunąć zaznaczone pliki?"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr "Brakuje eksportu szablonów dla tej platformy:"
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr "Profile eksportu"
@@ -6127,33 +5711,62 @@ msgstr "Brakuje eksportu szablonów dla tej platformy:"
#: editor/project_export.cpp
#, fuzzy
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr "Brakuje eksportu szablonów dla tej platformy:"
+
+#: editor/project_export.cpp
+#, fuzzy
msgid "Export With Debug"
msgstr "Eksportuj TileSet"
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
-msgstr "Niepoprawna ścieżka projektu, ścieżka musi istnieć!"
+#, fuzzy
+msgid "The path does not exist."
+msgstr "Plik nie istnieje."
#: editor/project_manager.cpp
#, fuzzy
-msgid "Invalid project path, project.godot must not exist."
-msgstr "Niepoprawna ścieżka projektu, engine.cfg nie może istnieć."
+msgid "Please choose a 'project.godot' file."
+msgstr "Eksportuj poza folderem projektu!"
#: editor/project_manager.cpp
-#, fuzzy
-msgid "Invalid project path, project.godot must exist."
-msgstr "Niepoprawna ścieżka projektu, engine.cfg musi istnieć."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose a folder that does not contain a 'project.godot' file."
+msgstr ""
#: editor/project_manager.cpp
msgid "Imported Project"
msgstr "Zaimportowano projekt"
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr "Niepoprawna ścieżka projektu (zmienić cokolwiek?)."
#: editor/project_manager.cpp
#, fuzzy
+msgid "Couldn't get project.godot in project path."
+msgstr "Nie można było utworzyć engine.cfg w ścieżce projektu."
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't edit project.godot in project path."
+msgstr "Nie można było utworzyć engine.cfg w ścieżce projektu."
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Couldn't create project.godot in project path."
msgstr "Nie można było utworzyć engine.cfg w ścieżce projektu."
@@ -6162,38 +5775,49 @@ msgid "The following files failed extraction from package:"
msgstr "Nie powiodło się wypakowanie z pakietu następujących plików:"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Rename Project"
+msgstr "Projekt bez nazwy"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't get project.godot in the project path."
+msgstr "Nie można było utworzyć engine.cfg w ścieżce projektu."
+
+#: editor/project_manager.cpp
+msgid "New Game Project"
+msgstr "Nowy projekt gry"
+
+#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "Importuj istniejÄ…cy projekt"
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
-msgstr "Ścieżka projektu (musi istnieć):"
+msgid "Create New Project"
+msgstr "Utwórz nowy projekt"
+
+#: editor/project_manager.cpp
+msgid "Install Project:"
+msgstr "Zainstaluj projekt:"
#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Nazwa projektu:"
#: editor/project_manager.cpp
-msgid "Create New Project"
-msgstr "Utwórz nowy projekt"
+#, fuzzy
+msgid "Create folder"
+msgstr "Utwórz katalog"
#: editor/project_manager.cpp
msgid "Project Path:"
msgstr "Ścieżka do projektu:"
#: editor/project_manager.cpp
-msgid "Install Project:"
-msgstr "Zainstaluj projekt:"
-
-#: editor/project_manager.cpp
msgid "Browse"
msgstr "Szukaj"
#: editor/project_manager.cpp
-msgid "New Game Project"
-msgstr "Nowy projekt gry"
-
-#: editor/project_manager.cpp
msgid "That's a BINGO!"
msgstr "To BINGO!"
@@ -6202,6 +5826,11 @@ msgid "Unnamed Project"
msgstr "Projekt bez nazwy"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't open project"
+msgstr "Połącz.."
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr "Czy jesteś pewny że chcesz otworzyć więcej niż jeden projekt?"
@@ -6231,6 +5860,12 @@ msgstr "Usunąć projekt z listy? (Zawartość folderu nie zostanie zmodyfikowan
#: editor/project_manager.cpp
msgid ""
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
"You are about the scan %s folders for existing Godot projects. Do you "
"confirm?"
msgstr ""
@@ -6242,10 +5877,6 @@ msgid "Project List"
msgstr "Lista projektów"
#: editor/project_manager.cpp
-msgid "Run"
-msgstr "Uruchom"
-
-#: editor/project_manager.cpp
msgid "Scan"
msgstr "Skanuj"
@@ -6268,6 +5899,11 @@ msgstr "Wyjdź"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Restart Now"
+msgstr "Restart(y):"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Can't run project"
msgstr "Połącz.."
@@ -6304,17 +5940,14 @@ msgid "Add Input Action Event"
msgstr "Dodaj zdarzenie akcji wejścia"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
@@ -6376,7 +6009,7 @@ msgstr "Zmień"
msgid "Joypad Axis Index:"
msgstr "OÅ› joysticka"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "OÅ›"
@@ -6398,31 +6031,31 @@ msgstr "Wyczyść zdarzenie akcji wejścia"
msgid "Add Event"
msgstr "Dodaj pusty"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "UrzÄ…dzenie"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "Przycisk"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "Lewy przycisk."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "Prawy przycisk."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "Åšrodkowy przycisk."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr "Kółko myszy w górę."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr "Kółko myszy w dół."
@@ -6431,7 +6064,7 @@ msgid "Add Global Property"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6450,6 +6083,16 @@ msgid "Delete Item"
msgstr "Usuń"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Can't contain '/' or ':'"
+msgstr "Podłącz do węzła:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Already existing"
+msgstr "Akcja %s już istnieje!"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "Błąd zapisu ustawień."
@@ -6491,6 +6134,15 @@ msgstr "Usuń opcję mapowania zasobu"
#: editor/project_settings_editor.cpp
#, fuzzy
+msgid "Changed Locale Filter"
+msgstr "Zmień rozmiar kamery"
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Project Settings (project.godot)"
msgstr "Ustawienia projektu (engine.cfg)"
@@ -6552,6 +6204,30 @@ msgstr "Lokalizacja"
#: editor/project_settings_editor.cpp
#, fuzzy
+msgid "Locales Filter"
+msgstr "Lokalizacja"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Show all locales"
+msgstr "Utwórz Kości"
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "Filtry"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales:"
+msgstr "Lokalizacja"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "AutoLoad"
msgstr "Autoładowanie"
@@ -6602,10 +6278,20 @@ msgstr "Nowy skrypt"
#: editor/property_editor.cpp
#, fuzzy
+msgid "Make Unique"
+msgstr "Utwórz Kości"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "Show in File System"
msgstr "System plików"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Convert To %s"
+msgstr "Konwertuje na.."
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr "Błąd wczytania pliku: Brak zasobu!"
@@ -6646,6 +6332,11 @@ msgstr "Zaznacz Punkty"
#: editor/property_selector.cpp
#, fuzzy
+msgid "Select Virtual Method"
+msgstr "Tryb zaznaczenia"
+
+#: editor/property_selector.cpp
+#, fuzzy
msgid "Select Method"
msgstr "Tryb zaznaczenia"
@@ -6674,27 +6365,6 @@ msgstr "Zachowaj globalnÄ… transformacjÄ™"
msgid "Reparent"
msgstr "Zmień nadrzędny"
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr "Utwórz nowy zasób"
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr "Otwórz zasób"
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr "Zapisz zasób"
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr "Narzędzia zasobów"
-
-#: editor/resources_dock.cpp
-#, fuzzy
-msgid "Make Local"
-msgstr "Uczyń lokalnym"
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr "Tryb uruchamiania:"
@@ -6827,14 +6497,6 @@ msgid "Sub-Resources:"
msgstr "Zasoby:"
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr "Edytuj grupy"
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr "Edytuj Połączenia"
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr "Wyczyść dziedziczenie"
@@ -7028,6 +6690,15 @@ msgid "Invalid base path"
msgstr "Niepoprawna ścieżka bazowa"
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "File exists, will be reused"
+msgstr "Plik istnieje, nadpisać?"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr "Niepoprawne rozszerzenie"
@@ -7073,6 +6744,10 @@ msgid "Load existing script file"
msgstr "Następny skrypt"
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr "Język"
+
+#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Inherits"
msgstr "Dziedziczy:"
@@ -7118,6 +6793,10 @@ msgid "Function:"
msgstr "Funkcja:"
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr "Błędy"
@@ -7198,6 +6877,10 @@ msgid "Type"
msgstr "Typ"
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr "Format"
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr "Użycie"
@@ -7274,12 +6957,30 @@ msgstr ""
msgid "Change Probe Extents"
msgstr "Zmień rozmiar Box Shape"
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Library"
+msgstr "MeshLibrary..."
+
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Status"
+msgstr "Status:"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr "Niepoprawny typ argumentu funkcji convert(), użyj stałych TYPE_*."
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr ""
@@ -7333,10 +7034,6 @@ msgid "GridMap Duplicate Selection"
msgstr "Duplikuj zaznaczone"
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Snap View"
msgstr "Widok z góry"
@@ -7440,13 +7137,8 @@ msgstr "Ustawienia przyciÄ…gania"
msgid "Pick Distance:"
msgstr "Instancja:"
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr "Plik"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7654,11 +7346,19 @@ msgid "Return"
msgstr "Zwraca:"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr "Wywołanie"
+
+#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Get"
msgstr "Ustaw"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Input Value"
msgstr "Zmień Wartość Domyślną"
@@ -8073,6 +7773,12 @@ msgstr ""
"Zasób SpriteFrames musi być ustawiony jako wartość właściwości 'Frames' żeby "
"AnimatedSprite3D wyświetlał klatki."
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
#, fuzzy
msgid "Raw Mode"
@@ -8083,6 +7789,10 @@ msgid "Add current color as a preset"
msgstr ""
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Anuluj"
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr "Alarm!"
@@ -8090,10 +7800,6 @@ msgstr "Alarm!"
msgid "Please Confirm..."
msgstr "Proszę potwierdzić..."
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -8133,6 +7839,598 @@ msgstr ""
"otrzymał jakiś rozmiar. W przeciwnym wypadku ustawi opcję RenderTarget i "
"przyporządkuj jego teksturę dla któregoś węzła."
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr "Błąd przy inicjalizacji FreeType."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "Nieznany format fontu."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "Błąd ładowania fonta."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr "Niepoprawny rozmiar fonta."
+
+#~ msgid "Filter:"
+#~ msgstr "Filtr:"
+
+#, fuzzy
+#~ msgid "Theme"
+#~ msgstr "Zapisz motyw"
+
+#~ msgid "Method List For '%s':"
+#~ msgstr "Lista metod '%s':"
+
+#~ msgid "Arguments:"
+#~ msgstr "Argumenty:"
+
+#~ msgid "Return:"
+#~ msgstr "Zwraca:"
+
+#~ msgid "Added:"
+#~ msgstr "Dodane:"
+
+#~ msgid "Removed:"
+#~ msgstr "Usunięte:"
+
+#~ msgid "Error saving atlas:"
+#~ msgstr "Błąd podczas zapisywania atlasu:"
+
+#~ msgid "Could not save atlas subtexture:"
+#~ msgstr "Nie udało się zapisać tekstury atlasu:"
+
+#~ msgid "Exporting for %s"
+#~ msgstr "Exportowanie do %s"
+
+#~ msgid "Setting Up.."
+#~ msgstr "Konfigurowanie .."
+
+#~ msgid "Error loading scene."
+#~ msgstr "Błąd ładowania sceny."
+
+#~ msgid "Re-Import"
+#~ msgstr "Importuj ponownie"
+
+#~ msgid "Please wait for scan to complete."
+#~ msgstr "Proszę poczekać na zakończenie skanowania."
+
+#~ msgid "Current scene must be saved to re-import."
+#~ msgstr "Bieżąca scena musi być zapisana aby ponownie zaimportować."
+
+#~ msgid "Save & Re-Import"
+#~ msgstr "Zapisz i importuj ponownie"
+
+#~ msgid "Re-Importing"
+#~ msgstr "Prze-Importowanie"
+
+#~ msgid "Re-Import Changed Resources"
+#~ msgstr "Zaimportuj ponownie zmienione zasoby"
+
+#~ msgid "Loading Export Templates"
+#~ msgstr "Wczytywanie szablonów eksportu"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Status: Needs Re-Import"
+#~ msgstr "Zapisz i importuj ponownie"
+
+#, fuzzy
+#~ msgid "Same source and destination files, doing nothing."
+#~ msgstr "Pliki źródłowe i docelowe są te same, nie podjęto żadnej akcji."
+
+#~ msgid "Same source and destination paths, doing nothing."
+#~ msgstr ""
+#~ "Ścieżki źródłowa i docelowa są takie same, żadna akcja nie została "
+#~ "wykonana."
+
+#, fuzzy
+#~ msgid "Can't move directories to within themselves."
+#~ msgstr "Nie możesz przenieść danego katalogu do jego wnętrza."
+
+#, fuzzy
+#~ msgid "Error moving file:\n"
+#~ msgstr "Błąd wczytywania obrazu:"
+
+#~ msgid "Pick New Name and Location For:"
+#~ msgstr "Wybierz nowÄ… nazwÄ™ i lokacjÄ™ dla:"
+
+#~ msgid "No files selected!"
+#~ msgstr "Nie wybrano pliku!"
+
+#~ msgid "Info"
+#~ msgstr "Informacje"
+
+#~ msgid "Re-Import.."
+#~ msgstr "Importuj ponownie.."
+
+#~ msgid "No bit masks to import!"
+#~ msgstr "Brak mask bitowych do zaimportowania!"
+
+#~ msgid "Target path is empty."
+#~ msgstr "Docelowa ścieżka jest pusta."
+
+#~ msgid "Target path must be a complete resource path."
+#~ msgstr "Ścieżka docelowa musi być bezwzględna."
+
+#~ msgid "Target path must exist."
+#~ msgstr "Docelowa ścieżka musi istnieć."
+
+#~ msgid "Save path is empty!"
+#~ msgstr "Ścieżka zapisu jest pusta!"
+
+#~ msgid "Import BitMasks"
+#~ msgstr "Importuj BitMasks"
+
+#~ msgid "Source Texture(s):"
+#~ msgstr "Źródło tekstury:"
+
+#~ msgid "Target Path:"
+#~ msgstr "Ścieżka docelowa:"
+
+#~ msgid "Accept"
+#~ msgstr "Akceptuj"
+
+#~ msgid "Bit Mask"
+#~ msgstr "BitMask"
+
+#~ msgid "No source font file!"
+#~ msgstr "Brak pliku źródłowego fontu!"
+
+#~ msgid "No target font resource!"
+#~ msgstr "Brak docelowego zasobu fontu!"
+
+#, fuzzy
+#~ msgid ""
+#~ "Invalid file extension.\n"
+#~ "Please use .font."
+#~ msgstr ""
+#~ "Błędne rozszerzenie pliku.\n"
+#~ "Proszę użyć .fnt."
+
+#~ msgid "Couldn't save font."
+#~ msgstr "Nie udało się zapisać fontu."
+
+#~ msgid "Source Font:"
+#~ msgstr "Źródło fontu:"
+
+#~ msgid "Source Font Size:"
+#~ msgstr "Wielkość oryginalna fontu:"
+
+#~ msgid "Dest Resource:"
+#~ msgstr "Zasób docelowy:"
+
+#~ msgid "The quick brown fox jumps over the lazy dog."
+#~ msgstr "ŻżŹźĆćŃńĄąÅłĘęÓó."
+
+#~ msgid "Test:"
+#~ msgstr "Test:"
+
+#~ msgid "Options:"
+#~ msgstr "Opcje:"
+
+#~ msgid "Font Import"
+#~ msgstr "Import fontu"
+
+#~ msgid ""
+#~ "This file is already a Godot font file, please supply a BMFont type file "
+#~ "instead."
+#~ msgstr ""
+#~ "Ten plik jest już plikiem fontu Godot, proszę podać plik typu BMFont."
+
+#~ msgid "Failed opening as BMFont file."
+#~ msgstr "Nie powiodło się, otwarcie pliku jako BMFont."
+
+#~ msgid "Invalid font custom source."
+#~ msgstr "Nie rozpoznano typu fontu."
+
+#~ msgid "No meshes to import!"
+#~ msgstr "Brak siatek do zaimportowania!"
+
+#~ msgid "Single Mesh Import"
+#~ msgstr "Importuj Mesh"
+
+#~ msgid "Source Mesh(es):"
+#~ msgstr "Źródło Mesh:"
+
+#~ msgid "Surface %d"
+#~ msgstr "Powierzchnia %d"
+
+#~ msgid "No samples to import!"
+#~ msgstr "Brak sampli do importu!"
+
+#~ msgid "Import Audio Samples"
+#~ msgstr "Importuj pliki dźwiękowe"
+
+#~ msgid "Source Sample(s):"
+#~ msgstr "Źródło dźwięku:"
+
+#~ msgid "Audio Sample"
+#~ msgstr "Dźwięk"
+
+#~ msgid "New Clip"
+#~ msgstr "Nowy klip"
+
+#~ msgid "Flags"
+#~ msgstr "Flagi"
+
+#~ msgid "Bake FPS:"
+#~ msgstr "Wypal FPS:"
+
+#~ msgid "Optimizer"
+#~ msgstr "Optymalizator"
+
+#~ msgid "Max Linear Error"
+#~ msgstr "Maksymalny błąd liniowy"
+
+#~ msgid "Max Angular Error"
+#~ msgstr "Maksymalny błąd kątowy"
+
+#~ msgid "Max Angle"
+#~ msgstr "Maksymalny KÄ…t"
+
+#~ msgid "Clips"
+#~ msgstr "Klipy"
+
+#~ msgid "Start(s)"
+#~ msgstr "Start"
+
+#~ msgid "End(s)"
+#~ msgstr "Koniec"
+
+#~ msgid "Filters"
+#~ msgstr "Filtry"
+
+#~ msgid "Source path is empty."
+#~ msgstr "Ścieżka źródłowa jest pusta."
+
+#~ msgid "Couldn't load post-import script."
+#~ msgstr "Nie udało się wczytać skryptu po imporcie."
+
+#~ msgid "Invalid/broken script for post-import."
+#~ msgstr "Niepoprawny/uszkodzony skrypt post-importu."
+
+#~ msgid "Error importing scene."
+#~ msgstr "Błąd podczas wczytywania sceny."
+
+#~ msgid "Import 3D Scene"
+#~ msgstr "Zaimportuj Scene 3D"
+
+#~ msgid "Source Scene:"
+#~ msgstr "Scena źródłowa:"
+
+#~ msgid "Same as Target Scene"
+#~ msgstr "Taki sam jak scena docelowa"
+
+#~ msgid "Shared"
+#~ msgstr "Współdzielone"
+
+#~ msgid "Target Texture Folder:"
+#~ msgstr "Docelowy folder tekstur:"
+
+#~ msgid "Post-Process Script:"
+#~ msgstr "Skrypt do wywołania po imporcie:"
+
+#~ msgid "Custom Root Node Type:"
+#~ msgstr "Niestandardowy typ węzła głównego:"
+
+#~ msgid "Auto"
+#~ msgstr "Automatyczny"
+
+#, fuzzy
+#~ msgid "Root Node Name:"
+#~ msgstr "Nazwa węzła:"
+
+#~ msgid "The Following Files are Missing:"
+#~ msgstr "Brakuje następujących plików:"
+
+#~ msgid "Import Anyway"
+#~ msgstr "Zaimportuj Pomimo"
+
+#~ msgid "Import & Open"
+#~ msgstr "Importuj i Otwórz"
+
+#~ msgid "Edited scene has not been saved, open imported scene anyway?"
+#~ msgstr ""
+#~ "Edytowana sceny nie została zapisana. Otworzyć importowaną scenę mimo "
+#~ "tego?"
+
+#~ msgid "Import Image:"
+#~ msgstr "Zaimportuj Obraz:"
+
+#~ msgid "Couldn't localize path: %s (already local)"
+#~ msgstr "Nie można zlokalizować ścieżki: %s (już jest lokalna)"
+
+#~ msgid "3D Scene Animation"
+#~ msgstr "Scena animacji 3D"
+
+#~ msgid "Uncompressed"
+#~ msgstr "Nieskompresowany"
+
+#~ msgid "Compress Lossless (PNG)"
+#~ msgstr "Bezstratna Kompresja (PNG)"
+
+#~ msgid "Compress Lossy (WebP)"
+#~ msgstr "Kompresja Stratna (WebP)"
+
+#~ msgid "Compress (VRAM)"
+#~ msgstr "Skompresuj (VRAM)"
+
+#~ msgid "Texture Format"
+#~ msgstr "Format Tekstury"
+
+#~ msgid "Texture Compression Quality (WebP):"
+#~ msgstr "Jakość Kompresji Textury (WebP):"
+
+#~ msgid "Texture Options"
+#~ msgstr "Opcje Tekstury"
+
+#~ msgid "Please specify some files!"
+#~ msgstr "Proszę podać kilka plików !"
+
+#~ msgid "At least one file needed for Atlas."
+#~ msgstr "Co najmniej jeden plik potrzebny do \"Atlas'u\"."
+
+#~ msgid "Error importing:"
+#~ msgstr "Błąd importowania:"
+
+#~ msgid "Only one file is required for large texture."
+#~ msgstr "Tylko jeden plik jest wymagany dla dużych tekstur."
+
+#~ msgid "Max Texture Size:"
+#~ msgstr "Maksymalny rozmiar tekstury:"
+
+#~ msgid "Import Textures for Atlas (2D)"
+#~ msgstr "Zaimportuj Tekstury z \"Atlas'u\" (2D)"
+
+#~ msgid "Cell Size:"
+#~ msgstr "Rozmiar komórki:"
+
+#~ msgid "Large Texture"
+#~ msgstr "Duża Tekstura"
+
+#~ msgid "Import Large Textures (2D)"
+#~ msgstr "Zaimportuj Duże Tekstury (2D)"
+
+#~ msgid "Source Texture"
+#~ msgstr "Źródłowa Tekstura"
+
+#~ msgid "Base Atlas Texture"
+#~ msgstr "Bazowa tekstura \"Atlas'u\""
+
+#~ msgid "Source Texture(s)"
+#~ msgstr "Tekstura(y) źródłowe"
+
+#~ msgid "Import Textures for 2D"
+#~ msgstr "Importuj tekstury dla 2D"
+
+#~ msgid "Import Textures for 3D"
+#~ msgstr "Importuj tekstury dla 3D"
+
+#~ msgid "Import Textures"
+#~ msgstr "Zaimportuj Tekstury"
+
+#~ msgid "2D Texture"
+#~ msgstr "Tekstura 2D"
+
+#~ msgid "3D Texture"
+#~ msgstr "Tekstura 3D"
+
+#~ msgid "Atlas Texture"
+#~ msgstr "Tekstura \"Atlas'u\""
+
+#~ msgid ""
+#~ "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files "
+#~ "to the project."
+#~ msgstr ""
+#~ "UWAGA: Importowanie tekstur 2D nie jest wymagane. Po prostu skopiuj pliki "
+#~ "png/jpg do folderu projektu."
+
+#~ msgid "Crop empty space."
+#~ msgstr "Przytnij pusty obszar."
+
+#~ msgid "Texture"
+#~ msgstr "Tekstura"
+
+#~ msgid "Import Large Texture"
+#~ msgstr "Importuj dużą teksturę"
+
+#~ msgid "Load Source Image"
+#~ msgstr "Wczytaj obrazek źródłowy"
+
+#~ msgid "Slicing"
+#~ msgstr "Przycinanie"
+
+#~ msgid "Saving"
+#~ msgstr "Zapisywanie"
+
+#~ msgid "Couldn't save large texture:"
+#~ msgstr "Nie udało się zapisać dużej tekstury:"
+
+#~ msgid "Build Atlas For:"
+#~ msgstr "Zbuduj Atlas dla:"
+
+#~ msgid "Loading Image:"
+#~ msgstr "Åadowanie obrazu:"
+
+#~ msgid "Couldn't load image:"
+#~ msgstr "Nie można załadować obrazu:"
+
+#~ msgid "Converting Images"
+#~ msgstr "Konwersja obrazków"
+
+#~ msgid "Cropping Images"
+#~ msgstr "Przycinanie obrazków"
+
+#~ msgid "Couldn't save atlas image:"
+#~ msgstr "Nie można zapisać obrazu atlasu:"
+
+#, fuzzy
+#~ msgid "Couldn't save converted texture:"
+#~ msgstr "Nie można zapisać zkonwertowanej tekstury:"
+
+#~ msgid "Invalid source!"
+#~ msgstr "Wadliwe źródło!"
+
+#~ msgid "Invalid translation source!"
+#~ msgstr "Nieprawidłowe źródło tłumaczenia!"
+
+#~ msgid "Column"
+#~ msgstr "Kolumna"
+
+#~ msgid "No items to import!"
+#~ msgstr "Brak elementów do importu!"
+
+#~ msgid "No target path!"
+#~ msgstr "Brak ścieżki docelowej!"
+
+#~ msgid "Import Translations"
+#~ msgstr "Importuj tłumaczenia"
+
+#~ msgid "Couldn't import!"
+#~ msgstr "Nie można zaimportować!"
+
+#~ msgid "Import Translation"
+#~ msgstr "Importuj tłumaczenie"
+
+#~ msgid "Source CSV:"
+#~ msgstr "Źródłowy CSV:"
+
+#~ msgid "Ignore First Row"
+#~ msgstr "Ignoruj pierwszy wiersz"
+
+#~ msgid "Compress"
+#~ msgstr "Skompresuj"
+
+#, fuzzy
+#~ msgid "Add to Project (project.godot)"
+#~ msgstr "Dodaj do projektu (engine.cfg)"
+
+#~ msgid "Import Languages:"
+#~ msgstr "Zaimportuj Język:"
+
+#~ msgid "Translation"
+#~ msgstr "Tłumaczenie"
+
+#~ msgid "Making BVH"
+#~ msgstr "Tworzenie BVH"
+
+#~ msgid "Zoom (%):"
+#~ msgstr "Powiększenie (%):"
+
+#~ msgid "Skeleton.."
+#~ msgstr "Szkielet.."
+
+#~ msgid "Zoom Reset"
+#~ msgstr "Wyzeruj przybliżenie"
+
+#~ msgid "Zoom Set.."
+#~ msgstr "Ustaw przybliżenie..."
+
+#~ msgid "Set a Value"
+#~ msgstr "Ustaw Wartość"
+
+#~ msgid "Snap (Pixels):"
+#~ msgstr "PrzyciÄ…ganie (piksele):"
+
+#~ msgid "Parse BBCode"
+#~ msgstr "Parsuj BBCode"
+
+#~ msgid "Length:"
+#~ msgstr "Długość:"
+
+#~ msgid "Open Sample File(s)"
+#~ msgstr "Otwórz plik(i) sampli"
+
+#~ msgid "Add Sample"
+#~ msgstr "Dodaj sampel"
+
+#~ msgid "Rename Sample"
+#~ msgstr "Zmień nazwę sampla"
+
+#~ msgid "Delete Sample"
+#~ msgstr "Usuń sampel"
+
+#~ msgid "16 Bits"
+#~ msgstr "16 Bits"
+
+#~ msgid "8 Bits"
+#~ msgstr "8 Bits"
+
+#~ msgid "Stereo"
+#~ msgstr "Stereo"
+
+#~ msgid "Mono"
+#~ msgstr "Mono"
+
+#~ msgid "Pitch"
+#~ msgstr "Wysokość"
+
+#~ msgid "Window"
+#~ msgstr "Okno"
+
+#~ msgid "Move Right"
+#~ msgstr "Przesuń w prawo"
+
+#~ msgid "Scaling to %s%%."
+#~ msgstr "Skalowanie do %s%%."
+
+#~ msgid "Up"
+#~ msgstr "Góra"
+
+#~ msgid "Down"
+#~ msgstr "Dół"
+
+#~ msgid "Bucket"
+#~ msgstr "Wiadro"
+
+#~ msgid "Invalid project path, the path must exist!"
+#~ msgstr "Niepoprawna ścieżka projektu, ścieżka musi istnieć!"
+
+#, fuzzy
+#~ msgid "Invalid project path, project.godot must not exist."
+#~ msgstr "Niepoprawna ścieżka projektu, engine.cfg nie może istnieć."
+
+#, fuzzy
+#~ msgid "Invalid project path, project.godot must exist."
+#~ msgstr "Niepoprawna ścieżka projektu, engine.cfg musi istnieć."
+
+#~ msgid "Project Path (Must Exist):"
+#~ msgstr "Ścieżka projektu (musi istnieć):"
+
+#~ msgid "Create New Resource"
+#~ msgstr "Utwórz nowy zasób"
+
+#~ msgid "Open Resource"
+#~ msgstr "Otwórz zasób"
+
+#~ msgid "Save Resource"
+#~ msgstr "Zapisz zasób"
+
+#~ msgid "Resource Tools"
+#~ msgstr "Narzędzia zasobów"
+
+#, fuzzy
+#~ msgid "Make Local"
+#~ msgstr "Uczyń lokalnym"
+
+#~ msgid "Edit Groups"
+#~ msgstr "Edytuj grupy"
+
+#~ msgid "Edit Connections"
+#~ msgstr "Edytuj Połączenia"
+
+#, fuzzy
+#~ msgid "Tiles"
+#~ msgstr "Plik"
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl+"
+
#~ msgid "Close scene? (Unsaved changes will be lost)"
#~ msgstr "Zamknąć scenę? (Niezapisane zmiany zostaną utracone)"
@@ -8264,9 +8562,6 @@ msgstr ""
#~ msgid "Install Export Templates"
#~ msgstr "Zainstaluj Szablony Eksportu"
-#~ msgid "Please export outside the project folder!"
-#~ msgstr "Eksportuj poza folderem projektu!"
-
#~ msgid "Error exporting project!"
#~ msgstr "Błąd przy eksporcie projektu!"
@@ -8304,18 +8599,12 @@ msgstr ""
#~ msgid "Include"
#~ msgstr "Zawiera"
-#~ msgid "Change Image Group"
-#~ msgstr "Zmień grupę obrazków"
-
#~ msgid "Group name can't be empty!"
#~ msgstr "Nazwa grupy nie może być pusta!"
#~ msgid "Invalid character in group name!"
#~ msgstr "Nieprawidłowy znak w nazwie grupy!"
-#~ msgid "Group name already exists!"
-#~ msgstr "Nazwa grupy już istnieje!"
-
#~ msgid "Add Image Group"
#~ msgstr "Dodaj grupę obrazków"
diff --git a/editor/translations/pr.po b/editor/translations/pr.po
index 9fbc17c9ca..6f42056ecf 100644
--- a/editor/translations/pr.po
+++ b/editor/translations/pr.po
@@ -1,5 +1,6 @@
# Pirate translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# Zion Nimchuk <zionnimchuk@gmail.com>, 2016-2017.
@@ -191,10 +192,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr ""
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -356,261 +356,6 @@ msgstr ""
msgid "Change Array Value"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "Close"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connecting.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Requesting.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Error making request"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr ""
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "Call"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr ""
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr ""
@@ -647,6 +392,14 @@ msgstr ""
msgid "Selection Only"
msgstr ""
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr ""
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr ""
@@ -679,11 +432,11 @@ msgstr ""
msgid "Skip"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr ""
@@ -750,6 +503,20 @@ msgstr ""
msgid "Oneshot"
msgstr ""
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "Close"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr ""
@@ -775,7 +542,7 @@ msgstr ""
msgid "Disconnect"
msgstr ""
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr ""
@@ -792,12 +559,25 @@ msgstr ""
msgid "Recent:"
msgstr ""
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr ""
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr ""
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr ""
@@ -853,6 +633,10 @@ msgid "Owners Of:"
msgstr ""
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr ""
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -860,7 +644,7 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
+msgid "Cannot remove:\n"
msgstr ""
#: editor/dependency_editor.cpp
@@ -927,10 +711,6 @@ msgid "Godot Engine contributors"
msgstr ""
#: editor/editor_about.cpp
-msgid "Authors"
-msgstr ""
-
-#: editor/editor_about.cpp
msgid "Project Founders"
msgstr ""
@@ -947,6 +727,38 @@ msgid "Developers"
msgstr ""
#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
msgid "License"
msgstr ""
@@ -987,6 +799,16 @@ msgid "Package Installed Successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
msgstr ""
@@ -1037,10 +859,6 @@ msgid "Audio Bus, Drag and Drop to rearrange."
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
msgid "Solo"
msgstr ""
@@ -1052,12 +870,20 @@ msgstr ""
msgid "Bypass"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Reset Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
#, fuzzy
msgid "Delete Effect"
msgstr "Yar, Blow th' Selected Down!"
@@ -1079,6 +905,10 @@ msgid "Duplicate Audio Bus"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Reset Bus Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Move Audio Bus"
msgstr ""
@@ -1110,7 +940,8 @@ msgstr ""
msgid "Create a new Bus Layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
@@ -1200,7 +1031,7 @@ msgid "Rearrange Autoloads"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr ""
@@ -1208,9 +1039,7 @@ msgstr ""
msgid "Node Name:"
msgstr ""
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr ""
@@ -1243,18 +1072,19 @@ msgid "Choose a Directory"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr ""
@@ -1274,30 +1104,6 @@ msgstr ""
msgid "Template file not found:\n"
msgstr ""
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr ""
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr ""
@@ -1382,6 +1188,10 @@ msgstr ""
msgid "Move Favorite Down"
msgstr ""
+#: editor/editor_file_dialog.cpp
+msgid "Go to parent folder"
+msgstr ""
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr ""
@@ -1396,10 +1206,6 @@ msgid "File:"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr ""
@@ -1424,6 +1230,10 @@ msgstr ""
msgid "Search Classes"
msgstr ""
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr ""
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr ""
@@ -1440,15 +1250,28 @@ msgstr ""
msgid "Brief Description:"
msgstr ""
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Members"
+msgstr "th' Members:"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "th' Members:"
#: editor/editor_help.cpp
+msgid "Public Methods"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr ""
#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr ""
@@ -1458,6 +1281,11 @@ msgstr "Yer signals:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Enumerations"
+msgstr "Yer functions:"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Enumerations:"
msgstr "Yer functions:"
@@ -1466,18 +1294,46 @@ msgid "enum "
msgstr ""
#: editor/editor_help.cpp
+msgid "Constants"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Description"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Property Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Methods"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr ""
@@ -1486,24 +1342,21 @@ msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr ""
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr ""
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1520,6 +1373,28 @@ msgid "Error while saving."
msgstr ""
#: editor/editor_node.cpp
+msgid "Can't open '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while parsing '%s'."
+msgstr "Blimey! I can't make th' signature object!"
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while loading '%s'."
+msgstr "Blimey! I can't make th' signature object!"
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr ""
@@ -1577,6 +1452,33 @@ msgid "Restored default layout to base settings."
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr ""
@@ -1738,23 +1640,34 @@ msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgid "Unable to load addon script from path: '%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -1764,7 +1677,7 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr ""
@@ -1775,11 +1688,11 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp
-msgid "Error loading scene."
+msgid "Scene '%s' has broken dependencies:"
msgstr ""
#: editor/editor_node.cpp
-msgid "Scene '%s' has broken dependencies:"
+msgid "Clear Recent Scenes"
msgstr ""
#: editor/editor_node.cpp
@@ -1815,7 +1728,7 @@ msgstr ""
msgid "Toggle distraction-free mode."
msgstr ""
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr ""
@@ -2035,6 +1948,10 @@ msgstr ""
msgid "Issue Tracker"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "About"
msgstr ""
@@ -2043,7 +1960,7 @@ msgstr ""
msgid "Play the project."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr ""
@@ -2059,7 +1976,7 @@ msgstr ""
msgid "Stop the scene."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr ""
@@ -2132,6 +2049,15 @@ msgid "Object properties."
msgstr ""
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr ""
@@ -2147,14 +2073,6 @@ msgstr ""
msgid "Don't Save"
msgstr ""
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr ""
-
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
@@ -2215,11 +2133,28 @@ msgstr ""
msgid "Open the previous Editor"
msgstr ""
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr ""
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr ""
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr ""
@@ -2252,7 +2187,7 @@ msgid "Frame %"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+msgid "Physics Frame %"
msgstr ""
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2271,26 +2206,6 @@ msgstr ""
msgid "Frame #:"
msgstr ""
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr ""
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2401,10 +2316,6 @@ msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr ""
@@ -2438,9 +2349,17 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
+"Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2450,87 +2369,88 @@ msgid ""
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
+msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
+msgid "Cannot move a folder into itself.\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
+msgid "Error moving:\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
+msgid "Unable to update dependencies:\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "No name provided"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving file:\n"
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving dir:\n"
+msgid "No name provided."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
+msgid "Name contains invalid characters."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
+msgid "A file or folder with this name already exists."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
-msgstr ""
+#, fuzzy
+msgid "Renaming file:"
+msgstr "Rename Variable"
#: editor/filesystem_dock.cpp
-msgid "Expand all"
+msgid "Renaming folder:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Collapse all"
+msgid "Expand all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
+msgid "Collapse all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Instance"
+msgid "Copy Path"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
+msgid "Rename.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
+msgid "Move To.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
+msgid "New Folder.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
+msgid "Show In File Manager"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move To.."
+msgid "Instance"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Info"
+msgid "Edit Dependencies.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
+msgid "View Owners.."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2563,6 +2483,11 @@ msgstr ""
msgid "Move"
msgstr ""
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr ""
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr ""
@@ -2576,6 +2501,10 @@ msgid "Import as Single Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -2588,6 +2517,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
msgstr ""
@@ -2596,38 +2537,31 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr ""
@@ -2655,579 +2589,54 @@ msgstr ""
msgid "Reimport"
msgstr ""
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
+#: editor/node_dock.cpp
+msgid "Groups"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr ""
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Select a Node to edit Signals and Groups."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -3383,7 +2792,6 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3494,10 +2902,6 @@ msgid "Delete Input"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr ""
@@ -3553,64 +2957,181 @@ msgstr ""
msgid "Filters.."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3653,11 +3174,15 @@ msgid "Edit CanvasItem"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+msgid "Anchors only"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors and Margins"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
+msgid "Change Anchors"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3708,59 +3233,73 @@ msgid "Pan Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
+#, fuzzy
+msgid "Toggles snapping"
+msgstr "Toggle ye Breakpoint"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
+msgid "Snapping options"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
+msgid "Snap to grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
+msgid "Use Rotation Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "Edit"
+msgid "Configure Snap..."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Snap Relative"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
+msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
+msgid "Smart snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
+msgid "Snap to parent"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
+msgid "Snap to node anchor"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
+msgid "Snap to node sides"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3789,11 +3328,16 @@ msgid "View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show helpers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
+msgid "Show rulers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3805,7 +3349,7 @@ msgid "Frame Selection"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
+msgid "Layout"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3829,11 +3373,20 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
+msgid "Drag pivot from mouse position"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "Discharge ye' Signal"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
+msgid "Divide grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3844,23 +3397,28 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr ""
@@ -3874,45 +3432,6 @@ msgid ""
"Drag & drop + Alt : Change node type"
msgstr ""
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3922,14 +3441,6 @@ msgid "Set Handle"
msgstr ""
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr ""
@@ -3952,6 +3463,26 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease in"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
msgstr ""
@@ -4030,22 +3561,18 @@ msgid "Create Occluder Polygon"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr ""
@@ -4146,6 +3673,10 @@ msgid "Create Outline"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr ""
@@ -4273,12 +3804,72 @@ msgstr ""
msgid "Populate"
msgstr ""
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create Navigation Polygon"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Marking walkable triangles..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Partitioning..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
msgstr ""
#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
+msgid "Create Navigation Polygon"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -4452,16 +4043,19 @@ msgid "Curve Point #"
msgstr ""
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
-msgstr ""
+msgstr "Discharge ye' Signal"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
-msgstr ""
+msgstr "Discharge ye' Signal"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
-msgstr ""
+msgstr "Discharge ye' Signal"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4521,6 +4115,14 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "Edit"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr ""
@@ -4575,63 +4177,10 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr ""
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr ""
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr ""
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
@@ -4722,6 +4271,10 @@ msgstr ""
msgid "Close All"
msgstr ""
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
msgstr ""
@@ -4750,7 +4303,8 @@ msgstr ""
msgid "Break"
msgstr ""
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr ""
@@ -4763,18 +4317,6 @@ msgid "Debug with external editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
msgstr ""
@@ -4856,8 +4398,9 @@ msgid "Cut"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr ""
@@ -5121,10 +4664,6 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr ""
@@ -5141,10 +4680,6 @@ msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr ""
@@ -5374,6 +4909,10 @@ msgid "Transform"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr ""
@@ -5519,6 +5058,10 @@ msgid "Speed (FPS):"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr ""
@@ -5531,11 +5074,12 @@ msgid "Insert Empty (After)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr ""
+#, fuzzy
+msgid "Move (Before)"
+msgstr "Forge yer Node!"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
+msgid "Move (After)"
msgstr ""
#: editor/plugins/style_box_editor_plugin.cpp
@@ -5614,7 +5158,11 @@ msgid "Remove All"
msgstr "Discharge ye' Signal"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
@@ -5699,6 +5247,10 @@ msgid "Style"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr ""
@@ -5747,7 +5299,7 @@ msgid "Mirror Y"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
+msgid "Paint Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5811,6 +5363,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr ""
@@ -5881,19 +5437,29 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
+msgid "The path does not exist."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
+msgid "Please choose a folder that does not contain a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
@@ -5901,10 +5467,26 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't edit project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr ""
@@ -5913,15 +5495,20 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Import Existing Project"
+#, fuzzy
+msgid "Rename Project"
+msgstr "Rename Function"
+
+#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in the project path."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
+msgid "New Game Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Name:"
+msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
@@ -5929,19 +5516,23 @@ msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path:"
+msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Install Project:"
+msgid "Project Name:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Browse"
+msgid "Create folder"
msgstr ""
#: editor/project_manager.cpp
-msgid "New Game Project"
+msgid "Project Path:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
@@ -5953,6 +5544,10 @@ msgid "Unnamed Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Can't open project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr ""
@@ -5979,16 +5574,18 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
-"You are about the scan %s folders for existing Godot projects. Do you "
-"confirm?"
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project List"
+msgid ""
+"You are about the scan %s folders for existing Godot projects. Do you "
+"confirm?"
msgstr ""
#: editor/project_manager.cpp
-msgid "Run"
+msgid "Project List"
msgstr ""
#: editor/project_manager.cpp
@@ -6013,6 +5610,10 @@ msgid "Exit"
msgstr ""
#: editor/project_manager.cpp
+msgid "Restart Now"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -6049,17 +5650,14 @@ msgid "Add Input Action Event"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
@@ -6120,7 +5718,7 @@ msgstr "Change"
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr ""
@@ -6140,31 +5738,31 @@ msgstr ""
msgid "Add Event"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr ""
@@ -6174,7 +5772,7 @@ msgid "Add Global Property"
msgstr "Add yer Getter Property"
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6191,6 +5789,14 @@ msgid "Delete Item"
msgstr "Yar, Blow th' Selected Down!"
#: editor/project_settings_editor.cpp
+msgid "Can't contain '/' or ':'"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
@@ -6231,6 +5837,14 @@ msgid "Remove Resource Remap Option"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
@@ -6291,6 +5905,27 @@ msgid "Locale"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Locales Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show all locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "Paste yer Node"
+
+#: editor/project_settings_editor.cpp
+msgid "Locales:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -6340,10 +5975,18 @@ msgid "New Script"
msgstr ""
#: editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr ""
#: editor/property_editor.cpp
+msgid "Convert To %s"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr ""
@@ -6381,6 +6024,10 @@ msgid "Select Property"
msgstr ""
#: editor/property_selector.cpp
+msgid "Select Virtual Method"
+msgstr ""
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr ""
@@ -6408,26 +6055,6 @@ msgstr ""
msgid "Reparent"
msgstr ""
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr ""
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr ""
@@ -6554,14 +6181,6 @@ msgid "Sub-Resources:"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr ""
@@ -6745,6 +6364,14 @@ msgid "Invalid base path"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "File exists, will be reused"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr ""
@@ -6787,6 +6414,10 @@ msgid "Load existing script file"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Inherits"
msgstr ""
@@ -6828,6 +6459,10 @@ msgid "Function:"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr ""
@@ -6908,6 +6543,10 @@ msgid "Type"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr ""
@@ -6983,6 +6622,22 @@ msgstr ""
msgid "Change Probe Extents"
msgstr ""
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Library"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Status"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
@@ -6990,7 +6645,7 @@ msgstr ""
"Shiver me timbers! ye type argument t' convert() be wrong! use yer TYPE_* "
"constants!"
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Nah enough bytes fer decodin' bytes, or ye got th' wrong ship."
@@ -7044,10 +6699,6 @@ msgid "GridMap Duplicate Selection"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Snap View"
msgstr ""
@@ -7139,12 +6790,8 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Tiles"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7354,10 +7001,18 @@ msgid "Return"
msgstr "Return"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr "Call"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr "Get"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
msgstr ""
@@ -7716,6 +7371,12 @@ msgid ""
"order for AnimatedSprite3D to display frames."
msgstr ""
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -7725,15 +7386,15 @@ msgid "Add current color as a preset"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Alert!"
+msgid "Cancel"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Please Confirm..."
+msgid "Alert!"
msgstr ""
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
+#: scene/gui/dialogs.cpp
+msgid "Please Confirm..."
msgstr ""
#: scene/gui/popup.cpp
@@ -7764,6 +7425,22 @@ msgid ""
"texture to some node for display."
msgstr ""
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr ""
+
#~ msgid "just pressed"
#~ msgstr "just smashed"
diff --git a/editor/translations/pt_BR.po b/editor/translations/pt_BR.po
index ed2bbb2fd3..490ad2accc 100644
--- a/editor/translations/pt_BR.po
+++ b/editor/translations/pt_BR.po
@@ -1,5 +1,6 @@
# Portuguese (Brazil) translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# Allyson Souza <allyson_as@outlook.com>, 2017.
@@ -9,14 +10,15 @@
# Joaquim Ferreira <joaquimferreira1996@bol.com.br>, 2016.
# jonathan railarem <railarem@gmail.com>, 2017.
# Mailson Silva Marins <mailsons335@gmail.com>, 2016.
+# Marcus Correia <marknokalt@live.com>, 2017.
# Michael Alexsander Silva Dias <michael.a.s.dias@gmail.com>, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: 2016-05-30\n"
-"PO-Revision-Date: 2017-08-15 19:47+0000\n"
-"Last-Translator: Michael Alexsander Silva Dias <michael.a.s.dias@gmail.com>\n"
+"PO-Revision-Date: 2017-10-22 02:54+0000\n"
+"Last-Translator: Marcus Correia <marknokalt@live.com>\n"
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
"godot-engine/godot/pt_BR/>\n"
"Language: pt_BR\n"
@@ -24,7 +26,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 2.17-dev\n"
+"X-Generator: Weblate 2.17\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -91,9 +93,8 @@ msgid "Anim Track Change Value Mode"
msgstr "Mudar Modo de Valor da Trilha"
#: editor/animation_editor.cpp
-#, fuzzy
msgid "Anim Track Change Wrap Mode"
-msgstr "Mudar Modo de Valor da Trilha"
+msgstr "Mudar Modo de Cobertura da Trilha de Animação"
#: editor/animation_editor.cpp
msgid "Edit Node Curve"
@@ -201,10 +202,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr "Criar %d NOVAS trilhas e inserir chaves?"
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -366,266 +366,6 @@ msgstr "Alterar Tipo de Valor do Vetor"
msgid "Change Array Value"
msgstr "Alterar Valor do Vetor"
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr "Livrar"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr "Versão:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr "Conteúdo:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr "Ver Arquivos"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr "Descrição:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr "Instalar"
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "Fechar"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Não é possível conectar..."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect to host:"
-msgstr "Conectar ao Nó:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Sem resposta."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Request failed, return code:"
-msgstr "Formato de arquivo requisitado desconhecido:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr "Sol. Falhou."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Falhou:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr "Sucesso!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Resolving.."
-msgstr "Salvando..."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connecting.."
-msgstr "Conectando..."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Requesting.."
-msgstr "Solicitando..."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Error making request"
-msgstr "Erro ao salvar Recurso!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Download Error"
-msgstr "Abaixo"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr "primeiro"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "Todos"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "Pesquisar:"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Pesquisar"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr "Importar"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr "Plugins"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "Ordenar:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr "Reverso"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "Categoria:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "Site:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr "Suportado..."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr "Oficial"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "Comunidade"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr "Em teste"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr "Arquivo ZIP de Assets"
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr "Lista de Métodos para \"%s\":"
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "Chamar"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr "Lista de Métodos:"
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr "Argumentos:"
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr "Retornar:"
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr "Ir para Linha"
@@ -639,7 +379,6 @@ msgid "No Matches"
msgstr "Sem Correspondências"
#: editor/code_editor.cpp
-#, fuzzy
msgid "Replaced %d occurrence(s)."
msgstr "%d ocorrência(s) substituída(s)."
@@ -663,6 +402,14 @@ msgstr "Palavras Inteiras"
msgid "Selection Only"
msgstr "Apenas na Seleção"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Pesquisar"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr "Localizar"
@@ -695,17 +442,17 @@ msgstr "Perguntar ao Substituir"
msgid "Skip"
msgstr "Pular"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "Ampliar Mais"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr "Ampliar Menos"
#: editor/code_editor.cpp
msgid "Reset Zoom"
-msgstr ""
+msgstr "Redefinir Ampliação"
#: editor/code_editor.cpp editor/script_editor_debugger.cpp
msgid "Line:"
@@ -724,6 +471,8 @@ msgid ""
"Target method not found! Specify a valid method or attach a script to target "
"Node."
msgstr ""
+"Método destino não encontrado! Específique um método válido ou anexe um "
+"script ao Nó destino."
#: editor/connections_dialog.cpp
msgid "Connect To Node:"
@@ -766,6 +515,20 @@ msgstr "Postergado"
msgid "Oneshot"
msgstr "Uma vez"
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "Fechar"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr "Conectar"
@@ -791,7 +554,7 @@ msgstr "Conectar..."
msgid "Disconnect"
msgstr "Disconectar"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr "Sinais"
@@ -808,12 +571,25 @@ msgstr "Favoritos:"
msgid "Recent:"
msgstr "Recente:"
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "Pesquisar:"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr "Combinações:"
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "Descrição:"
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr "Buscar Substituição Para:"
@@ -873,6 +649,10 @@ msgid "Owners Of:"
msgstr "Donos De:"
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr "Remover os arquivos selecionados do projeto? (impossível desfazer)"
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -883,8 +663,8 @@ msgstr ""
"Removê-los mesmo assim? (irreversível)"
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
-msgstr "Remover os arquivos selecionados do projeto? (impossível desfazer)"
+msgid "Cannot remove:\n"
+msgstr "Não foi possível remover:\n"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -950,19 +730,12 @@ msgid "Godot Engine contributors"
msgstr "Contribuidores da Godot Engine"
#: editor/editor_about.cpp
-#, fuzzy
-msgid "Authors"
-msgstr "Autor:"
-
-#: editor/editor_about.cpp
-#, fuzzy
msgid "Project Founders"
-msgstr "Gerenciador de Projetos"
+msgstr "Fundadores do Projeto"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Lead Developer"
-msgstr "Desenvolvedores"
+msgstr "Desenvolvedor-chefe"
#: editor/editor_about.cpp editor/project_manager.cpp
msgid "Project Manager"
@@ -973,12 +746,44 @@ msgid "Developers"
msgstr "Desenvolvedores"
#: editor/editor_about.cpp
+msgid "Authors"
+msgstr "Autores"
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr "Patrocinadores Platina"
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr "Patrocinadores Ouro"
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr "Patrocinadores Mini"
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr "Doadores Ouro"
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr "Doadores Prata"
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr "Doadores Bronze"
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr "Doadores"
+
+#: editor/editor_about.cpp
msgid "License"
-msgstr ""
+msgstr "LIcença"
#: editor/editor_about.cpp
msgid "Thirdparty License"
-msgstr ""
+msgstr "Licença de Terceiros"
#: editor/editor_about.cpp
msgid ""
@@ -987,103 +792,108 @@ msgid ""
"is an exhaustive list of all such thirdparty components with their "
"respective copyright statements and license terms."
msgstr ""
+"A Godot Engine conta com várias bibliotecas de código aberto e gratuitas de "
+"terceiros, todas compatíveis com os termos de sua licença MIT. O seguinte é "
+"uma lista exaustiva de todos esses componentes de terceiros com suas "
+"respectivas declarações de direitos autorais e termos de licença."
#: editor/editor_about.cpp
-#, fuzzy
msgid "All Components"
-msgstr "Conteúdo:"
+msgstr "Todos os Componentes"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Components"
-msgstr "Conteúdo:"
+msgstr "Componentes"
#: editor/editor_about.cpp
msgid "Licenses"
-msgstr ""
+msgstr "Licenças"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Error opening package file, not in zip format."
-msgstr ""
+msgstr "Erro ao abrir arquivo de pacote, não está em formato zip."
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Uncompressing Assets"
-msgstr "Não comprimido"
+msgstr "Descompactando Assets"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Package Installed Successfully!"
msgstr "Pacote Instalado com Sucesso!"
#: editor/editor_asset_installer.cpp
-#, fuzzy
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr "Sucesso!"
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr "Instalar"
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
-msgstr "Pacote Instalado com Sucesso!"
+msgstr "Instalador de Pacotes"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
-msgstr ""
+msgstr "Caixas de Som"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Effect"
-msgstr "Adicionar Vazio"
+msgstr "Ad. Efeito"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Rename Audio Bus"
-msgstr "Renomear Autoload"
+msgstr "Renomear Canal de Ãudio"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Toggle Audio Bus Solo"
-msgstr "Alternar Inicio automático"
+msgstr "Alternar Solo do Canal de Ãudio"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Mute"
-msgstr ""
+msgstr "Alternar Silenciamento do Canal de Ãudio"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Bypass Effects"
-msgstr ""
+msgstr "Alternar Efeitos de Desvio do Canal de Ãudio"
#: editor/editor_audio_buses.cpp
msgid "Select Audio Bus Send"
-msgstr ""
+msgstr "Selecionar Canal de Ãudio para Envio"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus Effect"
-msgstr ""
+msgstr "Adicionar Efeito ao Canal de Ãudio"
#: editor/editor_audio_buses.cpp
msgid "Move Bus Effect"
-msgstr ""
+msgstr "Mover Efeito de Canal"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Bus Effect"
-msgstr "Excluir Selecionados"
+msgstr "Excluir Efeito de Canal"
#: editor/editor_audio_buses.cpp
msgid "Audio Bus, Drag and Drop to rearrange."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-#, fuzzy
-msgid "Bus options"
-msgstr "Opções de depuração"
+msgstr "Pista de Ãudio, arraste e solte para reorganizar."
#: editor/editor_audio_buses.cpp
msgid "Solo"
-msgstr ""
+msgstr "Solo"
#: editor/editor_audio_buses.cpp
msgid "Mute"
-msgstr ""
+msgstr "Silenciar"
#: editor/editor_audio_buses.cpp
msgid "Bypass"
-msgstr ""
+msgstr "Ignorar"
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr "Opções da pista"
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
@@ -1091,75 +901,73 @@ msgid "Duplicate"
msgstr "Duplicar"
#: editor/editor_audio_buses.cpp
-#, fuzzy
+msgid "Reset Volume"
+msgstr "Redefinir Volume"
+
+#: editor/editor_audio_buses.cpp
msgid "Delete Effect"
-msgstr "Excluir Selecionados"
+msgstr "Excluir Efeito"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Audio Bus"
-msgstr "Adicionar Todos"
+msgstr "Adicionar Canal de Ãudio"
#: editor/editor_audio_buses.cpp
msgid "Master bus can't be deleted!"
-msgstr ""
+msgstr "Pista mestre não pode ser deletada!"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Audio Bus"
-msgstr "Excluir Layout"
+msgstr "Excluir Canal de Ãudio"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Duplicate Audio Bus"
-msgstr "Duplicar Animação"
+msgstr "Duplicar Canal de Ãudio"
+
+#: editor/editor_audio_buses.cpp
+msgid "Reset Bus Volume"
+msgstr "Redefinir Volume do Canal"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Move Audio Bus"
-msgstr "Ação de Mover"
+msgstr "Mover Canal de Ãudio"
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
-msgstr ""
+msgstr "Salvar Layout de Canais de Ãudio Como..."
#: editor/editor_audio_buses.cpp
msgid "Location for New Layout.."
-msgstr ""
+msgstr "Localização para o Novo Layout.."
#: editor/editor_audio_buses.cpp
msgid "Open Audio Bus Layout"
-msgstr ""
+msgstr "Abrir Layout de Canais de Ãudio"
#: editor/editor_audio_buses.cpp
msgid "There is no 'res://default_bus_layout.tres' file."
-msgstr ""
+msgstr "Não há nenhum arquivo 'res://default_bus_layout.tres'."
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Invalid file, not an audio bus layout."
-msgstr ""
-"Extensão de arquivo inválida.\n"
-"Por favor use .font."
+msgstr "Arquivo inválido, não é um layout de canais de áudio."
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Bus"
-msgstr "Adicionar Todos"
+msgstr "Adicionar Canal"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Create a new Bus Layout."
-msgstr "Criar Novo Recurso"
+msgstr "Criar um novo Layout de Canais."
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr "Carregar"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Load an existing Bus Layout."
-msgstr "Carrega um recurso existente do disco e o edita."
+msgstr "Carregar um Layout de Canais existente."
#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -1168,16 +976,15 @@ msgstr "Salvar Como"
#: editor/editor_audio_buses.cpp
msgid "Save this Bus Layout to a file."
-msgstr ""
+msgstr "Salvar este Layout de Canais em um arquivo."
#: editor/editor_audio_buses.cpp editor/import_dock.cpp
-#, fuzzy
msgid "Load Default"
-msgstr "Padrão"
+msgstr "Carregar Padrão"
#: editor/editor_audio_buses.cpp
msgid "Load the default Bus Layout."
-msgstr ""
+msgstr "Carregar o Layout de Canais padrão."
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
@@ -1247,7 +1054,7 @@ msgid "Rearrange Autoloads"
msgstr "Reordenar Autoloads"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "Caminho:"
@@ -1255,9 +1062,7 @@ msgstr "Caminho:"
msgid "Node Name:"
msgstr "Nome do Nó:"
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr "Nome"
@@ -1282,27 +1087,27 @@ msgid "Updating scene.."
msgstr "Atualizando Cena..."
#: editor/editor_dir_dialog.cpp
-#, fuzzy
msgid "Please select a base directory first"
-msgstr "Por favor salve a cena primeiro."
+msgstr "Por favor selecione um diretório base primeiro"
#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "Escolha um Diretório"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "Criar Pasta"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "Nome:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "Não foi possível criar a pasta."
@@ -1322,30 +1127,6 @@ msgstr "Empacotando"
msgid "Template file not found:\n"
msgstr "Arquivo de modelo não encontrado:\n"
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr "Adicionado:"
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr "Removido:"
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr "Erro ao salvar atlas:"
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr "Não foi possível salvar Subtextura do Atlas:"
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr "Exportando para %s"
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr "Ajustando..."
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "O arquivo existe. Sobrescrever?"
@@ -1430,6 +1211,10 @@ msgstr "Mover Favorito Acima"
msgid "Move Favorite Down"
msgstr "Mover Favorito Abaixo"
+#: editor/editor_file_dialog.cpp
+msgid "Go to parent folder"
+msgstr "Ir para pasta pai"
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "Diretórios & Arquivos:"
@@ -1444,10 +1229,6 @@ msgid "File:"
msgstr "Arquivo:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "Filtro:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "Deve usar uma extensão válida."
@@ -1456,9 +1237,8 @@ msgid "ScanSources"
msgstr "BuscarFontes"
#: editor/editor_file_system.cpp
-#, fuzzy
msgid "(Re)Importing Assets"
-msgstr "Re-Importando"
+msgstr "(Re)Importando Assets"
#: editor/editor_help.cpp editor/editor_node.cpp
#: editor/plugins/script_editor_plugin.cpp
@@ -1473,6 +1253,10 @@ msgstr "Lista de Classes:"
msgid "Search Classes"
msgstr "Pesquisar Classes"
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr "Cima"
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr "Classe:"
@@ -1489,15 +1273,27 @@ msgstr "Herdado por:"
msgid "Brief Description:"
msgstr "Descrição breve:"
+#: editor/editor_help.cpp
+msgid "Members"
+msgstr "Membros"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "Membros:"
#: editor/editor_help.cpp
+msgid "Public Methods"
+msgstr "Métodos Públicos"
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr "Métodos Públicos:"
#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr "Itens do Tema de GUI"
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr "Itens do Tema de GUI:"
@@ -1506,54 +1302,85 @@ msgid "Signals:"
msgstr "Sinais:"
#: editor/editor_help.cpp
-#, fuzzy
+msgid "Enumerations"
+msgstr "Enumerações"
+
+#: editor/editor_help.cpp
msgid "Enumerations:"
-msgstr "Animações"
+msgstr "Enumerações:"
#: editor/editor_help.cpp
msgid "enum "
-msgstr ""
+msgstr "enum "
+
+#: editor/editor_help.cpp
+msgid "Constants"
+msgstr "Constantes"
#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Constantes:"
#: editor/editor_help.cpp
+msgid "Description"
+msgstr "Descrição"
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr "Propriedades"
+
+#: editor/editor_help.cpp
msgid "Property Description:"
msgstr "Descrição da Propriedade:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"Atualmente não existe descrição para esta propriedade. Por favor nos ajude "
+"[color=$color][url=$url]contribuindo uma[/url][/color]!"
+
+#: editor/editor_help.cpp
+msgid "Methods"
+msgstr "Métodos"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr "Descrição do Método:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"Atualmente não existe descrição para este método. Por favor nos ajude [color="
+"$color][url=$url]contribuindo uma[/url][/color]!"
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr "Pesquisar Texto"
#: editor/editor_log.cpp
-#, fuzzy
msgid "Output:"
-msgstr " Saída:"
+msgstr "Saída:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "Limpar"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr "Erro ao salvar Recurso!"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr "Salvar Recuso como..."
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Entendo..."
@@ -1570,6 +1397,26 @@ msgid "Error while saving."
msgstr "Erro ao salvar."
#: editor/editor_node.cpp
+msgid "Can't open '%s'."
+msgstr "Não é possível abrir '%s'."
+
+#: editor/editor_node.cpp
+msgid "Error while parsing '%s'."
+msgstr "Erro ao processar '%s'."
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr "Final inesperado do arquivo '%s'."
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
+msgstr "Falta '%s' ou suas dependências."
+
+#: editor/editor_node.cpp
+msgid "Error while loading '%s'."
+msgstr "Erro ao carregar '%s'."
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr "Salvando Cena"
@@ -1582,9 +1429,8 @@ msgid "Creating Thumbnail"
msgstr "Criando Miniatura"
#: editor/editor_node.cpp
-#, fuzzy
msgid "This operation can't be done without a tree root."
-msgstr "Essa operação não pode ser realizada sem uma cena."
+msgstr "Essa operação não pode ser realizada sem uma raiz da cena."
#: editor/editor_node.cpp
msgid ""
@@ -1630,6 +1476,44 @@ msgid "Restored default layout to base settings."
msgstr "Layout padrão restaurado às configurações base."
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+"Este recurso pertence a uma cena que foi importada, mas não é editável.\n"
+"Por favor, leia a documentação referente a importação de cenas para entender "
+"melhor esse procedimento."
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+"Este recurso pertence a uma cena que foi instanciada ou herdada.\n"
+"Mudanças nele não serão mantidas ao salvar a cena atual."
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+"Este recurso foi importado, então não é editável. Mude suas configurações no "
+"painel de importação e então re-importe."
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+"Essa cena foi importada, então mudanças nela não irão ser mantidas.\n"
+"Instanciar ou herdar a cena permitirá fazer mudanças a ela.\n"
+"Por favor, leia a documentação referente a importação de cenas para entender "
+"melhor esse procedimento."
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr "Copiar Parâmetros"
@@ -1662,15 +1546,14 @@ msgid "There is no defined scene to run."
msgstr "Não há cena definida para rodar."
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"No main scene has ever been defined, select one?\n"
"You can change it later in \"Project Settings\" under the 'application' "
"category."
msgstr ""
"A cena principal não foi definida, selecionar uma?\n"
-"Você pode alterá-la mais tarde nas \"Configurações do Projeto\" na categoria "
-"\"application\"."
+"Você pode alterá-la mais tarde nas \"Configurações do Projeto\" na "
+"categoria 'Application'."
#: editor/editor_node.cpp
msgid ""
@@ -1714,16 +1597,15 @@ msgstr "Abri Cena Ãgil..."
#: editor/editor_node.cpp
msgid "Quick Open Script.."
-msgstr "Abrir Script Ãgil..."
+msgstr "Abrir Rápidamente Script.."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Close"
-msgstr "Salvar um Arquivo"
+msgstr "Salvar e Fechar"
#: editor/editor_node.cpp
msgid "Save changes to '%s' before closing?"
-msgstr ""
+msgstr "Salvar mudanças em '%s' antes de fechar?"
#: editor/editor_node.cpp
msgid "Save Scene As.."
@@ -1754,9 +1636,8 @@ msgid "Export Tile Set"
msgstr "Exportar Tile Set"
#: editor/editor_node.cpp
-#, fuzzy
msgid "This operation can't be done without a selected node."
-msgstr "Essa operação não pode ser realizada sem uma cena."
+msgstr "Esta operação não pode ser feita sem um nó selecionado."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1787,42 +1668,61 @@ msgid "Exit the editor?"
msgstr "Sair do editor?"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Project Manager?"
-msgstr "Gerenciador de Projetos"
+msgstr "Abrir Gerenciador de Projetos?"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Quit"
-msgstr "Salvar um Arquivo"
+msgstr "Salvar e Sair"
#: editor/editor_node.cpp
msgid "Save changes to the following scene(s) before quitting?"
-msgstr ""
+msgstr "Salvar mudanças na(s) seguinte(s) cena(s) antes de sair?"
#: editor/editor_node.cpp
msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
+"Salvar mudanças na(s) seguinte(s) cena(s) antes de abrir o Gerenciador de "
+"Projetos?"
+
+#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+"Esta opção está descontinuada. Situações em que a atualização precisa ser "
+"forçada são consideradas um bug agora. Reporte por favor."
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Escolha uma Cena Principal"
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
-msgstr ""
+#, fuzzy
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
+msgstr "Não foi possível ativar o plugin em: '"
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+#, fuzzy
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
+"Não foi possível encontrar o campo de script para o plugin em: 'res://addons/"
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
-msgstr ""
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "Não foi possível carregar o script de extensão no caminho: '"
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
-msgstr ""
+#, fuzzy
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
+msgstr "Não foi possível carregar o script de extensão no caminho: '"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
+msgstr "Não foi possível carregar o script de extensão no caminho: '"
#: editor/editor_node.cpp
msgid ""
@@ -1833,7 +1733,7 @@ msgstr ""
"Para fazer alterações, uma nova cena herdada pode ser criada."
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr "Ugh"
@@ -1846,14 +1746,14 @@ msgstr ""
"\"Importar\" para abrir a cena e então salve-a dentro do projeto."
#: editor/editor_node.cpp
-msgid "Error loading scene."
-msgstr "Erro ao carregar cena."
-
-#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
msgstr "A cena \"%s\" tem dependências quebradas:"
#: editor/editor_node.cpp
+msgid "Clear Recent Scenes"
+msgstr "Limpar Cenas Recentes"
+
+#: editor/editor_node.cpp
msgid "Save Layout"
msgstr "Salvar Layout"
@@ -1883,11 +1783,10 @@ msgid "Distraction Free Mode"
msgstr "Modo Sem Distrações"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Toggle distraction-free mode."
-msgstr "Modo Sem Distrações"
+msgstr "Alternar modo sem-distrações."
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr "Cena"
@@ -2098,9 +1997,8 @@ msgid "Editor Layout"
msgstr "Layout do Editor"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Toggle Fullscreen"
-msgstr "Modo Tela-Cheia"
+msgstr "Alternar Tela-Cheia"
#: editor/editor_node.cpp editor/project_export.cpp
msgid "Manage Export Templates"
@@ -2120,11 +2018,15 @@ msgstr "Docs Online"
#: editor/editor_node.cpp
msgid "Q&A"
-msgstr ""
+msgstr "Perguntas e Respostas"
#: editor/editor_node.cpp
msgid "Issue Tracker"
-msgstr ""
+msgstr "Rastreador de Problemas"
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "Comunidade"
#: editor/editor_node.cpp
msgid "About"
@@ -2134,7 +2036,7 @@ msgstr "Sobre"
msgid "Play the project."
msgstr "Roda o projeto."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr "Tocar"
@@ -2150,7 +2052,7 @@ msgstr "Pausa a cena"
msgid "Stop the scene."
msgstr "Para a cena."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr "Parar"
@@ -2184,7 +2086,7 @@ msgstr "Atualizar nas Mudanças"
#: editor/editor_node.cpp
msgid "Disable Update Spinner"
-msgstr ""
+msgstr "Desabilitar Spinner de Atualização"
#: editor/editor_node.cpp
msgid "Inspector"
@@ -2223,6 +2125,15 @@ msgid "Object properties."
msgstr "Propriedades do objeto."
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr "Mudanças podem ser perdidas!"
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr "Importar"
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr "Arquivos"
@@ -2236,15 +2147,7 @@ msgstr "Saída"
#: editor/editor_node.cpp
msgid "Don't Save"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr "Reimportar"
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr "Atualizar"
+msgstr "Não Salvar"
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
@@ -2271,9 +2174,8 @@ msgid "Open & Run a Script"
msgstr "Abrir e Rodar um Script"
#: editor/editor_node.cpp
-#, fuzzy
msgid "New Inherited"
-msgstr "Nova Cena Herdada..."
+msgstr "Novo Herdado"
#: editor/editor_node.cpp
msgid "Load Errors"
@@ -2296,9 +2198,8 @@ msgid "Open Script Editor"
msgstr "Abrir Editor de Scripts"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Asset Library"
-msgstr "Exportar Biblioteca"
+msgstr "Abrir Biblioteca de Assets"
#: editor/editor_node.cpp
msgid "Open the next Editor"
@@ -2308,11 +2209,28 @@ msgstr "Abrir o próximo Editor"
msgid "Open the previous Editor"
msgstr "Abrir o Editor anterior"
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr "Criando Previsualizações de Malha"
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr "Miniatura..."
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr "Plugins Instalados:"
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr "Atualizar"
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Versão:"
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr "Autor:"
@@ -2345,7 +2263,8 @@ msgid "Frame %"
msgstr "% de Quadro"
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+#, fuzzy
+msgid "Physics Frame %"
msgstr "% de Quadro Fixo"
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2364,35 +2283,18 @@ msgstr "Mesmo"
msgid "Frame #:"
msgstr "Frame nº:"
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr "Por favor aguarde a verificação completar."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr "Cena Atual só deve ser salva para re-importação."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr "Salvar e Re-Importar"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr "Re-Importando"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr "Re-Importar Recursos Alterados"
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
-msgstr ""
+msgstr "Selecione um dispositivo da lista"
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
"Please add a runnable preset in the export menu."
msgstr ""
+"Não foi encontrado uma definição de exportação executável para esta "
+"plataforma.\n"
+"Por favor, adicione uma definição executável no menu de exportação."
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
@@ -2435,9 +2337,8 @@ msgid "Import From Node:"
msgstr "Importar a Partir do Nó:"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Re-Download"
-msgstr "Recarregar"
+msgstr "Baixar Novamente"
#: editor/export_template_manager.cpp
msgid "Uninstall"
@@ -2448,9 +2349,8 @@ msgid "(Installed)"
msgstr "(Instalado)"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid "Download"
-msgstr "Abaixo"
+msgstr "Download"
#: editor/export_template_manager.cpp
msgid "(Missing)"
@@ -2462,7 +2362,7 @@ msgstr "(Atual)"
#: editor/export_template_manager.cpp
msgid "Remove template version '%s'?"
-msgstr ""
+msgstr "Remover versão '%s' do modelo?"
#: editor/export_template_manager.cpp
msgid "Can't open export templates zip."
@@ -2470,17 +2370,19 @@ msgstr "Não se pôde abrir zip dos modelos de exportação."
#: editor/export_template_manager.cpp
msgid "Invalid version.txt format inside templates."
-msgstr ""
+msgstr "Formato do version.txt dentro dos modelos é inválido."
#: editor/export_template_manager.cpp
msgid ""
"Invalid version.txt format inside templates. Revision is not a valid "
"identifier."
msgstr ""
+"Formato do version.txt dentro dos modelos é inválido. A revisão não é um "
+"identificador válido."
#: editor/export_template_manager.cpp
msgid "No version.txt found inside templates."
-msgstr ""
+msgstr "Não foi encontrado um version.txt dentro dos modelos."
#: editor/export_template_manager.cpp
msgid "Error creating path for templates:\n"
@@ -2495,10 +2397,6 @@ msgid "Importing:"
msgstr "Importando:"
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr "Carregando Modelos de Exportação"
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Versão Atual:"
@@ -2533,60 +2431,73 @@ msgid "Cannot navigate to '"
msgstr "Não é possível navegar para '"
#: editor/filesystem_dock.cpp
-#, fuzzy
+msgid "View items as a grid of thumbnails"
+msgstr "Visualizar itens como uma grade de miniaturas"
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr "Visualizar itens como uma lista"
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
-msgstr "Salvar e Re-Importar"
+"Status: Import of file failed. Please fix file and reimport manually."
+msgstr ""
+"\n"
+"Estado: Falha na importação do arquivo. Por favor, conserte o arquivo e re-"
+"importe manualmente."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid ""
"\n"
"Source: "
-msgstr "Origem:"
+msgstr ""
+"\n"
+"Origem: "
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
-msgstr "Mesmos arquivos de destino e origem, nada a fazer."
+msgid "Cannot move/rename resources root."
+msgstr "Não foi possível mover/renomear raiz dos recurso."
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
-msgstr ""
+msgid "Cannot move a folder into itself.\n"
+msgstr "Não é possível mover uma pasta nela mesma.\n"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
-msgstr "Mesmo caminhos de destino e origem, nada a fazer."
+msgid "Error moving:\n"
+msgstr "Erro ao mover:\n"
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
-msgstr "Não é possível mover diretórios para dentro de si mesmos."
+msgid "Unable to update dependencies:\n"
+msgstr "Não foi possível atualizar dependências:\n"
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
-msgstr ""
+msgid "No name provided"
+msgstr "Nenhum nome fornecido"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error moving file:\n"
-msgstr "Erro ao carregar imagem:"
+msgid "Provided name contains invalid characters"
+msgstr "O nome fornecido contém caracteres inválidos"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "Erro ao importar:"
+msgid "No name provided."
+msgstr "Nenhum nome fornecido."
+
+#: editor/filesystem_dock.cpp
+msgid "Name contains invalid characters."
+msgstr "Nome contém caracteres inválidos."
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
-msgstr "Não é possível operar em \"..\""
+msgid "A file or folder with this name already exists."
+msgstr "Um arquivo ou pasta com esse nome já existe."
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
-msgstr "Escolha Novo Nome e Localização Para:"
+msgid "Renaming file:"
+msgstr "Renomear arquivo:"
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
-msgstr "Nenhum arquivo selecionado!"
+msgid "Renaming folder:"
+msgstr "Renomear pasta:"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2597,40 +2508,36 @@ msgid "Collapse all"
msgstr "Recolher tudo"
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
-msgstr "Mostrar no Gerenciador de Arquivos"
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
-msgstr "Instanciar"
+msgid "Copy Path"
+msgstr "Copiar Caminho"
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
-msgstr "Editar Dependências.."
+msgid "Rename.."
+msgstr "Renomear..."
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
-msgstr "Visualizar Proprietários..."
+msgid "Move To.."
+msgstr "Mover Para..."
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr "Copiar Caminho"
+msgid "New Folder.."
+msgstr "Nova Pasta..."
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
-msgstr "Renomear ou Mover..."
+msgid "Show In File Manager"
+msgstr "Mostrar no Gerenciador de Arquivos"
#: editor/filesystem_dock.cpp
-msgid "Move To.."
-msgstr "Mover Para..."
+msgid "Instance"
+msgstr "Instanciar"
#: editor/filesystem_dock.cpp
-msgid "Info"
-msgstr "Informação"
+msgid "Edit Dependencies.."
+msgstr "Editar Dependências.."
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
-msgstr "Re-importar..."
+msgid "View Owners.."
+msgstr "Visualizar Proprietários..."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2657,11 +2564,18 @@ msgid ""
"Scanning Files,\n"
"Please Wait.."
msgstr ""
+"Analisando arquivos,\n"
+"Por favor aguarde..."
#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "Mover"
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr "Renomear"
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr "Adicionar ao Grupo"
@@ -2671,74 +2585,81 @@ msgid "Remove from Group"
msgstr "Remover do Grupo"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Import as Single Scene"
-msgstr "Importando Cena..."
+msgstr "Importar como Cena Única"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr "Importar com Animações Separadas"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
-msgstr ""
+msgstr "Importar com Materiais Separados"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects"
-msgstr ""
+msgstr "Importar com Objetos Separados"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects+Materials"
-msgstr ""
+msgstr "Importar com Objetos+Materiais serparados"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr "Importar com Objetos+Animações Separados"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr "Importar com Materiais+Animações Separados"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr "Importar com Objetos+Materiais+Animações Separados"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Import as Multiple Scenes"
-msgstr "Importar Cena 3D"
+msgstr "Importar como Múltiplas Cenas"
#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes+Materials"
-msgstr ""
+msgstr "Impotr como Múltiplas Cenas+Materiais"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr "Importar Cena"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr "Importando Cena..."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr "Rodando Script Personalizado..."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr "Não se pôde carregar script pós-importação:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr "Script pós-importação inválido/quebrado (verifique o console):"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr "Erro ao rodar script pós-importação:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr "Salvando..."
#: editor/import_dock.cpp
msgid "Set as Default for '%s'"
-msgstr ""
+msgstr "Definir como padrão para '%'"
#: editor/import_dock.cpp
msgid "Clear Default for '%s'"
-msgstr ""
+msgstr "Limpar padrão para '%'"
#: editor/import_dock.cpp
msgid " Files"
@@ -2753,581 +2674,9 @@ msgid "Preset.."
msgstr "Predefinição..."
#: editor/import_dock.cpp
-#, fuzzy
msgid "Reimport"
msgstr "Reimportar"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr "Sem máscaras de bits para importar!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr "Caminho destino está vazio."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr "Caminho destino deve ser um caminho completo a um recurso."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr "Caminho destino deve existir."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr "Caminho de salvamento vazio!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr "Importar Máscara de Bits"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr "Textura(s) de Origem:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr "Caminho Destino:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr "Aceitar"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr "Máscara de Bits"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr "Falta arquivo de fonte origem!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr "Falta recurso de fonte destino!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-"Extensão de arquivo inválida.\n"
-"Por favor use .font."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr "Não se pôde carregar/processar fonte de origem."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr "Não se pôde salvar fonte."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr "Fonte Origem:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr "Tamanho da Fonte de Origem:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr "Recurso Destino:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
-"À noite, vovô Kowalsky vê o ímã cair no pé do pinguim queixoso e vovó põe "
-"açúcar no chá de tâmaras do jabuti feliz."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr "Teste:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr "Opções:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr "Importar Fonte"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-"Este arquivo já é um arquivo de fonte Godot, por favor forneça um arquivo "
-"BMFont."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr "Falha ao abrir como arquivo BMFont."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr "Erro ao inicializar FreeType."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "Formato de fonte desconhecido."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "Erro ao carregar fonte."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr "Tamanho de fonte inválido."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr "Origem personalizada da fonte inválida."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Fonte"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr "Sem meshes para importar!"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr "Importar Única Mesh"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr "Origem de Mesh(es):"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr "Mesh"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "Superfície %d"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr "Sem amostras para importar!"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr "Importar Amostras de Ãudio"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr "Amostra(s) de Origem:"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr "Amostra de Ãudio"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr "Novo Clipe"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr "Opções da Animação"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr "Flags"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr "Precalcular FPS:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr "Otimizador"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr "Erro Linear Máximo"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr "Erro Angular Máximo"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr "Ângulo Máximo"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr "Clipes"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr "Início(s)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr "Fim(ns)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr "Repetir"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr "Filtros"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr "Caminho de origem está vazio."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr "Não se pôde carregar script pós-importação."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr "Script pós-importação inválido/quebrado."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr "Erro ao importar cena."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr "Importar Cena 3D"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr "Cena de Origem:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr "Mesma da Cena Destino"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr "Compartilhado"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr "Pasta Destino para Textura:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr "Script de Pós-Processamento:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr "Tipo Personalizado de Nó Raiz:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr "Auto"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr "Nome do Nó Raíz:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr "Os Seguintes Arquivos estão Faltando:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr "Importar Mesmo Assim"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr "Importar e Abrir"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr "A cena editada não foi salva, abrir cena importada ainda assim?"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr "Importar Imagem:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr "Não é possível importar arquivo sobre si mesmo:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr "Caminho não pôde ser localizado: %s (já é local)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr "Animação Cena 3D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr "Não comprimido"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr "Comprimido Sem Perdas (PNG)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr "Comprido Com Perdas (WebP)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr "Comprimido (VRAM)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr "Formato da Textura"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr "Qualidade da Compressão da Textura (WebP):"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr "Opções da Textura"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr "Por favor especifique alguns arquivos!"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr "Pelo menos um arquivo é preciso para o Atlas."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr "Erro ao importar:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr "Apenas um arquivo é requerido para textura grande."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr "Tamanho Máximo de Textura:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr "Importar Texturas para Atlas (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr "Tamanho da Célula:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr "Textura Grande"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr "Importar Texturas Grandes (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
-msgstr "Textura Origem"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
-msgstr "Textura Base do Atlas"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
-msgstr "Textura(s) Origem(ns)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
-msgstr "Importar Texturas para 2D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
-msgstr "Importar Texturas para 3D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
-msgstr "Importar Textura"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
-msgstr "Textura 2D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
-msgstr "Textura 3D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
-msgstr "Textura Atlas"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-"AVISO: Importar texturas 2D não é obrigatório. Apenas copie arquivos png/jpg "
-"para o projeto."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr "Aparar espaço vazio."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr "Textura"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr "Importar Textura Grande"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr "Carregar Imagem Origem"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr "Fatiando"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr "Inserindo"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr "Salvando"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr "Não se pôde salvar textura grande:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr "Montar Atlas Para:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr "Carregando Imagem:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr "Não se pôde carregar imagem:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr "Convertendo Imagens"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr "Aparando Imagens"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr "Fazendo Blitting das Imagens"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr "Não se pôde salva imagem de atlas:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr "Não se pôde salvar textura convertida:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr "Origem inválida!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr "Origem de tradução inválida!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr "Coluna"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr "Idioma"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr "Nenhum item a importar!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr "Nenhum caminho destino!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr "Importar Traduções"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr "Não foi possível importar!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr "Importar Tradução"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr "Arquivo CSV Origem:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr "Ignorar Primeira Linha"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr "Comprimir"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr "Adicionar ao Projeto (project.godot)"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr "Importar Idiomas:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr "Tradução"
-
#: editor/multi_node_edit.cpp
msgid "MultiNode Set"
msgstr "Múltiplos Nós definidos"
@@ -3340,6 +2689,48 @@ msgstr "Grupos"
msgid "Select a Node to edit Signals and Groups."
msgstr "Selecione um Nó para editar Sinais e Grupos."
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
+msgstr "Criar polígono"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Editar Polígono"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
+msgstr "Inserir Ponto"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Editar Polígono (Remover Ponto)"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
+msgstr "Remover Polígono e Ponto"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
+msgstr "Criar um novo polígono do zero."
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+"Editar polígono existente:\n"
+"LMB: Mover Ponto.\n"
+"Ctrl+LMB: Soltar Segmento.\n"
+"RMB: Apagar Ponto."
+
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Toggle Autoplay"
msgstr "Alternar Inicio automático"
@@ -3496,7 +2887,6 @@ msgstr "Nome da Animação:"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3524,9 +2914,8 @@ msgid "New name:"
msgstr "Novo nome:"
#: editor/plugins/animation_tree_editor_plugin.cpp
-#, fuzzy
msgid "Edit Filters"
-msgstr "Editar Filtros de Nó"
+msgstr "Editar Filtros"
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
@@ -3607,10 +2996,6 @@ msgid "Delete Input"
msgstr "Deletar Entrada"
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr "Renomear"
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr "Ãrvore de Animação é válida."
@@ -3666,64 +3051,181 @@ msgstr "Editar Filtros de Nó"
msgid "Filters.."
msgstr "Filtros..."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
-msgstr "Analisando %d Triângulos:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr "Livrar"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
+msgstr "Conteúdo:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
+msgstr "Ver Arquivos"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
+msgstr "Não foi possível resolver o hostname:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
+msgstr "Não foi possível resolver."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
+msgstr "Erro na conexão, por favor tente novamente."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Não foi possível conectar."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
+msgstr "Não foi possível conectar ao host:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
+msgstr "Sem resposta do host:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
-msgstr "Triângulo nº"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Sem resposta."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
+msgstr "Solicitação falhou, código de retorno:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
+msgstr "Sol. Falhou."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
-msgstr "Configurar Baker de Luz:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
+msgstr "Solicitação falhou, redirecionamentos demais"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
-msgstr "Analisando Geometria"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
+msgstr "Loop de Redirecionamento."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
-msgstr "Consertando Luzes"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Falhou:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
-msgstr "Fazendo BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr "Hash de download ruim, assumindo que o arquivo foi adulterado."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
-msgstr "Criando Luz Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr "Esperado:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
-msgstr "Criando Textura Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr "Obtido:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
-msgstr "Transferir para Mapas de Luz:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr "Falha na verificação da hash sha256"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
-msgstr "Alocando Textura nº"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr "Erro no Download do Asset:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
-msgstr "Precalculando Triângulo nº"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr "Procurando:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
-msgstr "Pós-Processando Textura nº"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr "Resolvendo.."
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
-msgstr "Precalcular!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting.."
+msgstr "Conectando.."
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
-msgstr "Redefinir o processo \"octree baking\" do lightmap (recomeçar)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr "Solicitando.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
+msgstr "Erro ao fazer solicitação"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr "Ocioso"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr "Tentar Novamente"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr "Erro no Download"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr "Download deste asset já está em progresso!"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr "prim"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr "ant"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr "prox"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr "ult"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "Todos"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr "Plugins"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "Ordenar:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr "Reverso"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "Categoria:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "Site:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr "Suporte.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "Oficial"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr "Em teste"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr "Arquivo ZIP de Assets"
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr "Visualização"
@@ -3766,12 +3268,16 @@ msgid "Edit CanvasItem"
msgstr "Editar CanvaItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
-msgstr "Alterar Âncoras"
+msgid "Anchors only"
+msgstr "Apenas âncoras"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
-msgstr "Ampliação (%):"
+msgid "Change Anchors and Margins"
+msgstr "Alterar Âncoras e Margens"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors"
+msgstr "Alterar Âncoras"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Paste Pose"
@@ -3800,12 +3306,10 @@ msgid "Alt+RMB: Depth list selection"
msgstr "Alt+RMB: Lista de seleção de profundidade"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Move Mode"
-msgstr "Modo Mover (W)"
+msgstr "Modo Mover"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Rotate Mode"
msgstr "Modo Rotacionar"
@@ -3827,60 +3331,73 @@ msgid "Pan Mode"
msgstr "Modo Panorâmico"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
-msgstr "Travar o objeto selecionado no local (não pode ser movido)."
+msgid "Toggles snapping"
+msgstr "Alternar Encaixar"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
-msgstr "Destravar o objeto selecionado (pode ser movido)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
+msgstr "Usar Snap"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
-msgstr "Garante que os filhos do objeto não sejam selecionáveis."
+msgid "Snapping options"
+msgstr "Opções da Encaixe"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
-msgstr "Restaura a habilidade dos filhos do objeto de serem selecionados."
+msgid "Snap to grid"
+msgstr "Encaixar na grade"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "Editar"
+msgid "Use Rotation Snap"
+msgstr "Usar Snap de Rotação"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
-msgstr "Usar Snap"
+msgid "Configure Snap..."
+msgstr "Configurar Encaixe..."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
-msgstr "Mostrar Grade"
+msgid "Snap Relative"
+msgstr "Snap Relativo"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
-msgstr "Usar Snap de Rotação"
+msgid "Use Pixel Snap"
+msgstr "Usar Snap de Pixel"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
-msgstr "Snap Relativo"
+msgid "Smart snapping"
+msgstr "Encaixe inteligente"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
-msgstr "Configurar Snap..."
+msgid "Snap to parent"
+msgstr "Encaixar no pai"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
-msgstr "Usar Snap de Pixel"
+msgid "Snap to node anchor"
+msgstr "Encaixar na âncora do nó"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
-msgstr "Esqueleto..."
+msgid "Snap to node sides"
+msgstr "Encaixar nos lados do lá"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr "Encaixar em outros nós"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr "Travar o objeto selecionado no local (não pode ser movido)."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr "Destravar o objeto selecionado (pode ser movido)."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
+msgstr "Garante que os filhos do objeto não sejam selecionáveis."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
+msgstr "Restaura a habilidade dos filhos do objeto de serem selecionados."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Make Bones"
@@ -3891,9 +3408,8 @@ msgid "Clear Bones"
msgstr "Limpar Ossos"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Show Bones"
-msgstr "Fazer Ossos"
+msgstr "Mostrar Ossos"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Make IK Chain"
@@ -3909,12 +3425,17 @@ msgid "View"
msgstr "Visualizar"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
-msgstr "Restaurar Ampliação"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr "Mostrar Grade"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show helpers"
+msgstr "Mostrar auxiliadores"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
-msgstr "Definir Ampliação..."
+msgid "Show rulers"
+msgstr "Mostrar réguas"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -3925,8 +3446,8 @@ msgid "Frame Selection"
msgstr "Seleção de Quadros"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
-msgstr "Âncora"
+msgid "Layout"
+msgstr "Layout"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Keys"
@@ -3949,91 +3470,65 @@ msgid "Clear Pose"
msgstr "Limpar Pose"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
-msgstr "Defina um Valor"
+msgid "Drag pivot from mouse position"
+msgstr "Arrastar o pivô para a posição do mouse"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
-msgstr "Snap (Pixels):"
+msgid "Set pivot at mouse position"
+msgstr "Colocar o pivô na posição do mouse"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr "Multiplifcar passo da grade por 2"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Divide grid step by 2"
+msgstr "Dividir passo da grade por 2"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Add %s"
-msgstr "Adicionar Todos"
+msgstr "Adicionar %s"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Adding %s..."
-msgstr ""
+msgstr "Adicionando %s..."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr "Criar Nó"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr "Erro ao instanciar cena de %s"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr "OK :("
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
-msgstr "Sem nó pai onde instanciar um filho."
+msgstr "Sem pai onde instanciar um filho."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr "Essa operação requer um único nó selecionado."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#, fuzzy
msgid "Change default type"
-msgstr "Alterar Valor Padrão"
+msgstr "Alterar tipo padrão"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid ""
"Drag & drop + Shift : Add node as sibling\n"
"Drag & drop + Alt : Change node type"
msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr "Criar polígono"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr "Editar Polígono"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr "Editar Polígono (Remover Ponto)"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Criar um novo polígono do zero."
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
+"Arrastar e soltar + Shift : Adicionar nó como irmão\n"
+"Arrastar e soltar + Alt : Mudar tipo de nó"
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
@@ -4044,14 +3539,6 @@ msgid "Set Handle"
msgstr "Definir Manipulador"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr "Criando MeshLibrary"
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr "Miniatura..."
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr "Remover item %d?"
@@ -4074,57 +3561,68 @@ msgid "Update from Scene"
msgstr "Atualizar a partir de Cena"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
+msgid "Flat0"
+msgstr "Flat0"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr "Flat1"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease in"
+msgstr "Suavizar início"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr "Suavizar final"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr "Passo suave"
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
-msgstr "Modificar Curve Map"
+msgstr "Modificar Ponto da Curva"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Modify Curve Tangent"
-msgstr "Modificar Curve Map"
+msgstr "Modificar Tangente da Curva"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Load Curve Preset"
-msgstr "Carregar Recurso"
+msgstr "Carregar Definição de Curva"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Add point"
-msgstr "Adicionar Entrada"
+msgstr "Adicionar ponto"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Remove point"
-msgstr "Remover Ponto do Caminho"
+msgstr "Remover ponto"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Left linear"
-msgstr "Linear"
+msgstr "Linear esquerda"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Right linear"
-msgstr "Visão Direita"
+msgstr "Linear direita"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Load preset"
-msgstr "Carregar Recurso"
+msgstr "Carregar definição"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Remove Curve Point"
-msgstr "Remover Ponto do Caminho"
+msgstr "Remover Ponto da Curva"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Toggle Curve Linear Tangent"
-msgstr ""
+msgstr "Alternar Curva Targente Linear"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Hold Shift to edit tangents individually"
-msgstr ""
+msgstr "Segure Shift para editar tangentes individualmente"
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -4152,45 +3650,40 @@ msgid ""
"No OccluderPolygon2D resource on this node.\n"
"Create and assign one?"
msgstr ""
+"Nenhum recurso OccluderPolygon2D neste nó.\n"
+"Criar e atribuir um?"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Criar Polígono de Oclusão"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr "Editar polígono existente:"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr "LMB: Mover Ponto."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr "Ctrl+LMB: Dividir Segmento."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr "RMB: Apagar Ponto."
#: editor/plugins/line_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove Point from Line2D"
-msgstr "Remover Ponto da Curva"
+msgstr "Remover Ponto de Line2D"
#: editor/plugins/line_2d_editor_plugin.cpp
-#, fuzzy
msgid "Add Point to Line2D"
-msgstr "Adicionar Ponto à Curva"
+msgstr "Adicionar Ponto ao Line2D"
#: editor/plugins/line_2d_editor_plugin.cpp
-#, fuzzy
msgid "Move Point in Line2D"
-msgstr "Mover Ponto na Curva"
+msgstr "Mover Ponto em Line2D"
#: editor/plugins/line_2d_editor_plugin.cpp
#: editor/plugins/path_2d_editor_plugin.cpp
@@ -4223,9 +3716,8 @@ msgid "Add Point (in empty space)"
msgstr "Adicionar Ponto (em espaço vazio)"
#: editor/plugins/line_2d_editor_plugin.cpp
-#, fuzzy
msgid "Split Segment (in line)"
-msgstr "Dividir Segmentos (na curva)"
+msgstr "Dividir Segmento (em linha)"
#: editor/plugins/line_2d_editor_plugin.cpp
#: editor/plugins/path_2d_editor_plugin.cpp
@@ -4278,6 +3770,10 @@ msgid "Create Outline"
msgstr "Criar Contorno"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr "Mesh"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr "Criar Corpo Trimesh Estático"
@@ -4406,27 +3902,88 @@ msgstr "Escala aleatória:"
msgid "Populate"
msgstr "Popular"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr "Precalcular!"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr "Preparar a malha de navegação.\n"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr "Apagar a malha de navegação."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr "Preparando Configuração..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr "Calculando tamanho da grade..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr "Criando mapa de altura..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Marking walkable triangles..."
+msgstr "Marcando triângulos caminháveis..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr "Construindo um mapa de altura compacto..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr "Erodindo área caminhável..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Partitioning..."
+msgstr "Particionando..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr "Criando contornos..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr "Criando polimalha..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr "Convertando para malha de navegação nativa..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr "Configuração do Gerador de Malha de Navegação:"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr "Analisando Geometria..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
+msgstr "Pronto!"
+
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Create Navigation Polygon"
msgstr "Criar Polígono de Navegação"
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
-msgstr "Remover Polígono e Ponto"
-
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Clear Emission Mask"
msgstr "Limpar Máscara de Emissão"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generating AABB"
-msgstr "Gerar AABB"
+msgstr "Gerando AABB"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
msgstr ""
+"Só é permitido colocar um ponto em um material processador ParticlesMaterial"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Error loading image:"
@@ -4442,7 +3999,7 @@ msgstr "Definir Máscara de Emissão"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generate Visibility Rect"
-msgstr ""
+msgstr "Gerar Retângulo de Visibilidade"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Load Emission Mask"
@@ -4450,9 +4007,8 @@ msgstr "Carregar Máscara de Emissão"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Particles"
-msgstr "Vértice"
+msgstr "Partículas"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
@@ -4460,24 +4016,20 @@ msgstr "Gerar Contagem de Pontos:"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generation Time (sec):"
-msgstr "Tempo Médio (seg)"
+msgstr "Gerando Tempo (seg):"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Emission Mask"
-msgstr "Definir Máscara de Emissão"
+msgstr "Máscara de Emissão"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Capture from Pixel"
-msgstr "Criar a partir de Cena"
+msgstr "Capturar a partir do Pixel"
#: editor/plugins/particles_2d_editor_plugin.cpp
-#, fuzzy
msgid "Emission Colors"
-msgstr "Posições de Emissão:"
+msgstr "Cores de Emissão"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Node does not contain geometry."
@@ -4489,7 +4041,7 @@ msgstr "O nó não contém geometria (faces)."
#: editor/plugins/particles_editor_plugin.cpp
msgid "A processor material of type 'ParticlesMaterial' is required."
-msgstr ""
+msgstr "Um material processador do tipo 'ParticlesMaterial' é necessário."
#: editor/plugins/particles_editor_plugin.cpp
msgid "Faces contain no area!"
@@ -4504,14 +4056,12 @@ msgid "Generate AABB"
msgstr "Gerar AABB"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Create Emission Points From Mesh"
-msgstr "Criar Emissor a partir de Mesh"
+msgstr "Criar Pontos de Emissão a Partir do Mesh"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Create Emission Points From Node"
-msgstr "Criar Emissor a partir de Nó"
+msgstr "Criar Pontos de Emissão a Partir do Nó"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Clear Emitter"
@@ -4522,46 +4072,40 @@ msgid "Create Emitter"
msgstr "Criar Emissor"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Emission Points:"
-msgstr "Posições de Emissão:"
+msgstr "Pontos de Emissão:"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Surface Points"
-msgstr "Superfície %d"
+msgstr "Pontos de Superfície"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Surface Points+Normal (Directed)"
-msgstr ""
+msgstr "Pontos de Superfície+Normal (Direcionadas)"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Volume"
msgstr "Volume"
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Emission Source: "
-msgstr "Preenchimento de Emissão:"
+msgstr "Origem da Emissão: "
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Generate Visibility AABB"
-msgstr "Gerar AABB"
+msgstr "Gerar AABB de Visibilidade"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Remove Point from Curve"
msgstr "Remover Ponto da Curva"
#: editor/plugins/path_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove Out-Control from Curve"
-msgstr "Mover Controle de Saída na Curva"
+msgstr "Remover Controle de Saída da Curva"
#: editor/plugins/path_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove In-Control from Curve"
-msgstr "Remover Ponto da Curva"
+msgstr "Remover Controle de Entrada da Curva"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
@@ -4600,15 +4144,15 @@ msgstr "Ponto da Curva nº"
#: editor/plugins/path_editor_plugin.cpp
msgid "Set Curve Point Position"
-msgstr "Definir Pos do Ponto da Curva"
+msgstr "Definir Posição do Ponto da Curva"
#: editor/plugins/path_editor_plugin.cpp
msgid "Set Curve In Position"
-msgstr "Definir Pos da Entrada da Curva"
+msgstr "Colocar a Curva na Posição"
#: editor/plugins/path_editor_plugin.cpp
msgid "Set Curve Out Position"
-msgstr "Definir Pos da Saída da Curva"
+msgstr "Definir Posição de Saída da Curva"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4619,14 +4163,12 @@ msgid "Remove Path Point"
msgstr "Remover Ponto do Caminho"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Remove Out-Control Point"
-msgstr "Mover Controle de Saída na Curva"
+msgstr "Remover Ponto de Controle de Saída"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Remove In-Control Point"
-msgstr "Mover Controle de Entrada na Curva"
+msgstr "Remover Ponto de Controle de Entrada"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
@@ -4669,6 +4211,14 @@ msgid "Scale Polygon"
msgstr "Escalonar Polígono"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "Editar"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr "Polígono->UV"
@@ -4723,73 +4273,21 @@ msgstr "Carregar Recurso"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "Colar"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr "Analisar BBCode"
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr "Duração:"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr "Abrir Arquivo(s) de Amostra"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr "ERRO: Não é possível carregar a amostra!"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr "Adicionar Amostra"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr "Renomear Amostra"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr "Excluir Amostra"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr "16 bits"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr "8 Bits"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr "Estéreo"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr "Mono"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr "Formato"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr "Pitch"
-
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Clear Recent Files"
-msgstr "Limpar Ossos"
+msgstr "Limpar Arquivos Recentes"
#: editor/plugins/script_editor_plugin.cpp
msgid ""
"Close and save changes?\n"
"\""
msgstr ""
+"Fechar e salvar mudanças?\n"
+"\""
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4817,7 +4315,7 @@ msgstr "Salvar Tema Como..."
#: editor/plugins/script_editor_plugin.cpp
msgid " Class Reference"
-msgstr ""
+msgstr " Referência de Classes"
#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
@@ -4868,14 +4366,16 @@ msgid "Close Docs"
msgstr "Fechar Docs"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Close All"
-msgstr "Fechar"
+msgstr "Fechar Tudo"
+
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr "Rodar"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Toggle Scripts Panel"
-msgstr "Alternar Favorito"
+msgstr "Alternar Painel de Scripts"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -4901,7 +4401,8 @@ msgstr "Passo para dentro"
msgid "Break"
msgstr "Pausar"
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr "Continuar"
@@ -4910,26 +4411,12 @@ msgid "Keep Debugger Open"
msgstr "Manter Depurador Aberto"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Debug with external editor"
-msgstr "Abrir o próximo Editor"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr "Janela"
+msgstr "Depurar com um editor externo"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr "Mover para Esquerda"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr "Mover para Direita"
-
-#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Open Godot online documentation"
-msgstr "Pesquise a documentação de referência."
+msgstr "Abrir a documentação online da Godot"
#: editor/plugins/script_editor_plugin.cpp
msgid "Search the class hierarchy."
@@ -4948,9 +4435,8 @@ msgid "Go to next edited document."
msgstr "Ir para o próximo documento editado."
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Discard"
-msgstr "Discreto"
+msgstr "Descartar"
#: editor/plugins/script_editor_plugin.cpp
msgid "Create Script"
@@ -4985,29 +4471,27 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
-msgstr ""
+msgstr "Apenas recursos de Arquivos podem ser soltos."
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Pick Color"
-msgstr "Cor"
+msgstr "Escolher Cor"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert Case"
-msgstr "Convertendo Imagens"
+msgstr "Converter Maíusculas/Minúsculas"
#: editor/plugins/script_text_editor.cpp
msgid "Uppercase"
-msgstr ""
+msgstr "Maiúscula"
#: editor/plugins/script_text_editor.cpp
msgid "Lowercase"
-msgstr ""
+msgstr "Minúscula"
#: editor/plugins/script_text_editor.cpp
msgid "Capitalize"
-msgstr ""
+msgstr "Capitalizar"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp scene/gui/line_edit.cpp
@@ -5016,8 +4500,9 @@ msgid "Cut"
msgstr "Recortar"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "Copiar"
@@ -5036,9 +4521,8 @@ msgid "Move Down"
msgstr "Mover para Baixo"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Delete Line"
-msgstr "Excluir Ponto"
+msgstr "Excluir Linha"
#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
@@ -5066,11 +4550,11 @@ msgstr "Apagar Espaços em Branco"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent To Spaces"
-msgstr ""
+msgstr "Converter Indentação Para Espaços"
#: editor/plugins/script_text_editor.cpp
msgid "Convert Indent To Tabs"
-msgstr ""
+msgstr "Converter Indentação Para Tabs"
#: editor/plugins/script_text_editor.cpp
msgid "Auto Indent"
@@ -5094,14 +4578,12 @@ msgid "Goto Previous Breakpoint"
msgstr "Ir ao Ponto de Interrupção Anterior"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert To Uppercase"
-msgstr "Converter Para..."
+msgstr "Converter para Maíusculo"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Convert To Lowercase"
-msgstr "Converter Para..."
+msgstr "Converter Para Minúsculo"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
@@ -5128,7 +4610,7 @@ msgstr "Ajuda Contextual"
#: editor/plugins/shader_editor_plugin.cpp
msgid "Shader"
-msgstr ""
+msgstr "Shader"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Scalar Constant"
@@ -5283,10 +4765,6 @@ msgid "View Plane Transform."
msgstr "Visualizar Transformação do Plano."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr "Escalonando para %s%%."
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr "Rotacionando %s degraus."
@@ -5303,10 +4781,6 @@ msgid "Top View."
msgstr "Visão Superior."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr "Cima"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr "Visão Traseira."
@@ -5348,31 +4822,27 @@ msgstr "Chave de Animação Inserida."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
-msgstr ""
+msgstr "Objetos Desenhados"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Material Changes"
-msgstr "Atualizar nas Mudanças"
+msgstr "Mudanças de Material"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Shader Changes"
-msgstr "Atualizar nas Mudanças"
+msgstr "Mudanças de Shader"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Surface Changes"
-msgstr "Atualizar nas Mudanças"
+msgstr "Mudanças de Superfície"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Draw Calls"
-msgstr ""
+msgstr "Chamadas de Desenho"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Vertices"
-msgstr "Vértice"
+msgstr "Vértices"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Align with view"
@@ -5391,85 +4861,78 @@ msgid "Display Overdraw"
msgstr "Exibição Overdraw"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Display Unshaded"
-msgstr "Exibição Shadeless"
+msgstr "Exibir Sem Sombreamento"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Environment"
-msgstr "Ambiente"
+msgstr "Visualizar Ambiente"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Gizmos"
-msgstr "Gizmos"
+msgstr "Visualizar Gizmos"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Information"
-msgstr ""
+msgstr "VIsualizar Informação"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Audio Listener"
msgstr "Ouvinte de Ãudio"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Doppler Enable"
-msgstr "Habilitar"
+msgstr "Habilitar Doppler"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
-msgstr ""
+msgstr "Visão Livre Esquerda"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Right"
-msgstr ""
+msgstr "Visão Livre Direita"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Freelook Forward"
-msgstr "Avançar"
+msgstr "Visão Livre Frente"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Freelook Backwards"
-msgstr "Para trás"
+msgstr "Visão Livre Trás"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Up"
-msgstr ""
+msgstr "Visão Livre Cima"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Freelook Down"
-msgstr "Roda para Baixo."
+msgstr "Visão Livre Baixo"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Speed Modifier"
-msgstr ""
+msgstr "Modificador de velocidade da Visão Livre"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "preview"
-msgstr "Visualização"
+msgstr "previsualizar"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "Diálogo XForm"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Select Mode (Q)\n"
-msgstr "Modo de Seleção"
+msgstr "Modo de Seleção (Q)\n"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid ""
"Drag: Rotate\n"
"Alt+Drag: Move\n"
"Alt+RMB: Depth list selection"
-msgstr "Alt+RMB: Lista de seleção de profundidade"
+msgstr ""
+"Arrastar: Rotacionar\n"
+"Alt+Arrastar: Mover\n"
+"Alt+RMB: Lista de Profundidade"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
@@ -5516,9 +4979,8 @@ msgid "Insert Animation Key"
msgstr "Inserir Chanve de Animação"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Focus Origin"
-msgstr "Ver Origem"
+msgstr "Origem do Foco"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Focus Selection"
@@ -5529,30 +4991,30 @@ msgid "Align Selection With View"
msgstr "Alinhar Seleção com Visualização"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Select"
-msgstr "Selecionar"
+msgstr "Ferramenta Selecionar"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Move"
-msgstr "Mover"
+msgstr "Ferramenta Mover"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Rotate"
-msgstr "Ctrl: Rotaciona"
+msgstr "Ferramenta Rotacionar"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Scale"
-msgstr "Escala:"
+msgstr "Ferramenta Escalar"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform"
msgstr "Transformação"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr "Configurar Snap..."
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr "Coordenadas Locais"
@@ -5698,6 +5160,10 @@ msgid "Speed (FPS):"
msgstr "Velocidade (FPS):"
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr "Repetir"
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr "Quadros da Animação"
@@ -5710,21 +5176,20 @@ msgid "Insert Empty (After)"
msgstr "Inserir Vazio (Depois)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr "Acima"
+msgid "Move (Before)"
+msgstr "Mover (Antes)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
-msgstr "Abaixo"
+msgid "Move (After)"
+msgstr "Mover (Depois)"
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "Pré-Visualização do StyleBox:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#, fuzzy
msgid "Set Region Rect"
-msgstr "Definir region_rect"
+msgstr "Definir Retângulo de Região"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
@@ -5784,19 +5249,20 @@ msgid "Remove Item"
msgstr "Remover Item"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All Items"
-msgstr "Remover Itens de Classe"
+msgstr "Remover Todos os Itens"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All"
-msgstr "Remover"
+msgstr "Remover Tudo"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
-msgid "Theme"
-msgstr "Salvar Tema"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Class Items"
@@ -5820,7 +5286,7 @@ msgstr "Rádio Checkbox 1"
#: editor/plugins/theme_editor_plugin.cpp
msgid "CheckBox Radio2"
-msgstr "Rádio CheckBox 2"
+msgstr "Caixa de Seleção 2"
#: editor/plugins/theme_editor_plugin.cpp
msgid "Item"
@@ -5880,11 +5346,14 @@ msgid "Style"
msgstr "Estilo"
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr "Fonte"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr "Cor"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase Selection"
msgstr "Apagar Seleção"
@@ -5893,18 +5362,16 @@ msgid "Paint TileMap"
msgstr "Pintar TileMap"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Line Draw"
-msgstr "Linear"
+msgstr "Desenhar Linha"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rectangle Paint"
-msgstr ""
+msgstr "Pintura Retângular"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Bucket Fill"
-msgstr "Balde"
+msgstr "Preenchimento de Balde"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -5931,8 +5398,8 @@ msgid "Mirror Y"
msgstr "Espelhar Y"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
-msgstr "Balde"
+msgid "Paint Tile"
+msgstr "Pintar Tile"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Pick Tile"
@@ -5983,24 +5450,26 @@ msgid "Error"
msgstr "Erro"
#: editor/project_export.cpp
-#, fuzzy
msgid "Runnable"
-msgstr "Habilitar"
+msgstr "Executável"
#: editor/project_export.cpp
-#, fuzzy
msgid "Delete patch '"
-msgstr "Deletar Entrada"
+msgstr "Deletar alteração '"
#: editor/project_export.cpp
-#, fuzzy
msgid "Delete preset '%s'?"
-msgstr "Excluir os arquivos selecionados?"
+msgstr "Excluir definição '%s'?"
+
+#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+"Modelos de exportação para esta plataforma não foram encontrados/estão "
+"corrompidos: "
#: editor/project_export.cpp
-#, fuzzy
msgid "Presets"
-msgstr "Predefinição..."
+msgstr "Predefiniçoes"
#: editor/project_export.cpp editor/project_settings_editor.cpp
msgid "Add.."
@@ -6011,68 +5480,58 @@ msgid "Resources"
msgstr "Recursos"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export all resources in the project"
-msgstr "Exportar todos os recursos no projeto."
+msgstr "Exportar todos os recursos do projeto"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export selected scenes (and dependencies)"
-msgstr "Exportar recursos selecionados (incluindo dependências)."
+msgstr "Exportar cenas selecionadas (incluindo dependências)"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export selected resources (and dependencies)"
-msgstr "Exportar recursos selecionados (incluindo dependências)."
+msgstr "Exportar recursos selecionados (incluindo dependências)"
#: editor/project_export.cpp
msgid "Export Mode:"
msgstr "Modo de Exportação:"
#: editor/project_export.cpp
-#, fuzzy
msgid "Resources to export:"
-msgstr "Recursos a Exportar:"
+msgstr "Recursos para Exportar:"
#: editor/project_export.cpp
-#, fuzzy
msgid ""
"Filters to export non-resource files (comma separated, e.g: *.json, *.txt)"
msgstr ""
"Filtros para exportar arquivos que não sejam recursos (separados por "
-"vírgula, e.g.: *.json, *.txt):"
+"vírgula, e.g.: *.json, *.txt)"
#: editor/project_export.cpp
-#, fuzzy
msgid ""
"Filters to exclude files from project (comma separated, e.g: *.json, *.txt)"
msgstr ""
"Filtros para excluir da exportação (separados por vírgula, e.g.: *.json, *."
-"txt):"
+"txt)"
#: editor/project_export.cpp
-#, fuzzy
msgid "Patches"
-msgstr "Combinações:"
+msgstr "Alterações"
#: editor/project_export.cpp
-#, fuzzy
msgid "Make Patch"
-msgstr "Caminho Destino:"
+msgstr "Criar Alteração"
#: editor/project_export.cpp
-#, fuzzy
msgid "Features"
-msgstr "Textura"
+msgstr "Funcionalidades"
#: editor/project_export.cpp
msgid "Custom (comma-separated):"
-msgstr ""
+msgstr "Personalizado (separado por vírgula):"
#: editor/project_export.cpp
-#, fuzzy
msgid "Feature List:"
-msgstr "Lista de Métodos:"
+msgstr "Lista de Funcionalidades:"
#: editor/project_export.cpp
msgid "Export PCK/Zip"
@@ -6080,77 +5539,112 @@ msgstr "Exportar PCK/Zip"
#: editor/project_export.cpp
msgid "Export templates for this platform are missing:"
+msgstr "Modelos de exportação para esta plataforma não foram encontrados:"
+
+#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
msgstr ""
+"Modelos de exportação para esta plataforma não foram encontrados/estão "
+"corrompidos:"
#: editor/project_export.cpp
-#, fuzzy
msgid "Export With Debug"
-msgstr "Exportar Tile Set"
+msgstr "Exportar Com Depuração"
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
-msgstr "Caminho de projeto inválido, o caminho deve existir!"
+msgid "The path does not exist."
+msgstr "O caminho não existe."
#: editor/project_manager.cpp
-#, fuzzy
-msgid "Invalid project path, project.godot must not exist."
-msgstr "Caminho de projeto inválido, engine.cfg não deve existir."
+msgid "Please choose a 'project.godot' file."
+msgstr "Por favor, escolha um arquivo 'project.godot'."
#: editor/project_manager.cpp
-#, fuzzy
-msgid "Invalid project path, project.godot must exist."
-msgstr "Caminho de projeto inválido, engine.cfg deve existir."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
+msgstr ""
+"Seu projeto será criado em uma pasta não vazia (você pode querer criar uma "
+"nova pasta)."
+
+#: editor/project_manager.cpp
+msgid "Please choose a folder that does not contain a 'project.godot' file."
+msgstr ""
+"Por favor, escolha uma pasta que não contenha um arquivo 'project.godot'."
#: editor/project_manager.cpp
msgid "Imported Project"
msgstr "Projeto Importado"
#: editor/project_manager.cpp
+msgid " "
+msgstr " "
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr "Seria uma boa ideia nomear o seu projeto."
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr "Caminho de projeto inválido (mudou alguma coisa?)."
#: editor/project_manager.cpp
-#, fuzzy
+msgid "Couldn't get project.godot in project path."
+msgstr "Não foi possível encontrar project.godot no caminho do projeto."
+
+#: editor/project_manager.cpp
+msgid "Couldn't edit project.godot in project path."
+msgstr "Não foi possível editar project.godot no caminho do projeto."
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
-msgstr "Não se pôde criar engine.cfg no caminho do projeto."
+msgstr "Não foi possível criar project.godot no caminho do projeto."
#: editor/project_manager.cpp
msgid "The following files failed extraction from package:"
msgstr "Os arquivos a seguir falharam ao serem extraídos do pacote:"
#: editor/project_manager.cpp
+msgid "Rename Project"
+msgstr "Renomear Projeto"
+
+#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in the project path."
+msgstr "Não foi possível encontrar project.godot no caminho do projeto."
+
+#: editor/project_manager.cpp
+msgid "New Game Project"
+msgstr "Novo Projeto de Jogo"
+
+#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "Importar Projeto Existente"
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
-msgstr "Caminho do Projeto (Deve Existir):"
+msgid "Create New Project"
+msgstr "Criar Novo Projeto"
+
+#: editor/project_manager.cpp
+msgid "Install Project:"
+msgstr "Instalar Projeto:"
#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Nome do Projeto:"
#: editor/project_manager.cpp
-msgid "Create New Project"
-msgstr "Criar Novo Projeto"
+msgid "Create folder"
+msgstr "Criar Pasta"
#: editor/project_manager.cpp
msgid "Project Path:"
msgstr "Caminho do Projeto:"
#: editor/project_manager.cpp
-msgid "Install Project:"
-msgstr "Instalar Projeto:"
-
-#: editor/project_manager.cpp
msgid "Browse"
msgstr "Navegar"
#: editor/project_manager.cpp
-msgid "New Game Project"
-msgstr "Novo Projeto de Jogo"
-
-#: editor/project_manager.cpp
msgid "That's a BINGO!"
msgstr "É um BINGO!"
@@ -6159,31 +5653,34 @@ msgid "Unnamed Project"
msgstr "Projeto Sem Nome"
#: editor/project_manager.cpp
-#, fuzzy
+msgid "Can't open project"
+msgstr "Não é possível abrir o projeto"
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr "Tem certeza de que quer abrir mais de um projeto?"
#: editor/project_manager.cpp
-#, fuzzy
msgid ""
"Can't run project: no main scene defined.\n"
"Please edit the project and set the main scene in \"Project Settings\" under "
"the \"Application\" category."
msgstr ""
-"A cena principal não foi definida, selecionar uma?\n"
-"Você pode alterá-la mais tarde nas \"Configurações do Projeto\" na categoria "
-"\"application\"."
+"Não foi possível executar o projeto: cena principal não definida.\n"
+"Por favor, defina a cena principal nas Configurações do Projeto no menu "
+"Projeto."
#: editor/project_manager.cpp
msgid ""
"Can't run project: Assets need to be imported.\n"
"Please edit the project to trigger the initial import."
msgstr ""
+"Não foi possível executar o projeto: Os recursos precisam ser importados.\n"
+"Por favor, edite o projeto para iniciar a importação inicial."
#: editor/project_manager.cpp
-#, fuzzy
msgid "Are you sure to run more than one project?"
-msgstr "Tem certeza de que quer rodar mais de um projeto?"
+msgstr "Tem certeza de que quer executar mais de um projeto?"
#: editor/project_manager.cpp
msgid "Remove project from the list? (Folder contents will not be modified)"
@@ -6191,35 +5688,37 @@ msgstr "Remover projeto da lista? (O conteúdo da pasta não será modificado)"
#: editor/project_manager.cpp
msgid ""
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
"You are about the scan %s folders for existing Godot projects. Do you "
"confirm?"
msgstr ""
+"Você está para analisar %s pastas por projetos existentes da Godot. Você "
+"confirma?"
#: editor/project_manager.cpp
msgid "Project List"
msgstr "Lista de Projetos"
#: editor/project_manager.cpp
-msgid "Run"
-msgstr "Rodar"
-
-#: editor/project_manager.cpp
msgid "Scan"
msgstr "Escanear"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Select a Folder to Scan"
-msgstr "Selecione uma Pasta para Scanear"
+msgstr "Selecione uma Pasta para Analisar"
#: editor/project_manager.cpp
msgid "New Project"
msgstr "Novo Projeto"
#: editor/project_manager.cpp
-#, fuzzy
msgid "Templates"
-msgstr "Remover Item"
+msgstr "Modelos"
#: editor/project_manager.cpp
msgid "Exit"
@@ -6227,8 +5726,12 @@ msgstr "Sair"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Restart Now"
+msgstr "Reinício (s):"
+
+#: editor/project_manager.cpp
msgid "Can't run project"
-msgstr "Não é possível conectar..."
+msgstr "Não é possível executar o projeto"
#: editor/project_settings_editor.cpp
msgid "Key "
@@ -6263,17 +5766,14 @@ msgid "Add Input Action Event"
msgstr "Adicionar Evento Ação de Entrada"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
@@ -6331,18 +5831,16 @@ msgid "Change"
msgstr "Alterar"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Joypad Axis Index:"
-msgstr "Eixo do Joystick:"
+msgstr "Ãndice de Eixo do Joypad:"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "Eixo"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Joypad Button Index:"
-msgstr "Botão do Joystick:"
+msgstr "Ãndice de Botão do Joypad:"
#: editor/project_settings_editor.cpp
msgid "Add Input Action"
@@ -6353,61 +5851,64 @@ msgid "Erase Input Action Event"
msgstr "Apagar Evento Ação de Entrada"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Add Event"
-msgstr "Adicionar Vazio"
+msgstr "Adicionar VEvento"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "Dispositivo"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "Botão"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "Botão Esquerdo."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "Botão Direito."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "Botão do Meio."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr "Roda para Cima."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr "Roda para Baixo."
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Add Global Property"
-msgstr "Adicionar Getter de Propriedade"
+msgstr "Adicionar Propriedad Global"
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
-msgstr ""
+msgid "Select a setting item first!"
+msgstr "Selecione um item de configuração primeiro!"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "No property '"
-msgstr "Propriedade:"
+msgstr "Não existe a propriedade '"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Setting '"
-msgstr "Configurações"
+msgstr "Configuração '"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Delete Item"
-msgstr "Deletar Entrada"
+msgstr "Excluir Item"
+
+#: editor/project_settings_editor.cpp
+msgid "Can't contain '/' or ':'"
+msgstr "Não pode conter '/' ou ':'"
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr "Já existe"
#: editor/project_settings_editor.cpp
msgid "Error saving settings."
@@ -6419,7 +5920,7 @@ msgstr "Configurações Salvas."
#: editor/project_settings_editor.cpp
msgid "Override for Feature"
-msgstr ""
+msgstr "Sobrescrever para Funcionalidade"
#: editor/project_settings_editor.cpp
msgid "Add Translation"
@@ -6451,8 +5952,16 @@ msgstr "Remover Opção de Remapeamento de Recurso"
#: editor/project_settings_editor.cpp
#, fuzzy
+msgid "Changed Locale Filter"
+msgstr "Mudar Tempo de Mistura"
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
-msgstr "Configurações do Projeto (engine.cfg)"
+msgstr "Configurações do Projeto (project.godot)"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
msgid "General"
@@ -6464,7 +5973,7 @@ msgstr "Propriedade:"
#: editor/project_settings_editor.cpp
msgid "Override For.."
-msgstr ""
+msgstr "Sobrescrever Para..."
#: editor/project_settings_editor.cpp
msgid "Input Map"
@@ -6511,13 +6020,36 @@ msgid "Locale"
msgstr "Localidade"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales Filter"
+msgstr "Filtrar Imagens:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Show all locales"
+msgstr "Mostrar Ossos"
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "Filtrar nós"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales:"
+msgstr "Localidade"
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "AutoLoad"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Pick a Viewport"
-msgstr "1 Viewport"
+msgstr "Escolha uma Viewport"
#: editor/property_editor.cpp
msgid "Ease In"
@@ -6552,33 +6084,36 @@ msgid "Assign"
msgstr "Atribuir"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Select Node"
-msgstr "Selecione um Nó"
+msgstr "Selecionar Nó"
#: editor/property_editor.cpp
-#, fuzzy
msgid "New Script"
-msgstr "Próximo Script"
+msgstr "Novo Script"
+
+#: editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Tornar Único"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Show in File System"
-msgstr "Arquivos"
+msgstr "Mostrar em Arquivos"
+
+#: editor/property_editor.cpp
+msgid "Convert To %s"
+msgstr "Converter Para %s"
#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr "Erro ao carregar arquivo: Não é um recurso!"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Selected node is not a Viewport!"
-msgstr "Selecionar Nó(s) para Importar"
+msgstr "Nó selecionado não é uma Viewport!"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Pick a Node"
-msgstr "Selecione um Nó"
+msgstr "Escolha um Nó"
#: editor/property_editor.cpp
msgid "Bit %d, val %d."
@@ -6601,14 +6136,16 @@ msgid "Sections:"
msgstr "Seções:"
#: editor/property_selector.cpp
-#, fuzzy
msgid "Select Property"
-msgstr "Selecionar Pontos"
+msgstr "Selecionar Propriedade"
+
+#: editor/property_selector.cpp
+msgid "Select Virtual Method"
+msgstr "Selecionar Método Virtual"
#: editor/property_selector.cpp
-#, fuzzy
msgid "Select Method"
-msgstr "Modo de Seleção (Q)"
+msgstr "Selecionar Mtéodo"
#: editor/pvrtc_compress.cpp
msgid "Could not execute PVRTC tool:"
@@ -6624,7 +6161,7 @@ msgstr "Reparentar Nó"
#: editor/reparent_dialog.cpp
msgid "Reparent Location (Select new Parent):"
-msgstr "Local para Reparentar (Selecione Novo Pai):"
+msgstr "Local para Reparentar (Selecione novo Pai):"
#: editor/reparent_dialog.cpp
msgid "Keep Global Transform"
@@ -6634,26 +6171,6 @@ msgstr "Manter Transformação Global"
msgid "Reparent"
msgstr "Reparentar"
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr "Criar Novo Recurso"
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr "Abrir Recurso"
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr "Salvar Recurso"
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr "Ferramentas de Recurso"
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr "Tornar Local"
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr "Modo de Início:"
@@ -6680,9 +6197,8 @@ msgid "OK"
msgstr "OK"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "No parent to instance the scenes at."
-msgstr "Sem nó pai onde instanciar um filho."
+msgstr "Sem nó pai onde instanciar as cenas."
#: editor/scene_tree_dock.cpp
msgid "Error loading scene from %s"
@@ -6726,7 +6242,7 @@ msgstr "Excluir Nó(s)?"
#: editor/scene_tree_dock.cpp
msgid "Can not perform with the root node."
-msgstr ""
+msgstr "Não é possível trabalhar com o nó raiz."
#: editor/scene_tree_dock.cpp
msgid "This operation can't be done on instanced scenes."
@@ -6781,17 +6297,8 @@ msgid "Error duplicating scene to save it."
msgstr "Erro duplicando cena ao salvar."
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Sub-Resources:"
-msgstr "Recursos:"
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr "Editar Grupos"
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr "Editar Conexões"
+msgstr "Sub-Recursos:"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -6818,14 +6325,12 @@ msgid "Change Type"
msgstr "Alterar Tipo"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Attach Script"
msgstr "Adicionar Script"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Clear Script"
-msgstr "Criar Script"
+msgstr "Remover Script"
#: editor/scene_tree_dock.cpp
msgid "Merge From Scene"
@@ -6836,9 +6341,8 @@ msgid "Save Branch as Scene"
msgstr "Salvar Ramo como Cena"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Copy Node Path"
-msgstr "Copiar Caminho"
+msgstr "Copiar Caminho do Nó"
#: editor/scene_tree_dock.cpp
msgid "Delete (No Confirm)"
@@ -6857,19 +6361,16 @@ msgstr ""
"existe um nó raiz."
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Filter nodes"
-msgstr "Filtros"
+msgstr "Filtrar nós"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Attach a new or existing script for the selected node."
-msgstr "Criar um script novo para o nó selecionado."
+msgstr "Adicionar um script novo ou existente para o nó selecionado."
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Clear a script for the selected node."
-msgstr "Criar um script novo para o nó selecionado."
+msgstr "Remove um script do nó selecionado."
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance? (No Undo!)"
@@ -6889,51 +6390,59 @@ msgstr "Alternar CanvasItem Visível"
#: editor/scene_tree_editor.cpp
msgid "Node configuration warning:"
-msgstr ""
+msgstr "Aviso de configuração de nó:"
#: editor/scene_tree_editor.cpp
msgid ""
"Node has connection(s) and group(s)\n"
"Click to show signals dock."
msgstr ""
+"O nó tem conexões e grupos\n"
+"Clique para mostrar o painel de sinais."
#: editor/scene_tree_editor.cpp
msgid ""
"Node has connections.\n"
"Click to show signals dock."
msgstr ""
+"O nó tem conexões.\n"
+"Clique para mostrar o painel de sinais."
#: editor/scene_tree_editor.cpp
msgid ""
"Node is in group(s).\n"
"Click to show groups dock."
msgstr ""
+"O nó tem grupos.\n"
+"Clique para mostrar o painel de grupos."
#: editor/scene_tree_editor.cpp
msgid "Instance:"
msgstr "Instância:"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Open script"
-msgstr "Próximo Script"
+msgstr "Abrir script"
#: editor/scene_tree_editor.cpp
msgid ""
"Node is locked.\n"
"Click to unlock"
msgstr ""
+"O nó está travado.\n"
+"Clique para destravar"
#: editor/scene_tree_editor.cpp
msgid ""
"Children are not selectable.\n"
"Click to make selectable"
msgstr ""
+"Os filhos não são selecionáveis.\n"
+"Clique para fazê-los selecionáveis"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Toggle Visibility"
-msgstr "Alternar Spatial Visível"
+msgstr "Alternar Visiblidade"
#: editor/scene_tree_editor.cpp
msgid "Invalid node name, the following characters are not allowed:"
@@ -6949,26 +6458,23 @@ msgstr "Ãrvore de Cena (Nós):"
#: editor/scene_tree_editor.cpp
msgid "Node Configuration Warning!"
-msgstr ""
+msgstr "Aviso de Configuração de Nó!"
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
msgstr "Selecione um Nó"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Error loading template '%s'"
-msgstr "Erro ao carregar imagem:"
+msgstr "Erro ao carregar modelo '%s'"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Error - Could not create script in filesystem."
-msgstr "Não foi possível criar o script no sistema de arquivos."
+msgstr "Erro - Não foi possível criar o script no sistema de arquivos."
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Error loading script from %s"
-msgstr "Erro ao carregar cena de %s"
+msgstr "Erro ao carregar script de %s"
#: editor/script_create_dialog.cpp
msgid "N/A"
@@ -6987,74 +6493,76 @@ msgid "Invalid base path"
msgstr "Caminho base inválido"
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr "Um diretório de mesmo nome existe"
+
+#: editor/script_create_dialog.cpp
+msgid "File exists, will be reused"
+msgstr "O arquivo existe, será reaproveitado"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr "Extensão inválida"
#: editor/script_create_dialog.cpp
msgid "Wrong extension chosen"
-msgstr ""
+msgstr "Extensão errada escolhida"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Invalid Path"
-msgstr "Caminho inválido."
+msgstr "Caminho Inválido"
#: editor/script_create_dialog.cpp
msgid "Invalid class name"
msgstr "Nome de classe inválido"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Invalid inherited parent name or path"
-msgstr "Nome da propriedade de índice inválido."
+msgstr "Nome ou caminho de pai herdado invláido"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Script valid"
-msgstr "Script"
+msgstr "Script válido"
#: editor/script_create_dialog.cpp
msgid "Allowed: a-z, A-Z, 0-9 and _"
-msgstr ""
+msgstr "Permitidos: a-z, A-Z, 0-9 e _"
#: editor/script_create_dialog.cpp
msgid "Built-in script (into scene file)"
-msgstr ""
+msgstr "Script embutido (no arquivo da cena)"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Create new script file"
-msgstr "Criar Script"
+msgstr "Criar novo arquivo de script"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Load existing script file"
-msgstr "Próximo Script"
+msgstr "Carregar arquivo de script existente"
+
+#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr "Idioma"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Inherits"
-msgstr "Herda de:"
+msgstr "Herda de"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Class Name"
-msgstr "Nome da Classe:"
+msgstr "Nome da Classe"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Template"
-msgstr "Remover Item"
+msgstr "Modelo"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Built-in Script"
msgstr "Script Embutido"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Attach Node Script"
-msgstr "Criar Script para Nó"
+msgstr "Adicionar Script ao Nó"
#: editor/script_editor_debugger.cpp
msgid "Bytes:"
@@ -7077,6 +6585,10 @@ msgid "Function:"
msgstr "Função:"
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr "Escolhe um ou mais itens da lista para mostrar o gráfico."
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr "Erros"
@@ -7138,7 +6650,7 @@ msgstr "Monitores"
#: editor/script_editor_debugger.cpp
msgid "List of Video Memory Usage by Resource:"
-msgstr "Listagem de Uso Memória de Vídeo por Recurso:"
+msgstr "Lista de Uso Memória de Vídeo por Recurso:"
#: editor/script_editor_debugger.cpp
msgid "Total:"
@@ -7157,6 +6669,10 @@ msgid "Type"
msgstr "Tipo"
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr "Formato"
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr "Uso"
@@ -7190,7 +6706,7 @@ msgstr "Mudar Raio da Luz"
#: editor/spatial_editor_gizmos.cpp
msgid "Change AudioStreamPlayer3D Emission Angle"
-msgstr ""
+msgstr "Mudar o Ângulo de Emissão do AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
@@ -7226,19 +6742,34 @@ msgstr "Alterar a Extensão do Notificador"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Particles AABB"
-msgstr ""
+msgstr "Mudar o AABB das Partículas"
#: editor/spatial_editor_gizmos.cpp
-#, fuzzy
msgid "Change Probe Extents"
-msgstr "Alterar a Extensão do Notificador"
+msgstr "Alterar a Extensão da Sonda"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Library"
+msgstr "Biblioteca"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Status"
+msgstr "Estado"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr "Bibliotecas: "
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr "GDNative"
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr "Argumento de tipo inválido para convert(), use constantes TYPE_*."
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Não há bytes suficientes para decodificar, ou o formato é inválido."
@@ -7279,152 +6810,135 @@ msgstr "Dicionário de instância inválido (subclasses inválidas)"
#: modules/gdscript/gd_functions.cpp
msgid "Object can't provide a length."
-msgstr ""
+msgstr "Objeto não pôde fornecer um comprimento."
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Delete Selection"
-msgstr "Excluir Selecionados"
+msgstr "Excluir Seleção do Gridap"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Duplicate Selection"
-msgstr "Duplicar Seleção"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
+msgstr "Duplicar Seleção do GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Snap View"
-msgstr "Visão Superior"
+msgstr "Ancorar Vista"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Prev Level (%sDown Wheel)"
-msgstr ""
+msgstr "Nível anterior ("
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Level (%sUp Wheel)"
-msgstr ""
+msgstr "Nível seguinte ("
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Clip Disabled"
-msgstr "Desabilitado"
+msgstr "Corte Desabilitado"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clip Above"
-msgstr ""
+msgstr "Cortar Acima"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clip Below"
-msgstr ""
+msgstr "Cortar Abaixo"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit X Axis"
-msgstr ""
+msgstr "Editar Eixo X"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Y Axis"
-msgstr ""
+msgstr "Eduitar Eixo Y"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Z Axis"
-msgstr ""
+msgstr "Editar Eixo Z"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate X"
-msgstr "Ctrl: Rotaciona"
+msgstr "Rotacionar Cursor em X"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate Y"
-msgstr "Ctrl: Rotaciona"
+msgstr "Rotacionar Cursor em Y"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate Z"
-msgstr "Ctrl: Rotaciona"
+msgstr "Rotacionar Cursor em Z"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate X"
-msgstr ""
+msgstr "Contra-rotacionar Cursor em X"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate Y"
-msgstr ""
+msgstr "Rotacionar Cursor em Y"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate Z"
-msgstr ""
+msgstr "Contra-rotacionar Cursor em Z"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Clear Rotation"
-msgstr ""
+msgstr "Limpar Rotação do Cursor"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Create Area"
-msgstr "Criar Novo"
+msgstr "Criar Ãrea"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Create Exterior Connector"
-msgstr "Criar Novo Projeto"
+msgstr "Criar Conector de Exterior"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase Area"
-msgstr "Apagar TileMap"
+msgstr "Apagar Ãrea"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Selection -> Duplicate"
-msgstr "Apenas na Seleção"
+msgstr "Seleção -> Duplicar"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Selection -> Clear"
-msgstr "Apenas na Seleção"
+msgstr "Seleção -> Limpar"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Settings"
-msgstr "Configurações do Snap"
+msgstr "Configurações do GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Pick Distance:"
-msgstr "Instância:"
+msgstr "Escolha uma Distância:"
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr " Arquivos"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
-msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
+msgstr "Compilações"
#: modules/visual_script/visual_script.cpp
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
"properly!"
msgstr ""
+"Um nó fez um yield sem memória de trabalho, por favor leia a documentação "
+"sobre como usar yield corretamente!"
#: modules/visual_script/visual_script.cpp
msgid ""
"Node yielded, but did not return a function state in the first working "
"memory."
msgstr ""
+"Nó entrou em yield, mas não retornou um estado de função na primeira memória "
+"de trabalho."
#: modules/visual_script/visual_script.cpp
msgid ""
"Return value must be assigned to first element of node working memory! Fix "
"your node please."
msgstr ""
+"Um valor de retorno deve ser atribuído ao primeiro elemento da memória "
+"corrente do nó! Conserte seu node, por favor."
#: modules/visual_script/visual_script.cpp
msgid "Node returned an invalid sequence output: "
@@ -7432,36 +6946,31 @@ msgstr "O nó retornou uma saída de sequência inválida: "
#: modules/visual_script/visual_script.cpp
msgid "Found sequence bit but not the node in the stack, report bug!"
-msgstr ""
+msgstr "Sequência encontrada mas o nó não está na pilha, reporte um bug!"
#: modules/visual_script/visual_script.cpp
msgid "Stack overflow with stack depth: "
-msgstr ""
+msgstr "Sobrecarga da pilha com profundidade: "
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Signal Arguments"
-msgstr "Editar Argumentos do Sinal:"
+msgstr "Editar Argumentos do Sinal"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Argument Type"
-msgstr "Alterar Tipo de Valor do Vetor"
+msgstr "Alterar Tipo do Argumento"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Argument name"
-msgstr "Alterar Nome de Entrada"
+msgstr "Alterar Nome do Argumento"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Set Variable Default Value"
-msgstr "Alterar Valor Padrão"
+msgstr "Definir o Valor Padrão da Variável"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Set Variable Type"
-msgstr "Editar Variável:"
+msgstr "Definir o Tipo da Variável"
#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
@@ -7504,7 +7013,6 @@ msgid "Add Signal"
msgstr "Adicionar Sinal"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Expression"
msgstr "Alterar Expressão"
@@ -7513,14 +7021,12 @@ msgid "Add Node"
msgstr "Adicionar Nó"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Remove VisualScript Nodes"
-msgstr "Remover Chaves Invalidas"
+msgstr "Remover Nós VisualScript"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Duplicate VisualScript Nodes"
-msgstr "Duplicar Nó(s) de Grafo(s)"
+msgstr "Duplicar Nós VisualScript"
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
@@ -7567,24 +7073,20 @@ msgid "Add Setter Property"
msgstr "Adicionar Setter de Propriedade"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Base Type"
-msgstr "Alterar Tipo"
+msgstr "Mudar Tipo Base"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Move Node(s)"
-msgstr "Remover Nó(s)"
+msgstr "Mover Nó(s)"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Remove VisualScript Node"
-msgstr "Remover Nó de Shader Graph"
+msgstr "Remover Nó VisualScript"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Connect Nodes"
-msgstr "Conectar ao Nó:"
+msgstr "Conectar Nós"
#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
@@ -7595,9 +7097,8 @@ msgid "Sequence"
msgstr "Sequência"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Switch"
-msgstr "Mudar"
+msgstr "Trocar"
#: modules/visual_script/visual_script_editor.cpp
msgid "Iterator"
@@ -7612,47 +7113,48 @@ msgid "Return"
msgstr "Retornar"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
+msgid "Call"
+msgstr "Chamar"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr "Obter"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
+msgid "Script already has function '%s'"
+msgstr "Script já tem uma função '%s'"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
-msgstr "Alterar Nome de Entrada"
+msgstr "Alterar Valor de Entrada"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Can't copy the function node."
-msgstr "Não é possível operar em \"..\""
+msgstr "Não é possível copiar o nó de função."
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Clipboard is empty!"
-msgstr "Recurso da área de transferência está vazio!"
+msgstr "Ãrea de transferência vazia!"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Paste VisualScript Nodes"
-msgstr "Colar Nós"
+msgstr "Colar Nós VisualScript"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Function"
msgstr "Remover Função"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Edit Variable"
-msgstr "Editar Variável:"
+msgstr "Editar Variável"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Variable"
msgstr "Remover Variável"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Edit Signal"
-msgstr "Editando Sinal:"
+msgstr "Editar Sinal"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Signal"
@@ -7724,21 +7226,19 @@ msgstr "Nome da propriedade de índice inválido."
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Base object is not a Node!"
-msgstr ""
+msgstr "Objeto base não é um Node!"
#: modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Path does not lead Node!"
-msgstr "O caminho não é local"
+msgstr "O caminho não leva a um Node!"
#: modules/visual_script/visual_script_func_nodes.cpp
msgid "Invalid index property name '%s' in node %s."
-msgstr ""
+msgstr "Nome de propriedade '%s' inválido no nó %s."
#: modules/visual_script/visual_script_nodes.cpp
-#, fuzzy
msgid ": Invalid argument of type: "
-msgstr "Nome de classe pai inválido"
+msgstr ": Argumento inválido do tipo: "
#: modules/visual_script/visual_script_nodes.cpp
msgid ": Invalid arguments: "
@@ -7746,21 +7246,25 @@ msgstr ": Argumentos inválidos: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "VariableGet not found in script: "
-msgstr ""
+msgstr "VariableGet não encontrada no script: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "VariableSet not found in script: "
-msgstr ""
+msgstr "VariableSet não encontrada no script: "
#: modules/visual_script/visual_script_nodes.cpp
msgid "Custom node has no _step() method, can't process graph."
msgstr ""
+"Nó customizado não tem um método _step(), não foi possível processar o "
+"gráfico."
#: modules/visual_script/visual_script_nodes.cpp
msgid ""
"Invalid return value from _step(), must be integer (seq out), or string "
"(error)."
msgstr ""
+"Valor de retorno da _step() inválido, deve ser um inteiro (seq out), ou "
+"string (erro)."
#: platform/javascript/export/export.cpp
msgid "Run in Browser"
@@ -7771,18 +7275,16 @@ msgid "Run exported HTML in the system's default browser."
msgstr "Rodar HTML exportado no navegador padrão do sistema."
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not write file:\n"
-msgstr "Não se pôde achar tile:"
+msgstr "Não foi possível escrever o arquivo:\n"
#: platform/javascript/export/export.cpp
msgid "Could not read file:\n"
msgstr "Não foi possível ler o arquivo:\n"
#: platform/javascript/export/export.cpp
-#, fuzzy
msgid "Could not open template for export:\n"
-msgstr "Não foi possível criar a pasta."
+msgstr "Não foi possível abrir o modelo para exportar:\n"
#: scene/2d/animated_sprite.cpp
msgid ""
@@ -7880,6 +7382,8 @@ msgid ""
"A material to process the particles is not assigned, so no behavior is "
"imprinted."
msgstr ""
+"Um material para processar partículas não foi atribuído, então nenhum "
+"comportamento será aplicado."
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
@@ -7892,6 +7396,9 @@ msgid ""
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"Mudanças de tamanho no RigidBody2D (nos modos Character ou Rigid) serão "
+"sobrescritas pelo motor de física ao executar.\n"
+"Ao invés disso, mude o tamanho nas formas de colisão filhas."
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
@@ -7925,31 +7432,35 @@ msgstr ""
#: scene/3d/arvr_nodes.cpp
msgid "ARVRCamera must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRCamera deve ter um nó ARVROrigin como seu pai"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRController must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRController deve ter um nó ARVROrigin como seu pai"
#: scene/3d/arvr_nodes.cpp
msgid ""
"The controller id must not be 0 or this controller will not be bound to an "
"actual controller"
msgstr ""
+"A id do controlador não deve ser 0 ou este controlador não será atribúido a "
+"um controlador real"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRAnchor must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRAnchor deve ter um nó ARVROrigin como seu pai"
#: 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 ""
+"A id da âncore não deve ser 0 ou essa âncora não será atribuída a uma âncore "
+"geral"
#: scene/3d/arvr_nodes.cpp
msgid "ARVROrigin requires an ARVRCamera child node"
-msgstr ""
+msgstr "ARVROrigin necessita um nó ARVRCamera como filho"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -8001,6 +7512,7 @@ msgstr ""
msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
msgstr ""
+"Nada está visível porque as malhas não foram atribuídas a passes de desenho."
#: scene/3d/physics_body.cpp
msgid ""
@@ -8008,11 +7520,13 @@ msgid ""
"the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"Mudanças de tamanho no RigidBody (nos modos Character e Rigid) serão "
+"sobrescitas pelo motor de física ao executar.\n"
+"Ao invés disso, mude o tamanho nas formas de colisão filhas."
#: scene/3d/remote_transform.cpp
-#, fuzzy
msgid "Path property must point to a valid Spatial node to work."
-msgstr "A propriedade Caminho deve apontar a um nó Particles2D para funcionar."
+msgstr "A propriedade Caminho deve apontar para um nó Spatial para funcionar."
#: scene/3d/scenario_fx.cpp
msgid ""
@@ -8029,16 +7543,27 @@ msgstr ""
"Um recurso do tipo SpriteFrames deve ser criado ou definido na propriedade "
"\"Frames\" para que o nó AnimatedSprite mostre quadros."
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+"VehiceWheel serve para fornecer um sistema de rodas para um VehicleBody. Por "
+"favor, use ele como um filho de um VehicleBody."
+
#: scene/gui/color_picker.cpp
-#, fuzzy
msgid "Raw Mode"
-msgstr "Modo Panorâmico"
+msgstr "Modo Bruto"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
msgstr "Adicionar cor atual como uma predefinição"
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr "Alerta!"
@@ -8046,10 +7571,6 @@ msgstr "Alerta!"
msgid "Please Confirm..."
msgstr "Confirme Por Favor..."
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -8066,12 +7587,17 @@ msgid ""
"Use a container as child (VBox,HBox,etc), or a Control and set the custom "
"minimum size manually."
msgstr ""
+"Um ScrollContainer foi feito para trabalhar com um componente filho único.\n"
+"Use um container como filho (VBox, HBox, etc) ou um Control e defina o "
+"tamanho mínimo manualmente."
#: scene/main/scene_tree.cpp
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
msgstr ""
+"O Ambiente Padrão como especificado nas Configurações de Projeto "
+"(Renderização - Viewport -> Ambiente Padrão) não pôde ser carregado."
#: scene/main/viewport.cpp
msgid ""
@@ -8085,6 +7611,645 @@ msgstr ""
"para que ele possa ter um tamanho. Caso contrário, defina-o como destino de "
"render e atribua sua textura interna a algum nó para exibir."
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr "Erro ao inicializar FreeType."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "Formato de fonte desconhecido."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "Erro ao carregar fonte."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr "Tamanho de fonte inválido."
+
+#~ msgid "Filter:"
+#~ msgstr "Filtro:"
+
+#~ msgid "' parsing of config failed."
+#~ msgstr "' falha no processamento de configurações."
+
+#~ msgid "Theme"
+#~ msgstr "Tema"
+
+#~ msgid "Method List For '%s':"
+#~ msgstr "Lista de Métodos para \"%s\":"
+
+#~ msgid "Arguments:"
+#~ msgstr "Argumentos:"
+
+#~ msgid "Return:"
+#~ msgstr "Retornar:"
+
+#~ msgid "Added:"
+#~ msgstr "Adicionado:"
+
+#~ msgid "Removed:"
+#~ msgstr "Removido:"
+
+#~ msgid "Error saving atlas:"
+#~ msgstr "Erro ao salvar atlas:"
+
+#~ msgid "Could not save atlas subtexture:"
+#~ msgstr "Não foi possível salvar Subtextura do Atlas:"
+
+#~ msgid "Exporting for %s"
+#~ msgstr "Exportando para %s"
+
+#~ msgid "Setting Up.."
+#~ msgstr "Ajustando..."
+
+#~ msgid "Error loading scene."
+#~ msgstr "Erro ao carregar cena."
+
+#~ msgid "Re-Import"
+#~ msgstr "Reimportar"
+
+#~ msgid "Please wait for scan to complete."
+#~ msgstr "Por favor aguarde a verificação completar."
+
+#~ msgid "Current scene must be saved to re-import."
+#~ msgstr "Cena Atual só deve ser salva para re-importação."
+
+#~ msgid "Save & Re-Import"
+#~ msgstr "Salvar e Re-Importar"
+
+#~ msgid "Re-Importing"
+#~ msgstr "Re-Importando"
+
+#~ msgid "Re-Import Changed Resources"
+#~ msgstr "Re-Importar Recursos Alterados"
+
+#~ msgid "Loading Export Templates"
+#~ msgstr "Carregando Modelos de Exportação"
+
+#~ msgid ""
+#~ "\n"
+#~ "Status: Needs Re-Import"
+#~ msgstr ""
+#~ "\n"
+#~ "Status: Necessita Re-Importação"
+
+#~ msgid "Same source and destination files, doing nothing."
+#~ msgstr "Mesmos arquivos de destino e origem, nada a fazer."
+
+#~ msgid "Target file exists, can't overwrite. Delete first."
+#~ msgstr ""
+#~ "Arquivo alvo existe, não é possível sobrescrever. Delete-o primeiro."
+
+#~ msgid "Same source and destination paths, doing nothing."
+#~ msgstr "Mesmo caminhos de destino e origem, nada a fazer."
+
+#~ msgid "Can't move directories to within themselves."
+#~ msgstr "Não é possível mover diretórios para dentro de si mesmos."
+
+#~ msgid "Can't rename deps for:\n"
+#~ msgstr "Não foi possível renomear dependências para:\n"
+
+#~ msgid "Error moving file:\n"
+#~ msgstr "Erro ao mover arquivo:\n"
+
+#~ msgid "Pick New Name and Location For:"
+#~ msgstr "Escolha Novo Nome e Localização Para:"
+
+#~ msgid "No files selected!"
+#~ msgstr "Nenhum arquivo selecionado!"
+
+#~ msgid "Info"
+#~ msgstr "Informação"
+
+#~ msgid "Re-Import.."
+#~ msgstr "Re-importar..."
+
+#~ msgid "No bit masks to import!"
+#~ msgstr "Sem máscaras de bits para importar!"
+
+#~ msgid "Target path is empty."
+#~ msgstr "Caminho destino está vazio."
+
+#~ msgid "Target path must be a complete resource path."
+#~ msgstr "Caminho destino deve ser um caminho completo a um recurso."
+
+#~ msgid "Target path must exist."
+#~ msgstr "Caminho destino deve existir."
+
+#~ msgid "Save path is empty!"
+#~ msgstr "Caminho de salvamento vazio!"
+
+#~ msgid "Import BitMasks"
+#~ msgstr "Importar Máscara de Bits"
+
+#~ msgid "Source Texture(s):"
+#~ msgstr "Textura(s) de Origem:"
+
+#~ msgid "Target Path:"
+#~ msgstr "Caminho Destino:"
+
+#~ msgid "Accept"
+#~ msgstr "Aceitar"
+
+#~ msgid "Bit Mask"
+#~ msgstr "Máscara de Bits"
+
+#~ msgid "No source font file!"
+#~ msgstr "Falta arquivo de fonte origem!"
+
+#~ msgid "No target font resource!"
+#~ msgstr "Falta recurso de fonte destino!"
+
+#~ msgid ""
+#~ "Invalid file extension.\n"
+#~ "Please use .font."
+#~ msgstr ""
+#~ "Extensão de arquivo inválida.\n"
+#~ "Por favor use .font."
+
+#~ msgid "Couldn't save font."
+#~ msgstr "Não se pôde salvar fonte."
+
+#~ msgid "Source Font:"
+#~ msgstr "Fonte Origem:"
+
+#~ msgid "Source Font Size:"
+#~ msgstr "Tamanho da Fonte de Origem:"
+
+#~ msgid "Dest Resource:"
+#~ msgstr "Recurso Destino:"
+
+#~ msgid "The quick brown fox jumps over the lazy dog."
+#~ msgstr ""
+#~ "À noite, vovô Kowalsky vê o ímã cair no pé do pinguim queixoso e vovó põe "
+#~ "açúcar no chá de tâmaras do jabuti feliz."
+
+#~ msgid "Test:"
+#~ msgstr "Teste:"
+
+#~ msgid "Options:"
+#~ msgstr "Opções:"
+
+#~ msgid "Font Import"
+#~ msgstr "Importar Fonte"
+
+#~ msgid ""
+#~ "This file is already a Godot font file, please supply a BMFont type file "
+#~ "instead."
+#~ msgstr ""
+#~ "Este arquivo já é um arquivo de fonte Godot, por favor forneça um arquivo "
+#~ "BMFont."
+
+#~ msgid "Failed opening as BMFont file."
+#~ msgstr "Falha ao abrir como arquivo BMFont."
+
+#~ msgid "Invalid font custom source."
+#~ msgstr "Origem personalizada da fonte inválida."
+
+#~ msgid "No meshes to import!"
+#~ msgstr "Sem meshes para importar!"
+
+#~ msgid "Single Mesh Import"
+#~ msgstr "Importar Única Mesh"
+
+#~ msgid "Source Mesh(es):"
+#~ msgstr "Origem de Mesh(es):"
+
+#~ msgid "Surface %d"
+#~ msgstr "Superfície %d"
+
+#~ msgid "No samples to import!"
+#~ msgstr "Sem amostras para importar!"
+
+#~ msgid "Import Audio Samples"
+#~ msgstr "Importar Amostras de Ãudio"
+
+#~ msgid "Source Sample(s):"
+#~ msgstr "Amostra(s) de Origem:"
+
+#~ msgid "Audio Sample"
+#~ msgstr "Amostra de Ãudio"
+
+#~ msgid "New Clip"
+#~ msgstr "Novo Clipe"
+
+#~ msgid "Flags"
+#~ msgstr "Flags"
+
+#~ msgid "Bake FPS:"
+#~ msgstr "Precalcular FPS:"
+
+#~ msgid "Optimizer"
+#~ msgstr "Otimizador"
+
+#~ msgid "Max Linear Error"
+#~ msgstr "Erro Linear Máximo"
+
+#~ msgid "Max Angular Error"
+#~ msgstr "Erro Angular Máximo"
+
+#~ msgid "Max Angle"
+#~ msgstr "Ângulo Máximo"
+
+#~ msgid "Clips"
+#~ msgstr "Clipes"
+
+#~ msgid "Start(s)"
+#~ msgstr "Início(s)"
+
+#~ msgid "End(s)"
+#~ msgstr "Fim(ns)"
+
+#~ msgid "Filters"
+#~ msgstr "Filtros"
+
+#~ msgid "Source path is empty."
+#~ msgstr "Caminho de origem está vazio."
+
+#~ msgid "Couldn't load post-import script."
+#~ msgstr "Não se pôde carregar script pós-importação."
+
+#~ msgid "Invalid/broken script for post-import."
+#~ msgstr "Script pós-importação inválido/quebrado."
+
+#~ msgid "Error importing scene."
+#~ msgstr "Erro ao importar cena."
+
+#~ msgid "Import 3D Scene"
+#~ msgstr "Importar Cena 3D"
+
+#~ msgid "Source Scene:"
+#~ msgstr "Cena de Origem:"
+
+#~ msgid "Same as Target Scene"
+#~ msgstr "Mesma da Cena Destino"
+
+#~ msgid "Shared"
+#~ msgstr "Compartilhado"
+
+#~ msgid "Target Texture Folder:"
+#~ msgstr "Pasta Destino para Textura:"
+
+#~ msgid "Post-Process Script:"
+#~ msgstr "Script de Pós-Processamento:"
+
+#~ msgid "Custom Root Node Type:"
+#~ msgstr "Tipo Personalizado de Nó Raiz:"
+
+#~ msgid "Auto"
+#~ msgstr "Auto"
+
+#~ msgid "Root Node Name:"
+#~ msgstr "Nome do Nó Raíz:"
+
+#~ msgid "The Following Files are Missing:"
+#~ msgstr "Os Seguintes Arquivos estão Faltando:"
+
+#~ msgid "Import Anyway"
+#~ msgstr "Importar Mesmo Assim"
+
+#~ msgid "Import & Open"
+#~ msgstr "Importar e Abrir"
+
+#~ msgid "Edited scene has not been saved, open imported scene anyway?"
+#~ msgstr "A cena editada não foi salva, abrir cena importada ainda assim?"
+
+#~ msgid "Import Image:"
+#~ msgstr "Importar Imagem:"
+
+#~ msgid "Couldn't localize path: %s (already local)"
+#~ msgstr "Caminho não pôde ser localizado: %s (já é local)"
+
+#~ msgid "3D Scene Animation"
+#~ msgstr "Animação Cena 3D"
+
+#~ msgid "Uncompressed"
+#~ msgstr "Não comprimido"
+
+#~ msgid "Compress Lossless (PNG)"
+#~ msgstr "Comprimido Sem Perdas (PNG)"
+
+#~ msgid "Compress Lossy (WebP)"
+#~ msgstr "Comprido Com Perdas (WebP)"
+
+#~ msgid "Compress (VRAM)"
+#~ msgstr "Comprimido (VRAM)"
+
+#~ msgid "Texture Format"
+#~ msgstr "Formato da Textura"
+
+#~ msgid "Texture Compression Quality (WebP):"
+#~ msgstr "Qualidade da Compressão da Textura (WebP):"
+
+#~ msgid "Texture Options"
+#~ msgstr "Opções da Textura"
+
+#~ msgid "Please specify some files!"
+#~ msgstr "Por favor especifique alguns arquivos!"
+
+#~ msgid "At least one file needed for Atlas."
+#~ msgstr "Pelo menos um arquivo é preciso para o Atlas."
+
+#~ msgid "Error importing:"
+#~ msgstr "Erro ao importar:"
+
+#~ msgid "Only one file is required for large texture."
+#~ msgstr "Apenas um arquivo é requerido para textura grande."
+
+#~ msgid "Max Texture Size:"
+#~ msgstr "Tamanho Máximo de Textura:"
+
+#~ msgid "Import Textures for Atlas (2D)"
+#~ msgstr "Importar Texturas para Atlas (2D)"
+
+#~ msgid "Cell Size:"
+#~ msgstr "Tamanho da Célula:"
+
+#~ msgid "Large Texture"
+#~ msgstr "Textura Grande"
+
+#~ msgid "Import Large Textures (2D)"
+#~ msgstr "Importar Texturas Grandes (2D)"
+
+#~ msgid "Source Texture"
+#~ msgstr "Textura Origem"
+
+#~ msgid "Base Atlas Texture"
+#~ msgstr "Textura Base do Atlas"
+
+#~ msgid "Source Texture(s)"
+#~ msgstr "Textura(s) Origem(ns)"
+
+#~ msgid "Import Textures for 2D"
+#~ msgstr "Importar Texturas para 2D"
+
+#~ msgid "Import Textures for 3D"
+#~ msgstr "Importar Texturas para 3D"
+
+#~ msgid "Import Textures"
+#~ msgstr "Importar Textura"
+
+#~ msgid "2D Texture"
+#~ msgstr "Textura 2D"
+
+#~ msgid "3D Texture"
+#~ msgstr "Textura 3D"
+
+#~ msgid "Atlas Texture"
+#~ msgstr "Textura Atlas"
+
+#~ msgid ""
+#~ "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files "
+#~ "to the project."
+#~ msgstr ""
+#~ "AVISO: Importar texturas 2D não é obrigatório. Apenas copie arquivos png/"
+#~ "jpg para o projeto."
+
+#~ msgid "Crop empty space."
+#~ msgstr "Aparar espaço vazio."
+
+#~ msgid "Texture"
+#~ msgstr "Textura"
+
+#~ msgid "Import Large Texture"
+#~ msgstr "Importar Textura Grande"
+
+#~ msgid "Load Source Image"
+#~ msgstr "Carregar Imagem Origem"
+
+#~ msgid "Slicing"
+#~ msgstr "Fatiando"
+
+#~ msgid "Saving"
+#~ msgstr "Salvando"
+
+#~ msgid "Couldn't save large texture:"
+#~ msgstr "Não se pôde salvar textura grande:"
+
+#~ msgid "Build Atlas For:"
+#~ msgstr "Montar Atlas Para:"
+
+#~ msgid "Loading Image:"
+#~ msgstr "Carregando Imagem:"
+
+#~ msgid "Couldn't load image:"
+#~ msgstr "Não se pôde carregar imagem:"
+
+#~ msgid "Converting Images"
+#~ msgstr "Convertendo Imagens"
+
+#~ msgid "Cropping Images"
+#~ msgstr "Aparando Imagens"
+
+#~ msgid "Blitting Images"
+#~ msgstr "Fazendo Blitting das Imagens"
+
+#~ msgid "Couldn't save atlas image:"
+#~ msgstr "Não se pôde salva imagem de atlas:"
+
+#~ msgid "Couldn't save converted texture:"
+#~ msgstr "Não se pôde salvar textura convertida:"
+
+#~ msgid "Invalid source!"
+#~ msgstr "Origem inválida!"
+
+#~ msgid "Invalid translation source!"
+#~ msgstr "Origem de tradução inválida!"
+
+#~ msgid "Column"
+#~ msgstr "Coluna"
+
+#~ msgid "No items to import!"
+#~ msgstr "Nenhum item a importar!"
+
+#~ msgid "No target path!"
+#~ msgstr "Nenhum caminho destino!"
+
+#~ msgid "Import Translations"
+#~ msgstr "Importar Traduções"
+
+#~ msgid "Couldn't import!"
+#~ msgstr "Não foi possível importar!"
+
+#~ msgid "Import Translation"
+#~ msgstr "Importar Tradução"
+
+#~ msgid "Source CSV:"
+#~ msgstr "Arquivo CSV Origem:"
+
+#~ msgid "Ignore First Row"
+#~ msgstr "Ignorar Primeira Linha"
+
+#~ msgid "Compress"
+#~ msgstr "Comprimir"
+
+#~ msgid "Add to Project (project.godot)"
+#~ msgstr "Adicionar ao Projeto (project.godot)"
+
+#~ msgid "Import Languages:"
+#~ msgstr "Importar Idiomas:"
+
+#~ msgid "Translation"
+#~ msgstr "Tradução"
+
+#~ msgid "Parsing %d Triangles:"
+#~ msgstr "Analisando %d Triângulos:"
+
+#~ msgid "Triangle #"
+#~ msgstr "Triângulo nº"
+
+#~ msgid "Light Baker Setup:"
+#~ msgstr "Configurar Baker de Luz:"
+
+#~ msgid "Fixing Lights"
+#~ msgstr "Consertando Luzes"
+
+#~ msgid "Making BVH"
+#~ msgstr "Fazendo BVH"
+
+#~ msgid "Transfer to Lightmaps:"
+#~ msgstr "Transferir para Mapas de Luz:"
+
+#~ msgid "Allocating Texture #"
+#~ msgstr "Alocando Textura nº"
+
+#~ msgid "Baking Triangle #"
+#~ msgstr "Precalculando Triângulo nº"
+
+#~ msgid "Post-Processing Texture #"
+#~ msgstr "Pós-Processando Textura nº"
+
+#~ msgid "Reset the lightmap octree baking process (start over)."
+#~ msgstr "Redefinir o processo \"octree baking\" do lightmap (recomeçar)."
+
+#~ msgid "Zoom (%):"
+#~ msgstr "Ampliação (%):"
+
+#~ msgid "Skeleton.."
+#~ msgstr "Esqueleto..."
+
+#~ msgid "Zoom Reset"
+#~ msgstr "Restaurar Ampliação"
+
+#~ msgid "Zoom Set.."
+#~ msgstr "Definir Ampliação..."
+
+#~ msgid "Set a Value"
+#~ msgstr "Defina um Valor"
+
+#~ msgid "Snap (Pixels):"
+#~ msgstr "Snap (Pixels):"
+
+#~ msgid "Parse BBCode"
+#~ msgstr "Analisar BBCode"
+
+#~ msgid "Length:"
+#~ msgstr "Duração:"
+
+#~ msgid "Open Sample File(s)"
+#~ msgstr "Abrir Arquivo(s) de Amostra"
+
+#~ msgid "ERROR: Couldn't load sample!"
+#~ msgstr "ERRO: Não é possível carregar a amostra!"
+
+#~ msgid "Add Sample"
+#~ msgstr "Adicionar Amostra"
+
+#~ msgid "Rename Sample"
+#~ msgstr "Renomear Amostra"
+
+#~ msgid "Delete Sample"
+#~ msgstr "Excluir Amostra"
+
+#~ msgid "16 Bits"
+#~ msgstr "16 bits"
+
+#~ msgid "8 Bits"
+#~ msgstr "8 Bits"
+
+#~ msgid "Stereo"
+#~ msgstr "Estéreo"
+
+#~ msgid "Mono"
+#~ msgstr "Mono"
+
+#~ msgid "Pitch"
+#~ msgstr "Pitch"
+
+#~ msgid "Window"
+#~ msgstr "Janela"
+
+#~ msgid "Move Right"
+#~ msgstr "Mover para Direita"
+
+#~ msgid "Scaling to %s%%."
+#~ msgstr "Escalonando para %s%%."
+
+#~ msgid "Up"
+#~ msgstr "Acima"
+
+#~ msgid "Down"
+#~ msgstr "Abaixo"
+
+#~ msgid "Bucket"
+#~ msgstr "Balde"
+
+#~ msgid "Invalid project path, the path must exist!"
+#~ msgstr "Caminho de projeto inválido, o caminho deve existir!"
+
+#, fuzzy
+#~ msgid "Invalid project path, project.godot must not exist."
+#~ msgstr "Caminho de projeto inválido, engine.cfg não deve existir."
+
+#, fuzzy
+#~ msgid "Invalid project path, project.godot must exist."
+#~ msgstr "Caminho de projeto inválido, engine.cfg deve existir."
+
+#~ msgid "Project Path (Must Exist):"
+#~ msgstr "Caminho do Projeto (Deve Existir):"
+
+#~ msgid "Create New Resource"
+#~ msgstr "Criar Novo Recurso"
+
+#~ msgid "Open Resource"
+#~ msgstr "Abrir Recurso"
+
+#~ msgid "Save Resource"
+#~ msgstr "Salvar Recurso"
+
+#~ msgid "Resource Tools"
+#~ msgstr "Ferramentas de Recurso"
+
+#~ msgid "Make Local"
+#~ msgstr "Tornar Local"
+
+#~ msgid "Edit Groups"
+#~ msgstr "Editar Grupos"
+
+#~ msgid "Edit Connections"
+#~ msgstr "Editar Conexões"
+
+#~ msgid "GridMap Paint"
+#~ msgstr "Pintura GridMap"
+
+#, fuzzy
+#~ msgid "Tiles"
+#~ msgstr " Arquivos"
+
+#~ msgid "Areas"
+#~ msgstr "Ãreas"
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl+"
+
+#~ msgid "Down Wheel)"
+#~ msgstr "Rodar para Baixo)"
+
+#, fuzzy
+#~ msgid "Up Wheel)"
+#~ msgstr "Rodar para Cima"
+
#~ msgid "Close scene? (Unsaved changes will be lost)"
#~ msgstr "Fechar cena? (Mudanças não salvas serão perdidas)"
@@ -8098,9 +8263,6 @@ msgstr ""
#~ msgid "Close Goto Prev. Scene"
#~ msgstr "Ir a Cena Fechada Anterior"
-#~ msgid "Expand to Parent"
-#~ msgstr "Expandir para Pai"
-
#~ msgid "Del"
#~ msgstr "Del"
@@ -8224,18 +8386,12 @@ msgstr ""
#~ msgid "Save Translatable Strings"
#~ msgstr "Salvar Strings Traduzíveis"
-#~ msgid "Translatable Strings.."
-#~ msgstr "Strings Traduzíveis..."
-
#~ msgid "Install Export Templates"
#~ msgstr "Instalar Models de Exportação"
#~ msgid "Edit Script Options"
#~ msgstr "Editar Opções de Script"
-#~ msgid "Please export outside the project folder!"
-#~ msgstr "Por favor export para fora da pasta do projeto!"
-
#~ msgid "Error exporting project!"
#~ msgstr "Erro ao exportar o projeto!"
@@ -8276,18 +8432,12 @@ msgstr ""
#~ msgid "Include"
#~ msgstr "Incluir"
-#~ msgid "Change Image Group"
-#~ msgstr "Alterar Grupo de Imagens"
-
#~ msgid "Group name can't be empty!"
#~ msgstr "O nome do grupo não pode estar vazio!"
#~ msgid "Invalid character in group name!"
#~ msgstr "Caractere inválido no nome do grupo!"
-#~ msgid "Group name already exists!"
-#~ msgstr "O nome do grupo já existe!"
-
#~ msgid "Add Image Group"
#~ msgstr "Adicionar Grupo de Imagens"
@@ -8366,9 +8516,6 @@ msgstr ""
#~ msgid "Preview Atlas"
#~ msgstr "Prever Atlas"
-#~ msgid "Image Filter:"
-#~ msgstr "Filtrar Imagens:"
-
#~ msgid "Images:"
#~ msgstr "Imagens:"
@@ -8435,9 +8582,6 @@ msgstr ""
#~ msgid "Lighting"
#~ msgstr "Iluminação"
-#~ msgid "Toggle Persisting"
-#~ msgstr "Alternar Persistência"
-
#~ msgid "Global"
#~ msgstr "Global"
diff --git a/editor/translations/pt_PT.po b/editor/translations/pt_PT.po
index 7a178acdd5..4b4a98857c 100644
--- a/editor/translations/pt_PT.po
+++ b/editor/translations/pt_PT.po
@@ -1,33 +1,37 @@
# Portuguese (Portugal) translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# António Sarmento <antonio.luis.sarmento@gmail.com>, 2016.
+# João Graça <jgraca95@gmail.com>, 2017.
+# Rueben Stevens <supercell03@gmail.com>, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2016-08-11 15:42+0000\n"
-"Last-Translator: António Sarmento <antonio.luis.sarmento@gmail.com>\n"
+"PO-Revision-Date: 2017-10-25 01:48+0000\n"
+"Last-Translator: Rueben Stevens <supercell03@gmail.com>\n"
"Language-Team: Portuguese (Portugal) <https://hosted.weblate.org/projects/"
"godot-engine/godot/pt_PT/>\n"
"Language: pt_PT\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 2.8-dev\n"
+"X-Generator: Weblate 2.17\n"
#: editor/animation_editor.cpp
msgid "Disabled"
-msgstr ""
+msgstr "desativado"
#: editor/animation_editor.cpp
msgid "All Selection"
-msgstr ""
+msgstr "Toda a selecção"
#: editor/animation_editor.cpp
+#, fuzzy
msgid "Move Add Key"
-msgstr ""
+msgstr "Mover Chave Adcionada"
#: editor/animation_editor.cpp
msgid "Anim Change Transition"
@@ -63,15 +67,15 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Remove Anim Track"
-msgstr ""
+msgstr "Remover a banda de animação"
#: editor/animation_editor.cpp
msgid "Set Transitions to:"
-msgstr ""
+msgstr "Definir transições para:"
#: editor/animation_editor.cpp
msgid "Anim Track Rename"
-msgstr ""
+msgstr "Renomear Banda de Anim"
#: editor/animation_editor.cpp
msgid "Anim Track Change Interpolation"
@@ -86,12 +90,13 @@ msgid "Anim Track Change Wrap Mode"
msgstr ""
#: editor/animation_editor.cpp
+#, fuzzy
msgid "Edit Node Curve"
-msgstr ""
+msgstr "Editar Curva de Node"
#: editor/animation_editor.cpp
msgid "Edit Selection Curve"
-msgstr ""
+msgstr "Editar Curva de Selecção"
#: editor/animation_editor.cpp
msgid "Anim Delete Keys"
@@ -99,7 +104,7 @@ msgstr ""
#: editor/animation_editor.cpp editor/plugins/tile_map_editor_plugin.cpp
msgid "Duplicate Selection"
-msgstr ""
+msgstr "Duplicar Selecção"
#: editor/animation_editor.cpp
msgid "Duplicate Transposed"
@@ -107,19 +112,19 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Remove Selection"
-msgstr ""
+msgstr "Remover Selecção"
#: editor/animation_editor.cpp
msgid "Continuous"
-msgstr ""
+msgstr "Contínuo"
#: editor/animation_editor.cpp
msgid "Discrete"
-msgstr ""
+msgstr "Discreto"
#: editor/animation_editor.cpp
msgid "Trigger"
-msgstr ""
+msgstr "Gatilho"
#: editor/animation_editor.cpp
msgid "Anim Add Key"
@@ -131,28 +136,28 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Scale Selection"
-msgstr ""
+msgstr "Escalar Selecção"
#: editor/animation_editor.cpp
msgid "Scale From Cursor"
-msgstr ""
+msgstr "Alterar escala a partir do cursor"
#: editor/animation_editor.cpp
msgid "Goto Next Step"
-msgstr ""
+msgstr "Ir para o próximo passo"
#: editor/animation_editor.cpp
msgid "Goto Prev Step"
-msgstr ""
+msgstr "Ir para passo anterior"
#: editor/animation_editor.cpp editor/plugins/curve_editor_plugin.cpp
#: editor/property_editor.cpp
msgid "Linear"
-msgstr ""
+msgstr "Linear"
#: editor/animation_editor.cpp editor/plugins/theme_editor_plugin.cpp
msgid "Constant"
-msgstr ""
+msgstr "Constante"
#: editor/animation_editor.cpp
msgid "In"
@@ -172,15 +177,15 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Transitions"
-msgstr ""
+msgstr "Transições"
#: editor/animation_editor.cpp
msgid "Optimize Animation"
-msgstr ""
+msgstr "Optimizar Animação"
#: editor/animation_editor.cpp
msgid "Clean-Up Animation"
-msgstr ""
+msgstr "Limpar Animação"
#: editor/animation_editor.cpp
msgid "Create NEW track for %s and insert key?"
@@ -191,14 +196,13 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr ""
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
-msgstr ""
+msgstr "Criar"
#: editor/animation_editor.cpp
msgid "Anim Create & Insert"
@@ -242,15 +246,15 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Length (s):"
-msgstr ""
+msgstr "Comprimento (s):"
#: editor/animation_editor.cpp
msgid "Animation length (in seconds)."
-msgstr ""
+msgstr "Duração da animação (em segundos)."
#: editor/animation_editor.cpp
msgid "Step (s):"
-msgstr ""
+msgstr "Passos (s):"
#: editor/animation_editor.cpp
msgid "Cursor step snap (in seconds)."
@@ -258,11 +262,11 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Enable/Disable looping in animation."
-msgstr ""
+msgstr "Habilitar/Desabilitar repetição na animação."
#: editor/animation_editor.cpp
msgid "Add new tracks."
-msgstr ""
+msgstr "Adicionar novas bandas."
#: editor/animation_editor.cpp
msgid "Move current track up."
@@ -274,7 +278,7 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Remove selected track."
-msgstr ""
+msgstr "Remover a banda seleccionada."
#: editor/animation_editor.cpp
msgid "Track tools"
@@ -282,7 +286,7 @@ msgstr ""
#: editor/animation_editor.cpp
msgid "Enable editing of individual keys by clicking them."
-msgstr ""
+msgstr "Habilitar a edição de chaves individuais ao clicar nelas."
#: editor/animation_editor.cpp
msgid "Anim. Optimizer"
@@ -356,261 +360,6 @@ msgstr ""
msgid "Change Array Value"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "Fechar"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connecting.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Requesting.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Error making request"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr ""
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr ""
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr ""
@@ -647,6 +396,14 @@ msgstr ""
msgid "Selection Only"
msgstr ""
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr ""
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr ""
@@ -679,11 +436,11 @@ msgstr ""
msgid "Skip"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr ""
@@ -750,6 +507,20 @@ msgstr ""
msgid "Oneshot"
msgstr ""
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "Fechar"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr ""
@@ -775,7 +546,7 @@ msgstr ""
msgid "Disconnect"
msgstr ""
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr ""
@@ -792,12 +563,25 @@ msgstr ""
msgid "Recent:"
msgstr ""
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr ""
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr ""
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr ""
@@ -853,6 +637,10 @@ msgid "Owners Of:"
msgstr ""
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr ""
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -860,7 +648,7 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
+msgid "Cannot remove:\n"
msgstr ""
#: editor/dependency_editor.cpp
@@ -927,10 +715,6 @@ msgid "Godot Engine contributors"
msgstr ""
#: editor/editor_about.cpp
-msgid "Authors"
-msgstr ""
-
-#: editor/editor_about.cpp
msgid "Project Founders"
msgstr ""
@@ -947,6 +731,38 @@ msgid "Developers"
msgstr ""
#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
msgid "License"
msgstr ""
@@ -987,6 +803,16 @@ msgid "Package Installed Successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
msgstr ""
@@ -1037,10 +863,6 @@ msgid "Audio Bus, Drag and Drop to rearrange."
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
msgid "Solo"
msgstr ""
@@ -1052,12 +874,20 @@ msgstr ""
msgid "Bypass"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Reset Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
#, fuzzy
msgid "Delete Effect"
msgstr "Apagar Seleccionados"
@@ -1079,6 +909,10 @@ msgid "Duplicate Audio Bus"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Reset Bus Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Move Audio Bus"
msgstr ""
@@ -1110,7 +944,8 @@ msgstr ""
msgid "Create a new Bus Layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
@@ -1200,7 +1035,7 @@ msgid "Rearrange Autoloads"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr ""
@@ -1208,9 +1043,7 @@ msgstr ""
msgid "Node Name:"
msgstr ""
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr ""
@@ -1243,18 +1076,19 @@ msgid "Choose a Directory"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr ""
@@ -1274,30 +1108,6 @@ msgstr ""
msgid "Template file not found:\n"
msgstr ""
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr ""
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr ""
@@ -1382,6 +1192,10 @@ msgstr ""
msgid "Move Favorite Down"
msgstr ""
+#: editor/editor_file_dialog.cpp
+msgid "Go to parent folder"
+msgstr ""
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr ""
@@ -1396,10 +1210,6 @@ msgid "File:"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr ""
@@ -1424,6 +1234,10 @@ msgstr ""
msgid "Search Classes"
msgstr ""
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr ""
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr ""
@@ -1440,15 +1254,28 @@ msgstr ""
msgid "Brief Description:"
msgstr ""
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Members"
+msgstr "Membros:"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "Membros:"
#: editor/editor_help.cpp
+msgid "Public Methods"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr ""
#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr ""
@@ -1458,6 +1285,11 @@ msgstr "Sinais:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Enumerations"
+msgstr "Funções:"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Enumerations:"
msgstr "Funções:"
@@ -1466,18 +1298,46 @@ msgid "enum "
msgstr ""
#: editor/editor_help.cpp
+msgid "Constants"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Description"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Property Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Methods"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr ""
@@ -1486,24 +1346,21 @@ msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr ""
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr ""
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1520,6 +1377,26 @@ msgid "Error while saving."
msgstr ""
#: editor/editor_node.cpp
+msgid "Can't open '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error while parsing '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error while loading '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr ""
@@ -1577,6 +1454,33 @@ msgid "Restored default layout to base settings."
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr ""
@@ -1738,23 +1642,34 @@ msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgid "Unable to load addon script from path: '%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -1764,7 +1679,7 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr ""
@@ -1775,11 +1690,11 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp
-msgid "Error loading scene."
+msgid "Scene '%s' has broken dependencies:"
msgstr ""
#: editor/editor_node.cpp
-msgid "Scene '%s' has broken dependencies:"
+msgid "Clear Recent Scenes"
msgstr ""
#: editor/editor_node.cpp
@@ -1815,7 +1730,7 @@ msgstr ""
msgid "Toggle distraction-free mode."
msgstr ""
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr ""
@@ -2035,6 +1950,10 @@ msgstr ""
msgid "Issue Tracker"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "About"
msgstr ""
@@ -2043,7 +1962,7 @@ msgstr ""
msgid "Play the project."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr ""
@@ -2059,7 +1978,7 @@ msgstr ""
msgid "Stop the scene."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr ""
@@ -2132,6 +2051,15 @@ msgid "Object properties."
msgstr ""
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr ""
@@ -2147,14 +2075,6 @@ msgstr ""
msgid "Don't Save"
msgstr ""
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr ""
-
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
@@ -2215,11 +2135,28 @@ msgstr ""
msgid "Open the previous Editor"
msgstr ""
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr ""
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr ""
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr ""
@@ -2252,7 +2189,7 @@ msgid "Frame %"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+msgid "Physics Frame %"
msgstr ""
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2271,26 +2208,6 @@ msgstr ""
msgid "Frame #:"
msgstr ""
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr ""
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2400,10 +2317,6 @@ msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr ""
@@ -2437,9 +2350,17 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
+"Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2449,87 +2370,88 @@ msgid ""
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
+msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
+msgid "Cannot move a folder into itself.\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
+msgid "Error moving:\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
+msgid "Unable to update dependencies:\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "No name provided"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving file:\n"
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving dir:\n"
+msgid "No name provided."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
+msgid "Name contains invalid characters."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
+msgid "A file or folder with this name already exists."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
-msgstr ""
+#, fuzzy
+msgid "Renaming file:"
+msgstr "Alterar nome da Variável"
#: editor/filesystem_dock.cpp
-msgid "Expand all"
+msgid "Renaming folder:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Collapse all"
+msgid "Expand all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
+msgid "Collapse all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Instance"
+msgid "Copy Path"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
+msgid "Rename.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
+msgid "Move To.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
+msgid "New Folder.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
+msgid "Show In File Manager"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move To.."
+msgid "Instance"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Info"
+msgid "Edit Dependencies.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
+msgid "View Owners.."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2562,6 +2484,11 @@ msgstr ""
msgid "Move"
msgstr ""
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr ""
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr ""
@@ -2575,6 +2502,10 @@ msgid "Import as Single Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -2587,6 +2518,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
msgstr ""
@@ -2595,38 +2538,31 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr ""
@@ -2654,579 +2590,54 @@ msgstr ""
msgid "Reimport"
msgstr ""
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
+#: editor/node_dock.cpp
+msgid "Groups"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr ""
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Select a Node to edit Signals and Groups."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -3382,7 +2793,6 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3493,10 +2903,6 @@ msgid "Delete Input"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr ""
@@ -3552,64 +2958,181 @@ msgstr ""
msgid "Filters.."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3652,11 +3175,15 @@ msgid "Edit CanvasItem"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+msgid "Anchors only"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
+msgid "Change Anchors and Margins"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3707,59 +3234,73 @@ msgid "Pan Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
+#, fuzzy
+msgid "Toggles snapping"
+msgstr "Accionar Breakpoint"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
+msgid "Snapping options"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
+msgid "Snap to grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
+msgid "Use Rotation Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "Editar"
+msgid "Configure Snap..."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Snap Relative"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
+msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
+msgid "Smart snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
+msgid "Snap to parent"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
+msgid "Snap to node anchor"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
+msgid "Unlock the selected object (can be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3788,11 +3329,16 @@ msgid "View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show helpers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
+msgid "Show rulers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3804,7 +3350,7 @@ msgid "Frame Selection"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
+msgid "Layout"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3828,11 +3374,20 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
+msgid "Drag pivot from mouse position"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "Remover Sinal"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Divide grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3843,23 +3398,28 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr ""
@@ -3873,45 +3433,6 @@ msgid ""
"Drag & drop + Alt : Change node type"
msgstr ""
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3921,14 +3442,6 @@ msgid "Set Handle"
msgstr ""
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr ""
@@ -3951,6 +3464,26 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease in"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
msgstr ""
@@ -4029,22 +3562,18 @@ msgid "Create Occluder Polygon"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr ""
@@ -4145,6 +3674,10 @@ msgid "Create Outline"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr ""
@@ -4272,12 +3805,72 @@ msgstr ""
msgid "Populate"
msgstr ""
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create Navigation Polygon"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Marking walkable triangles..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Partitioning..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
msgstr ""
#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
+msgid "Create Navigation Polygon"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -4451,16 +4044,19 @@ msgid "Curve Point #"
msgstr ""
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
-msgstr ""
+msgstr "Remover Sinal"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
-msgstr ""
+msgstr "Remover Sinal"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
-msgstr ""
+msgstr "Remover Sinal"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4520,6 +4116,14 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "Editar"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr ""
@@ -4574,63 +4178,10 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr ""
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr ""
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr ""
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
@@ -4722,6 +4273,10 @@ msgstr ""
msgid "Close All"
msgstr "Fechar"
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
msgstr ""
@@ -4750,7 +4305,8 @@ msgstr ""
msgid "Break"
msgstr ""
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr ""
@@ -4763,18 +4319,6 @@ msgid "Debug with external editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
msgstr ""
@@ -4856,8 +4400,9 @@ msgid "Cut"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr ""
@@ -5121,10 +4666,6 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr ""
@@ -5141,10 +4682,6 @@ msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr ""
@@ -5374,6 +4911,10 @@ msgid "Transform"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr ""
@@ -5519,6 +5060,10 @@ msgid "Speed (FPS):"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr ""
@@ -5531,11 +5076,11 @@ msgid "Insert Empty (After)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
+msgid "Move (Before)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
+msgid "Move (After)"
msgstr ""
#: editor/plugins/style_box_editor_plugin.cpp
@@ -5614,7 +5159,11 @@ msgid "Remove All"
msgstr "Remover Sinal"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
@@ -5699,6 +5248,10 @@ msgid "Style"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr ""
@@ -5747,7 +5300,7 @@ msgid "Mirror Y"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
+msgid "Paint Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5811,6 +5364,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr ""
@@ -5881,19 +5438,29 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
+msgid "The path does not exist."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
+msgid "Please choose a folder that does not contain a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
@@ -5901,10 +5468,26 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't edit project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr ""
@@ -5913,15 +5496,20 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Import Existing Project"
+#, fuzzy
+msgid "Rename Project"
+msgstr "Alterar nome da Função"
+
+#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in the project path."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
+msgid "New Game Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Name:"
+msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
@@ -5929,19 +5517,23 @@ msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path:"
+msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Install Project:"
+msgid "Project Name:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Browse"
+msgid "Create folder"
msgstr ""
#: editor/project_manager.cpp
-msgid "New Game Project"
+msgid "Project Path:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
@@ -5953,6 +5545,10 @@ msgid "Unnamed Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Can't open project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr ""
@@ -5979,16 +5575,18 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
-"You are about the scan %s folders for existing Godot projects. Do you "
-"confirm?"
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project List"
+msgid ""
+"You are about the scan %s folders for existing Godot projects. Do you "
+"confirm?"
msgstr ""
#: editor/project_manager.cpp
-msgid "Run"
+msgid "Project List"
msgstr ""
#: editor/project_manager.cpp
@@ -6013,6 +5611,10 @@ msgid "Exit"
msgstr ""
#: editor/project_manager.cpp
+msgid "Restart Now"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -6049,17 +5651,14 @@ msgid "Add Input Action Event"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
@@ -6120,7 +5719,7 @@ msgstr "Alterar"
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr ""
@@ -6140,31 +5739,31 @@ msgstr ""
msgid "Add Event"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr ""
@@ -6174,7 +5773,7 @@ msgid "Add Global Property"
msgstr "Adicionar propriedade Getter"
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6191,6 +5790,14 @@ msgid "Delete Item"
msgstr "Apagar Seleccionados"
#: editor/project_settings_editor.cpp
+msgid "Can't contain '/' or ':'"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
@@ -6231,6 +5838,14 @@ msgid "Remove Resource Remap Option"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
@@ -6291,6 +5906,26 @@ msgid "Locale"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Locales Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show all locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Filter mode:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Locales:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -6340,10 +5975,18 @@ msgid "New Script"
msgstr ""
#: editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr ""
#: editor/property_editor.cpp
+msgid "Convert To %s"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr ""
@@ -6381,6 +6024,10 @@ msgid "Select Property"
msgstr "Adicionar propriedade Setter"
#: editor/property_selector.cpp
+msgid "Select Virtual Method"
+msgstr ""
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr ""
@@ -6408,26 +6055,6 @@ msgstr ""
msgid "Reparent"
msgstr ""
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr ""
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr ""
@@ -6554,14 +6181,6 @@ msgid "Sub-Resources:"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr ""
@@ -6742,6 +6361,14 @@ msgid "Invalid base path"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "File exists, will be reused"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr ""
@@ -6784,6 +6411,10 @@ msgid "Load existing script file"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Inherits"
msgstr ""
@@ -6825,6 +6456,10 @@ msgid "Function:"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr ""
@@ -6905,6 +6540,10 @@ msgid "Type"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr ""
@@ -6980,12 +6619,28 @@ msgstr ""
msgid "Change Probe Extents"
msgstr ""
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Library"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Status"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr "Tipo de argumento inválido para convert(), use constantes TYPE_*."
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr ""
@@ -7039,10 +6694,6 @@ msgid "GridMap Duplicate Selection"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Snap View"
msgstr ""
@@ -7134,12 +6785,8 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Tiles"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7342,10 +6989,18 @@ msgid "Return"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
msgstr ""
@@ -7702,6 +7357,12 @@ msgid ""
"order for AnimatedSprite3D to display frames."
msgstr ""
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -7711,15 +7372,15 @@ msgid "Add current color as a preset"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Alert!"
+msgid "Cancel"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Please Confirm..."
+msgid "Alert!"
msgstr ""
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
+#: scene/gui/dialogs.cpp
+msgid "Please Confirm..."
msgstr ""
#: scene/gui/popup.cpp
@@ -7750,6 +7411,22 @@ msgid ""
"texture to some node for display."
msgstr ""
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr ""
+
#, fuzzy
#~ msgid "Invalid unique name."
#~ msgstr "Nome de índice propriedade inválido."
diff --git a/editor/translations/ru.po b/editor/translations/ru.po
index 61d7ae7dae..05c164c3ee 100644
--- a/editor/translations/ru.po
+++ b/editor/translations/ru.po
@@ -1,17 +1,20 @@
# Russian translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
+# B10nicMachine <shumik1337@gmail.com>, 2017.
# DimOkGamer <dimokgamer@gmail.com>, 2016-2017.
# ijet <my-ijet@mail.ru>, 2017.
# Maxim Kim <habamax@gmail.com>, 2016.
# Maxim toby3d Lebedev <mail@toby3d.ru>, 2016.
+# pitchblack <pitchblack@mail.ru>, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-07-25 09:47+0000\n"
+"PO-Revision-Date: 2017-10-26 14:49+0000\n"
"Last-Translator: ijet <my-ijet@mail.ru>\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/godot-engine/"
"godot/ru/>\n"
@@ -21,7 +24,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 2.16-dev\n"
+"X-Generator: Weblate 2.17\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -197,10 +200,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr "Создать %d новые дорожки и вÑтавить ключи?"
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -362,261 +364,6 @@ msgstr "Изменение типа Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¼Ð°ÑÑива"
msgid "Change Array Value"
msgstr "Изменить значение маÑÑива"
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr "ОÑвободить"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr "ВерÑиÑ:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr "Содержание:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr "ПроÑмотр Файлов"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr "ОпиÑание:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr "УÑтановить"
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "Закрыть"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr "Ðевозможно определить Ð¸Ð¼Ñ Ñ…Ð¾Ñта:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Ðе удаетÑÑ Ñ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ñ‚ÑŒ."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr "Ошибка подключениÑ, попробуйте еще раз."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Ðе удаетÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑÑ."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr "Ðе удаетÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑÑ Ðº хоÑту:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr "Ðет ответа от хоÑта:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Ðет ответа."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ удалÑÑ, код:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ прошел."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ прошел, Ñлишком много перенаправлений"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr "ЦикличеÑкое перенаправление."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "Ðе удалоÑÑŒ:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr "ÐеÑовпадение Ñ…Ñша загрузки, возможно файл был изменен."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr "ОжидаетÑÑ:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr "Получил:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr "Ðе удалоÑÑŒ проверить sha256 Ñ…Ñш"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr "Ошибка Загрузки Шаблона:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr "УÑпех!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr "Извлечение:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr "ИнициализациÑ..."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connecting.."
-msgstr "Подключение.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Requesting.."
-msgstr "Запрашиваю.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Error making request"
-msgstr "Ошибка во Ð²Ñ€ÐµÐ¼Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñа"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr "ПроÑтой"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr "Повторить"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr "Ошибка Загрузки"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr "Загрузка Ñтого шаблона уже идет!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr "первый"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr "предыдущий"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr "далее"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr "поÑледний"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "Ð’Ñе"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "ПоиÑк:"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "ПоиÑк"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr "Импорт"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr "Плагины"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "Сортировать:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr "Обратно"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "КатегориÑ:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "Сайт:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr "Поддержка.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr "Официальные"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "ОбщеÑтвенные"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr "ТеÑтируемые"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr "ZIP файл аÑÑетов"
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr "СпиÑок методов Ð´Ð»Ñ '%s':"
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "Вызов"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr "СпиÑок методов:"
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr "Ðргументы:"
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr "Возвращение:"
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr "Перейти к Ñтроке"
@@ -653,6 +400,14 @@ msgstr "Целые Ñлова"
msgid "Selection Only"
msgstr "Только выделÑть"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "ПоиÑк"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr "Ðайти"
@@ -685,11 +440,11 @@ msgstr "Подтверждение замены"
msgid "Skip"
msgstr "ПропуÑтить"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "Приблизить"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr "Отдалить"
@@ -758,6 +513,20 @@ msgstr "Отложенное"
msgid "Oneshot"
msgstr "Один раз"
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "Закрыть"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr "ПриÑоединить"
@@ -783,7 +552,7 @@ msgstr "ПриÑоединить.."
msgid "Disconnect"
msgstr "ОтÑоединить"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr "Сигналы"
@@ -800,12 +569,25 @@ msgstr "Избранное:"
msgid "Recent:"
msgstr "Ðедавнее:"
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "ПоиÑк:"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr "СовпадениÑ:"
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "ОпиÑание:"
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr "ПоиÑк замены длÑ:"
@@ -865,6 +647,10 @@ msgid "Owners Of:"
msgstr "Владельцы:"
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr "Удалить выбранный файл из проекта? (ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ!)"
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -874,8 +660,8 @@ msgstr ""
"Ð’ÑÑ‘ равно удалить его? (ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ!)"
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
-msgstr "Удалить выбранный файл из проекта? (ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ!)"
+msgid "Cannot remove:\n"
+msgstr "Ðе удаетÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ:\n"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -941,19 +727,12 @@ msgid "Godot Engine contributors"
msgstr "Ðвторы Движка Godot"
#: editor/editor_about.cpp
-#, fuzzy
-msgid "Authors"
-msgstr "Ðвтор:"
-
-#: editor/editor_about.cpp
-#, fuzzy
msgid "Project Founders"
-msgstr "Менеджер проектов"
+msgstr "ОÑнователи Проекта"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Lead Developer"
-msgstr "Разработчики"
+msgstr "Ведущий Разработчик"
#: editor/editor_about.cpp editor/project_manager.cpp
msgid "Project Manager"
@@ -964,12 +743,44 @@ msgid "Developers"
msgstr "Разработчики"
#: editor/editor_about.cpp
+msgid "Authors"
+msgstr "Ðвторы"
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr "Платиновые СпонÑоры"
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr "Золотые СпонÑоры"
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr "Мини СпонÑоры"
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr "Золотые Доноры"
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr "СеребрÑные Доноры"
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr "Бронзовые Доноры"
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr "Доноры"
+
+#: editor/editor_about.cpp
msgid "License"
-msgstr ""
+msgstr "ЛицензиÑ"
#: editor/editor_about.cpp
msgid "Thirdparty License"
-msgstr ""
+msgstr "Сторонние Лицензии"
#: editor/editor_about.cpp
msgid ""
@@ -978,104 +789,108 @@ msgid ""
"is an exhaustive list of all such thirdparty components with their "
"respective copyright statements and license terms."
msgstr ""
+"Движок godot опираетÑÑ Ð½Ð° Ñ€Ñд Ñторонних беÑплатных и открытых библиотек, "
+"ÑовмеÑтимых Ñ ÑƒÑловиÑми лицензии MIT. Ðиже приводитÑÑ Ð¸Ñчерпывающий ÑпиÑок "
+"вÑех Ñторонних компонентов вмеÑте Ñ Ð¸Ñ… авторÑкими правами и уÑловиÑми "
+"лицензионного ÑоглашениÑ."
#: editor/editor_about.cpp
-#, fuzzy
msgid "All Components"
-msgstr "Содержание:"
+msgstr "Ð’Ñе компоненты"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Components"
-msgstr "Содержание:"
+msgstr "Компоненты"
#: editor/editor_about.cpp
msgid "Licenses"
-msgstr ""
+msgstr "Лицензии"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Error opening package file, not in zip format."
-msgstr ""
+msgstr "Ошибка при открытии файла, не в формате zip."
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Uncompressing Assets"
-msgstr "ÐеÑжатый"
+msgstr "РаÑпаковка аÑÑетов"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Package Installed Successfully!"
msgstr "Пакет уÑпешно уÑтановлен!"
#: editor/editor_asset_installer.cpp
-#, fuzzy
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr "УÑпех!"
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr "УÑтановить"
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
-msgstr "Пакет уÑпешно уÑтановлен!"
+msgstr "УÑтановщик пакетов"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
-msgstr ""
+msgstr "Колонки"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Effect"
-msgstr "Добавить Ñобытие"
+msgstr "Добавить Ñффект"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Rename Audio Bus"
-msgstr "Открыть раÑкладку звуковой шины"
+msgstr "Переименовать аудио шину"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Toggle Audio Bus Solo"
-msgstr "Открыть раÑкладку звуковой шины"
+msgstr "Переключить аудио шину - Ñоло"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Toggle Audio Bus Mute"
-msgstr "Открыть раÑкладку звуковой шины"
+msgstr "Переключить аудио шину - тишина"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Bypass Effects"
-msgstr ""
+msgstr "Переключить аудио шину - bypass Ñффект"
#: editor/editor_audio_buses.cpp
msgid "Select Audio Bus Send"
-msgstr ""
+msgstr "Выбор передача аудио шины"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus Effect"
-msgstr ""
+msgstr "Добавить аудио Ñффект"
#: editor/editor_audio_buses.cpp
msgid "Move Bus Effect"
-msgstr ""
+msgstr "Передвинуть Ñффект"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Bus Effect"
-msgstr "Удалить выделенное"
+msgstr "Удалить Ñффект шины"
#: editor/editor_audio_buses.cpp
msgid "Audio Bus, Drag and Drop to rearrange."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-#, fuzzy
-msgid "Bus options"
-msgstr "Опции вложенной Ñцены"
+msgstr "Ðудио шина, перетащите Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ñ€ÑƒÐ¿Ð¿Ð¸Ñ€Ð¾Ð²ÐºÐ¸."
#: editor/editor_audio_buses.cpp
msgid "Solo"
-msgstr ""
+msgstr "Соло"
#: editor/editor_audio_buses.cpp
msgid "Mute"
-msgstr ""
+msgstr "Заглушить"
#: editor/editor_audio_buses.cpp
msgid "Bypass"
-msgstr ""
+msgstr "Bypass"
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr "Параметры шины"
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
@@ -1083,33 +898,36 @@ msgid "Duplicate"
msgstr "Дублировать"
#: editor/editor_audio_buses.cpp
-#, fuzzy
+msgid "Reset Volume"
+msgstr "СброÑить громкоÑть"
+
+#: editor/editor_audio_buses.cpp
msgid "Delete Effect"
-msgstr "Удалить выделенное"
+msgstr "Удалить Ñффект"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Audio Bus"
-msgstr "Добавить"
+msgstr "Добавить аудио шину"
#: editor/editor_audio_buses.cpp
msgid "Master bus can't be deleted!"
-msgstr ""
+msgstr "МаÑтер шина не может быть удалена!"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Audio Bus"
-msgstr "Удалить макет"
+msgstr "Удалить аудио шину"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Duplicate Audio Bus"
-msgstr "Дублировать анимацию"
+msgstr "Дублировать аудио шину"
+
+#: editor/editor_audio_buses.cpp
+msgid "Reset Bus Volume"
+msgstr "СброÑить громкоÑть шины"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Move Audio Bus"
-msgstr "ПеремеÑтить дейÑтвие"
+msgstr "ПеремеÑтить аудио шину"
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
@@ -1125,32 +943,28 @@ msgstr "Открыть раÑкладку звуковой шины"
#: editor/editor_audio_buses.cpp
msgid "There is no 'res://default_bus_layout.tres' file."
-msgstr ""
+msgstr "ОтÑутÑтвует файл «res://default_bus_layout.tres»."
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Invalid file, not an audio bus layout."
-msgstr ""
-"ÐедопуÑтимое раÑширение файла.\n"
-"ПожалуйÑта, иÑпользуйте .font."
+msgstr "ÐедопуÑтимый файл, не раÑкладка аудио шины."
#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr "Добавить"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Create a new Bus Layout."
-msgstr "Создать новый реÑурÑ"
+msgstr "Создать новую раÑкладку шины."
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr "Загрузить"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Load an existing Bus Layout."
-msgstr "Загрузить ÑущеÑтвующий реÑÑƒÑ€Ñ Ñ Ð´Ð¸Ñка и редактировать его."
+msgstr "Загрузить ÑущеÑтвующую раÑкладку шины."
#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -1158,18 +972,16 @@ msgid "Save As"
msgstr "Сохранить как"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Save this Bus Layout to a file."
-msgstr "Сохранить раÑкладку звуковой шины как.."
+msgstr "Сохранить текущую раÑкладку звуковой шины в файл."
#: editor/editor_audio_buses.cpp editor/import_dock.cpp
-#, fuzzy
msgid "Load Default"
-msgstr "По-умолчанию"
+msgstr "Загрузить по умолчанию"
#: editor/editor_audio_buses.cpp
msgid "Load the default Bus Layout."
-msgstr ""
+msgstr "Загрузить Ñтандартную раÑкладку шины."
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
@@ -1242,7 +1054,7 @@ msgid "Rearrange Autoloads"
msgstr "ПереÑтановка автозагрузок"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "Путь:"
@@ -1250,9 +1062,7 @@ msgstr "Путь:"
msgid "Node Name:"
msgstr "Ð˜Ð¼Ñ Ð£Ð·Ð»Ð°:"
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr "ИмÑ"
@@ -1277,27 +1087,27 @@ msgid "Updating scene.."
msgstr "Обновление Ñцены.."
#: editor/editor_dir_dialog.cpp
-#, fuzzy
msgid "Please select a base directory first"
-msgstr "ПожалуйÑта Ñначала Ñохраните Ñцену."
+msgstr "ПожалуйÑта, выберите базовый каталог"
#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "Выбрать каталог"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "Создать папку"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "ИмÑ:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "Ðевозможно Ñоздать папку."
@@ -1317,30 +1127,6 @@ msgstr "Упаковывание"
msgid "Template file not found:\n"
msgstr "Файл шаблона не найден:\n"
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr "Добавлено:"
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr "Удалено:"
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr "Ошибка ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð°Ñ‚Ð»Ð°Ñа:"
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr "Ðевозможно Ñохранить текÑтуру атлаÑа:"
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr "ЭкÑпортирование Ð´Ð»Ñ %s"
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr "ÐаÑтройка.."
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "Файл ÑущеÑтвует, перезапиÑать?"
@@ -1425,6 +1211,10 @@ msgstr "ПеремеÑтить избранное вверх"
msgid "Move Favorite Down"
msgstr "ПеремеÑтить избранное вниз"
+#: editor/editor_file_dialog.cpp
+msgid "Go to parent folder"
+msgstr "Перейти к родительÑкой папке"
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "Каталоги и файлы:"
@@ -1439,10 +1229,6 @@ msgid "File:"
msgstr "Файл:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "Фильтр:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "Ðужно иÑпользовать доÑтупное раÑширение."
@@ -1467,6 +1253,10 @@ msgstr "СпиÑок клаÑÑов:"
msgid "Search Classes"
msgstr "ПоиÑк клаÑÑов"
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr "Верх"
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr "КлаÑÑ:"
@@ -1483,15 +1273,27 @@ msgstr "УнаÑледован:"
msgid "Brief Description:"
msgstr "Краткое опиÑание:"
+#: editor/editor_help.cpp
+msgid "Members"
+msgstr "УчаÑтники"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "УчаÑтники:"
#: editor/editor_help.cpp
+msgid "Public Methods"
+msgstr "Публичные методы"
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr "СпиÑок методов:"
#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr "Тема Ñлементов GUI"
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr "Тема Ñлементов GUI:"
@@ -1500,54 +1302,85 @@ msgid "Signals:"
msgstr "Сигналы:"
#: editor/editor_help.cpp
-#, fuzzy
+msgid "Enumerations"
+msgstr "ПеречиÑлениÑ"
+
+#: editor/editor_help.cpp
msgid "Enumerations:"
-msgstr "Ðнимации"
+msgstr "ПеречиÑлениÑ:"
#: editor/editor_help.cpp
msgid "enum "
-msgstr ""
+msgstr "перечиÑление "
+
+#: editor/editor_help.cpp
+msgid "Constants"
+msgstr "КонÑтанты"
#: editor/editor_help.cpp
msgid "Constants:"
msgstr "КонÑтанты:"
#: editor/editor_help.cpp
+msgid "Description"
+msgstr "ОпиÑание"
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr "СвойÑтва"
+
+#: editor/editor_help.cpp
msgid "Property Description:"
msgstr "ОпиÑание ÑвойÑтва:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"Ð’ наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð¾Ñ‚ÑутÑтвует опиÑание Ñтого ÑвойÑтва. ПожалуйÑта [color="
+"$color][url=$url]помогите нам[/url][/color]!"
+
+#: editor/editor_help.cpp
+msgid "Methods"
+msgstr "Методы"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr "ОпиÑание методов:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+"Ð’ наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð¾Ñ‚ÑутÑтвует опиÑание Ñтого метода. ПожалуйÑта [color="
+"$color][url=$url]помогите нам[/url][/color]!"
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr "ИÑкать текÑÑ‚"
#: editor/editor_log.cpp
-#, fuzzy
msgid "Output:"
-msgstr " Вывод:"
+msgstr "Вывод:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "ОчиÑтить"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr "Ошибка при Ñохранении реÑурÑа!"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr "Сохранить реÑÑƒÑ€Ñ ÐºÐ°Ðº.."
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "ЯÑно.."
@@ -1564,6 +1397,26 @@ msgid "Error while saving."
msgstr "Ошибка при Ñохранении."
#: editor/editor_node.cpp
+msgid "Can't open '%s'."
+msgstr "Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ '%s'."
+
+#: editor/editor_node.cpp
+msgid "Error while parsing '%s'."
+msgstr "Ошибка при разборе '%s'."
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr "Ðеожиданный конец файла '%s'."
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
+msgstr "ОтÑутÑтвует '%s' или его завиÑимоÑти."
+
+#: editor/editor_node.cpp
+msgid "Error while loading '%s'."
+msgstr "Ошибка при загрузке '%s'."
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr "Сохранение Ñцены"
@@ -1576,9 +1429,8 @@ msgid "Creating Thumbnail"
msgstr "Создание ÑÑкизов"
#: editor/editor_node.cpp
-#, fuzzy
msgid "This operation can't be done without a tree root."
-msgstr "Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ может быть выполнена без Ñцены."
+msgstr "Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ может быть выполнена без ÐºÐ¾Ñ€Ð½Ñ Ð´ÐµÑ€ÐµÐ²Ð°."
#: editor/editor_node.cpp
msgid ""
@@ -1624,6 +1476,48 @@ msgid "Restored default layout to base settings."
msgstr "Вернуть макет по-умолчанию к Ñтандартному."
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+"Этот реÑÑƒÑ€Ñ Ð¿Ñ€Ð¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð¸Ñ‚ Ñцене, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð±Ñ‹Ð»Ð° импортирована, поÑтому он не "
+"редактируетÑÑ.\n"
+"ПожалуйÑта, прочитайте документацию, имеющую отношение к импорту Ñцены, "
+"чтобы лучше понÑть Ñтот процеÑÑ."
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+"Этот реÑÑƒÑ€Ñ Ð¿Ñ€Ð¸Ð½Ð°Ð´Ð»ÐµÐ¶Ð¸Ñ‚ к Ñцене, инÑтанцированной или унаÑледованной.\n"
+"Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ðµ будут Ñохранены при Ñохранении текущей Ñцены."
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+"Этот реÑÑƒÑ€Ñ Ð±Ñ‹Ð» импортирован, поÑтому он не редактируетÑÑ. Измени наÑтройки "
+"в панеле импорта, а затем повторно импортируйте."
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+"Эта Ñцена была импортирована, так что Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ðµ будут Ñохранены.\n"
+"ИнÑтанÑинг или наÑледование позволит внеÑти Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² неё.\n"
+"ПожалуйÑта, прочитайте документацию, имеющую отношение к импорту Ñцены, "
+"чтобы лучше понÑть Ñтот процеÑÑ."
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr "Копировать параметры"
@@ -1710,13 +1604,12 @@ msgid "Quick Open Script.."
msgstr "БыÑтро открыть Ñкрипт.."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Close"
-msgstr "Сохранить файл"
+msgstr "Сохранить и закрыть"
#: editor/editor_node.cpp
msgid "Save changes to '%s' before closing?"
-msgstr ""
+msgstr "Сохранить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² «%s» перед закрытием?"
#: editor/editor_node.cpp
msgid "Save Scene As.."
@@ -1747,9 +1640,8 @@ msgid "Export Tile Set"
msgstr "ЭкÑпортировать набор тайлов"
#: editor/editor_node.cpp
-#, fuzzy
msgid "This operation can't be done without a selected node."
-msgstr "Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ может быть выполнена без Ñцены."
+msgstr "Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð½Ðµ может быть выполнена без выбранного узла."
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1780,42 +1672,59 @@ msgid "Exit the editor?"
msgstr "Выйти из редактора?"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Project Manager?"
-msgstr "Менеджер проектов"
+msgstr "Открыть менеджер проектов?"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Quit"
-msgstr "Сохранить файл"
+msgstr "Сохранить и выйти"
#: editor/editor_node.cpp
msgid "Save changes to the following scene(s) before quitting?"
-msgstr ""
+msgstr "Сохранить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² Ñледующей Ñцене(Ñ‹) перед выходом?"
#: editor/editor_node.cpp
msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
+"Сохранить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² Ñледующей Ñцене(Ñ‹) перед открытием менеджера проектов?"
+
+#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+"Этот параметр уÑтаревший. Ситуации, в которых необходимо принудительное "
+"обновление ÑчитаютÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹. ПроÑьба Ñообщить."
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Выберите главную Ñцену"
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
-msgstr ""
+#, fuzzy
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
+msgstr "Ðе удаетÑÑ Ð²ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ плагин: '"
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
-msgstr ""
+#, fuzzy
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
+msgstr "Ðе удаетÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ поле script Ð´Ð»Ñ Ð¿Ð»Ð°Ð³Ð¸Ð½Ð°: ' res://addons/"
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
-msgstr ""
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "Ðе удалоÑÑŒ загрузить Ñкрипт из иÑточника: '"
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
-msgstr ""
+#, fuzzy
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
+msgstr "Ðе удалоÑÑŒ загрузить Ñкрипт из иÑточника: '"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
+msgstr "Ðе удалоÑÑŒ загрузить Ñкрипт из иÑточника: '"
#: editor/editor_node.cpp
msgid ""
@@ -1827,7 +1736,7 @@ msgstr ""
"Чтобы её изменить нужно Ñоздать новую унаÑледованную Ñцену."
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr "ЯÑно"
@@ -1841,14 +1750,14 @@ msgstr ""
"проекта."
#: editor/editor_node.cpp
-msgid "Error loading scene."
-msgstr "Ошибка загрузки Ñцены."
-
-#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
msgstr "Сцена '%s' имеет иÑпорченные завиÑимоÑти:"
#: editor/editor_node.cpp
+msgid "Clear Recent Scenes"
+msgstr "ОчиÑтить поÑледние Ñцены"
+
+#: editor/editor_node.cpp
msgid "Save Layout"
msgstr "Сохранить макет"
@@ -1863,7 +1772,7 @@ msgstr "По-умолчанию"
#: editor/editor_node.cpp
msgid "Switch Scene Tab"
-msgstr "Смена вкладки Ñо Ñценой"
+msgstr "Переключить вкладку Ñцены"
#: editor/editor_node.cpp
msgid "%d more file(s)"
@@ -1878,11 +1787,10 @@ msgid "Distraction Free Mode"
msgstr "Свободный режим"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Toggle distraction-free mode."
-msgstr "Свободный режим"
+msgstr "Переключить режим без отвлечениÑ."
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr "Сцена"
@@ -2050,7 +1958,7 @@ msgstr ""
#: editor/editor_node.cpp
msgid "Sync Scene Changes"
-msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ на Ñцене"
+msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ в Ñцене"
#: editor/editor_node.cpp
msgid ""
@@ -2120,6 +2028,10 @@ msgstr "ВопроÑÑ‹ и ответы"
msgid "Issue Tracker"
msgstr "СиÑтема отÑÐ»ÐµÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¾ÑˆÐ¸Ð±Ð¾Ðº"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "ОбщеÑтвенные"
+
#: editor/editor_node.cpp
msgid "About"
msgstr "О движке"
@@ -2128,7 +2040,7 @@ msgstr "О движке"
msgid "Play the project."
msgstr "ЗапуÑтить проект."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr "ВоÑпроизвеÑти"
@@ -2144,7 +2056,7 @@ msgstr "ПриоÑтановить Ñцену"
msgid "Stop the scene."
msgstr "ОÑтановить Ñцену."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr "ОÑтановить"
@@ -2217,6 +2129,15 @@ msgid "Object properties."
msgstr "СвойÑтва объекта."
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ быть потерÑны!"
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr "Импорт"
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr "Ð¤Ð°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑтема"
@@ -2230,15 +2151,7 @@ msgstr "Вывод"
#: editor/editor_node.cpp
msgid "Don't Save"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr "Переимпортировать"
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr "Обновление"
+msgstr "Ðе ÑохранÑть"
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
@@ -2265,9 +2178,8 @@ msgid "Open & Run a Script"
msgstr "Открыть и запуÑтить Ñкрипт"
#: editor/editor_node.cpp
-#, fuzzy
msgid "New Inherited"
-msgstr "ÐÐ¾Ð²Ð°Ñ ÑƒÐ½Ð°ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¡Ñ†ÐµÐ½Ð°.."
+msgstr "ÐÐ¾Ð²Ð°Ñ ÑƒÐ½Ð°ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð½Ð°Ñ Ð¡Ñ†ÐµÐ½Ð°"
#: editor/editor_node.cpp
msgid "Load Errors"
@@ -2301,11 +2213,28 @@ msgstr "Открыть Ñледующий редактор"
msgid "Open the previous Editor"
msgstr "Открыть предыдущий редактор"
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr "Создание предпроÑмотра"
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr "Миниатюра.."
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr "УÑтановленные плагины:"
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr "Обновление"
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "ВерÑиÑ:"
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr "Ðвтор:"
@@ -2338,7 +2267,8 @@ msgid "Frame %"
msgstr "Кадр %"
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+#, fuzzy
+msgid "Physics Frame %"
msgstr "ФикÑированный кадр %"
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2357,35 +2287,17 @@ msgstr "СущноÑть"
msgid "Frame #:"
msgstr "Кадр #:"
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr "ПожалуйÑта дождитеÑÑŒ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ ÑканированиÑ."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ñцена должна быть Ñохранена Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ импорта."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr "Сохранить и переимпортировать"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr "Переимпортировать"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr "Переимпортировать изменённые реÑурÑÑ‹"
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
-msgstr ""
+msgstr "Выберите уÑтройÑтво из ÑпиÑка"
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
"Please add a runnable preset in the export menu."
msgstr ""
+"Ðе найден рабочий ÑкÑпортер Ð´Ð»Ñ Ñтой платформы.\n"
+"ПожалуйÑта, добавьте его в меню ÑкÑпорта."
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
@@ -2488,10 +2400,6 @@ msgid "Importing:"
msgstr "ИмпортируетÑÑ:"
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr "Загрузка шаблонов ÑкÑпорта"
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð²ÐµÑ€ÑиÑ:"
@@ -2526,60 +2434,73 @@ msgid "Cannot navigate to '"
msgstr "Ðе удалоÑÑŒ перейти к '"
#: editor/filesystem_dock.cpp
-#, fuzzy
+msgid "View items as a grid of thumbnails"
+msgstr "ПроÑмотр Ñлементов в виде миниатюр"
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr "ПроÑмотр Ñлементов в виде ÑпиÑка"
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
-msgstr "Сохранить и переимпортировать"
+"Status: Import of file failed. Please fix file and reimport manually."
+msgstr ""
+"\n"
+"СтатуÑ: Импорт файла не удалÑÑ. ПожалуйÑта, иÑправьте файл и "
+"переимпортируйте вручную."
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid ""
"\n"
"Source: "
-msgstr "ИÑточник:"
+msgstr ""
+"\n"
+"ИÑточник: "
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
-msgstr "Файл Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸ иÑходный файлы Ñовпадают, нечего делать."
+msgid "Cannot move/rename resources root."
+msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑтить/переименовать корень."
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
-msgstr ""
+msgid "Cannot move a folder into itself.\n"
+msgstr "Ðевозможно перемеÑтить папку в ÑебÑ.\n"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
-msgstr "Путь Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸ иÑходный пути Ñовпадают, нечего делать."
+msgid "Error moving:\n"
+msgstr "Ошибка перемещениÑ:\n"
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
-msgstr "Ðевозможно перемеÑтить каталоги внутрь ÑебÑ."
+msgid "Unable to update dependencies:\n"
+msgstr "Ðе удаетÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ завиÑимоÑти:\n"
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
-msgstr ""
+msgid "No name provided"
+msgstr "Ðе указано имÑ"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error moving file:\n"
-msgstr "Ошибка при загрузке изображениÑ:"
+msgid "Provided name contains invalid characters"
+msgstr "Ð˜Ð¼Ñ Ñодержит недопуÑтимые Ñимволы"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "Ошибка импортированиÑ:"
+msgid "No name provided."
+msgstr "Ðе предоÑтавлено имÑ."
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
-msgstr "Ðевозможно работать Ñ '..'"
+msgid "Name contains invalid characters."
+msgstr "Ð˜Ð¼Ñ Ñодержит недопуÑтимые Ñимволы."
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
-msgstr "Выберете новое Ð¸Ð¼Ñ Ð¸ раÑположение длÑ:"
+msgid "A file or folder with this name already exists."
+msgstr "Файл или папка Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем уже ÑущеÑтвует."
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
-msgstr "Файлы не выбраны!"
+msgid "Renaming file:"
+msgstr "Переименование файла:"
+
+#: editor/filesystem_dock.cpp
+msgid "Renaming folder:"
+msgstr "Переименование папки:"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2590,40 +2511,36 @@ msgid "Collapse all"
msgstr "Свернуть вÑе"
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
-msgstr "ПроÑмотреть в проводнике"
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
-msgstr "Добавить ÑкземплÑÑ€"
+msgid "Copy Path"
+msgstr "Копировать путь"
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
-msgstr "Редактировать завиÑимоÑти.."
+msgid "Rename.."
+msgstr "Переименовать.."
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
-msgstr "ПроÑмотреть владельцев.."
+msgid "Move To.."
+msgstr "ПеремеÑтить в.."
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr "Копировать путь"
+msgid "New Folder.."
+msgstr "ÐÐ¾Ð²Ð°Ñ Ð¿Ð°Ð¿ÐºÐ°.."
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
-msgstr "Переименовать или ПеремеÑтить.."
+msgid "Show In File Manager"
+msgstr "ПроÑмотреть в проводнике"
#: editor/filesystem_dock.cpp
-msgid "Move To.."
-msgstr "ПеремеÑтить в.."
+msgid "Instance"
+msgstr "Добавить ÑкземплÑÑ€"
#: editor/filesystem_dock.cpp
-msgid "Info"
-msgstr "ИнформациÑ"
+msgid "Edit Dependencies.."
+msgstr "Редактировать завиÑимоÑти.."
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
-msgstr "Переимпортировать.."
+msgid "View Owners.."
+msgstr "ПроÑмотреть владельцев.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2650,11 +2567,18 @@ msgid ""
"Scanning Files,\n"
"Please Wait.."
msgstr ""
+"Сканирование файлов,\n"
+"пожалуйÑта, подождите..."
#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "ПеремеÑтить"
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr "Переименовать"
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr "Добавить в группу"
@@ -2664,74 +2588,81 @@ msgid "Remove from Group"
msgstr "Удалить из группы"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Import as Single Scene"
-msgstr "Импортирование Ñцены.."
+msgstr "Импорт в виде единой Ñцены"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr "Импортировать Ñ Ð¾Ñ‚Ð´ÐµÐ»ÐµÐ½Ð½Ñ‹Ð¼Ð¸ анимациÑми"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
-msgstr ""
+msgstr "Импортировать Ñ Ð¾Ñ‚Ð´ÐµÐ»ÐµÐ½Ð½Ñ‹Ð¼Ð¸ материалами"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects"
-msgstr ""
+msgstr "Импортировать Ñ Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð½Ñ‹Ð¼Ð¸ объектами"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects+Materials"
-msgstr ""
+msgstr "Импортировать Ñ Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð½Ñ‹Ð¼Ð¸ объектами и материалами"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr "Импортировать Ñ Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð½Ñ‹Ð¼Ð¸ объектами и анимациÑми"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr "Импортировать Ñ Ð¾Ñ‚Ð´ÐµÐ»ÐµÐ½Ð½Ñ‹Ð¼Ð¸ материалами и анимациÑми"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr "Импортировать Ñ Ñ€Ð°Ð·Ð´ÐµÐ»ÐµÐ½Ð½Ñ‹Ð¼Ð¸ объектами, материалами и анимациÑми"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Import as Multiple Scenes"
-msgstr "Импорт 3D Ñцены"
+msgstr "Импорт в виде неÑкольких Ñцен"
#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes+Materials"
-msgstr ""
+msgstr "Импортировать как неÑколько Ñцен и материалов"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr "Импортировать Ñцену"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr "Импортирование Ñцены.."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr "ЗапуÑк пользовательÑкого Ñкрипта.."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr "Ðе могу загрузить Ñкрипт Ð´Ð»Ñ Ð¿Ð¾ÑÑ‚-импорта:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr "Повреждённый/Ñломанный Ñкрипт Ð´Ð»Ñ Ð¿Ð¾ÑÑ‚-импорта (проверьте конÑоль):"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr "Ошибка запуÑка поÑÑ‚-импорт Ñкрипта:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr "Сохранение.."
#: editor/import_dock.cpp
msgid "Set as Default for '%s'"
-msgstr ""
+msgstr "УÑтановить по умолчанию Ð´Ð»Ñ '%s'"
#: editor/import_dock.cpp
msgid "Clear Default for '%s'"
-msgstr ""
+msgstr "ОчиÑтить по умолчанию Ð´Ð»Ñ '%s'"
#: editor/import_dock.cpp
msgid " Files"
@@ -2749,579 +2680,6 @@ msgstr "ПредуÑтановка.."
msgid "Reimport"
msgstr "Переимпортировать"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr "Ðет битовой маÑки Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr "Конечный путь пуÑÑ‚."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr "Конечный путь должен быть полным путём к реÑурÑу."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr "Конечный путь должен ÑущеÑтвовать."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr "Путь ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¿ÑƒÑÑ‚!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr "Импорт битовой маÑки"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr "ИÑходные текÑтура(Ñ‹):"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr "Целевой путь:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr "ПринÑть"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr "Ð‘Ð¸Ñ‚Ð¾Ð²Ð°Ñ Ð¼Ð°Ñка"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr "Ðет иÑходного файл шрифта!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr "Ðет целевого реÑурÑа шрифта!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-"ÐедопуÑтимое раÑширение файла.\n"
-"ПожалуйÑта, иÑпользуйте .font."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr "Ðе удалоÑÑŒ загрузить/иÑполнить иÑходный шрифт."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr "Ðевозможно Ñохранить шрифт."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr "ИÑходный шрифт:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr "ИÑходный размер шрифта:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr "РеÑÑƒÑ€Ñ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
-"Съешь ещё Ñтих мÑгких французÑких булок да выпей чаю. \n"
-"The quick brown fox jumps over the lazy dog.\n"
-"0123456789`!@#$%^&*()_+-=\\/."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr "Проверка:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr "Опции:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr "Импортирование шрифта"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-"Это итак файл шрифта Godot, пожалуйÑта иÑпользуйте BitMapFont вмеÑто него."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ BitMapFont файла."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr "Ошибка инициализации FreeType."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "ÐеизвеÑтный формат шрифта."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "Ошибка загрузки шрифта."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr "ÐедопуÑтимый размер шрифта."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr "Ðеверный пользовательÑкий иÑточник Ð´Ð»Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ð°."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Шрифт"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr "Ðет полиÑетки Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ!"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr "Импорт одиночной полиÑетки"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð¿Ð¾Ð»Ð¸Ñетка(и):"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr "ПолиÑетка"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "ПоверхноÑтей %d"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr "Ðет ÑÑмплов Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°!"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr "Импорт аудио ÑÑмплов"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr "ИÑходный ÑÑмпл(Ñ‹):"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr "Ðудио ÑÑмпл"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr "ÐÐ¾Ð²Ð°Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ°"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr "Параметры анимации"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr "Флаги"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr "FPS:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr "Оптимизатор"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr "МакÑ. Ð»Ð¸Ð½ÐµÐ¹Ð½Ð°Ñ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ñть"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr "МакÑ. ÑƒÐ³Ð»Ð¾Ð²Ð°Ñ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ñть"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr "МакÑ. угол"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr "Дорожки"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr "Ðач(Ñ.)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr "Кон(Ñ.)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr "Зациклить"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr "Фильтры"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr "Путь к иÑточнику пуÑÑ‚."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr "Ðе могу загрузить Ñкрипт поÑÑ‚-процеÑÑа."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr "Ðекорректный/поврежденный Ñценарий Ð´Ð»Ñ Ð¿Ð¾ÑÑ‚-импорта."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr "Ошибка Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñцены."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr "Импорт 3D Ñцены"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ñцена:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr "Та же, что и у целевой Ñцены"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr "Общий"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr "Ð¦ÐµÐ»ÐµÐ²Ð°Ñ Ð¿Ð°Ð¿ÐºÐ° текÑтуры:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr "Скрипт поÑÑ‚-процеÑÑа:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr "ПользовательÑкий тип корневого узла:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr "Ðвто"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr "Ð˜Ð¼Ñ ÐºÐ¾Ñ€Ð½ÐµÐ²Ð¾Ð³Ð¾ узла:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr "ОтÑутÑтвуют Ñледующие файлы:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr "Импортировать в любом Ñлучае"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Отмена"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr "Импортировать и Открыть"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-"Ð ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€ÑƒÐµÐ¼Ð°Ñ Ñцена не была Ñохранена, открыть импортированную Ñцену в любом "
-"Ñлучае?"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr "Импорт изображениÑ:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr "Ðевозможно импортировать файл поверх негоже:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr "Ðевозможно локализовать путь: %s (уже локальный)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr "ÐÐ½Ð¸Ð¼Ð°Ñ†Ð¸Ñ 3D Ñцены"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr "ÐеÑжатый"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr "Сжатие без потери качеÑтва (PNG)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr "Сжатие Ñ Ð¿Ð¾Ñ‚ÐµÑ€Ñми (WebP)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr "Сжатие (VRAM)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr "Формат текÑтуры"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr "КачеÑтво ÑÐ¶Ð°Ñ‚Ð¸Ñ Ñ‚ÐµÐºÑтур (WebP):"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr "Параметры текÑтуры"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr "ПожалуйÑта, укажите некоторые файлы!"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr "Ð”Ð»Ñ Ð°Ñ‚Ð»Ð°Ñа нужен Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ 1 файл."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr "Ошибка импортированиÑ:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr "Только один файл необходим Ð´Ð»Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ текÑтуры."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr "МакÑимальный размер текÑтуры:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr "Импортировать текÑтуры Ð´Ð»Ñ Ð°Ñ‚Ð»Ð°Ñа (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr "Размер Ñчейки:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr "Ð‘Ð¾Ð»ÑŒÑˆÐ°Ñ Ñ‚ÐµÐºÑтура"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr "Импорт больших текÑтур (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
-msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ñ‚ÐµÐºÑтура"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
-msgstr "Ð‘Ð°Ð·Ð¾Ð²Ð°Ñ Ñ‚ÐµÐºÑтура атлаÑа"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
-msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ñ‚ÐµÐºÑтура(Ñ‹)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
-msgstr "Импорт текÑтур Ð´Ð»Ñ 2D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
-msgstr "Импорт текÑтур Ð´Ð»Ñ 3D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
-msgstr "Импорт текÑтур"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
-msgstr "2D текÑтура"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
-msgstr "3D текÑтура"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
-msgstr "ТекÑтура атлаÑа"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-"Ð’ÐИМÐÐИЕ: Импортирование 2D текÑтур не обÑзательно. ПроÑто Ñкопируйте png/"
-"jpg файлы в папку проекта."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr "Обрезать пуÑтое проÑтранÑтво."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr "ТекÑтура"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr "Импорт большой текÑтуры"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr "Загрузка иÑходного изображениÑ"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr "Ðарезка"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr "Ð’Ñтавка"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr "Сохранение"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr "Ðевозможно Ñохранить большую текÑтуру:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr "ПоÑтроение атлаÑа длÑ:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr "Загрузка изображениÑ:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr "Ðевозможно загрузить изображение:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr "Преобразование изображений"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr "Обрезка изображений"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr "Блитирование Изображений"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr "Ðевозможно Ñохранить изображение атлаÑа:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr "Ðевозможно Ñохранить конвертированную текÑтуру:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr "Ðеверный иÑточник!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr "Ðеверный иÑточник перевода!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr "Колонка"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr "Язык"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr "Ðет Ñлементов Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr "Ðет конечного пути!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr "Импорт переводов"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr "Ðе удалоÑÑŒ импортировать!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr "Импортирование перевода"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr "ИÑходный CSV:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr "Игнорировать первую Ñтроку"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr "Сжимать"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr "Добавить к проекту (project.godot)"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr "Импортировать Ñзыки:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr "Перевод"
-
#: editor/multi_node_edit.cpp
msgid "MultiNode Set"
msgstr "Мульти-узловый набор"
@@ -3334,6 +2692,48 @@ msgstr "Группы"
msgid "Select a Node to edit Signals and Groups."
msgstr "Выберите узел Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñигналов и групп."
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
+msgstr "Создан полигон"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Изменён полигон"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
+msgstr "Ð’Ñтавить точку"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Удалена точка полигона"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
+msgstr "Удалить полигон и точку"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
+msgstr "Создать новый полигон Ñ Ð½ÑƒÐ»Ñ."
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+"Редактирование полигона:\n"
+"ЛКМ: перемеÑтить точку.\n"
+"Ctrl+ЛКМ: разделить Ñегмент.\n"
+"ПКМ: удалить точку."
+
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Toggle Autoplay"
msgstr "Переключено автовоÑпроизведение"
@@ -3490,7 +2890,6 @@ msgstr "Ðазвание анимации:"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3518,9 +2917,8 @@ msgid "New name:"
msgstr "Ðовое имÑ:"
#: editor/plugins/animation_tree_editor_plugin.cpp
-#, fuzzy
msgid "Edit Filters"
-msgstr "Редактировать фильтры узла"
+msgstr "Редактировать фильтры"
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
@@ -3601,10 +2999,6 @@ msgid "Delete Input"
msgstr "Удалить вход"
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr "Переименовать"
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr "Дерево анимации дейÑтвительно."
@@ -3660,64 +3054,181 @@ msgstr "Редактировать фильтры узла"
msgid "Filters.."
msgstr "Фильтры.."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
-msgstr "ПарÑинг %d треугольников:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr "ОÑвободить"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
-msgstr "Треугольник #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
+msgstr "Содержание:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
-msgstr "Параметры Ð·Ð°Ð¿ÐµÐºÐ°Ð½Ð¸Ñ Ñвета:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
+msgstr "ПроÑмотр Файлов"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
-msgstr "ПарÑинг геометрии"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
+msgstr "Ðевозможно определить Ð¸Ð¼Ñ Ñ…Ð¾Ñта:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
-msgstr "ИÑправление Ñвета"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
+msgstr "Ðе удаетÑÑ Ñ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ñ‚ÑŒ."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
-msgstr "Создание BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
+msgstr "Ошибка подключениÑ, попробуйте еще раз."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
-msgstr "Создание октодерева Ñвета"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Ðе удаетÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑÑ."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
-msgstr "Создание текÑтуры октодерева"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
+msgstr "Ðе удаетÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑÑ Ðº хоÑту:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
-msgstr "Передача в карты оÑвещениÑ:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
+msgstr "Ðет ответа от хоÑта:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
-msgstr "Выделение текÑтуры #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Ðет ответа."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
-msgstr "Запекание треугольников #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
+msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ удалÑÑ, код:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
-msgstr "ПоÑÑ‚-обработка текÑтуры #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
+msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ прошел."
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
-msgstr "Запечь!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
+msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ прошел, Ñлишком много перенаправлений"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
+msgstr "ЦикличеÑкое перенаправление."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Ðе удалоÑÑŒ:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr "ÐеÑовпадение Ñ…Ñша загрузки, возможно файл был изменен."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr "ОжидаетÑÑ:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr "Получил:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr "Ðе удалоÑÑŒ проверить sha256 Ñ…Ñш"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr "Ошибка Загрузки Шаблона:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr "Извлечение:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr "ИнициализациÑ..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting.."
+msgstr "Подключение.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr "Запрашиваю.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
+msgstr "Ошибка во Ð²Ñ€ÐµÐ¼Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñа"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr "ПроÑтой"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr "Повторить"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr "Ошибка Загрузки"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr "Загрузка Ñтого шаблона уже идет!"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr "первый"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr "предыдущий"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr "далее"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr "поÑледний"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "Ð’Ñе"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr "Плагины"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "Сортировать:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr "Обратно"
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
-msgstr "Ð¡Ð±Ñ€Ð¾Ñ Ð·Ð°Ð¿ÐµÐºÐ°Ð½Ð¸Ñ Ñвета (начать Ñначала)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "КатегориÑ:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "Сайт:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr "Поддержка.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "Официальные"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr "ТеÑтируемые"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr "ZIP файл аÑÑетов"
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr "ПредпроÑмотр"
@@ -3760,12 +3271,16 @@ msgid "Edit CanvasItem"
msgstr "Редактировать CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
-msgstr "Изменить привÑзку"
+msgid "Anchors only"
+msgstr "Только ÑкорÑ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors and Margins"
+msgstr "Изменить ÑÐºÐ¾Ñ€Ñ Ð¸ размеры"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
-msgstr "МаÑштаб (%):"
+msgid "Change Anchors"
+msgstr "Изменить привÑзку"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Paste Pose"
@@ -3808,7 +3323,7 @@ msgid ""
"(same as Alt+RMB in select mode)."
msgstr ""
"Показывает ÑпиÑок вÑех объектов нажатой позиции,\n"
-"так же как и Alt+ПКМ в режиме выделениÑ."
+"(так же как и Alt+ПКМ в режиме выделениÑ)."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Click to change object's rotation pivot."
@@ -3819,60 +3334,73 @@ msgid "Pan Mode"
msgstr "Режим оÑмотра"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
-msgstr "ЗафикÑировать выбранный объект."
+msgid "Toggles snapping"
+msgstr "Переключение прилипаниÑ"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
-msgstr "Разблокировать выбранный объект."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
+msgstr "ИÑпользовать привÑзку"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
-msgstr "Делает потомков объекта невыбираемыми."
+msgid "Snapping options"
+msgstr "Параметры прилипаниÑ"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
-msgstr "ВоÑÑтанавливает возможноÑть выбора потомков объекта."
+msgid "Snap to grid"
+msgstr "Прилипание к Ñетке"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "Редактировать"
+msgid "Use Rotation Snap"
+msgstr "ИÑпользовать привÑзку вращениÑ"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
-msgstr "ИÑпользовать привÑзку"
+msgid "Configure Snap..."
+msgstr "ÐаÑтроить прилипание.."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
-msgstr "Показать Ñетку"
+msgid "Snap Relative"
+msgstr "ОтноÑÐ¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¸Ð²Ñзка"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
-msgstr "ИÑпользовать привÑзку вращениÑ"
+msgid "Use Pixel Snap"
+msgstr "ИÑпользовать попикÑельную привÑзку"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
-msgstr "ОтноÑÐ¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¸Ð²Ñзка"
+msgid "Smart snapping"
+msgstr "Ð˜Ð½Ñ‚ÐµÐ»Ð»ÐµÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ð°Ñ Ð¿Ñ€Ð¸Ð²Ñзка"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
-msgstr "ÐаÑтроить привÑзку.."
+msgid "Snap to parent"
+msgstr "ПривÑзать к родителю"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
-msgstr "ИÑпользовать попикÑельную привÑзку"
+msgid "Snap to node anchor"
+msgstr "ПривÑзка к Ñкорю узла"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
-msgstr "Скелет.."
+msgid "Snap to node sides"
+msgstr "ПривÑзка к Ñторонам узла"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr "ПривÑзка к другим узлам"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr "ЗафикÑировать выбранный объект."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr "Разблокировать выбранный объект."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
+msgstr "Делает потомков объекта невыбираемыми."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
+msgstr "ВоÑÑтанавливает возможноÑть выбора потомков объекта."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Make Bones"
@@ -3900,12 +3428,17 @@ msgid "View"
msgstr "Обзор"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
-msgstr "СброÑить маÑштаб"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr "Показать Ñетку"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show helpers"
+msgstr "Показывать помощники"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
-msgstr "УÑтановить маÑштаб.."
+msgid "Show rulers"
+msgstr "Показывать линейки"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -3916,8 +3449,8 @@ msgid "Frame Selection"
msgstr "Кадрировать выбранное"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
-msgstr "ПривÑзка"
+msgid "Layout"
+msgstr "Макет"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Keys"
@@ -3940,12 +3473,20 @@ msgid "Clear Pose"
msgstr "ОчиÑтить позу"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
-msgstr "УÑтановить значение"
+msgid "Drag pivot from mouse position"
+msgstr "Перетащить точку Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð¸Ð· Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¼Ñ‹ÑˆÐ¸"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Set pivot at mouse position"
+msgstr "УÑтановить точку Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð½Ð° меÑте ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð¼Ñ‹ÑˆÐ¸"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
-msgstr "ПривÑзка (пикÑели):"
+msgid "Multiply grid step by 2"
+msgstr "Умножить шаг Ñетки на 2"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Divide grid step by 2"
+msgstr "Разделить шаг Ñетки на 2"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
@@ -3955,23 +3496,28 @@ msgstr "Добавить %s"
msgid "Adding %s..."
msgstr "Добавление %s..."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr "Создать узел"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr "Ошибка Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñцены из %s"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr "Ок :("
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr "Ðе выбран родитель Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñ‚Ð¾Ð¼ÐºÐ°."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr "Эта Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ одного выбранного узла."
@@ -3987,45 +3533,6 @@ msgstr ""
"Drag & drop + Shift : Добавить узел к выделению\n"
"Drag & drop + Alt : Изменить тип узла"
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr "Создан полигон"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr "Изменён полигон"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr "Удалена точка полигона"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Создать новый полигон Ñ Ð½ÑƒÐ»Ñ."
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "Создан Poly3D"
@@ -4035,14 +3542,6 @@ msgid "Set Handle"
msgstr "УÑтановить обработчик"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr "Создание библиотеки полиÑеток"
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr "Миниатюра.."
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr "Удалить Ñлемент %d?"
@@ -4065,19 +3564,38 @@ msgid "Update from Scene"
msgstr "Обновить из Ñцены"
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr "ПлоÑкий0"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr "ПлоÑкий1"
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
-msgid "Modify Curve Point"
-msgstr "Изменить кривую"
+msgid "Ease in"
+msgstr "Переход В"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Ease out"
+msgstr "Переход ИЗ"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr "Сглаженный"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr "Изменить точку кривой"
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Tangent"
-msgstr "Изменена карта кривой"
+msgstr "Изменить каÑательную кривой"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Load Curve Preset"
-msgstr "Загрузить заготовку"
+msgstr "Загрузить заготовку кривой"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Add point"
@@ -4088,31 +3606,28 @@ msgid "Remove point"
msgstr "Удалить точку"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Left linear"
-msgstr "Линейный"
+msgstr "Левый линейный"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Right linear"
-msgstr "Вид Ñправа"
+msgstr "Правый линейный"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
msgstr "Загрузить заготовку"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Remove Curve Point"
-msgstr "Удалить точку пути"
+msgstr "Удалить точку кривой"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Toggle Curve Linear Tangent"
-msgstr ""
+msgstr "Переключить кривую линейный тангенÑ"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Hold Shift to edit tangents individually"
-msgstr ""
+msgstr "Удерживайте Shift, чтобы изменить каÑательные индивидуально"
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -4140,28 +3655,26 @@ msgid ""
"No OccluderPolygon2D resource on this node.\n"
"Create and assign one?"
msgstr ""
+"Ðет OccluderPolygon2D реÑурÑа у Ñтого узла.\n"
+"Создать и назначить?"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "Создан затенÑющий полигон"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr "Редактировать ÑущеÑтвующий полигон:"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr "ЛКМ: Передвинуть точку."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr "Ctrl+ЛКМ: Разделить Ñегмент."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr "ПКМ: Удалить точку."
@@ -4262,6 +3775,10 @@ msgid "Create Outline"
msgstr "Создать контур"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr "ПолиÑетка"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr "Создать вогнутое Ñтатичное тело"
@@ -4389,14 +3906,76 @@ msgstr "Случайный размер:"
msgid "Populate"
msgstr "Заполнить"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr "Запечь!"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr "Создать полиÑетку навигации.\n"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr "ОчиÑтить полиÑетку навигации."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr "ÐаÑтройка конфигурации..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr "РаÑчет размера Ñетки..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr "Создание карты выÑот..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Marking walkable triangles..."
+msgstr "Маркировка проходимых треугольников..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr "ПоÑтроение компактной карты выÑот..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Eroding walkable area..."
+msgstr "Размытие проходимого района..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Partitioning..."
+msgstr "Разметка..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr "Создание контуров..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr "Создание полиÑетки..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr "Преобразование в ÑобÑтвенную навигационную Ñетку..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr "ÐаÑтройка генератора навигационной Ñетки:"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr "Ðнализ геометрии..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
+msgstr "Сделано!"
+
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Create Navigation Polygon"
msgstr "Создать Navigation Polygon"
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
-msgstr "Удалить полигон и точку"
-
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Clear Emission Mask"
msgstr "МаÑка выброÑа очищена"
@@ -4432,9 +4011,8 @@ msgstr "МаÑка выброÑа загружена"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Particles"
-msgstr "Вершины"
+msgstr "ЧаÑтицы"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
@@ -4526,14 +4104,12 @@ msgid "Remove Point from Curve"
msgstr "Удалена точка Ñ ÐºÑ€Ð¸Ð²Ð¾Ð¹"
#: editor/plugins/path_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove Out-Control from Curve"
-msgstr "Передвинут выходной луч у кривой"
+msgstr "Удалить выходной контроль из кривой"
#: editor/plugins/path_2d_editor_plugin.cpp
-#, fuzzy
msgid "Remove In-Control from Curve"
-msgstr "Удалена точка Ñ ÐºÑ€Ð¸Ð²Ð¾Ð¹"
+msgstr "Удалить входной контроль из кривой"
#: editor/plugins/path_2d_editor_plugin.cpp
#: editor/plugins/path_editor_plugin.cpp
@@ -4572,13 +4148,15 @@ msgstr "Точка Кривой #"
#: editor/plugins/path_editor_plugin.cpp
msgid "Set Curve Point Position"
-msgstr "УÑтановить позицию точки кривой"
+msgstr "УÑтановить положение точки кривой"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
msgstr "УÑтановить позицию входа кривой"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
msgstr "УÑтановить позицию выхода кривой"
@@ -4591,14 +4169,12 @@ msgid "Remove Path Point"
msgstr "Удалить точку пути"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Remove Out-Control Point"
-msgstr "Передвинут выходной луч у кривой"
+msgstr "Удалить выходную контрольную точку"
#: editor/plugins/path_editor_plugin.cpp
-#, fuzzy
msgid "Remove In-Control Point"
-msgstr "Передвинут входной луч у кривой"
+msgstr "Удалить входную контрольную точку"
#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Create UV Map"
@@ -4641,6 +4217,14 @@ msgid "Scale Polygon"
msgstr "МаÑштабировать полигон"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "Редактировать"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr "Полигон -> UV"
@@ -4695,72 +4279,21 @@ msgstr "Загрузить реÑурÑ"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "Ð’Ñтавить"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr "ПарÑить BB Код"
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr "Длинна:"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr "Открыть ÑÑмпл(Ñ‹)"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr "ОШИБКÐ: Ðе удалоÑÑŒ загрузить ÑÑмпл!"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr "Добавить ÑÑмпл"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr "Переименовать ÑÑмпл"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr "Удалить ÑÑмпл"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr "16 Бит"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr "8 Бит"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr "Стерео"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr "Моно"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr "Формат"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr "Ð’Ñ‹Ñота"
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
-msgstr "ОчиÑтить недавние файлы"
+msgstr "ОчиÑтить Ðедавние Файлы"
#: editor/plugins/script_editor_plugin.cpp
msgid ""
"Close and save changes?\n"
"\""
msgstr ""
+"Закрыть и Ñохранить изменениÑ?\n"
+"\""
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4788,7 +4321,7 @@ msgstr "Сохранить тему как.."
#: editor/plugins/script_editor_plugin.cpp
msgid " Class Reference"
-msgstr ""
+msgstr " СÑылка на КлаÑÑ"
#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
@@ -4842,10 +4375,13 @@ msgstr "Закрыть документацию"
msgid "Close All"
msgstr "Закрыть вÑÑ‘"
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr "ЗапуÑтить"
+
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Toggle Scripts Panel"
-msgstr "Добавить в избранное"
+msgstr "Переключить панель Ñкриптов"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -4871,7 +4407,8 @@ msgstr "Шаг в"
msgid "Break"
msgstr "Пауза"
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr "Продолжить"
@@ -4880,21 +4417,8 @@ msgid "Keep Debugger Open"
msgstr "ОÑтавить отладчик открытым"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Debug with external editor"
-msgstr "Открыть Ñледующий редактор"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr "Окно"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr "Двигать влево"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr "Двигать вправо"
+msgstr "Отладка Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ внешнего редактора"
#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
@@ -4953,7 +4477,7 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
-msgstr ""
+msgstr "Можно перетащить только реÑÑƒÑ€Ñ Ð¸Ð· файловой ÑиÑтемы."
#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
@@ -4982,8 +4506,9 @@ msgid "Cut"
msgstr "Вырезать"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "Копировать"
@@ -5002,9 +4527,8 @@ msgid "Move Down"
msgstr "ПеремеÑтить вниз"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Delete Line"
-msgstr "Удалить точку"
+msgstr "Удалить Ñтроку"
#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
@@ -5247,10 +4771,6 @@ msgid "View Plane Transform."
msgstr "Вид Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð»Ð¾ÑкоÑти."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr "МаÑштабирование до %s%%."
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr "Поворот на %s градуÑов."
@@ -5267,10 +4787,6 @@ msgid "Top View."
msgstr "Вид Ñверху."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr "Верх"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr "Вид Ñзади."
@@ -5371,9 +4887,8 @@ msgid "Audio Listener"
msgstr "ПроÑлушиватель звука"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Doppler Enable"
-msgstr "Включить"
+msgstr "ДоплеровÑкий режим"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
@@ -5404,26 +4919,26 @@ msgid "Freelook Speed Modifier"
msgstr "Обзор модификатор ÑкороÑти"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "preview"
-msgstr "ПредпроÑмотр"
+msgstr "предпроÑмотр"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "XForm Dialog"
msgstr "XForm диалоговое окно"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Select Mode (Q)\n"
-msgstr "Режим выделениÑ"
+msgstr "Режим Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ (Q)\n"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid ""
"Drag: Rotate\n"
"Alt+Drag: Move\n"
"Alt+RMB: Depth list selection"
-msgstr "Alt+ПКМ: СпиÑок выбора глубины"
+msgstr ""
+"ТÑнуть: Вращение\n"
+"Alt+ТÑнуть: Перемещение\n"
+"Ðльт+ПКМ: Выбор по ÑпиÑку"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
@@ -5502,6 +5017,10 @@ msgid "Transform"
msgstr "Преобразование"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr "ÐаÑтроить привÑзку.."
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr "Локальные координаты"
@@ -5647,6 +5166,10 @@ msgid "Speed (FPS):"
msgstr "СкороÑть (FPS):"
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr "Зациклить"
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr "Кадры анимации"
@@ -5659,21 +5182,20 @@ msgid "Insert Empty (After)"
msgstr "Ð’Ñтавить пуÑтоту (ПоÑле)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr "Вверх"
+msgid "Move (Before)"
+msgstr "ПеремеÑтить (до)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
-msgstr "Вниз"
+msgid "Move (After)"
+msgstr "ПеремеÑтить (поÑле)"
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "StyleBox предпроÑмотр:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#, fuzzy
msgid "Set Region Rect"
-msgstr "УÑтановить прÑмоугольник региона"
+msgstr "Задать регион"
#: editor/plugins/texture_region_editor_plugin.cpp
msgid "Snap Mode:"
@@ -5733,18 +5255,20 @@ msgid "Remove Item"
msgstr "Удалить Ñлемент"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All Items"
-msgstr "Удалить Ñлемент клаÑÑа"
+msgstr "Удалить вÑе Ñлементы"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All"
-msgstr "Удалить"
+msgstr "Удалить вÑе"
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Edit theme.."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
-msgstr "Тема"
+msgid "Theme editing menu."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Class Items"
@@ -5828,11 +5352,14 @@ msgid "Style"
msgstr "Стиль"
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr "Шрифт"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr "Цвет"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase Selection"
msgstr "ОчиÑтить выделенное"
@@ -5841,16 +5368,14 @@ msgid "Paint TileMap"
msgstr "РиÑовать карту тайлов"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Line Draw"
-msgstr "Линейный"
+msgstr "РиÑовать линиÑми"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rectangle Paint"
-msgstr ""
+msgstr "ПрÑÐ¼Ð¾ÑƒÐ³Ð¾Ð»ÑŒÐ½Ð°Ñ Ð¿Ð¾ÐºÑ€Ð°Ñка"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Bucket Fill"
msgstr "Заливка"
@@ -5879,8 +5404,8 @@ msgid "Mirror Y"
msgstr "Зеркально по Y"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
-msgstr "Заливка"
+msgid "Paint Tile"
+msgstr "РиÑовать тайл"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Pick Tile"
@@ -5943,6 +5468,10 @@ msgid "Delete preset '%s'?"
msgstr "Удалить '%s'?"
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr "Шаблоны ÑкÑпорта Ð´Ð»Ñ Ñтой платформы отÑутÑтвуют/повреждены: "
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr "ПредуÑтановки"
@@ -5995,18 +5524,16 @@ msgid "Make Patch"
msgstr "Создать латку"
#: editor/project_export.cpp
-#, fuzzy
msgid "Features"
-msgstr "ТекÑтура"
+msgstr "СвойÑтва"
#: editor/project_export.cpp
msgid "Custom (comma-separated):"
-msgstr ""
+msgstr "ПользовательÑкий (через запÑтую):"
#: editor/project_export.cpp
-#, fuzzy
msgid "Feature List:"
-msgstr "СпиÑок методов:"
+msgstr "СпиÑок ÑвойÑтв:"
#: editor/project_export.cpp
msgid "Export PCK/Zip"
@@ -6017,30 +5544,56 @@ msgid "Export templates for this platform are missing:"
msgstr "Шаблоны ÑкÑпорта Ð´Ð»Ñ Ñтой платформы отÑутÑтвуют:"
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr "Шаблоны ÑкÑпорта Ð´Ð»Ñ Ñтой платформы отÑутÑтвуют/повреждены:"
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr "ЭкÑпорт в режиме отладки"
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
-msgstr "Ðеверный путь к проекту, путь должен ÑущеÑтвовать!"
+msgid "The path does not exist."
+msgstr "Путь не ÑущеÑтвует."
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
-msgstr "ÐедопуÑтимый путь, project.godot не должен приÑутÑтвовать."
+msgid "Please choose a 'project.godot' file."
+msgstr "ПожалуйÑта, выберите 'project.godot' файл."
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
-msgstr "ÐедопуÑтимый путь, project.godot должен приÑутÑтвовать."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
+msgstr "Ваш проект будет Ñоздан не в пуÑтой папке (лучше Ñоздать новую папку)."
+
+#: editor/project_manager.cpp
+msgid "Please choose a folder that does not contain a 'project.godot' file."
+msgstr "ПожалуйÑта, выберите папку, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð½Ðµ Ñодержит файл 'project.godot'."
#: editor/project_manager.cpp
msgid "Imported Project"
msgstr "Импортированный проект"
#: editor/project_manager.cpp
+msgid " "
+msgstr " "
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr "Было бы неплохо назвать ваш проект."
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr "Ðеверный путь к проекту (Что-то изменили?)."
#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in project path."
+msgstr "ОтÑутÑтвует project.godot в папке проекта."
+
+#: editor/project_manager.cpp
+msgid "Couldn't edit project.godot in project path."
+msgstr "Ðе удалоÑÑŒ изменить project.godot в папке проекта."
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr "Ðе удалоÑÑŒ Ñоздать project.godot в папке проекта."
@@ -6049,38 +5602,46 @@ msgid "The following files failed extraction from package:"
msgstr "Следующие файлы не удалоÑÑŒ Ð¸Ð·Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð· пакета:"
#: editor/project_manager.cpp
+msgid "Rename Project"
+msgstr "Переименовать проект"
+
+#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in the project path."
+msgstr "ОтÑутÑтвует project.godot в папке проекта."
+
+#: editor/project_manager.cpp
+msgid "New Game Project"
+msgstr "Ðовый игровой проект"
+
+#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "Импортировать ÑущеÑтвующий проект"
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
-msgstr "Путь к проекту (должен ÑущеÑтвовать):"
+msgid "Create New Project"
+msgstr "Создать новый проект"
+
+#: editor/project_manager.cpp
+msgid "Install Project:"
+msgstr "УÑтановить проект:"
#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Ðазвание проекта:"
#: editor/project_manager.cpp
-msgid "Create New Project"
-msgstr "Создать новый проект"
+msgid "Create folder"
+msgstr "Создать папку"
#: editor/project_manager.cpp
msgid "Project Path:"
msgstr "Путь к проекту:"
#: editor/project_manager.cpp
-msgid "Install Project:"
-msgstr "УÑтановить проект:"
-
-#: editor/project_manager.cpp
msgid "Browse"
msgstr "Обзор"
#: editor/project_manager.cpp
-msgid "New Game Project"
-msgstr "Ðовый игровой проект"
-
-#: editor/project_manager.cpp
msgid "That's a BINGO!"
msgstr "Бинго!"
@@ -6089,25 +5650,30 @@ msgid "Unnamed Project"
msgstr "БезымÑнный проект"
#: editor/project_manager.cpp
+msgid "Can't open project"
+msgstr "Ðе удаетÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ проект"
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr "Вы уверены, что хотите открыть более одного проекта?"
#: editor/project_manager.cpp
-#, fuzzy
msgid ""
"Can't run project: no main scene defined.\n"
"Please edit the project and set the main scene in \"Project Settings\" under "
"the \"Application\" category."
msgstr ""
-"Ðе назначена Ð³Ð»Ð°Ð²Ð½Ð°Ñ Ñцена. Хотите выбрать?\n"
-"Позже вы можете указать её в параметре \"main_scene\" раÑположенном\n"
-"в \"ÐаÑтройки проекта - ОÑновное - application\"."
+"Ðе могу запуÑтить проект: не назначена Ð³Ð»Ð°Ð²Ð½Ð°Ñ Ñцена.\n"
+"ПожалуйÑта, отредактируйте проект и уÑтановите главную Ñцену в «ÐаÑтройки "
+"проекта» в категории «Приложение»."
#: editor/project_manager.cpp
msgid ""
"Can't run project: Assets need to be imported.\n"
"Please edit the project to trigger the initial import."
msgstr ""
+"Ðе могу запуÑтить проект: аÑÑеты должны быть импортированы.\n"
+"ПожалуйÑта, отредактируйте проект, Ñто инициирует начальный импорт."
#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
@@ -6119,6 +5685,12 @@ msgstr "Удалить проект из ÑпиÑка? (Содержимое пÐ
#: editor/project_manager.cpp
msgid ""
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
"You are about the scan %s folders for existing Godot projects. Do you "
"confirm?"
msgstr ""
@@ -6130,10 +5702,6 @@ msgid "Project List"
msgstr "СпиÑок проектов"
#: editor/project_manager.cpp
-msgid "Run"
-msgstr "ЗапуÑтить"
-
-#: editor/project_manager.cpp
msgid "Scan"
msgstr "Сканировать"
@@ -6155,8 +5723,12 @@ msgstr "Выход"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Restart Now"
+msgstr "ПерезапуÑк (Ñек.):"
+
+#: editor/project_manager.cpp
msgid "Can't run project"
-msgstr "Ðе удаетÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑÑ."
+msgstr "Ðе удаетÑÑ Ð·Ð°Ð¿ÑƒÑтить проект"
#: editor/project_settings_editor.cpp
msgid "Key "
@@ -6191,17 +5763,14 @@ msgid "Add Input Action Event"
msgstr "Добавить дейÑтвие"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
@@ -6262,7 +5831,7 @@ msgstr "Изменить"
msgid "Joypad Axis Index:"
msgstr "Ð˜Ð½Ð´ÐµÐºÑ Ð¾Ñи джойÑтика:"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "ОÑÑŒ"
@@ -6282,57 +5851,61 @@ msgstr "Удалить дейÑтвие"
msgid "Add Event"
msgstr "Добавить Ñобытие"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "УÑтройÑтво"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "Кнопка"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "Ð›ÐµÐ²Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ°."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "ÐŸÑ€Ð°Ð²Ð°Ñ ÐºÐ½Ð¾Ð¿ÐºÐ°."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "СреднÑÑ ÐºÐ½Ð¾Ð¿ÐºÐ°."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr "КолёÑико вверх."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr "КолёÑико вниз."
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Add Global Property"
-msgstr "Добавить получающее ÑвойÑтво"
+msgstr "Добавить глобальное ÑвойÑтво"
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
-msgstr ""
+msgid "Select a setting item first!"
+msgstr "Сначала выберите Ñлемент наÑтроек!"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "No property '"
-msgstr "Параметр:"
+msgstr "Ðет ÑвойÑтва '"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Setting '"
-msgstr "ÐаÑтройки"
+msgstr "ÐаÑтройки '"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Delete Item"
-msgstr "Удалить вход"
+msgstr "Удалить Ñлемент"
+
+#: editor/project_settings_editor.cpp
+msgid "Can't contain '/' or ':'"
+msgstr "Ðе может Ñодержать '/' или ':'"
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr "Уже ÑущеÑтвует"
#: editor/project_settings_editor.cpp
msgid "Error saving settings."
@@ -6344,7 +5917,7 @@ msgstr "ÐаÑтройки Ñохранены нормально."
#: editor/project_settings_editor.cpp
msgid "Override for Feature"
-msgstr ""
+msgstr "Переопределение СвойÑтва"
#: editor/project_settings_editor.cpp
msgid "Add Translation"
@@ -6375,6 +5948,15 @@ msgid "Remove Resource Remap Option"
msgstr "Удалён параметр реÑурÑа перенаправлениÑ"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Changed Locale Filter"
+msgstr "Изменено Ð²Ñ€ÐµÐ¼Ñ \"ÑмешиваниÑ\""
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr "ÐаÑтройки проекта (project.godot)"
@@ -6388,7 +5970,7 @@ msgstr "Параметр:"
#: editor/project_settings_editor.cpp
msgid "Override For.."
-msgstr ""
+msgstr "Переопределить длÑ..."
#: editor/project_settings_editor.cpp
msgid "Input Map"
@@ -6435,6 +6017,30 @@ msgid "Locale"
msgstr "Язык"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales Filter"
+msgstr "Фильтр:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Show all locales"
+msgstr "Показать коÑти"
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "Ð¤Ð¸Ð»ÑŒÑ‚Ñ€Ð°Ñ†Ð¸Ñ ÑƒÐ·Ð»Ð¾Ð²"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales:"
+msgstr "Язык"
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "Ðвтозагрузка"
@@ -6475,7 +6081,6 @@ msgid "Assign"
msgstr "Ðазначить"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Select Node"
msgstr "Выбрать узел"
@@ -6484,17 +6089,24 @@ msgid "New Script"
msgstr "Ðовый Ñкрипт"
#: editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "Сделать уникальным"
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr "Показать в файловой ÑиÑтеме"
#: editor/property_editor.cpp
+msgid "Convert To %s"
+msgstr "Преобразовать в %s"
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr "Ошибка загрузки файла: Это не реÑурÑ!"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Selected node is not a Viewport!"
-msgstr "Выберите Узел(узлы) Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°"
+msgstr "Выбранный узел не Viewport!"
#: editor/property_editor.cpp
msgid "Pick a Node"
@@ -6525,6 +6137,10 @@ msgid "Select Property"
msgstr "Выбрать ÑвойÑтво"
#: editor/property_selector.cpp
+msgid "Select Virtual Method"
+msgstr "Выбрать виртуальный метод"
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr "Выбрать метод"
@@ -6554,26 +6170,6 @@ msgstr "Сохранить глобальные преобразованиÑ"
msgid "Reparent"
msgstr "Переподчинить"
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr "Создать новый реÑурÑ"
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr "Открыть реÑурÑ"
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr "Сохранить реÑурÑ"
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr "ИнÑтрументы реÑурÑов"
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr "Сделать локальным"
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr "Режим запуÑка:"
@@ -6704,14 +6300,6 @@ msgid "Sub-Resources:"
msgstr "Вложенные РеÑурÑÑ‹:"
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr "Редактировать группы"
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr "Редактировать ÑвÑзи"
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr "ОчиÑтить наÑледование"
@@ -6772,9 +6360,8 @@ msgstr ""
"не ÑущеÑтвует."
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Filter nodes"
-msgstr "Фильтры"
+msgstr "Ð¤Ð¸Ð»ÑŒÑ‚Ñ€Ð°Ñ†Ð¸Ñ ÑƒÐ·Ð»Ð¾Ð²"
#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
@@ -6869,18 +6456,16 @@ msgid "Scene Tree (Nodes):"
msgstr "Дерево Ñцены (Узлы):"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Node Configuration Warning!"
-msgstr "Конфигурации узла, предупреждение:"
+msgstr "Предупреждение о конфигурации узла!"
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
msgstr "Выбрать узел"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Error loading template '%s'"
-msgstr "Ошибка при загрузке изображениÑ:"
+msgstr "Ошибка при загрузке шаблона '%s'"
#: editor/script_create_dialog.cpp
msgid "Error - Could not create script in filesystem."
@@ -6907,6 +6492,14 @@ msgid "Invalid base path"
msgstr "ÐедопуÑтимый базовый путь"
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr "Каталог Ñ Ñ‚Ð°ÐºÐ¸Ð¼ же именем ÑущеÑтвует"
+
+#: editor/script_create_dialog.cpp
+msgid "File exists, will be reused"
+msgstr "Файл ÑущеÑтвует, будет иÑпользован повторно"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr "ÐедопуÑтимое раÑширение"
@@ -6947,6 +6540,10 @@ msgid "Load existing script file"
msgstr "Загрузить ÑущеÑтвующий Ñкрипт"
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr "Язык"
+
+#: editor/script_create_dialog.cpp
msgid "Inherits"
msgstr "ÐаÑледует"
@@ -6987,6 +6584,11 @@ msgid "Function:"
msgstr "ФункциÑ:"
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+"Выбрать один или неÑколько Ñлементов из ÑпиÑка, чтобы отобразить график."
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr "Ошибки"
@@ -7067,6 +6669,10 @@ msgid "Type"
msgstr "Тип"
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr "Формат"
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr "ИÑпользует"
@@ -7100,7 +6706,7 @@ msgstr "Изменён Ñ€Ð°Ð´Ð¸ÑƒÑ Ñвета"
#: editor/spatial_editor_gizmos.cpp
msgid "Change AudioStreamPlayer3D Emission Angle"
-msgstr ""
+msgstr "Изменить угол AudioStreamPlayer3D"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
@@ -7142,12 +6748,29 @@ msgstr "Изменить AABB чаÑтиц"
msgid "Change Probe Extents"
msgstr "Изменены Probe Extents"
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Library"
+msgstr "Библиотека"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Status"
+msgstr "СтатуÑ"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr "Библиотеки: "
+
+#: modules/gdnative/register_types.cpp
+#, fuzzy
+msgid "GDNative"
+msgstr "GDNative"
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr "Ðеверный тип аргумента Ð´Ð»Ñ convert(), иÑпользуйте TYPE_* конÑтанты."
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Ðе хватает байтов Ð´Ð»Ñ Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð±Ð°Ð¹Ñ‚Ð¾Ð², или неверный формат."
@@ -7187,134 +6810,111 @@ msgstr "ÐедопуÑтимый ÑкземплÑÑ€ ÑÐ»Ð¾Ð²Ð°Ñ€Ñ (неверн
#: modules/gdscript/gd_functions.cpp
msgid "Object can't provide a length."
-msgstr ""
+msgstr "Объект не может предоÑтавить длину."
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Delete Selection"
-msgstr "Удалить выделенное"
+msgstr "Удалить выделенную Ñетку"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Duplicate Selection"
-msgstr "Дублировать выделенное"
+msgstr "Дублировать выделенную Ñетку"
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Snap View"
-msgstr "Вид Ñверху"
+msgstr "ПривÑзать вид"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Prev Level (%sDown Wheel)"
-msgstr ""
+msgstr "Пред уровень (%sКолеÑико вниз)"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Level (%sUp Wheel)"
-msgstr ""
+msgstr "Следующий уровень (%sКолеÑико вверх)"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Clip Disabled"
-msgstr "Отключено"
+msgstr "Отключить обрезку"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clip Above"
-msgstr ""
+msgstr "Отрезать Ñверху"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clip Below"
-msgstr ""
+msgstr "Отрезать Ñнизу"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit X Axis"
-msgstr ""
+msgstr "Редактирование оÑи X"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Y Axis"
-msgstr ""
+msgstr "Редактирование оÑи Y"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Z Axis"
-msgstr ""
+msgstr "Редактирование оÑи Z"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate X"
-msgstr "Ctrl: Поворот"
+msgstr "КурÑор поворот по X"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate Y"
-msgstr "Ctrl: Поворот"
+msgstr "КурÑор поворот по Y"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate Z"
-msgstr "Ctrl: Поворот"
+msgstr "КурÑор поворот по Z"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate X"
-msgstr ""
+msgstr "Обратное вращение курÑора по X"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate Y"
-msgstr ""
+msgstr "Обратное вращение курÑора по Y"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate Z"
-msgstr ""
+msgstr "Обратное вращение курÑора по Z"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Clear Rotation"
-msgstr ""
+msgstr "КурÑор очиÑтить поворот"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Create Area"
-msgstr "Создать новый"
+msgstr "Создать облаÑть"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Create Exterior Connector"
-msgstr "Создать новый проект"
+msgstr "Создать внешний коннектор"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase Area"
-msgstr "Стирать карту тайлов"
+msgstr "Стереть облаÑть"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Selection -> Duplicate"
-msgstr "Только выделÑть"
+msgstr "Выбор -> Дублировать"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Selection -> Clear"
-msgstr "Только выделÑть"
+msgstr "Выбор -> ОчиÑтить"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Settings"
-msgstr "Параметры привÑзки"
+msgstr "GridMap Параметры"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Pick Distance:"
-msgstr "ЭкземплÑÑ€:"
+msgstr "РаÑÑтоÑние выбора:"
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr " Файлы"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
-msgstr ""
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
+msgstr "Билды"
#: modules/visual_script/visual_script.cpp
msgid ""
@@ -7353,29 +6953,24 @@ msgid "Stack overflow with stack depth: "
msgstr "Переполнение Ñтека Ñ Ð³Ð»ÑƒÐ±Ð¸Ð½Ð¾Ð¹ Ñтека: "
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Signal Arguments"
-msgstr "Редактирование аргументов Ñигнала:"
+msgstr "Изменить аргументы Ñигнала"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Argument Type"
-msgstr "Изменение типа Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¼Ð°ÑÑива"
+msgstr "Изменить тип аргумента"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Argument name"
-msgstr "Изменено входное имÑ"
+msgstr "Изменить Ð¸Ð¼Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Set Variable Default Value"
-msgstr "Изменено Ñтандартное значение"
+msgstr "УÑтановить значение по умолчанию Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Set Variable Type"
-msgstr "Редактировать переменную:"
+msgstr "УÑтановить тип переменной"
#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
@@ -7426,14 +7021,12 @@ msgid "Add Node"
msgstr "Добавить узел"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Remove VisualScript Nodes"
-msgstr "Удалить недопуÑтимые ключи"
+msgstr "Удалить узлы VisualScript"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Duplicate VisualScript Nodes"
-msgstr "Граф(ы) дублированы"
+msgstr "Дублировать узлы VisualScript"
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
@@ -7480,24 +7073,20 @@ msgid "Add Setter Property"
msgstr "Добавить уÑтанавливающее ÑвойÑтво"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Base Type"
-msgstr "Изменить тип"
+msgstr "Изменить базовый тип"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Move Node(s)"
-msgstr "Удалить узел(узлы)"
+msgstr "ПеремеÑтить узел(Ñ‹)"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Remove VisualScript Node"
-msgstr "Удалён граф шейдера"
+msgstr "Удалить узел VisualScript"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Connect Nodes"
-msgstr "ПриÑоединить к узлу:"
+msgstr "ПриÑоединить узлы"
#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
@@ -7524,46 +7113,48 @@ msgid "Return"
msgstr "Возвращение"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr "Вызов"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr "Получить"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
+msgid "Script already has function '%s'"
+msgstr "Скрипт уже имеет функцию '%s'"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
-msgstr "Изменено входное имÑ"
+msgstr "Изменить входное значение"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Can't copy the function node."
-msgstr "Ðевозможно работать Ñ '..'"
+msgstr "Ðе удаетÑÑ Ñкопировать узел функцию."
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Clipboard is empty!"
-msgstr "Ðет реÑурÑа в буфере обмена!"
+msgstr "Буфер обмена пуÑÑ‚!"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Paste VisualScript Nodes"
-msgstr "Ð’Ñтавить узлы"
+msgstr "Ð’Ñтавить узлы VisualScript"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Function"
msgstr "Удалить функцию"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Edit Variable"
-msgstr "Редактировать переменную:"
+msgstr "Редактировать переменную"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Variable"
msgstr "Удалить переменную"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Edit Signal"
-msgstr "Редактирование Ñигнала:"
+msgstr "Редактировать Ñигнал"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Signal"
@@ -7805,6 +7396,9 @@ msgid ""
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° RigidBody2D (в режиме character или rigid) будут "
+"переопределены движком при запуÑке.\n"
+"Измените размер дочерней формы коллизии."
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
@@ -7838,31 +7432,35 @@ msgstr ""
#: scene/3d/arvr_nodes.cpp
msgid "ARVRCamera must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRCamera должна иметь узел ARVROrigin в качеÑтве предка"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRController must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRController должен иметь узел ARVROrigin в качеÑтве предка"
#: scene/3d/arvr_nodes.cpp
msgid ""
"The controller id must not be 0 or this controller will not be bound to an "
"actual controller"
msgstr ""
+"Идентификатор контроллера не должен быть равен 0 или Ñтот контроллер не "
+"будет привÑзан к фактичеÑкому контроллеру"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRAnchor must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRAnchor должен иметь узел ARVROrigin в качеÑтве предка"
#: 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 ""
+"Идентификатор ÑÐºÐ¾Ñ€Ñ Ð½Ðµ должен быть равен 0 или Ñтот Ñкорь не будет привÑзан "
+"к фактичеÑкому Ñкорю"
#: scene/3d/arvr_nodes.cpp
msgid "ARVROrigin requires an ARVRCamera child node"
-msgstr ""
+msgstr "ARVROrigin требует дочерний узел ARVRCamera"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7871,7 +7469,7 @@ msgid ""
"StaticBody, RigidBody, KinematicBody, etc. to give them a shape."
msgstr ""
"CollisionPolygon Ñлужит только Ð´Ð»Ñ Ð¾Ð±ÐµÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ Ñтолкновений фигурам типа "
-"CollisionObject. ПожалуйÑта иÑпользовать его только в качеÑтве дочернего Ð´Ð»Ñ "
+"CollisionObject. ПожалуйÑта, иÑпользуйте его только в качеÑтве дочернего Ð´Ð»Ñ "
"Area, StaticBody, RigidBody, KinematicBody и др. чтобы придать им форму."
#: scene/3d/collision_polygon.cpp
@@ -7920,6 +7518,9 @@ msgid ""
"the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° RigidBody (в режиме character или rigid) будут "
+"переопределены движком при запуÑке.\n"
+"Измените размер дочерней формы коллизии."
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
@@ -7940,16 +7541,28 @@ msgstr ""
"Чтобы AnimatedSprite3D отображал кадры, пожалуйÑта уÑтановите или Ñоздайте "
"реÑÑƒÑ€Ñ SpriteFrames в параметре 'Frames'."
-#: scene/gui/color_picker.cpp
+#: scene/3d/vehicle_body.cpp
#, fuzzy
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+"VehicleWheel Ñлужит колеÑом Ð´Ð»Ñ VehicleBody. ПожалуйÑта, иÑпользуйте его как "
+"ребенка VehicleBody."
+
+#: scene/gui/color_picker.cpp
msgid "Raw Mode"
-msgstr "Режим оÑмотра"
+msgstr "RAW режим"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
msgstr "Добавить текущий цвет как преÑет"
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Отмена"
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr "Внимание!"
@@ -7957,10 +7570,6 @@ msgstr "Внимание!"
msgid "Please Confirm..."
msgstr "Подтверждение..."
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -8003,6 +7612,642 @@ msgstr ""
"Ñделайте его целью рендеринга и передайте его внутренние текÑтуры какому-то "
"другому узлу Ð´Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ."
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr "Ошибка инициализации FreeType."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "ÐеизвеÑтный формат шрифта."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "Ошибка загрузки шрифта."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr "ÐедопуÑтимый размер шрифта."
+
+#~ msgid "Filter:"
+#~ msgstr "Фильтр:"
+
+#~ msgid "' parsing of config failed."
+#~ msgstr "' анализ конфигурации не удалÑÑ."
+
+#~ msgid "Theme"
+#~ msgstr "Тема"
+
+#~ msgid "Method List For '%s':"
+#~ msgstr "СпиÑок методов Ð´Ð»Ñ '%s':"
+
+#~ msgid "Arguments:"
+#~ msgstr "Ðргументы:"
+
+#~ msgid "Return:"
+#~ msgstr "Возвращение:"
+
+#~ msgid "Added:"
+#~ msgstr "Добавлено:"
+
+#~ msgid "Removed:"
+#~ msgstr "Удалено:"
+
+#~ msgid "Error saving atlas:"
+#~ msgstr "Ошибка ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð°Ñ‚Ð»Ð°Ñа:"
+
+#~ msgid "Could not save atlas subtexture:"
+#~ msgstr "Ðевозможно Ñохранить текÑтуру атлаÑа:"
+
+#~ msgid "Exporting for %s"
+#~ msgstr "ЭкÑпортирование Ð´Ð»Ñ %s"
+
+#~ msgid "Setting Up.."
+#~ msgstr "ÐаÑтройка.."
+
+#~ msgid "Error loading scene."
+#~ msgstr "Ошибка загрузки Ñцены."
+
+#~ msgid "Re-Import"
+#~ msgstr "Переимпортировать"
+
+#~ msgid "Please wait for scan to complete."
+#~ msgstr "ПожалуйÑта дождитеÑÑŒ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ ÑканированиÑ."
+
+#~ msgid "Current scene must be saved to re-import."
+#~ msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ñцена должна быть Ñохранена Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ импорта."
+
+#~ msgid "Save & Re-Import"
+#~ msgstr "Сохранить и переимпортировать"
+
+#~ msgid "Re-Importing"
+#~ msgstr "Переимпортировать"
+
+#~ msgid "Re-Import Changed Resources"
+#~ msgstr "Переимпортировать изменённые реÑурÑÑ‹"
+
+#~ msgid "Loading Export Templates"
+#~ msgstr "Загрузка шаблонов ÑкÑпорта"
+
+#~ msgid ""
+#~ "\n"
+#~ "Status: Needs Re-Import"
+#~ msgstr ""
+#~ "\n"
+#~ "СтатуÑ: требуетÑÑ Ñ€Ðµ-импорт"
+
+#~ msgid "Same source and destination files, doing nothing."
+#~ msgstr "Файл Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸ иÑходный файлы Ñовпадают, нечего делать."
+
+#~ msgid "Target file exists, can't overwrite. Delete first."
+#~ msgstr "Конечный файл ÑущеÑтвует, Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñать. Сначала удалите."
+
+#~ msgid "Same source and destination paths, doing nothing."
+#~ msgstr "Путь Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸ иÑходный пути Ñовпадают, нечего делать."
+
+#~ msgid "Can't move directories to within themselves."
+#~ msgstr "Ðевозможно перемеÑтить каталоги внутрь ÑебÑ."
+
+#~ msgid "Can't rename deps for:\n"
+#~ msgstr "Ðе могу переименовать завиÑимоÑти длÑ:\n"
+
+#~ msgid "Error moving file:\n"
+#~ msgstr "Ошибка Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°:\n"
+
+#~ msgid "Pick New Name and Location For:"
+#~ msgstr "Выберете новое Ð¸Ð¼Ñ Ð¸ раÑположение длÑ:"
+
+#~ msgid "No files selected!"
+#~ msgstr "Файлы не выбраны!"
+
+#~ msgid "Info"
+#~ msgstr "ИнформациÑ"
+
+#~ msgid "Re-Import.."
+#~ msgstr "Переимпортировать.."
+
+#~ msgid "No bit masks to import!"
+#~ msgstr "Ðет битовой маÑки Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°!"
+
+#~ msgid "Target path is empty."
+#~ msgstr "Конечный путь пуÑÑ‚."
+
+#~ msgid "Target path must be a complete resource path."
+#~ msgstr "Конечный путь должен быть полным путём к реÑурÑу."
+
+#~ msgid "Target path must exist."
+#~ msgstr "Конечный путь должен ÑущеÑтвовать."
+
+#~ msgid "Save path is empty!"
+#~ msgstr "Путь ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð¿ÑƒÑÑ‚!"
+
+#~ msgid "Import BitMasks"
+#~ msgstr "Импорт битовой маÑки"
+
+#~ msgid "Source Texture(s):"
+#~ msgstr "ИÑходные текÑтура(Ñ‹):"
+
+#~ msgid "Target Path:"
+#~ msgstr "Целевой путь:"
+
+#~ msgid "Accept"
+#~ msgstr "ПринÑть"
+
+#~ msgid "Bit Mask"
+#~ msgstr "Ð‘Ð¸Ñ‚Ð¾Ð²Ð°Ñ Ð¼Ð°Ñка"
+
+#~ msgid "No source font file!"
+#~ msgstr "Ðет иÑходного файл шрифта!"
+
+#~ msgid "No target font resource!"
+#~ msgstr "Ðет целевого реÑурÑа шрифта!"
+
+#~ msgid ""
+#~ "Invalid file extension.\n"
+#~ "Please use .font."
+#~ msgstr ""
+#~ "ÐедопуÑтимое раÑширение файла.\n"
+#~ "ПожалуйÑта, иÑпользуйте .font."
+
+#~ msgid "Couldn't save font."
+#~ msgstr "Ðевозможно Ñохранить шрифт."
+
+#~ msgid "Source Font:"
+#~ msgstr "ИÑходный шрифт:"
+
+#~ msgid "Source Font Size:"
+#~ msgstr "ИÑходный размер шрифта:"
+
+#~ msgid "Dest Resource:"
+#~ msgstr "РеÑÑƒÑ€Ñ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ:"
+
+#~ msgid "The quick brown fox jumps over the lazy dog."
+#~ msgstr ""
+#~ "Съешь ещё Ñтих мÑгких французÑких булок да выпей чаю. \n"
+#~ "The quick brown fox jumps over the lazy dog.\n"
+#~ "0123456789`!@#$%^&*()_+-=\\/."
+
+#~ msgid "Test:"
+#~ msgstr "Проверка:"
+
+#~ msgid "Options:"
+#~ msgstr "Опции:"
+
+#~ msgid "Font Import"
+#~ msgstr "Импортирование шрифта"
+
+#~ msgid ""
+#~ "This file is already a Godot font file, please supply a BMFont type file "
+#~ "instead."
+#~ msgstr ""
+#~ "Это итак файл шрифта Godot, пожалуйÑта иÑпользуйте BitMapFont вмеÑто него."
+
+#~ msgid "Failed opening as BMFont file."
+#~ msgstr "Ошибка Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ BitMapFont файла."
+
+#~ msgid "Invalid font custom source."
+#~ msgstr "Ðеверный пользовательÑкий иÑточник Ð´Ð»Ñ ÑˆÑ€Ð¸Ñ„Ñ‚Ð°."
+
+#~ msgid "No meshes to import!"
+#~ msgstr "Ðет полиÑетки Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ!"
+
+#~ msgid "Single Mesh Import"
+#~ msgstr "Импорт одиночной полиÑетки"
+
+#~ msgid "Source Mesh(es):"
+#~ msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ð¿Ð¾Ð»Ð¸Ñетка(и):"
+
+#~ msgid "Surface %d"
+#~ msgstr "ПоверхноÑтей %d"
+
+#~ msgid "No samples to import!"
+#~ msgstr "Ðет ÑÑмплов Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°!"
+
+#~ msgid "Import Audio Samples"
+#~ msgstr "Импорт аудио ÑÑмплов"
+
+#~ msgid "Source Sample(s):"
+#~ msgstr "ИÑходный ÑÑмпл(Ñ‹):"
+
+#~ msgid "Audio Sample"
+#~ msgstr "Ðудио ÑÑмпл"
+
+#~ msgid "New Clip"
+#~ msgstr "ÐÐ¾Ð²Ð°Ñ Ð´Ð¾Ñ€Ð¾Ð¶ÐºÐ°"
+
+#~ msgid "Flags"
+#~ msgstr "Флаги"
+
+#~ msgid "Bake FPS:"
+#~ msgstr "FPS:"
+
+#~ msgid "Optimizer"
+#~ msgstr "Оптимизатор"
+
+#~ msgid "Max Linear Error"
+#~ msgstr "МакÑ. Ð»Ð¸Ð½ÐµÐ¹Ð½Ð°Ñ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ñть"
+
+#~ msgid "Max Angular Error"
+#~ msgstr "МакÑ. ÑƒÐ³Ð»Ð¾Ð²Ð°Ñ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ñть"
+
+#~ msgid "Max Angle"
+#~ msgstr "МакÑ. угол"
+
+#~ msgid "Clips"
+#~ msgstr "Дорожки"
+
+#~ msgid "Start(s)"
+#~ msgstr "Ðач(Ñ.)"
+
+#~ msgid "End(s)"
+#~ msgstr "Кон(Ñ.)"
+
+#~ msgid "Filters"
+#~ msgstr "Фильтры"
+
+#~ msgid "Source path is empty."
+#~ msgstr "Путь к иÑточнику пуÑÑ‚."
+
+#~ msgid "Couldn't load post-import script."
+#~ msgstr "Ðе могу загрузить Ñкрипт поÑÑ‚-процеÑÑа."
+
+#~ msgid "Invalid/broken script for post-import."
+#~ msgstr "Ðекорректный/поврежденный Ñценарий Ð´Ð»Ñ Ð¿Ð¾ÑÑ‚-импорта."
+
+#~ msgid "Error importing scene."
+#~ msgstr "Ошибка Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñцены."
+
+#~ msgid "Import 3D Scene"
+#~ msgstr "Импорт 3D Ñцены"
+
+#~ msgid "Source Scene:"
+#~ msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ñцена:"
+
+#~ msgid "Same as Target Scene"
+#~ msgstr "Та же, что и у целевой Ñцены"
+
+#~ msgid "Shared"
+#~ msgstr "Общий"
+
+#~ msgid "Target Texture Folder:"
+#~ msgstr "Ð¦ÐµÐ»ÐµÐ²Ð°Ñ Ð¿Ð°Ð¿ÐºÐ° текÑтуры:"
+
+#~ msgid "Post-Process Script:"
+#~ msgstr "Скрипт поÑÑ‚-процеÑÑа:"
+
+#~ msgid "Custom Root Node Type:"
+#~ msgstr "ПользовательÑкий тип корневого узла:"
+
+#~ msgid "Auto"
+#~ msgstr "Ðвто"
+
+#~ msgid "Root Node Name:"
+#~ msgstr "Ð˜Ð¼Ñ ÐºÐ¾Ñ€Ð½ÐµÐ²Ð¾Ð³Ð¾ узла:"
+
+#~ msgid "The Following Files are Missing:"
+#~ msgstr "ОтÑутÑтвуют Ñледующие файлы:"
+
+#~ msgid "Import Anyway"
+#~ msgstr "Импортировать в любом Ñлучае"
+
+#~ msgid "Import & Open"
+#~ msgstr "Импортировать и Открыть"
+
+#~ msgid "Edited scene has not been saved, open imported scene anyway?"
+#~ msgstr ""
+#~ "Ð ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€ÑƒÐµÐ¼Ð°Ñ Ñцена не была Ñохранена, открыть импортированную Ñцену в "
+#~ "любом Ñлучае?"
+
+#~ msgid "Import Image:"
+#~ msgstr "Импорт изображениÑ:"
+
+#~ msgid "Couldn't localize path: %s (already local)"
+#~ msgstr "Ðевозможно локализовать путь: %s (уже локальный)"
+
+#~ msgid "3D Scene Animation"
+#~ msgstr "ÐÐ½Ð¸Ð¼Ð°Ñ†Ð¸Ñ 3D Ñцены"
+
+#~ msgid "Uncompressed"
+#~ msgstr "ÐеÑжатый"
+
+#~ msgid "Compress Lossless (PNG)"
+#~ msgstr "Сжатие без потери качеÑтва (PNG)"
+
+#~ msgid "Compress Lossy (WebP)"
+#~ msgstr "Сжатие Ñ Ð¿Ð¾Ñ‚ÐµÑ€Ñми (WebP)"
+
+#~ msgid "Compress (VRAM)"
+#~ msgstr "Сжатие (VRAM)"
+
+#~ msgid "Texture Format"
+#~ msgstr "Формат текÑтуры"
+
+#~ msgid "Texture Compression Quality (WebP):"
+#~ msgstr "КачеÑтво ÑÐ¶Ð°Ñ‚Ð¸Ñ Ñ‚ÐµÐºÑтур (WebP):"
+
+#~ msgid "Texture Options"
+#~ msgstr "Параметры текÑтуры"
+
+#~ msgid "Please specify some files!"
+#~ msgstr "ПожалуйÑта, укажите некоторые файлы!"
+
+#~ msgid "At least one file needed for Atlas."
+#~ msgstr "Ð”Ð»Ñ Ð°Ñ‚Ð»Ð°Ñа нужен Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ 1 файл."
+
+#~ msgid "Error importing:"
+#~ msgstr "Ошибка импортированиÑ:"
+
+#~ msgid "Only one file is required for large texture."
+#~ msgstr "Только один файл необходим Ð´Ð»Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ текÑтуры."
+
+#~ msgid "Max Texture Size:"
+#~ msgstr "МакÑимальный размер текÑтуры:"
+
+#~ msgid "Import Textures for Atlas (2D)"
+#~ msgstr "Импортировать текÑтуры Ð´Ð»Ñ Ð°Ñ‚Ð»Ð°Ñа (2D)"
+
+#~ msgid "Cell Size:"
+#~ msgstr "Размер Ñчейки:"
+
+#~ msgid "Large Texture"
+#~ msgstr "Ð‘Ð¾Ð»ÑŒÑˆÐ°Ñ Ñ‚ÐµÐºÑтура"
+
+#~ msgid "Import Large Textures (2D)"
+#~ msgstr "Импорт больших текÑтур (2D)"
+
+#~ msgid "Source Texture"
+#~ msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ñ‚ÐµÐºÑтура"
+
+#~ msgid "Base Atlas Texture"
+#~ msgstr "Ð‘Ð°Ð·Ð¾Ð²Ð°Ñ Ñ‚ÐµÐºÑтура атлаÑа"
+
+#~ msgid "Source Texture(s)"
+#~ msgstr "ИÑÑ…Ð¾Ð´Ð½Ð°Ñ Ñ‚ÐµÐºÑтура(Ñ‹)"
+
+#~ msgid "Import Textures for 2D"
+#~ msgstr "Импорт текÑтур Ð´Ð»Ñ 2D"
+
+#~ msgid "Import Textures for 3D"
+#~ msgstr "Импорт текÑтур Ð´Ð»Ñ 3D"
+
+#~ msgid "Import Textures"
+#~ msgstr "Импорт текÑтур"
+
+#~ msgid "2D Texture"
+#~ msgstr "2D текÑтура"
+
+#~ msgid "3D Texture"
+#~ msgstr "3D текÑтура"
+
+#~ msgid "Atlas Texture"
+#~ msgstr "ТекÑтура атлаÑа"
+
+#~ msgid ""
+#~ "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files "
+#~ "to the project."
+#~ msgstr ""
+#~ "Ð’ÐИМÐÐИЕ: Импортирование 2D текÑтур не обÑзательно. ПроÑто Ñкопируйте png/"
+#~ "jpg файлы в папку проекта."
+
+#~ msgid "Crop empty space."
+#~ msgstr "Обрезать пуÑтое проÑтранÑтво."
+
+#~ msgid "Texture"
+#~ msgstr "ТекÑтура"
+
+#~ msgid "Import Large Texture"
+#~ msgstr "Импорт большой текÑтуры"
+
+#~ msgid "Load Source Image"
+#~ msgstr "Загрузка иÑходного изображениÑ"
+
+#~ msgid "Slicing"
+#~ msgstr "Ðарезка"
+
+#~ msgid "Saving"
+#~ msgstr "Сохранение"
+
+#~ msgid "Couldn't save large texture:"
+#~ msgstr "Ðевозможно Ñохранить большую текÑтуру:"
+
+#~ msgid "Build Atlas For:"
+#~ msgstr "ПоÑтроение атлаÑа длÑ:"
+
+#~ msgid "Loading Image:"
+#~ msgstr "Загрузка изображениÑ:"
+
+#~ msgid "Couldn't load image:"
+#~ msgstr "Ðевозможно загрузить изображение:"
+
+#~ msgid "Converting Images"
+#~ msgstr "Преобразование изображений"
+
+#~ msgid "Cropping Images"
+#~ msgstr "Обрезка изображений"
+
+#~ msgid "Blitting Images"
+#~ msgstr "Блитирование Изображений"
+
+#~ msgid "Couldn't save atlas image:"
+#~ msgstr "Ðевозможно Ñохранить изображение атлаÑа:"
+
+#~ msgid "Couldn't save converted texture:"
+#~ msgstr "Ðевозможно Ñохранить конвертированную текÑтуру:"
+
+#~ msgid "Invalid source!"
+#~ msgstr "Ðеверный иÑточник!"
+
+#~ msgid "Invalid translation source!"
+#~ msgstr "Ðеверный иÑточник перевода!"
+
+#~ msgid "Column"
+#~ msgstr "Колонка"
+
+#~ msgid "No items to import!"
+#~ msgstr "Ðет Ñлементов Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°!"
+
+#~ msgid "No target path!"
+#~ msgstr "Ðет конечного пути!"
+
+#~ msgid "Import Translations"
+#~ msgstr "Импорт переводов"
+
+#~ msgid "Couldn't import!"
+#~ msgstr "Ðе удалоÑÑŒ импортировать!"
+
+#~ msgid "Import Translation"
+#~ msgstr "Импортирование перевода"
+
+#~ msgid "Source CSV:"
+#~ msgstr "ИÑходный CSV:"
+
+#~ msgid "Ignore First Row"
+#~ msgstr "Игнорировать первую Ñтроку"
+
+#~ msgid "Compress"
+#~ msgstr "Сжимать"
+
+#~ msgid "Add to Project (project.godot)"
+#~ msgstr "Добавить к проекту (project.godot)"
+
+#~ msgid "Import Languages:"
+#~ msgstr "Импортировать Ñзыки:"
+
+#~ msgid "Translation"
+#~ msgstr "Перевод"
+
+#~ msgid "Parsing %d Triangles:"
+#~ msgstr "ПарÑинг %d треугольников:"
+
+#~ msgid "Triangle #"
+#~ msgstr "Треугольник #"
+
+#~ msgid "Light Baker Setup:"
+#~ msgstr "Параметры Ð·Ð°Ð¿ÐµÐºÐ°Ð½Ð¸Ñ Ñвета:"
+
+#~ msgid "Fixing Lights"
+#~ msgstr "ИÑправление Ñвета"
+
+#~ msgid "Making BVH"
+#~ msgstr "Создание BVH"
+
+#~ msgid "Transfer to Lightmaps:"
+#~ msgstr "Передача в карты оÑвещениÑ:"
+
+#~ msgid "Allocating Texture #"
+#~ msgstr "Выделение текÑтуры #"
+
+#~ msgid "Baking Triangle #"
+#~ msgstr "Запекание треугольников #"
+
+#~ msgid "Post-Processing Texture #"
+#~ msgstr "ПоÑÑ‚-обработка текÑтуры #"
+
+#~ msgid "Reset the lightmap octree baking process (start over)."
+#~ msgstr "Ð¡Ð±Ñ€Ð¾Ñ Ð·Ð°Ð¿ÐµÐºÐ°Ð½Ð¸Ñ Ñвета (начать Ñначала)."
+
+#~ msgid "Zoom (%):"
+#~ msgstr "МаÑштаб (%):"
+
+#~ msgid "Skeleton.."
+#~ msgstr "Скелет.."
+
+#~ msgid "Zoom Reset"
+#~ msgstr "СброÑить маÑштаб"
+
+#~ msgid "Zoom Set.."
+#~ msgstr "УÑтановить маÑштаб.."
+
+#~ msgid "Set a Value"
+#~ msgstr "УÑтановить значение"
+
+#~ msgid "Snap (Pixels):"
+#~ msgstr "ПривÑзка (пикÑели):"
+
+#~ msgid "Parse BBCode"
+#~ msgstr "ПарÑить BB Код"
+
+#~ msgid "Length:"
+#~ msgstr "Длинна:"
+
+#~ msgid "Open Sample File(s)"
+#~ msgstr "Открыть ÑÑмпл(Ñ‹)"
+
+#~ msgid "ERROR: Couldn't load sample!"
+#~ msgstr "ОШИБКÐ: Ðе удалоÑÑŒ загрузить ÑÑмпл!"
+
+#~ msgid "Add Sample"
+#~ msgstr "Добавить ÑÑмпл"
+
+#~ msgid "Rename Sample"
+#~ msgstr "Переименовать ÑÑмпл"
+
+#~ msgid "Delete Sample"
+#~ msgstr "Удалить ÑÑмпл"
+
+#~ msgid "16 Bits"
+#~ msgstr "16 Бит"
+
+#~ msgid "8 Bits"
+#~ msgstr "8 Бит"
+
+#~ msgid "Stereo"
+#~ msgstr "Стерео"
+
+#~ msgid "Mono"
+#~ msgstr "Моно"
+
+#~ msgid "Pitch"
+#~ msgstr "Ð’Ñ‹Ñота"
+
+#~ msgid "Window"
+#~ msgstr "Окно"
+
+#~ msgid "Move Right"
+#~ msgstr "Двигать вправо"
+
+#~ msgid "Scaling to %s%%."
+#~ msgstr "МаÑштабирование до %s%%."
+
+#~ msgid "Up"
+#~ msgstr "Вверх"
+
+#~ msgid "Down"
+#~ msgstr "Вниз"
+
+#~ msgid "Bucket"
+#~ msgstr "Заливка"
+
+#~ msgid "Invalid project path, the path must exist!"
+#~ msgstr "Ðеверный путь к проекту, путь должен ÑущеÑтвовать!"
+
+#~ msgid "Invalid project path, project.godot must not exist."
+#~ msgstr "ÐедопуÑтимый путь, project.godot не должен приÑутÑтвовать."
+
+#~ msgid "Invalid project path, project.godot must exist."
+#~ msgstr "ÐедопуÑтимый путь, project.godot должен приÑутÑтвовать."
+
+#~ msgid "Project Path (Must Exist):"
+#~ msgstr "Путь к проекту (должен ÑущеÑтвовать):"
+
+#~ msgid "Create New Resource"
+#~ msgstr "Создать новый реÑурÑ"
+
+#~ msgid "Open Resource"
+#~ msgstr "Открыть реÑурÑ"
+
+#~ msgid "Save Resource"
+#~ msgstr "Сохранить реÑурÑ"
+
+#~ msgid "Resource Tools"
+#~ msgstr "ИнÑтрументы реÑурÑов"
+
+#~ msgid "Make Local"
+#~ msgstr "Сделать локальным"
+
+#~ msgid "Edit Groups"
+#~ msgstr "Редактировать группы"
+
+#~ msgid "Edit Connections"
+#~ msgstr "Редактировать ÑвÑзи"
+
+#~ msgid "GridMap Paint"
+#~ msgstr "РиÑование Ñетки"
+
+#~ msgid "Tiles"
+#~ msgstr "Тайлы"
+
+#~ msgid "Areas"
+#~ msgstr "ОблаÑти"
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl+"
+
+#~ msgid "Down Wheel)"
+#~ msgstr "КолеÑо мыши вниз"
+
+#~ msgid "Up Wheel)"
+#~ msgstr "КолеÑо мыши вверх"
+
#~ msgid "Close scene? (Unsaved changes will be lost)"
#~ msgstr "Закрыть Ñцену? (ÐеÑохранённые Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ потерÑны.)"
@@ -8016,9 +8261,6 @@ msgstr ""
#~ msgid "Close Goto Prev. Scene"
#~ msgstr "Закрыть и перейти к предыдущей Ñцене"
-#~ msgid "Expand to Parent"
-#~ msgstr "РаÑÑ‚Ñнуть до размера родителей"
-
#~ msgid "Del"
#~ msgstr "Удалить"
@@ -8182,18 +8424,12 @@ msgstr ""
#~ msgid "Save Translatable Strings"
#~ msgstr "Сохранить переводимые Ñтроки"
-#~ msgid "Translatable Strings.."
-#~ msgstr "Переводимые Ñтроки.."
-
#~ msgid "Install Export Templates"
#~ msgstr "УÑтановить шаблоны ÑкÑпорта"
#~ msgid "Edit Script Options"
#~ msgstr "Редактировать параметры Ñкрипта"
-#~ msgid "Please export outside the project folder!"
-#~ msgstr "ПожалуйÑта ÑкÑпортируйте вне папки проекта!"
-
#~ msgid "Error exporting project!"
#~ msgstr "Ошибка ÑкÑÐ¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ð°!"
@@ -8252,18 +8488,12 @@ msgstr ""
#~ msgid "Include"
#~ msgstr "Включить"
-#~ msgid "Change Image Group"
-#~ msgstr "Измените изображение группы"
-
#~ msgid "Group name can't be empty!"
#~ msgstr "Ðазвание группы не может быть пуÑтым!"
#~ msgid "Invalid character in group name!"
#~ msgstr "ÐедопуÑтимый Ñимвол в названии группы!"
-#~ msgid "Group name already exists!"
-#~ msgstr "Ðазвание группы уже ÑущеÑтвует!"
-
#~ msgid "Add Image Group"
#~ msgstr "Добавлено изображение группы"
@@ -8342,9 +8572,6 @@ msgstr ""
#~ msgid "Preview Atlas"
#~ msgstr "ПредпроÑмотр атлаÑа"
-#~ msgid "Image Filter:"
-#~ msgstr "Фильтр:"
-
#~ msgid "Images:"
#~ msgstr "ИзображениÑ:"
@@ -8411,9 +8638,6 @@ msgstr ""
#~ msgid "Lighting"
#~ msgstr "ОÑвещение"
-#~ msgid "Toggle Persisting"
-#~ msgstr "Параметр изменён"
-
#~ msgid "Global"
#~ msgstr "Глобальные"
diff --git a/editor/translations/sk.po b/editor/translations/sk.po
index 381e5c53d1..e5ec2ed8d0 100644
--- a/editor/translations/sk.po
+++ b/editor/translations/sk.po
@@ -1,5 +1,6 @@
# Slovak translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# J08nY <johnenter@gmail.com>, 2016.
@@ -192,10 +193,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr ""
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -357,263 +357,6 @@ msgstr ""
msgid "Change Array Value"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Contents:"
-msgstr "Konštanty:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "View Files"
-msgstr "Súbor:"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr "Popis:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connecting.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Requesting.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Error making request"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "Stránka:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "Komunita"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr ""
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr ""
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr ""
@@ -650,6 +393,14 @@ msgstr ""
msgid "Selection Only"
msgstr ""
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr ""
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr ""
@@ -682,11 +433,11 @@ msgstr ""
msgid "Skip"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr ""
@@ -753,6 +504,20 @@ msgstr ""
msgid "Oneshot"
msgstr ""
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr ""
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr ""
@@ -778,7 +543,7 @@ msgstr ""
msgid "Disconnect"
msgstr ""
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr ""
@@ -795,12 +560,25 @@ msgstr ""
msgid "Recent:"
msgstr ""
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr ""
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "Popis:"
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr ""
@@ -856,6 +634,10 @@ msgid "Owners Of:"
msgstr ""
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr ""
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -863,7 +645,7 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
+msgid "Cannot remove:\n"
msgstr ""
#: editor/dependency_editor.cpp
@@ -930,10 +712,6 @@ msgid "Godot Engine contributors"
msgstr ""
#: editor/editor_about.cpp
-msgid "Authors"
-msgstr ""
-
-#: editor/editor_about.cpp
msgid "Project Founders"
msgstr ""
@@ -950,6 +728,38 @@ msgid "Developers"
msgstr ""
#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
msgid "License"
msgstr ""
@@ -992,6 +802,16 @@ msgid "Package Installed Successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
msgstr ""
@@ -1041,10 +861,6 @@ msgid "Audio Bus, Drag and Drop to rearrange."
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
msgid "Solo"
msgstr ""
@@ -1056,12 +872,20 @@ msgstr ""
msgid "Bypass"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Reset Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Delete Effect"
msgstr ""
@@ -1082,6 +906,10 @@ msgid "Duplicate Audio Bus"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Reset Bus Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Move Audio Bus"
msgstr ""
@@ -1113,7 +941,8 @@ msgstr ""
msgid "Create a new Bus Layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
@@ -1204,7 +1033,7 @@ msgid "Rearrange Autoloads"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "Cesta:"
@@ -1212,9 +1041,7 @@ msgstr "Cesta:"
msgid "Node Name:"
msgstr ""
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr ""
@@ -1247,18 +1074,19 @@ msgid "Choose a Directory"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "Vytvoriť adresár"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "Meno:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr ""
@@ -1278,30 +1106,6 @@ msgstr ""
msgid "Template file not found:\n"
msgstr ""
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr ""
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr ""
@@ -1386,6 +1190,10 @@ msgstr ""
msgid "Move Favorite Down"
msgstr ""
+#: editor/editor_file_dialog.cpp
+msgid "Go to parent folder"
+msgstr ""
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "PrieÄinky a Súbory:"
@@ -1400,10 +1208,6 @@ msgid "File:"
msgstr "Súbor:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "Filter:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr ""
@@ -1428,6 +1232,10 @@ msgstr "Zoznam tried:"
msgid "Search Classes"
msgstr ""
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr ""
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr "Trieda:"
@@ -1444,15 +1252,27 @@ msgstr ""
msgid "Brief Description:"
msgstr ""
+#: editor/editor_help.cpp
+msgid "Members"
+msgstr ""
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Public Methods"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr ""
#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr ""
@@ -1462,6 +1282,11 @@ msgstr "Signály:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Enumerations"
+msgstr "Popis:"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Enumerations:"
msgstr "Popis:"
@@ -1470,19 +1295,49 @@ msgid "enum "
msgstr ""
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Constants"
+msgstr "Konštanty:"
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Konštanty:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Description"
+msgstr "Popis:"
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr ""
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Property Description:"
msgstr "Popis:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Methods"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr ""
@@ -1491,24 +1346,21 @@ msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr ""
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr ""
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1525,6 +1377,26 @@ msgid "Error while saving."
msgstr ""
#: editor/editor_node.cpp
+msgid "Can't open '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error while parsing '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error while loading '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr ""
@@ -1582,6 +1454,33 @@ msgid "Restored default layout to base settings."
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr ""
@@ -1745,23 +1644,34 @@ msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgid "Unable to load addon script from path: '%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -1771,7 +1681,7 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr ""
@@ -1782,11 +1692,11 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp
-msgid "Error loading scene."
+msgid "Scene '%s' has broken dependencies:"
msgstr ""
#: editor/editor_node.cpp
-msgid "Scene '%s' has broken dependencies:"
+msgid "Clear Recent Scenes"
msgstr ""
#: editor/editor_node.cpp
@@ -1822,7 +1732,7 @@ msgstr ""
msgid "Toggle distraction-free mode."
msgstr ""
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr ""
@@ -2042,6 +1952,10 @@ msgstr ""
msgid "Issue Tracker"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "Komunita"
+
#: editor/editor_node.cpp
msgid "About"
msgstr ""
@@ -2050,7 +1964,7 @@ msgstr ""
msgid "Play the project."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr ""
@@ -2066,7 +1980,7 @@ msgstr ""
msgid "Stop the scene."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr ""
@@ -2139,6 +2053,15 @@ msgid "Object properties."
msgstr ""
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr ""
@@ -2154,14 +2077,6 @@ msgstr ""
msgid "Don't Save"
msgstr ""
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr ""
-
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
@@ -2225,11 +2140,28 @@ msgstr ""
msgid "Open the previous Editor"
msgstr ""
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr ""
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr ""
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr ""
@@ -2262,7 +2194,7 @@ msgid "Frame %"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+msgid "Physics Frame %"
msgstr ""
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2281,26 +2213,6 @@ msgstr ""
msgid "Frame #:"
msgstr ""
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr ""
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2410,10 +2322,6 @@ msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr ""
@@ -2447,9 +2355,17 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
+"Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2459,87 +2375,88 @@ msgid ""
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
+msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
+msgid "Cannot move a folder into itself.\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
+msgid "Error moving:\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
+msgid "Unable to update dependencies:\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "No name provided"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving file:\n"
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving dir:\n"
+msgid "No name provided."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
+msgid "Name contains invalid characters."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
+msgid "A file or folder with this name already exists."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
+msgid "Renaming file:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Expand all"
+msgid "Renaming folder:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Collapse all"
+msgid "Expand all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
+msgid "Collapse all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Instance"
+msgid "Copy Path"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
+msgid "Rename.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
+msgid "Move To.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr ""
+#, fuzzy
+msgid "New Folder.."
+msgstr "Vytvoriť adresár"
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
+msgid "Show In File Manager"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move To.."
+msgid "Instance"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Info"
+msgid "Edit Dependencies.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
+msgid "View Owners.."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2572,6 +2489,11 @@ msgstr ""
msgid "Move"
msgstr ""
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr ""
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr ""
@@ -2585,6 +2507,10 @@ msgid "Import as Single Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -2597,6 +2523,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
msgstr ""
@@ -2605,38 +2543,31 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr ""
@@ -2665,579 +2596,54 @@ msgstr ""
msgid "Reimport"
msgstr ""
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
+#: editor/node_dock.cpp
+msgid "Groups"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr ""
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Select a Node to edit Signals and Groups."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -3393,7 +2799,6 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3504,10 +2909,6 @@ msgid "Delete Input"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr ""
@@ -3563,64 +2964,183 @@ msgstr ""
msgid "Filters.."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Contents:"
+msgstr "Konštanty:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "View Files"
+msgstr "Súbor:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "Stránka:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3663,11 +3183,15 @@ msgid "Edit CanvasItem"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+msgid "Anchors only"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors and Margins"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
+msgid "Change Anchors"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3718,59 +3242,72 @@ msgid "Pan Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
+msgid "Toggles snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
+msgid "Snapping options"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
+msgid "Snap to grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
+msgid "Use Rotation Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Configure Snap..."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
+msgid "Snap Relative"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
+msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
+msgid "Smart snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
+msgid "Snap to parent"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
+msgid "Snap to node anchor"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to node sides"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3799,11 +3336,16 @@ msgid "View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
+msgid "Show helpers"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show rulers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3815,7 +3357,7 @@ msgid "Frame Selection"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
+msgid "Layout"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3839,11 +3381,20 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
+msgid "Drag pivot from mouse position"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "Všetky vybrané"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
+msgid "Divide grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3854,23 +3405,28 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr ""
@@ -3884,45 +3440,6 @@ msgid ""
"Drag & drop + Alt : Change node type"
msgstr ""
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3932,14 +3449,6 @@ msgid "Set Handle"
msgstr ""
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr ""
@@ -3962,6 +3471,27 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Ease in"
+msgstr "Všetky vybrané"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
msgstr ""
@@ -4040,22 +3570,18 @@ msgid "Create Occluder Polygon"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr ""
@@ -4156,6 +3682,10 @@ msgid "Create Outline"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr ""
@@ -4283,12 +3813,72 @@ msgstr ""
msgid "Populate"
msgstr ""
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create Navigation Polygon"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Marking walkable triangles..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Partitioning..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
msgstr ""
#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
+msgid "Create Navigation Polygon"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -4462,16 +4052,19 @@ msgid "Curve Point #"
msgstr ""
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
-msgstr ""
+msgstr "Všetky vybrané"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
-msgstr ""
+msgstr "Všetky vybrané"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
-msgstr ""
+msgstr "Všetky vybrané"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4531,6 +4124,14 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr ""
@@ -4585,63 +4186,10 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "Vložiť"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr ""
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr ""
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
@@ -4733,6 +4281,10 @@ msgstr ""
msgid "Close All"
msgstr ""
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
msgstr ""
@@ -4761,7 +4313,8 @@ msgstr ""
msgid "Break"
msgstr ""
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr ""
@@ -4774,18 +4327,6 @@ msgid "Debug with external editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
msgstr ""
@@ -4867,8 +4408,9 @@ msgid "Cut"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "Kopírovať"
@@ -5131,10 +4673,6 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr ""
@@ -5151,10 +4689,6 @@ msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr ""
@@ -5385,6 +4919,10 @@ msgid "Transform"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr ""
@@ -5530,6 +5068,10 @@ msgid "Speed (FPS):"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr ""
@@ -5542,11 +5084,12 @@ msgid "Insert Empty (After)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr ""
+#, fuzzy
+msgid "Move (Before)"
+msgstr "Vložiť"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
+msgid "Move (After)"
msgstr ""
#: editor/plugins/style_box_editor_plugin.cpp
@@ -5626,7 +5169,11 @@ msgid "Remove All"
msgstr "Všetky vybrané"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
@@ -5711,6 +5258,10 @@ msgid "Style"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr ""
@@ -5760,7 +5311,7 @@ msgid "Mirror Y"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
+msgid "Paint Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5824,6 +5375,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr ""
@@ -5894,19 +5449,29 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
+msgid "The path does not exist."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
+msgid "Please choose a folder that does not contain a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
@@ -5914,10 +5479,26 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't edit project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr ""
@@ -5926,15 +5507,20 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Import Existing Project"
+#, fuzzy
+msgid "Rename Project"
+msgstr "Všetky vybrané"
+
+#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in the project path."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
+msgid "New Game Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Name:"
+msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
@@ -5942,19 +5528,24 @@ msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path:"
+msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Install Project:"
+msgid "Project Name:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Browse"
+#, fuzzy
+msgid "Create folder"
+msgstr "Vytvoriť adresár"
+
+#: editor/project_manager.cpp
+msgid "Project Path:"
msgstr ""
#: editor/project_manager.cpp
-msgid "New Game Project"
+msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
@@ -5966,6 +5557,10 @@ msgid "Unnamed Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Can't open project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr ""
@@ -5992,16 +5587,18 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
-"You are about the scan %s folders for existing Godot projects. Do you "
-"confirm?"
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project List"
+msgid ""
+"You are about the scan %s folders for existing Godot projects. Do you "
+"confirm?"
msgstr ""
#: editor/project_manager.cpp
-msgid "Run"
+msgid "Project List"
msgstr ""
#: editor/project_manager.cpp
@@ -6026,6 +5623,10 @@ msgid "Exit"
msgstr ""
#: editor/project_manager.cpp
+msgid "Restart Now"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -6062,17 +5663,14 @@ msgid "Add Input Action Event"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
@@ -6133,7 +5731,7 @@ msgstr ""
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "Os"
@@ -6153,31 +5751,31 @@ msgstr ""
msgid "Add Event"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "Zariadenie"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "TlaÄidlo"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr ""
@@ -6186,7 +5784,7 @@ msgid "Add Global Property"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6202,6 +5800,14 @@ msgid "Delete Item"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Can't contain '/' or ':'"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
@@ -6242,6 +5848,14 @@ msgid "Remove Resource Remap Option"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
@@ -6302,6 +5916,27 @@ msgid "Locale"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Locales Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show all locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "Filter:"
+
+#: editor/project_settings_editor.cpp
+msgid "Locales:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -6351,10 +5986,18 @@ msgid "New Script"
msgstr "Popis:"
#: editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr ""
#: editor/property_editor.cpp
+msgid "Convert To %s"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr ""
@@ -6392,6 +6035,10 @@ msgid "Select Property"
msgstr ""
#: editor/property_selector.cpp
+msgid "Select Virtual Method"
+msgstr ""
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr ""
@@ -6419,26 +6066,6 @@ msgstr ""
msgid "Reparent"
msgstr ""
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr ""
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr ""
@@ -6565,14 +6192,6 @@ msgid "Sub-Resources:"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr ""
@@ -6757,6 +6376,14 @@ msgid "Invalid base path"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "File exists, will be reused"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr ""
@@ -6799,6 +6426,10 @@ msgid "Load existing script file"
msgstr "Popis:"
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Inherits"
msgstr ""
@@ -6842,6 +6473,10 @@ msgid "Function:"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr ""
@@ -6922,6 +6557,10 @@ msgid "Type"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr ""
@@ -6997,12 +6636,28 @@ msgstr ""
msgid "Change Probe Extents"
msgstr ""
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Library"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Status"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr "Chybný argument convert(), použite TYPE_* konštanty."
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Nedostatok bajtov na dekódovanie, možný chybný formát."
@@ -7053,10 +6708,6 @@ msgid "GridMap Duplicate Selection"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Snap View"
msgstr ""
@@ -7149,13 +6800,8 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr "Súbor:"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7348,10 +6994,18 @@ msgid "Return"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
msgstr ""
@@ -7718,6 +7372,12 @@ msgid ""
"order for AnimatedSprite3D to display frames."
msgstr ""
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -7727,6 +7387,10 @@ msgid "Add current color as a preset"
msgstr ""
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr ""
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr ""
@@ -7734,10 +7398,6 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -7766,6 +7426,32 @@ msgid ""
"texture to some node for display."
msgstr ""
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr ""
+
+#~ msgid "Filter:"
+#~ msgstr "Filter:"
+
+#, fuzzy
+#~ msgid "Tiles"
+#~ msgstr "Súbor:"
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl+"
+
#, fuzzy
#~ msgid "Create Android keystore"
#~ msgstr "Vytvoriť adresár"
diff --git a/editor/translations/sl.po b/editor/translations/sl.po
index ff62db99ae..4a82428565 100644
--- a/editor/translations/sl.po
+++ b/editor/translations/sl.po
@@ -1,5 +1,6 @@
# Slovenian translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# matevž lapajne <sivar.lapajne@gmail.com>, 2016.
@@ -192,10 +193,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr ""
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -357,261 +357,6 @@ msgstr ""
msgid "Change Array Value"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "Zapri"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connecting.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Requesting.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Error making request"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr ""
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr ""
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr ""
@@ -648,6 +393,14 @@ msgstr ""
msgid "Selection Only"
msgstr ""
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr ""
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr ""
@@ -680,11 +433,11 @@ msgstr ""
msgid "Skip"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr ""
@@ -751,6 +504,20 @@ msgstr ""
msgid "Oneshot"
msgstr ""
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "Zapri"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr ""
@@ -776,7 +543,7 @@ msgstr ""
msgid "Disconnect"
msgstr ""
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr ""
@@ -793,12 +560,25 @@ msgstr ""
msgid "Recent:"
msgstr ""
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr ""
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr ""
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr ""
@@ -854,6 +634,10 @@ msgid "Owners Of:"
msgstr ""
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr ""
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -861,7 +645,7 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
+msgid "Cannot remove:\n"
msgstr ""
#: editor/dependency_editor.cpp
@@ -928,10 +712,6 @@ msgid "Godot Engine contributors"
msgstr ""
#: editor/editor_about.cpp
-msgid "Authors"
-msgstr ""
-
-#: editor/editor_about.cpp
msgid "Project Founders"
msgstr ""
@@ -948,6 +728,38 @@ msgid "Developers"
msgstr ""
#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
msgid "License"
msgstr ""
@@ -988,6 +800,16 @@ msgid "Package Installed Successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
msgstr ""
@@ -1038,10 +860,6 @@ msgid "Audio Bus, Drag and Drop to rearrange."
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
msgid "Solo"
msgstr ""
@@ -1053,12 +871,20 @@ msgstr ""
msgid "Bypass"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Reset Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
#, fuzzy
msgid "Delete Effect"
msgstr "Izbriši Izbrano"
@@ -1080,6 +906,10 @@ msgid "Duplicate Audio Bus"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Reset Bus Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Move Audio Bus"
msgstr ""
@@ -1111,7 +941,8 @@ msgstr ""
msgid "Create a new Bus Layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
@@ -1201,7 +1032,7 @@ msgid "Rearrange Autoloads"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr ""
@@ -1209,9 +1040,7 @@ msgstr ""
msgid "Node Name:"
msgstr ""
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr ""
@@ -1244,18 +1073,19 @@ msgid "Choose a Directory"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr ""
@@ -1275,30 +1105,6 @@ msgstr ""
msgid "Template file not found:\n"
msgstr ""
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr ""
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr ""
@@ -1383,6 +1189,10 @@ msgstr ""
msgid "Move Favorite Down"
msgstr ""
+#: editor/editor_file_dialog.cpp
+msgid "Go to parent folder"
+msgstr ""
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr ""
@@ -1397,10 +1207,6 @@ msgid "File:"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr ""
@@ -1425,6 +1231,10 @@ msgstr ""
msgid "Search Classes"
msgstr ""
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr ""
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr ""
@@ -1441,15 +1251,28 @@ msgstr ""
msgid "Brief Description:"
msgstr ""
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Members"
+msgstr "ÄŒlani:"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "ÄŒlani:"
#: editor/editor_help.cpp
+msgid "Public Methods"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr ""
#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr ""
@@ -1459,6 +1282,11 @@ msgstr "Signali:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Enumerations"
+msgstr "Funkcije:"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Enumerations:"
msgstr "Funkcije:"
@@ -1467,18 +1295,46 @@ msgid "enum "
msgstr ""
#: editor/editor_help.cpp
+msgid "Constants"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Description"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Property Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Methods"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr ""
@@ -1487,24 +1343,21 @@ msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr ""
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr ""
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1521,6 +1374,26 @@ msgid "Error while saving."
msgstr ""
#: editor/editor_node.cpp
+msgid "Can't open '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error while parsing '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error while loading '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr ""
@@ -1578,6 +1451,33 @@ msgid "Restored default layout to base settings."
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr ""
@@ -1739,23 +1639,34 @@ msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgid "Unable to load addon script from path: '%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -1765,7 +1676,7 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr ""
@@ -1776,11 +1687,11 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp
-msgid "Error loading scene."
+msgid "Scene '%s' has broken dependencies:"
msgstr ""
#: editor/editor_node.cpp
-msgid "Scene '%s' has broken dependencies:"
+msgid "Clear Recent Scenes"
msgstr ""
#: editor/editor_node.cpp
@@ -1816,7 +1727,7 @@ msgstr ""
msgid "Toggle distraction-free mode."
msgstr ""
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr ""
@@ -2036,6 +1947,10 @@ msgstr ""
msgid "Issue Tracker"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "About"
msgstr ""
@@ -2044,7 +1959,7 @@ msgstr ""
msgid "Play the project."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr ""
@@ -2060,7 +1975,7 @@ msgstr ""
msgid "Stop the scene."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr ""
@@ -2133,6 +2048,15 @@ msgid "Object properties."
msgstr ""
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr ""
@@ -2148,14 +2072,6 @@ msgstr ""
msgid "Don't Save"
msgstr ""
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr ""
-
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
@@ -2216,11 +2132,28 @@ msgstr ""
msgid "Open the previous Editor"
msgstr ""
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr ""
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr ""
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr ""
@@ -2253,7 +2186,7 @@ msgid "Frame %"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+msgid "Physics Frame %"
msgstr ""
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2272,26 +2205,6 @@ msgstr ""
msgid "Frame #:"
msgstr ""
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr ""
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2401,10 +2314,6 @@ msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr ""
@@ -2438,9 +2347,17 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
+"Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2450,87 +2367,88 @@ msgid ""
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
+msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
+msgid "Cannot move a folder into itself.\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
+msgid "Error moving:\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
+msgid "Unable to update dependencies:\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "No name provided"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving file:\n"
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving dir:\n"
+msgid "No name provided."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
+msgid "Name contains invalid characters."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
+msgid "A file or folder with this name already exists."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
-msgstr ""
+#, fuzzy
+msgid "Renaming file:"
+msgstr "Preimenuj Spremenljivko"
#: editor/filesystem_dock.cpp
-msgid "Expand all"
+msgid "Renaming folder:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Collapse all"
+msgid "Expand all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
+msgid "Collapse all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Instance"
+msgid "Copy Path"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
+msgid "Rename.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
+msgid "Move To.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
+msgid "New Folder.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
+msgid "Show In File Manager"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move To.."
+msgid "Instance"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Info"
+msgid "Edit Dependencies.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
+msgid "View Owners.."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2563,6 +2481,11 @@ msgstr ""
msgid "Move"
msgstr ""
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr ""
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr ""
@@ -2576,6 +2499,10 @@ msgid "Import as Single Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -2588,6 +2515,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
msgstr ""
@@ -2596,38 +2535,31 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr ""
@@ -2655,579 +2587,54 @@ msgstr ""
msgid "Reimport"
msgstr ""
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
+#: editor/node_dock.cpp
+msgid "Groups"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr ""
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Select a Node to edit Signals and Groups."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -3383,7 +2790,6 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3494,10 +2900,6 @@ msgid "Delete Input"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr ""
@@ -3553,64 +2955,181 @@ msgstr ""
msgid "Filters.."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3653,11 +3172,15 @@ msgid "Edit CanvasItem"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+msgid "Anchors only"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
+msgid "Change Anchors and Margins"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3708,59 +3231,73 @@ msgid "Pan Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
+#, fuzzy
+msgid "Toggles snapping"
+msgstr "Preklopi na Zaustavitev"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
+msgid "Snapping options"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
+msgid "Snap to grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
+msgid "Use Rotation Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "Uredi"
+msgid "Configure Snap..."
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Snap Relative"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
+msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
+msgid "Smart snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
+msgid "Snap to parent"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
+msgid "Snap to node anchor"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
+msgid "Snap to node sides"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3789,11 +3326,16 @@ msgid "View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show helpers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
+msgid "Show rulers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3805,7 +3347,7 @@ msgid "Frame Selection"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
+msgid "Layout"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3829,11 +3371,20 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
+msgid "Drag pivot from mouse position"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "Odstrani Signal"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Divide grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3844,23 +3395,28 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr ""
@@ -3874,45 +3430,6 @@ msgid ""
"Drag & drop + Alt : Change node type"
msgstr ""
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3922,14 +3439,6 @@ msgid "Set Handle"
msgstr ""
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr ""
@@ -3952,6 +3461,26 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease in"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
msgstr ""
@@ -4030,22 +3559,18 @@ msgid "Create Occluder Polygon"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr ""
@@ -4146,6 +3671,10 @@ msgid "Create Outline"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr ""
@@ -4273,12 +3802,72 @@ msgstr ""
msgid "Populate"
msgstr ""
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create Navigation Polygon"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Marking walkable triangles..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Partitioning..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
msgstr ""
#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
+msgid "Create Navigation Polygon"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -4452,16 +4041,19 @@ msgid "Curve Point #"
msgstr ""
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
-msgstr ""
+msgstr "Odstrani Signal"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
-msgstr ""
+msgstr "Odstrani Signal"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
-msgstr ""
+msgstr "Odstrani Signal"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4521,6 +4113,14 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "Uredi"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr ""
@@ -4575,63 +4175,10 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr ""
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr ""
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr ""
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
@@ -4723,6 +4270,10 @@ msgstr ""
msgid "Close All"
msgstr "Zapri"
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
msgstr ""
@@ -4751,7 +4302,8 @@ msgstr ""
msgid "Break"
msgstr ""
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr ""
@@ -4764,18 +4316,6 @@ msgid "Debug with external editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
msgstr ""
@@ -4857,8 +4397,9 @@ msgid "Cut"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr ""
@@ -5122,10 +4663,6 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr ""
@@ -5142,10 +4679,6 @@ msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr ""
@@ -5375,6 +4908,10 @@ msgid "Transform"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr ""
@@ -5520,6 +5057,10 @@ msgid "Speed (FPS):"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr ""
@@ -5532,11 +5073,11 @@ msgid "Insert Empty (After)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
+msgid "Move (Before)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
+msgid "Move (After)"
msgstr ""
#: editor/plugins/style_box_editor_plugin.cpp
@@ -5615,7 +5156,11 @@ msgid "Remove All"
msgstr "Odstrani Signal"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
@@ -5700,6 +5245,10 @@ msgid "Style"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr ""
@@ -5748,7 +5297,7 @@ msgid "Mirror Y"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
+msgid "Paint Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5812,6 +5361,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr ""
@@ -5882,19 +5435,29 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
+msgid "The path does not exist."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
+msgid "Please choose a folder that does not contain a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
@@ -5902,10 +5465,26 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't edit project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr ""
@@ -5914,15 +5493,20 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Import Existing Project"
+#, fuzzy
+msgid "Rename Project"
+msgstr "Preimenuj Funkcijo"
+
+#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in the project path."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
+msgid "New Game Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Name:"
+msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
@@ -5930,19 +5514,23 @@ msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path:"
+msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Install Project:"
+msgid "Project Name:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Browse"
+msgid "Create folder"
msgstr ""
#: editor/project_manager.cpp
-msgid "New Game Project"
+msgid "Project Path:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
@@ -5954,6 +5542,10 @@ msgid "Unnamed Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Can't open project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr ""
@@ -5980,16 +5572,18 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
-"You are about the scan %s folders for existing Godot projects. Do you "
-"confirm?"
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project List"
+msgid ""
+"You are about the scan %s folders for existing Godot projects. Do you "
+"confirm?"
msgstr ""
#: editor/project_manager.cpp
-msgid "Run"
+msgid "Project List"
msgstr ""
#: editor/project_manager.cpp
@@ -6014,6 +5608,10 @@ msgid "Exit"
msgstr ""
#: editor/project_manager.cpp
+msgid "Restart Now"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -6050,17 +5648,14 @@ msgid "Add Input Action Event"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
@@ -6121,7 +5716,7 @@ msgstr "Spremeni"
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr ""
@@ -6141,31 +5736,31 @@ msgstr ""
msgid "Add Event"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr ""
@@ -6175,7 +5770,7 @@ msgid "Add Global Property"
msgstr "Dodaj Getter Lastnost"
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6192,6 +5787,14 @@ msgid "Delete Item"
msgstr "Izbriši Izbrano"
#: editor/project_settings_editor.cpp
+msgid "Can't contain '/' or ':'"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
@@ -6232,6 +5835,14 @@ msgid "Remove Resource Remap Option"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
@@ -6292,6 +5903,26 @@ msgid "Locale"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Locales Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show all locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Filter mode:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Locales:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -6341,10 +5972,18 @@ msgid "New Script"
msgstr ""
#: editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr ""
#: editor/property_editor.cpp
+msgid "Convert To %s"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr ""
@@ -6382,6 +6021,10 @@ msgid "Select Property"
msgstr "Dodaj Setter Lastnost"
#: editor/property_selector.cpp
+msgid "Select Virtual Method"
+msgstr ""
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr ""
@@ -6409,26 +6052,6 @@ msgstr ""
msgid "Reparent"
msgstr ""
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr ""
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr ""
@@ -6555,14 +6178,6 @@ msgid "Sub-Resources:"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr ""
@@ -6743,6 +6358,14 @@ msgid "Invalid base path"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "File exists, will be reused"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr ""
@@ -6785,6 +6408,10 @@ msgid "Load existing script file"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Inherits"
msgstr ""
@@ -6826,6 +6453,10 @@ msgid "Function:"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr ""
@@ -6906,6 +6537,10 @@ msgid "Type"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr ""
@@ -6981,12 +6616,28 @@ msgstr ""
msgid "Change Probe Extents"
msgstr ""
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Library"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Status"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr "Neveljavena vrsta argumenta za convert(), uporabite TYPE_* konstanto."
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Ni dovolj pomnilnika za dekodiranje bajtov, ali neveljaven format."
@@ -7038,10 +6689,6 @@ msgid "GridMap Duplicate Selection"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Snap View"
msgstr ""
@@ -7133,12 +6780,8 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Tiles"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7340,10 +6983,18 @@ msgid "Return"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
msgstr ""
@@ -7714,6 +7365,12 @@ msgid ""
"order for AnimatedSprite3D to display frames."
msgstr ""
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -7723,15 +7380,15 @@ msgid "Add current color as a preset"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Alert!"
+msgid "Cancel"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Please Confirm..."
+msgid "Alert!"
msgstr ""
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
+#: scene/gui/dialogs.cpp
+msgid "Please Confirm..."
msgstr ""
#: scene/gui/popup.cpp
@@ -7762,6 +7419,22 @@ msgid ""
"texture to some node for display."
msgstr ""
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr ""
+
#, fuzzy
#~ msgid "Invalid unique name."
#~ msgstr "Neveljaven indeks lastnosti imena."
diff --git a/editor/translations/th.po b/editor/translations/th.po
index 0ccaf81e71..65bbafebb6 100644
--- a/editor/translations/th.po
+++ b/editor/translations/th.po
@@ -1,5 +1,6 @@
# Thai translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# Kaveeta Vivatchai <goodytong@gmail.com>, 2017.
@@ -8,7 +9,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-07-15 12:39+0000\n"
+"PO-Revision-Date: 2017-10-23 02:49+0000\n"
"Last-Translator: Poommetee Ketson <poommetee@protonmail.com>\n"
"Language-Team: Thai <https://hosted.weblate.org/projects/godot-engine/godot/"
"th/>\n"
@@ -16,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8-bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Weblate 2.16-dev\n"
+"X-Generator: Weblate 2.17\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -113,15 +114,15 @@ msgstr "ลบที่เลือà¸"
#: editor/animation_editor.cpp
msgid "Continuous"
-msgstr "ผันà¹à¸›à¸£"
+msgstr "ต่อเนื่อง"
#: editor/animation_editor.cpp
msgid "Discrete"
-msgstr "ค้าง"
+msgstr "ไม่ต่อเนื่อง"
#: editor/animation_editor.cpp
msgid "Trigger"
-msgstr "ไม่ค้าง"
+msgstr "ทริà¸à¹€à¸à¸­à¸£à¹Œ"
#: editor/animation_editor.cpp
msgid "Anim Add Key"
@@ -193,10 +194,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr "เพิ่ม %d à¹à¸—ร็à¸à¹ƒà¸«à¸¡à¹ˆà¹à¸¥à¸°à¹€à¸žà¸´à¹ˆà¸¡à¸„ีย์?"
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -358,261 +358,6 @@ msgstr "เปลี่ยนประเภทตัวà¹à¸›à¸£à¹ƒà¸™à¸­à¸²à¸£
msgid "Change Array Value"
msgstr "เปลี่ยนค่าในอาร์เรย์"
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr "ฟรี"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr "รุ่น:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr "ประà¸à¸­à¸šà¸”้วย:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr "ดูไฟล์"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr "รายละเอียด:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr "ติดตั้ง"
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "ปิด"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr "ไม่พบตำà¹à¸«à¸™à¹ˆà¸‡à¸™à¸µà¹‰:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "ค้นหาไม่สำเร็จ"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr "เชื่อมต่อไม่ได้ à¸à¸£à¸¸à¸“าลองใหม่"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "เชื่อมต่อไม่ได้"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr "ไม่สามารถเชื่อมต่อà¸à¸±à¸šà¹‚ฮสต์:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr "ไม่มีà¸à¸²à¸£à¸•อบà¸à¸¥à¸±à¸šà¸ˆà¸²à¸à¹‚ฮสต์:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "ไม่มีà¸à¸²à¸£à¸•อบà¸à¸¥à¸±à¸š"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "à¸à¸²à¸£à¸£à¹‰à¸­à¸‡à¸‚อผิดพลาด รหัส:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr "ร้องขอผิดพลาด"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr "à¸à¸²à¸£à¸£à¹‰à¸­à¸‡à¸‚อผิดพลาด เปลี่ยนทางมาà¸à¹€à¸à¸´à¸™à¹„ป"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr "เปลี่ยนทางมาà¸à¹€à¸à¸´à¸™à¹„ป"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "ผิดพลาด:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr "à¹à¸®à¸Šà¸œà¸´à¸”พลาด ไฟล์ดาวน์โหลดอาจเสียหาย"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr "ที่ควรจะเป็น:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr "ที่ได้รับ:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr "ผิดพลาดในà¸à¸²à¸£à¸•รวจสอบà¹à¸®à¸Š SHA256"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr "à¸à¸²à¸£à¸”าวน์โหลดผิดพลาด:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr "สำเร็จ!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr "à¸à¸³à¸¥à¸±à¸‡à¸£à¸±à¸šà¸‚้อมูล:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr "à¸à¸³à¸¥à¸±à¸‡à¸„้นหา.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connecting.."
-msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸•่อ.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Requesting.."
-msgstr "à¸à¸³à¸¥à¸±à¸‡à¸£à¹‰à¸­à¸‡à¸‚อ.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Error making request"
-msgstr "à¸à¸²à¸£à¸£à¹‰à¸­à¸‡à¸‚อผิดพลาด"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr "พร้อมใช้งาน"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr "ลองใหม่"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr "ดาวน์โหลดผิดพลาด"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr "à¸à¸³à¸¥à¸±à¸‡à¸”าวน์โหลดไฟล์นี้อยู่à¹à¸¥à¹‰à¸§!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr "à¹à¸£à¸à¸ªà¸¸à¸”"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr "à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr "ถัดไป"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr "ท้ายสุด"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "ทั้งหมด"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "ค้นหา:"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "ค้นหา"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr "นำเข้า"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr "ปลั๊à¸à¸­à¸´à¸™"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "เรียงตาม:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr "ย้อนà¸à¸¥à¸±à¸š"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "หมวดหมู่:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "ไซต์:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr "à¸à¸²à¸£à¸ªà¸™à¸±à¸šà¸ªà¸™à¸¸à¸™.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr "ผู้พัฒนา"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "ชุมชน"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr "ทดสอบ"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr "ไฟล์ ZIP"
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr "รายชื่อเมท็อดของ '%s':"
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "เรียà¸"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr "รายชื่อเมท็อด:"
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr "ตัวà¹à¸›à¸£:"
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr "คืนค่า:"
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr "ไปยังบรรทัด"
@@ -649,6 +394,14 @@ msgstr "ทั้งคำ"
msgid "Selection Only"
msgstr "เฉพาะที่à¸à¸³à¸¥à¸±à¸‡à¹€à¸¥à¸·à¸­à¸"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "ค้นหา"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr "ค้นหา"
@@ -681,11 +434,11 @@ msgstr "เตือนà¸à¹ˆà¸­à¸™à¹à¸—นที่"
msgid "Skip"
msgstr "ข้าม"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "ขยาย"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr "ย่อ"
@@ -752,6 +505,20 @@ msgstr "เรียà¸à¸ à¸²à¸¢à¸«à¸¥à¸±à¸‡"
msgid "Oneshot"
msgstr "ครั้งเดียว"
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "ปิด"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr "เชื่อม"
@@ -777,7 +544,7 @@ msgstr "เชื่อมโยง.."
msgid "Disconnect"
msgstr "ลบà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¹‚ยง"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr "สัà¸à¸à¸²à¸“"
@@ -794,12 +561,25 @@ msgstr "ที่ชื่นชอบ:"
msgid "Recent:"
msgstr "ล่าสุด:"
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "ค้นหา:"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr "พบ:"
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "รายละเอียด:"
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr "หาตัวà¹à¸—นของ:"
@@ -859,6 +639,10 @@ msgid "Owners Of:"
msgstr "เจ้าของของ:"
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr "ลบไฟล์ที่เลือà¸à¸­à¸­à¸à¸ˆà¸²à¸à¹‚ปรเจà¸à¸•์? (ย้อนà¸à¸¥à¸±à¸šà¹„ม่ได้)"
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -868,8 +652,8 @@ msgstr ""
"ยืนยันจะลบหรือไม่? (ย้อนà¸à¸¥à¸±à¸šà¹„ม่ได้)"
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
-msgstr "ลบไฟล์ที่เลือà¸à¸­à¸­à¸à¸ˆà¸²à¸à¹‚ปรเจà¸à¸•์? (ย้อนà¸à¸¥à¸±à¸šà¹„ม่ได้)"
+msgid "Cannot remove:\n"
+msgstr "ไม่สามารถลบ:\n"
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -935,19 +719,12 @@ msgid "Godot Engine contributors"
msgstr "ผู้ช่วยพัฒนา Godot Engine"
#: editor/editor_about.cpp
-#, fuzzy
-msgid "Authors"
-msgstr "โดย:"
-
-#: editor/editor_about.cpp
-#, fuzzy
msgid "Project Founders"
-msgstr "ตัวจัดà¸à¸²à¸£à¹‚ปรเจà¸à¸•์"
+msgstr "ผู้บุà¸à¹€à¸šà¸´à¸à¹‚ครงà¸à¸²à¸£"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Lead Developer"
-msgstr "ผู้พัฒนา"
+msgstr "ผู้พัฒนาหลัà¸"
#: editor/editor_about.cpp editor/project_manager.cpp
msgid "Project Manager"
@@ -958,12 +735,44 @@ msgid "Developers"
msgstr "ผู้พัฒนา"
#: editor/editor_about.cpp
+msgid "Authors"
+msgstr "ทีมงาน"
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr "ผู้สนับสนุนระดับทองคำขาว"
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr "ผู้สนับสนุนระดับทอง"
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr "ผู้สนับสนุน"
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr "ผู้บริจาคระดับทอง"
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr "ผู้บริจาคระดับเงิน"
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr "ผู้บริจาคระดับทองà¹à¸”ง"
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr "ผู้บริจาค"
+
+#: editor/editor_about.cpp
msgid "License"
-msgstr ""
+msgstr "สัà¸à¸à¸²à¸­à¸™à¸¸à¸à¸²à¸•"
#: editor/editor_about.cpp
msgid "Thirdparty License"
-msgstr ""
+msgstr "สัà¸à¸à¸²à¸­à¸™à¸¸à¸à¸²à¸•ไลบรารี"
#: editor/editor_about.cpp
msgid ""
@@ -972,104 +781,107 @@ msgid ""
"is an exhaustive list of all such thirdparty components with their "
"respective copyright statements and license terms."
msgstr ""
+"Godot Engine อาศัยไลบรารีต่าง ๆ ที่นำมาใช้ได้อย่างเสรีà¹à¸¥à¸°à¹€à¸›à¸´à¸”เผยโค้ดเป็นจำนวนมาภ"
+"ซึ่งเข้าà¸à¸±à¸™à¹„ด้à¸à¸±à¸šà¸ªà¸±à¸à¸à¸²à¸­à¸™à¸¸à¸à¸²à¸• MIT ต่อไปนี้เป็นรายชื่อของไลบรารีทั้งหมด รวมถึงข้อความลิขสิทธิ์ "
+"à¹à¸¥à¸°à¸‚้อà¸à¸³à¸«à¸™à¸”à¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¸‚องà¹à¸•่ละไลบรารี"
#: editor/editor_about.cpp
-#, fuzzy
msgid "All Components"
-msgstr "ประà¸à¸­à¸šà¸”้วย:"
+msgstr "ทั้งหมด"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Components"
-msgstr "ประà¸à¸­à¸šà¸”้วย:"
+msgstr "ไลบรารี"
#: editor/editor_about.cpp
msgid "Licenses"
-msgstr ""
+msgstr "สัà¸à¸à¸²à¸­à¸™à¸¸à¸à¸²à¸•"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Error opening package file, not in zip format."
-msgstr ""
+msgstr "ผิดพลาดขณะเปิดไฟล์à¹à¸žà¸„เà¸à¸ˆ, ไม่ใช่รูปà¹à¸šà¸š zip"
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Uncompressing Assets"
-msgstr "ไม่บีบอัด"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸„ลายบีบอัด"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Package Installed Successfully!"
msgstr "ติดตั้งà¹à¸žà¸„เà¸à¸ˆà¹€à¸ªà¸£à¹‡à¸ˆà¸ªà¸¡à¸šà¸¹à¸£à¸“์!"
#: editor/editor_asset_installer.cpp
-#, fuzzy
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr "สำเร็จ!"
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr "ติดตั้ง"
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
-msgstr "ติดตั้งà¹à¸žà¸„เà¸à¸ˆà¹€à¸ªà¸£à¹‡à¸ˆà¸ªà¸¡à¸šà¸¹à¸£à¸“์!"
+msgstr "ตัวติดตั้งà¹à¸žà¸„เà¸à¸ˆ"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
-msgstr ""
+msgstr "ลำโพง"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Effect"
-msgstr "เพิ่ม"
+msgstr "เพิ่มเอฟเฟà¸à¸•์"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Rename Audio Bus"
-msgstr "เปิดเลย์เอาต์ของ Audio Bus"
+msgstr "เปลี่ยนชื่อ Audio Bus"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Toggle Audio Bus Solo"
-msgstr "เปิดเลย์เอาต์ของ Audio Bus"
+msgstr "สลับ Solo ของ Audio Bus"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Toggle Audio Bus Mute"
-msgstr "เปิดเลย์เอาต์ของ Audio Bus"
+msgstr "สลับ Mute ของ Audio Bus"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Bypass Effects"
-msgstr ""
+msgstr "สลับ Bypass ของ Audio Bus"
#: editor/editor_audio_buses.cpp
msgid "Select Audio Bus Send"
-msgstr ""
+msgstr "เลือภAudio Bus ที่ส่งต่อ"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus Effect"
-msgstr ""
+msgstr "เพิ่มเอฟเฟà¸à¸•์เสียง"
#: editor/editor_audio_buses.cpp
msgid "Move Bus Effect"
-msgstr ""
+msgstr "ย้ายเอฟเฟà¸à¸•์เสียง"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Bus Effect"
-msgstr "ลบสิ่งที่เลือà¸"
+msgstr "ลบเอฟเฟà¸à¸•์เสียง"
#: editor/editor_audio_buses.cpp
msgid "Audio Bus, Drag and Drop to rearrange."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-#, fuzzy
-msgid "Bus options"
-msgstr "ตัวเลือà¸à¸‰à¸²à¸à¸¢à¹ˆà¸­à¸¢"
+msgstr "Audio Bus, ลาà¸à¹à¸¥à¸°à¸§à¸²à¸‡à¹€à¸žà¸·à¹ˆà¸­à¸¢à¹‰à¸²à¸¢à¸•ำà¹à¸«à¸™à¹ˆà¸‡"
#: editor/editor_audio_buses.cpp
msgid "Solo"
-msgstr ""
+msgstr "โซโล"
#: editor/editor_audio_buses.cpp
msgid "Mute"
-msgstr ""
+msgstr "ปิดเสียง"
#: editor/editor_audio_buses.cpp
msgid "Bypass"
-msgstr ""
+msgstr "ข้าม"
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr "ตัวเลือภBus"
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
@@ -1077,33 +889,36 @@ msgid "Duplicate"
msgstr "ทำซ้ำ"
#: editor/editor_audio_buses.cpp
-#, fuzzy
+msgid "Reset Volume"
+msgstr "รีเซ็ตระดับเสียง"
+
+#: editor/editor_audio_buses.cpp
msgid "Delete Effect"
-msgstr "ลบสิ่งที่เลือà¸"
+msgstr "ลบเอฟเฟà¸à¸•์"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Audio Bus"
-msgstr "เพิ่ม Bus"
+msgstr "เพิ่ม Audio Bus"
#: editor/editor_audio_buses.cpp
msgid "Master bus can't be deleted!"
-msgstr ""
+msgstr "ลบ Bus หลัà¸à¹„ม่ได้!"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Audio Bus"
-msgstr "ลบเลย์เอาต์"
+msgstr "ลบ Audio Bus"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Duplicate Audio Bus"
-msgstr "ทำซ้ำà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
+msgstr "ทำซ้ำ Audio Bus"
+
+#: editor/editor_audio_buses.cpp
+msgid "Reset Bus Volume"
+msgstr "รีเซ็ตระดับเสียงบัส"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Move Audio Bus"
-msgstr "เปิดเลย์เอาต์ของ Audio Bus"
+msgstr "ย้าย Audio Bus"
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
@@ -1119,32 +934,28 @@ msgstr "เปิดเลย์เอาต์ของ Audio Bus"
#: editor/editor_audio_buses.cpp
msgid "There is no 'res://default_bus_layout.tres' file."
-msgstr ""
+msgstr "ไม่พบไฟล์ 'res://default_bus_layout.tres'"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Invalid file, not an audio bus layout."
-msgstr ""
-"นามสà¸à¸¸à¸¥à¹„ม่ถูà¸à¸•้อง\n"
-"à¸à¸£à¸¸à¸“าใช้ .font"
+msgstr "ไฟล์ไม่ถูà¸à¸•้อง, ไม่ใช่เลย์เอาต์ของ Audio Bus"
#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr "เพิ่ม Bus"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Create a new Bus Layout."
-msgstr "สร้างรีซอร์สใหม่"
+msgstr "สร้างเลย์เอาต์ Bus ใหม่"
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr "โหลด"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Load an existing Bus Layout."
-msgstr "โหลดรีซอร์สที่มีอยู่à¹à¸¥à¹‰à¸§à¹ƒà¸™à¸”ิสà¸à¹Œà¹à¸¥à¸°à¸—ำà¸à¸²à¸£à¸›à¸£à¸±à¸šà¹à¸•่ง"
+msgstr "โหลดเลย์เอาต์ Bus จาà¸à¸”ิสà¸à¹Œ"
#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -1152,18 +963,16 @@ msgid "Save As"
msgstr "บันทึà¸à¹€à¸›à¹‡à¸™"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Save this Bus Layout to a file."
-msgstr "บันทึà¸à¹€à¸¥à¸¢à¹Œà¹€à¸­à¸²à¸•์ของ Audio Bus เป็น.."
+msgstr "บันทึà¸à¹€à¸¥à¸¢à¹Œà¹€à¸­à¸²à¸•์ของ Bus นี้เป็นไฟล์"
#: editor/editor_audio_buses.cpp editor/import_dock.cpp
-#, fuzzy
msgid "Load Default"
-msgstr "ค่าเริ่มต้น"
+msgstr "โหลดค่าเริ่มต้น"
#: editor/editor_audio_buses.cpp
msgid "Load the default Bus Layout."
-msgstr ""
+msgstr "โหลดค่าเริ่มต้นเลย์เอาต์ Bus"
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
@@ -1230,7 +1039,7 @@ msgid "Rearrange Autoloads"
msgstr "จัดลำดับออโต้โหลด"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡:"
@@ -1238,9 +1047,7 @@ msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡:"
msgid "Node Name:"
msgstr "ชื่อโหนด:"
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr "ชื่อ"
@@ -1265,27 +1072,27 @@ msgid "Updating scene.."
msgstr "อัพเดทฉาà¸.."
#: editor/editor_dir_dialog.cpp
-#, fuzzy
msgid "Please select a base directory first"
-msgstr "à¸à¸£à¸¸à¸“าบันทึà¸à¸‰à¸²à¸à¸à¹ˆà¸­à¸™"
+msgstr "à¸à¸£à¸¸à¸“าเลือà¸à¹‚ฟลเดอร์เริ่มต้นà¸à¹ˆà¸­à¸™"
#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "เลือà¸à¹‚ฟลเดอร์"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "สร้างโฟลเดอร์"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "ชื่อ:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "ไม่สามารถสร้างโฟลเดอร์"
@@ -1305,30 +1112,6 @@ msgstr "à¸à¸³à¸¥à¸±à¸‡à¸£à¸§à¸šà¸£à¸§à¸¡"
msgid "Template file not found:\n"
msgstr "ไม่พบà¹à¸¡à¹ˆà¹à¸šà¸š:\n"
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr "เพิ่ม:"
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr "ลบ:"
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr "ผิดพลาดขณะบันทึภatlas:"
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr "บันทึภtexture ย่อยของ atlas ไม่ได้:"
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr "ส่งออà¸à¸ªà¸³à¸«à¸£à¸±à¸š %s"
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr "à¸à¸³à¸¥à¸±à¸‡à¸•ั้งค่า.."
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "มีไฟล์นี้อยู่à¹à¸¥à¹‰à¸§ จะเขียนทับหรือไม่?"
@@ -1402,7 +1185,6 @@ msgid "Toggle Mode"
msgstr "สลับโหมด"
#: editor/editor_file_dialog.cpp
-#, fuzzy
msgid "Focus Path"
msgstr "à¹à¸à¹‰à¹„ขตำà¹à¸«à¸™à¹ˆà¸‡"
@@ -1414,6 +1196,10 @@ msgstr "เลื่อนโฟลเดอร์ที่ชอบขึ้น
msgid "Move Favorite Down"
msgstr "เลื่อนโฟลเดอร์ที่ชอบลง"
+#: editor/editor_file_dialog.cpp
+msgid "Go to parent folder"
+msgstr "ไปยังโฟลเดอร์หลัà¸"
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "ไฟล์à¹à¸¥à¸°à¹‚ฟลเดอร์:"
@@ -1428,10 +1214,6 @@ msgid "File:"
msgstr "ไฟล์:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "ตัวà¸à¸£à¸­à¸‡:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "นามสà¸à¸¸à¸¥à¹„ฟล์ไม่ถูà¸à¸•้อง"
@@ -1456,6 +1238,10 @@ msgstr "รายชื่อคลาส:"
msgid "Search Classes"
msgstr "ค้นหาคลาส"
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr "บน"
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr "คลาส:"
@@ -1472,72 +1258,110 @@ msgstr "สืบทอดโดย:"
msgid "Brief Description:"
msgstr "รายละเอียด:"
+#: editor/editor_help.cpp
+msgid "Members"
+msgstr "ตัวà¹à¸›à¸£"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "ตัวà¹à¸›à¸£:"
#: editor/editor_help.cpp
+msgid "Public Methods"
+msgstr "เมท็อด"
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr "เมท็อด:"
#: editor/editor_help.cpp
-#, fuzzy
+msgid "GUI Theme Items"
+msgstr "ตัวà¹à¸›à¸£à¸˜à¸µà¸¡"
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
-msgstr "ธีมหน้าต่าง:"
+msgstr "ตัวà¹à¸›à¸£à¸˜à¸µà¸¡:"
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Signals:"
msgstr "สัà¸à¸à¸²à¸“:"
#: editor/editor_help.cpp
-#, fuzzy
+msgid "Enumerations"
+msgstr "ค่าคงที่"
+
+#: editor/editor_help.cpp
msgid "Enumerations:"
-msgstr "à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
+msgstr "ค่าคงที่:"
#: editor/editor_help.cpp
msgid "enum "
-msgstr ""
+msgstr "à¸à¸¥à¸¸à¹ˆà¸¡à¸„่าคงที่ "
+
+#: editor/editor_help.cpp
+msgid "Constants"
+msgstr "ค่าคงที่"
#: editor/editor_help.cpp
msgid "Constants:"
msgstr "ค่าคงที่:"
#: editor/editor_help.cpp
+msgid "Description"
+msgstr "รายละเอียด"
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr "คุณสมบัติ"
+
+#: editor/editor_help.cpp
msgid "Property Description:"
msgstr "รายละเอียดตัวà¹à¸›à¸£:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr "คุณสมบัตินี้ยังไม่มีคำอธิบาย โปรดช่วย[color=$color][url=$url]à¹à¸à¹‰à¹„ข[/url][/color]!"
+
+#: editor/editor_help.cpp
+msgid "Methods"
+msgstr "รายชื่อเมท็อด"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr "รายละเอียดเมท็อด:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr "เมท็อดนี้ยังไม่มีคำอธิบาย โปรดช่วย[color=$color][url=$url]à¹à¸à¹‰à¹„ข[/url][/color]!"
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr "ค้นหาคำ"
#: editor/editor_log.cpp
-#, fuzzy
msgid "Output:"
-msgstr " ข้อความ:"
+msgstr "ข้อความ:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "ลบ"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr "บันทึà¸à¸£à¸µà¸‹à¸­à¸£à¹Œà¸ªà¸œà¸´à¸”พลาด!"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr "บันทึà¸à¸£à¸µà¸‹à¸­à¸£à¹Œà¸ªà¹€à¸›à¹‡à¸™.."
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "ตà¸à¸¥à¸‡.."
@@ -1554,6 +1378,26 @@ msgid "Error while saving."
msgstr "ผิดพลาดขณะบันทึà¸"
#: editor/editor_node.cpp
+msgid "Can't open '%s'."
+msgstr "เปิด '%s' ไม่ได้"
+
+#: editor/editor_node.cpp
+msgid "Error while parsing '%s'."
+msgstr "ผิดพลาดขณะอ่านไฟล์ '%s'"
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
+msgstr "ไฟล์ที่ '%s' ใช้สูà¸à¸«à¸²à¸¢"
+
+#: editor/editor_node.cpp
+msgid "Error while loading '%s'."
+msgstr "ผิดพลาดขณะโหลด '%s'"
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr "บันทึà¸à¸‰à¸²à¸"
@@ -1566,7 +1410,6 @@ msgid "Creating Thumbnail"
msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡à¸£à¸¹à¸›à¸•ัวอย่าง"
#: editor/editor_node.cpp
-#, fuzzy
msgid "This operation can't be done without a tree root."
msgstr "ทำไม่ได้ถ้าไม่มีฉาà¸"
@@ -1612,6 +1455,40 @@ msgid "Restored default layout to base settings."
msgstr "คืนเลย์เอาต์เป็นค่าเริ่มต้น"
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+"รีซอร์สนี้เป็นของฉาà¸à¸—ี่ถูà¸à¸™à¸³à¹€à¸‚้า จึงไม่สามารถà¹à¸à¹‰à¹„ขได้\n"
+"อ่านรายละเอียดเพิ่มเติมได้จาà¸à¸„ู่มือในส่วนของà¸à¸²à¸£à¸™à¸³à¹€à¸‚้าฉาà¸"
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+"รีซอร์สนี้เป็นของฉาà¸à¸—ี่ถูà¸à¸­à¸´à¸™à¸ªà¹à¸•นซ์หรือสืบทอด\n"
+"à¸à¸²à¸£à¹à¸à¹‰à¹„ขจะไม่ถูà¸à¸šà¸±à¸™à¸—ึà¸"
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr "รีซอร์สนี้ถูà¸à¸™à¸³à¹€à¸‚้าจึงไม่สามารถà¹à¸à¹‰à¹„ขได้ ปรับตั้งค่าในà¹à¸œà¸‡à¸™à¸³à¹€à¸‚้าà¹à¸¥à¸°à¸™à¸³à¹€à¸‚้าใหม่"
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+"ฉาà¸à¸™à¸µà¹‰à¸–ูà¸à¸™à¸³à¹€à¸‚้า à¸à¸²à¸£à¹à¸à¹‰à¹„ขจะไม่ถูà¸à¸šà¸±à¸™à¸—ึà¸\n"
+"ต้องอินสà¹à¸•นซ์หรือสืบทอดà¸à¹ˆà¸­à¸™à¸ˆà¸¶à¸‡à¸ˆà¸°à¸ªà¸²à¸¡à¸²à¸£à¸–à¹à¸à¹‰à¹„ขได้\n"
+"อ่านรายละเอียดเพิ่มเติมได้จาà¸à¸„ู่มือในส่วนของà¸à¸²à¸£à¸™à¸³à¹€à¸‚้าฉาà¸"
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr "คัดลอà¸à¸•ัวà¹à¸›à¸£"
@@ -1632,9 +1509,8 @@ msgid "Make Built-In"
msgstr "à¸à¸±à¸‡"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Make Sub-Resources Unique"
-msgstr "ไม่ใช้รีซอร์สร่วมà¸à¸±à¸šà¸§à¸±à¸•ถุอื่น"
+msgstr "ไม่ให้ใช้รีซอร์สร่วมà¸à¸±à¸šà¸§à¸±à¸•ถุอื่น"
#: editor/editor_node.cpp
msgid "Open in Help"
@@ -1642,10 +1518,9 @@ msgstr "เปิดในคู่มือ"
#: editor/editor_node.cpp
msgid "There is no defined scene to run."
-msgstr "ไม่ได้à¸à¸³à¸«à¸™à¸”ฉาà¸à¹€à¸£à¸´à¹ˆà¸¡à¸•้น"
+msgstr "ยังไม่ได้เลือà¸à¸‰à¸²à¸à¸—ี่จะเล่น"
#: editor/editor_node.cpp
-#, fuzzy
msgid ""
"No main scene has ever been defined, select one?\n"
"You can change it later in \"Project Settings\" under the 'application' "
@@ -1697,13 +1572,12 @@ msgid "Quick Open Script.."
msgstr "เปิดไฟล์สคริปต์ด่วน.."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Close"
-msgstr "บันทึà¸à¹„ฟล์"
+msgstr "บันทึà¸à¹à¸¥à¸°à¸›à¸´à¸”"
#: editor/editor_node.cpp
msgid "Save changes to '%s' before closing?"
-msgstr ""
+msgstr "บันทึภ'%s' à¸à¹ˆà¸­à¸™à¸›à¸´à¸”โปรà¹à¸à¸£à¸¡à¸«à¸£à¸·à¸­à¹„ม่?"
#: editor/editor_node.cpp
msgid "Save Scene As.."
@@ -1734,9 +1608,8 @@ msgid "Export Tile Set"
msgstr "ส่งออภTile Set"
#: editor/editor_node.cpp
-#, fuzzy
msgid "This operation can't be done without a selected node."
-msgstr "ทำไม่ได้ถ้าไม่มีฉาà¸"
+msgstr "ทำไม่ได้ถ้าไม่ได้เลือà¸à¹‚หนด"
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1767,42 +1640,57 @@ msgid "Exit the editor?"
msgstr "ออà¸à¹‚ปรà¹à¸à¸£à¸¡?"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Project Manager?"
-msgstr "ตัวจัดà¸à¸²à¸£à¹‚ปรเจà¸à¸•์"
+msgstr "เปิดตัวจัดà¸à¸²à¸£à¹‚ปรเจà¸à¸•์?"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Quit"
-msgstr "บันทึà¸à¹„ฟล์"
+msgstr "บันทึà¸à¹à¸¥à¸°à¸›à¸´à¸”"
#: editor/editor_node.cpp
msgid "Save changes to the following scene(s) before quitting?"
-msgstr ""
+msgstr "บันทึà¸à¸‰à¸²à¸à¸•่อไปนี้à¸à¹ˆà¸­à¸™à¸›à¸´à¸”โปรà¹à¸à¸£à¸¡à¸«à¸£à¸·à¸­à¹„ม่?"
#: editor/editor_node.cpp
msgid "Save changes the following scene(s) before opening Project Manager?"
+msgstr "บันทึà¸à¸‰à¸²à¸à¸•่อไปนี้à¸à¹ˆà¸­à¸™à¸à¸¥à¸±à¸šà¸ªà¸¹à¹ˆà¸•ัวจัดà¸à¸²à¸£à¹‚ปรเจà¸à¸•์หรือไม่?"
+
+#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
msgstr ""
+"ตัวเลือà¸à¸™à¸µà¹‰à¸ˆà¸°à¸«à¸²à¸¢à¹„ปในรุ่นเสถียร สถานà¸à¸²à¸£à¸“์ที่จำเป็นต้องเปิดตัวเลือà¸à¸™à¸µà¹‰à¸ˆà¸°à¸–ือว่าเป็นบัค à¸à¸£à¸¸à¸“ารายงานบัค"
#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "เลือà¸à¸‰à¸²à¸à¹€à¸£à¸´à¹ˆà¸¡à¸•้น"
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
-msgstr ""
+#, fuzzy
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
+msgstr "ไม่สามารถเปิดใช้งานปลั๊à¸à¸­à¸´à¸™: '"
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
-msgstr ""
+#, fuzzy
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
+msgstr "ไม่พบชื่อสคริปต์ใน: 'res://addons/"
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
-msgstr ""
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "ไม่สามารถโหลดสคริปต์จาà¸: '"
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
-msgstr ""
+#, fuzzy
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
+msgstr "ไม่สามารถโหลดสคริปต์จาà¸: '"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
+msgstr "ไม่สามารถโหลดสคริปต์จาà¸: '"
#: editor/editor_node.cpp
msgid ""
@@ -1813,7 +1701,7 @@ msgstr ""
"สามารถสืบทอดไปยังฉาà¸à¹ƒà¸«à¸¡à¹ˆà¹€à¸žà¸·à¹ˆà¸­à¸—ำà¸à¸²à¸£à¹à¸à¹‰à¹„ข"
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr "เออะ"
@@ -1826,14 +1714,14 @@ msgstr ""
"à¹à¸¥à¹‰à¸§à¸šà¸±à¸™à¸—ึà¸à¸¥à¸‡à¹ƒà¸™à¹‚ฟลเดอร์โปรเจà¸à¸•์"
#: editor/editor_node.cpp
-msgid "Error loading scene."
-msgstr "ผิดพลาดขณะโหลดฉาà¸"
-
-#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
msgstr "ฉาภ'%s' มีà¸à¸²à¸£à¸­à¹‰à¸²à¸‡à¸­à¸´à¸‡à¸ªà¸¹à¸à¸«à¸²à¸¢:"
#: editor/editor_node.cpp
+msgid "Clear Recent Scenes"
+msgstr "ล้างรายà¸à¸²à¸£à¸‰à¸²à¸à¸¥à¹ˆà¸²à¸ªà¸¸à¸”"
+
+#: editor/editor_node.cpp
msgid "Save Layout"
msgstr "บันทึà¸à¹€à¸¥à¸¢à¹Œà¹€à¸­à¸²à¸•์"
@@ -1863,11 +1751,10 @@ msgid "Distraction Free Mode"
msgstr "โหมดไร้สิ่งรบà¸à¸§à¸™"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Toggle distraction-free mode."
msgstr "โหมดไร้สิ่งรบà¸à¸§à¸™"
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr "ฉาà¸"
@@ -2093,6 +1980,10 @@ msgstr "ถาม/ตอบ"
msgid "Issue Tracker"
msgstr "ระบบติดตามบัค"
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "ชุมชน"
+
#: editor/editor_node.cpp
msgid "About"
msgstr "เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š"
@@ -2101,7 +1992,7 @@ msgstr "เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š"
msgid "Play the project."
msgstr "เล่นโปรเจà¸à¸•์"
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr "เล่น"
@@ -2117,7 +2008,7 @@ msgstr "หยุดชั่วคราว"
msgid "Stop the scene."
msgstr "หยุด"
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr "หยุด"
@@ -2190,6 +2081,15 @@ msgid "Object properties."
msgstr "คุณสมบัติวัตถุ"
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr "à¸à¸²à¸£à¹à¸à¹‰à¹„ขจะไม่ถูà¸à¸šà¸±à¸™à¸—ึà¸!"
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr "นำเข้า"
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr "ระบบไฟล์"
@@ -2203,15 +2103,7 @@ msgstr "ข้อความ"
#: editor/editor_node.cpp
msgid "Don't Save"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr "นำเข้าอีà¸à¸„รั้ง"
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr "อัพเดท"
+msgstr "ไม่บันทึà¸"
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
@@ -2274,11 +2166,28 @@ msgstr "เปิดตัวà¹à¸à¹‰à¹„ขถัดไป"
msgid "Open the previous Editor"
msgstr "เปิดตัวà¹à¸à¹‰à¹„ขà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²"
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡à¸ à¸²à¸žà¸•ัวอย่าง Mesh"
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr "รูปตัวอย่าง.."
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr "ปลั๊à¸à¸­à¸´à¸™à¸—ี่ติดตั้งà¹à¸¥à¹‰à¸§:"
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr "อัพเดท"
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "รุ่น:"
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr "โดย:"
@@ -2311,7 +2220,8 @@ msgid "Frame %"
msgstr "เฟรม %"
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+#, fuzzy
+msgid "Physics Frame %"
msgstr "เฟรมคงที่ %"
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2330,35 +2240,17 @@ msgstr ""
msgid "Frame #:"
msgstr "เฟรมที่:"
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr "à¸à¸£à¸¸à¸“ารอให้à¸à¸²à¸£à¸ªà¹à¸à¸™à¹€à¸ªà¸£à¹‡à¸ˆ"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr "ฉาà¸à¸›à¸±à¸ˆà¸ˆà¸¸à¸šà¸±à¸™à¸•้องบันทึà¸à¸à¹ˆà¸­à¸™à¸™à¸³à¹€à¸‚้าอีà¸à¸„รั้ง"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr "บันทึà¸à¹à¸¥à¸°à¸™à¸³à¹€à¸‚้าอีà¸à¸„รั้ง"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr "นำเข้าอีà¸à¸„รั้ง"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr "นำเข้ารีซอร์สที่à¹à¸à¹‰à¹„ขอีà¸à¸„รั้ง"
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
-msgstr ""
+msgstr "เลือà¸à¸­à¸¸à¸›à¸à¸£à¸“์จาà¸à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­"
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
"Please add a runnable preset in the export menu."
msgstr ""
+"ไม่มีà¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸­à¸­à¸à¸—ี่สามารถรันเà¸à¸¡à¹„ด้ของà¹à¸žà¸¥à¸•ฟอร์มนี้\n"
+"à¸à¸£à¸¸à¸“าเพิ่มà¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸­à¸­à¸à¹ƒà¸™à¹€à¸¡à¸™à¸¹à¸ªà¹ˆà¸‡à¸­à¸­à¸"
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
@@ -2437,11 +2329,10 @@ msgid "Invalid version.txt format inside templates."
msgstr "รูปà¹à¸šà¸šà¸‚อง version.txt ในà¹à¸¡à¹ˆà¹à¸šà¸šà¹„ม่ถูà¸à¸•้อง"
#: editor/export_template_manager.cpp
-#, fuzzy
msgid ""
"Invalid version.txt format inside templates. Revision is not a valid "
"identifier."
-msgstr "รูปà¹à¸šà¸šà¸‚อง version.txt ในà¹à¸¡à¹ˆà¹à¸šà¸šà¹„ม่ถูà¸à¸•้อง"
+msgstr "รูปà¹à¸šà¸šà¸‚อง version.txt ในà¹à¸¡à¹ˆà¹à¸šà¸šà¹„ม่ถูà¸à¸•้อง หมายเลขรุ่น revision ต้องใช้ระบุได้"
#: editor/export_template_manager.cpp
msgid "No version.txt found inside templates."
@@ -2460,10 +2351,6 @@ msgid "Importing:"
msgstr "นำเข้า:"
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr "à¸à¸³à¸¥à¸±à¸‡à¹‚หลดà¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸­à¸­à¸"
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "รุ่นปัจจุบัน:"
@@ -2496,60 +2383,73 @@ msgid "Cannot navigate to '"
msgstr "ไม่สามารถไปยัง '"
#: editor/filesystem_dock.cpp
-#, fuzzy
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
-msgstr "บันทึà¸à¹à¸¥à¸°à¸™à¸³à¹€à¸‚้าอีà¸à¸„รั้ง"
+"Status: Import of file failed. Please fix file and reimport manually."
+msgstr ""
+"\n"
+"สถานะ: นำเข้าไฟล์ล้มเหลว à¸à¸£à¸¸à¸“าà¹à¸à¹‰à¹„ขไฟล์à¹à¸¥à¸°à¸™à¸³à¹€à¸‚้าใหม่"
#: editor/filesystem_dock.cpp
#, fuzzy
msgid ""
"\n"
"Source: "
-msgstr "ต้นฉบับ:"
+msgstr ""
+"\n"
+"ต้นฉบับ: "
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
-msgstr "ไฟล์ต้นทางà¹à¸¥à¸°à¸›à¸¥à¸²à¸¢à¸—างเหมือนà¸à¸±à¸™ ไม่ทำอะไร"
+msgid "Cannot move/rename resources root."
+msgstr "ไม่สามารถย้าย/เปลี่ยนชื่อโฟลเดอร์ราà¸"
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
-msgstr ""
+msgid "Cannot move a folder into itself.\n"
+msgstr "ย้ายโฟลเดอร์มาข้างในตัวมันเองไม่ได้\n"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
-msgstr "ไฟล์ต้นทางà¹à¸¥à¸°à¸›à¸¥à¸²à¸¢à¸—างอยู่ที่เดียวà¸à¸±à¸™ ไม่ทำอะไร"
+msgid "Error moving:\n"
+msgstr "ผิดพลาดขณะย้าย:\n"
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
-msgstr "ย้ายโฟลเดอร์เข้ามาในตัวเองไม่ได้"
+msgid "Unable to update dependencies:\n"
+msgstr "ไม่สามารถอัพเดทà¸à¸²à¸£à¸­à¹‰à¸²à¸‡à¸­à¸´à¸‡:\n"
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
-msgstr ""
+msgid "No name provided"
+msgstr "ไม่ได้ระบุชื่อ"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error moving file:\n"
-msgstr "ผิดพลาดขณะโหลดรูป:"
+msgid "Provided name contains invalid characters"
+msgstr "ไม่สามารถใช้อัà¸à¸©à¸£à¸šà¸²à¸‡à¸•ัวในชื่อได้"
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "ผิดพลาดขณะนำเข้า:"
+msgid "No name provided."
+msgstr "ไม่ได้ระบุชื่อ"
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
-msgstr "ทำงานใน '..' ไม่ได้"
+msgid "Name contains invalid characters."
+msgstr "อัà¸à¸©à¸£à¸šà¸²à¸‡à¸•ัวใช้ไม่ได้"
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
-msgstr "เลือà¸à¸Šà¸·à¹ˆà¸­à¹à¸¥à¸°à¸•ำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่อยู่ใหม่ให้à¸à¸±à¸š:"
+msgid "A file or folder with this name already exists."
+msgstr "มีชื่อà¸à¸¥à¸¸à¹ˆà¸¡à¸™à¸µà¹‰à¸­à¸¢à¸¹à¹ˆà¹à¸¥à¹‰à¸§"
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
-msgstr "ไม่ได้เลือà¸à¹„ฟล์ไว้!"
+msgid "Renaming file:"
+msgstr "เปลี่ยนชื่อไฟล์:"
+
+#: editor/filesystem_dock.cpp
+msgid "Renaming folder:"
+msgstr "เปลี่ยนชื่อโฟลเดอร์:"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2560,40 +2460,36 @@ msgid "Collapse all"
msgstr "ยุบโฟลเดอร์"
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
-msgstr "à¹à¸ªà¸”งในตัวจัดà¸à¸²à¸£à¹„ฟล์"
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
-msgstr "อินสà¹à¸•นซ์"
+msgid "Copy Path"
+msgstr "คัดลอà¸à¸•ำà¹à¸«à¸™à¹ˆà¸‡"
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
-msgstr "à¹à¸à¹‰à¹„ขà¸à¸²à¸£à¸­à¹‰à¸²à¸‡à¸­à¸´à¸‡.."
+msgid "Rename.."
+msgstr "เปลี่ยนชื่อ.."
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
-msgstr "ดูเจ้าของ.."
+msgid "Move To.."
+msgstr "ย้ายไป.."
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr "คัดลอà¸à¸•ำà¹à¸«à¸™à¹ˆà¸‡"
+msgid "New Folder.."
+msgstr "สร้างโฟลเดอร์.."
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
-msgstr "เปลี่ยนชื่อหรือย้าย.."
+msgid "Show In File Manager"
+msgstr "à¹à¸ªà¸”งในตัวจัดà¸à¸²à¸£à¹„ฟล์"
#: editor/filesystem_dock.cpp
-msgid "Move To.."
-msgstr "ย้ายไป.."
+msgid "Instance"
+msgstr "อินสà¹à¸•นซ์"
#: editor/filesystem_dock.cpp
-msgid "Info"
-msgstr "ข้อมูล"
+msgid "Edit Dependencies.."
+msgstr "à¹à¸à¹‰à¹„ขà¸à¸²à¸£à¸­à¹‰à¸²à¸‡à¸­à¸´à¸‡.."
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
-msgstr "นำเข้าอีà¸à¸„รั้ง.."
+msgid "View Owners.."
+msgstr "ดูเจ้าของ.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2620,11 +2516,18 @@ msgid ""
"Scanning Files,\n"
"Please Wait.."
msgstr ""
+"à¸à¸³à¸¥à¸±à¸‡à¸ªà¹à¸à¸™à¹„ฟล์,\n"
+"à¸à¸£à¸¸à¸“ารอ.."
#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "ย้าย"
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr "เปลี่ยนชื่อ"
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr "เพิ่มไปยังà¸à¸¥à¸¸à¹ˆà¸¡"
@@ -2634,74 +2537,81 @@ msgid "Remove from Group"
msgstr "ลบออà¸à¸ˆà¸²à¸à¸à¸¥à¸¸à¹ˆà¸¡"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Import as Single Scene"
-msgstr "à¸à¸³à¸¥à¸±à¸‡à¸™à¸³à¹€à¸‚้าฉาà¸.."
+msgstr "นำเข้าเป็นฉาà¸à¹€à¸”ียว"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr "นำเข้าโดยà¹à¸¢à¸à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
-msgstr ""
+msgstr "นำเข้าโดยà¹à¸¢à¸à¸§à¸±à¸ªà¸”ุ"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects"
-msgstr ""
+msgstr "นำเข้าโดยà¹à¸¢à¸à¸§à¸±à¸•ถุ"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects+Materials"
-msgstr ""
+msgstr "นำเข้าโดยà¹à¸¢à¸à¸—ั้งวัตถุà¹à¸¥à¸°à¸§à¸±à¸ªà¸”ุ"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr "นำเข้าโดยà¹à¸¢à¸à¸§à¸±à¸•ถุà¹à¸¥à¸°à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr "นำเข้าโดยà¹à¸¢à¸à¸§à¸±à¸ªà¸”ุà¹à¸¥à¸°à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr "นำเข้าโดยà¹à¸¢à¸à¸—ั้งวัตถุ วัสดุ à¹à¸¥à¸°à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Import as Multiple Scenes"
-msgstr "นำเข้าฉาภ3D"
+msgstr "นำเข้าเป็นหลายฉาà¸"
#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes+Materials"
-msgstr ""
+msgstr "นำเข้าเป็นหลายฉาà¸à¹à¸¥à¸°à¸§à¸±à¸ªà¸”ุ"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr "นำเข้าฉาà¸"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr "à¸à¸³à¸¥à¸±à¸‡à¸™à¸³à¹€à¸‚้าฉาà¸.."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr "à¸à¸³à¸¥à¸±à¸‡à¸£à¸±à¸™à¸ªà¸„ริปต์.."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr "โหลดสคริปต์หลังนำเข้าไม่ได้:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr "สคริปต์หลังนำเข้าผิดพลาด (ตรวจสอบคอนโซล):"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr "ผิดพลาดขณะรันสคริปต์หลังนำเข้า:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr "à¸à¸³à¸¥à¸±à¸‡à¸šà¸±à¸™à¸—ึà¸.."
#: editor/import_dock.cpp
msgid "Set as Default for '%s'"
-msgstr ""
+msgstr "à¸à¸³à¸«à¸™à¸”เป็นค่าเริ่มต้นของ '%s'"
#: editor/import_dock.cpp
msgid "Clear Default for '%s'"
-msgstr ""
+msgstr "ลบค่าเริ่มต้นของ '%s'"
#: editor/import_dock.cpp
msgid " Files"
@@ -2719,572 +2629,6 @@ msgstr "à¹à¸šà¸š.."
msgid "Reimport"
msgstr "นำเข้าใหม่"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr "ไม่มีบิตà¹à¸¡à¸ªà¸à¹Œà¹ƒà¸«à¹‰à¸™à¸³à¹€à¸‚้า!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่อยู่ว่างเปล่า"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr "ต้องเป็นตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่อยู่à¹à¸šà¸šà¹€à¸•็ม"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr "ต้องมีตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่อยู่"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¸šà¸±à¸™à¸—ึà¸à¸§à¹ˆà¸²à¸‡à¹€à¸›à¸¥à¹ˆà¸²!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr "นำเข้า BitMasks"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr "Texture ต้นฉบับ:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่อยู่:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr "ยอมรับ"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr "บิตà¹à¸¡à¸ªà¸à¹Œ"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr "ไม่ได้เลือà¸à¹„ฟล์ฟอนต์ต้นฉบับ!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr "ไม่ได้เลือà¸à¸§à¹ˆà¸²à¸ˆà¸°à¸™à¸³à¹€à¸‚้ามาเป็นไฟล์ฟอนต์ชื่ออะไร!"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-"นามสà¸à¸¸à¸¥à¹„ม่ถูà¸à¸•้อง\n"
-"à¸à¸£à¸¸à¸“าใช้ .font"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr "ไม่สามารถโหลด/ประมวลผลฟอนต์ต้นฉบับ"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr "บันทึà¸à¸Ÿà¸­à¸™à¸•์ไม่ได้"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr "ฟอนต์ต้นฉบับ:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr "ขนาดฟอนต์ต้นฉบับ:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr "นำเข้ามาเป็นรีซอร์ส:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr "The quick brown fox jumps over the lazy dog."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr "ทดสอบ:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr "ตัวเลือà¸:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr "นำเข้าฟอนต์"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr "ไฟล์นี้เป็นฟอนต์ของ Godot อยู่à¹à¸¥à¹‰à¸§ à¸à¸£à¸¸à¸“าเลือà¸à¸Ÿà¸­à¸™à¸•์ที่มาจาภBMFont"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr "ผิดพลาดขณะเปิดไฟล์เป็น BMFont"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr "ผิดพลาดขณะเริ่มต้น FreeType"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "ไม่ทราบประเภทของฟอนต์"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "ผิดพลาดขณะโหลดฟอนต์"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr "ขนาดฟอนต์ผิดพลาด"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#, fuzzy
-msgid "Invalid font custom source."
-msgstr "ต้นฉบับฟอนต์ที่à¸à¸³à¸«à¸™à¸”เองไม่ถูà¸à¸•้อง"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "ฟอนต์"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr "ไม่มี mesh ให้นำเข้า!"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr "นำเข้า Mesh เดี่ยว"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr "Mesh ต้นฉบับ:"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr "Mesh"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "%d พื้นผิว"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr "ไม่มีไฟล์เสียงให้นำเข้า!"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr "นำเข้าไฟล์เสียง"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr "ไฟล์เสียงต้นฉบับ:"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr "ไฟล์เสียง"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr "คลิปใหม่"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr "ตัวเลือà¸à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr "ตัวเลือà¸"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr "ตัวเพิ่มประสิทธิภาพ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr "ผิดพลาดเชิงเส้นมาà¸à¸—ี่สุด"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr "ผิดพลาดเชิงมุมมาà¸à¸—ี่สุด"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr "มุมมาà¸à¸ªà¸¸à¸”"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr "คลิป"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr "เริ่ม"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr "จบ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr "วน"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr "ตัวà¸à¸£à¸­à¸‡"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr "ที่อยู่ไฟล์ต้นฉบับว่างเปล่า"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr "โหลดสคริปต์หลังนำเข้าไม่ได้"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr "สคริปต์หลังนำเข้ามีข้อผิดพลาด"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr "ผิดพลาดขณะนำเข้าฉาà¸"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr "นำเข้าฉาภ3D"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr "ฉาà¸à¸•้นฉบับ:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr "เหมือนà¸à¸±à¸™à¸à¸±à¸šà¸‰à¸²à¸à¸›à¸¥à¸²à¸¢à¸—าง"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr "ใช้ร่วมà¸à¸±à¸™"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr "โฟลเดอร์ Texture ปลายทาง:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr "สคริปต์หลังประมวลผล:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr "ประเภทโหนดราà¸à¸à¸³à¸«à¸™à¸”เอง:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr "อัตโนมัติ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr "ชื่อโหนดราà¸:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr "ไฟล์ต่อไปนี้หายไป:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr "ยืนยันนำเข้า"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "ยà¸à¹€à¸¥à¸´à¸"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr "นำเข้าà¹à¸¥à¸°à¹€à¸›à¸´à¸”"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr "ฉาà¸à¸›à¸±à¸ˆà¸ˆà¸¸à¸šà¸±à¸™à¸¢à¸±à¸‡à¹„ม่ได้บันทึภยืนยันเปิดไฟล์ฉาà¸à¸—ี่นำเข้า?"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr "นำเข้าไฟล์รูป:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr "นำเข้าไฟล์ทับตัวเองไม่ได้:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr "ทำที่อยู่ไฟล์ให้เป็นภายในไม่ได้: %s (เป็นภายในอยู่à¹à¸¥à¹‰à¸§)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr "à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™à¸‰à¸²à¸ 3D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr "ไม่บีบอัด"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr "บีบอัดà¹à¸šà¸šà¹„ม่เสียคุณภาพ (PNG)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr "บีบอัดà¹à¸šà¸šà¹€à¸ªà¸µà¸¢à¸„ุณภาพ (WebP)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr "บีบอัด (VRAM)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr "รูปà¹à¸šà¸š Texture"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr "คุณภาพà¸à¸²à¸£à¸šà¸µà¸šà¸­à¸±à¸” Texture (WebP):"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr "ตัวเลือภTexture"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr "à¸à¸£à¸¸à¸“าเลือà¸à¸ªà¸±à¸à¹„ฟล์!"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr "Atlas ต้องà¸à¸²à¸£à¹„ฟล์อย่างน้อย 1 ไฟล์"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr "ผิดพลาดขณะนำเข้า:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr "Texture ขนาดใหà¸à¹ˆà¸•้องà¸à¸²à¸£à¹à¸„่ไฟล์เดียว"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr "ขนาด Texture ที่ใหà¸à¹ˆà¸—ี่สุด:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr "นำเข้า Texture สำหรับ Atlas (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr "ขนาดเซลล์:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr "Texture ขนาดใหà¸à¹ˆ"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr "นำเข้า Texture ขนาดใหà¸à¹ˆ (2D)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
-msgstr "Texture ต้นฉบับ"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
-msgstr "Texture ต้นฉบับ"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
-msgstr "นำเข้า Texture สำหรับ 2D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
-msgstr "นำเข้า Texture สำหรับ 3D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
-msgstr "นำเข้า Texture"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
-msgstr "Texture 2D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
-msgstr "Texture 3D"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr "โปรดทราบ: ไม่จำเป็นต้องนำเข้า Texture 2D à¹à¸„่คัดลอà¸à¹„ฟล์ png/jpg เข้าสู่โปรเจà¸à¸•์"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr "ครอบตัดพื้นที่ว่าง"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr "Texture"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr "นำเข้า Texture ขนาดใหà¸à¹ˆ"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr "โหลดรูปต้นฉบับ"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr "ตัด"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr "à¹à¸—รà¸"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr "บันทึà¸"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr "บันทึภTexture ขนาดใหà¸à¹ˆà¹„ม่ได้:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr "สร้าง Atlas สำหรับ:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr "โหลดรูป:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr "โหลดรูปไม่ได้:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr "à¸à¸³à¸¥à¸±à¸‡à¹à¸›à¸¥à¸‡à¸£à¸¹à¸›"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr "ครอบตัดรูป"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr "คัดลอà¸à¸£à¸¹à¸›"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr "บันทึภAtlas ไม่ได้:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr "บันทึภTexture ที่à¹à¸›à¸¥à¸‡à¹à¸¥à¹‰à¸§à¹„ม่ได้:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr "ต้นฉบับไม่ถูà¸à¸•้อง!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr "ต้นฉบับà¸à¸²à¸£à¹à¸›à¸¥à¹„ม่ถูà¸à¸•้อง!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr "คอลัมน์"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr "ภาษา"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr "ไม่มีอะไรให้นำเข้า!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr "ไม่มีที่อยู่ปลายทาง!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr "นำเข้าà¸à¸²à¸£à¹à¸›à¸¥"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr "นำเข้าไม่ได้!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr "นำเข้าà¸à¸²à¸£à¹à¸›à¸¥"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr "CSV ต้นฉบับ:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr "ไม่สนใจà¹à¸–วà¹à¸£à¸"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr "บีบอัด"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr "เพิ่มเข้าโปรเจà¸à¸•์ (project.godot)"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr "นำเข้าภาษา:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr "à¸à¸²à¸£à¹à¸›à¸¥"
-
#: editor/multi_node_edit.cpp
msgid "MultiNode Set"
msgstr "à¸à¸³à¸«à¸™à¸” MultiNode"
@@ -3297,6 +2641,48 @@ msgstr "à¸à¸¥à¸¸à¹ˆà¸¡"
msgid "Select a Node to edit Signals and Groups."
msgstr "เลือà¸à¹‚หนดเพื่อà¹à¸à¹‰à¹„ขสัà¸à¸à¸²à¸“à¹à¸¥à¸°à¸à¸¥à¸¸à¹ˆà¸¡"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
+msgstr "สร้างรูปหลายเหลี่ยม"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "à¹à¸à¹‰à¹„ขรูปหลายเหลี่ยม"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
+msgstr "à¹à¸—รà¸à¸ˆà¸¸à¸”"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "à¹à¸à¹‰à¹„ขรูปหลายเหลี่ยม (ลบจุด)"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
+msgstr "ลบรูปหลายเหลี่ยมà¹à¸¥à¸°à¸ˆà¸¸à¸”"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
+msgstr "สร้างรูปหลายเหลี่ยมจาà¸à¸„วามว่างเปล่า"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+"à¹à¸à¹‰à¹„ขรูปหลายเหลี่ยม:\n"
+"เมาส์ซ้าย: ย้ายจุด\n"
+"Ctrl+เมาส์ซ้าย: à¹à¸¢à¸à¸ªà¹ˆà¸§à¸™\n"
+"เมาส์ขวา: ลบจุด"
+
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Toggle Autoplay"
msgstr "เปิดปิดà¸à¸²à¸£à¹€à¸¥à¹ˆà¸™à¸­à¸±à¸•โนมัติ"
@@ -3450,7 +2836,6 @@ msgstr "ชื่อà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™:"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3478,9 +2863,8 @@ msgid "New name:"
msgstr "ชื่อใหม่:"
#: editor/plugins/animation_tree_editor_plugin.cpp
-#, fuzzy
msgid "Edit Filters"
-msgstr "à¹à¸à¹‰à¹„ขตัวà¸à¸£à¸­à¸‡à¹‚หนด"
+msgstr "à¹à¸à¹‰à¹„ขตัวà¸à¸£à¸­à¸‡"
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
@@ -3562,10 +2946,6 @@ msgid "Delete Input"
msgstr "ลบอินพุต"
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr "เปลี่ยนชื่อ"
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr "ผังà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™à¸–ูà¸à¸•้อง"
@@ -3621,64 +3001,181 @@ msgstr "à¹à¸à¹‰à¹„ขตัวà¸à¸£à¸­à¸‡à¹‚หนด"
msgid "Filters.."
msgstr "ตัวà¸à¸£à¸­à¸‡.."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
-msgstr "วิเคราะห์สามเหลี่ยม %d อัน:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr "ฟรี"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
+msgstr "ประà¸à¸­à¸šà¸”้วย:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
+msgstr "ดูไฟล์"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
+msgstr "ไม่พบตำà¹à¸«à¸™à¹ˆà¸‡à¸™à¸µà¹‰:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
+msgstr "ค้นหาไม่สำเร็จ"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
+msgstr "เชื่อมต่อไม่ได้ à¸à¸£à¸¸à¸“าลองใหม่"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
-msgstr "สามเหลี่ยม #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "เชื่อมต่อไม่ได้"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
-msgstr "ตั้งค่า Light Baker:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
+msgstr "ไม่สามารถเชื่อมต่อà¸à¸±à¸šà¹‚ฮสต์:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
-msgstr "วิเคราะห์ Geometry"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
+msgstr "ไม่มีà¸à¸²à¸£à¸•อบà¸à¸¥à¸±à¸šà¸ˆà¸²à¸à¹‚ฮสต์:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
-msgstr "ซ่อมà¹à¸‹à¸¡à¹à¸ªà¸‡"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "ไม่มีà¸à¸²à¸£à¸•อบà¸à¸¥à¸±à¸š"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
-msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡ BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
+msgstr "à¸à¸²à¸£à¸£à¹‰à¸­à¸‡à¸‚อผิดพลาด รหัส:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
-msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡ Light Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
+msgstr "ร้องขอผิดพลาด"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
-msgstr "สร้าง Texture Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
+msgstr "à¸à¸²à¸£à¸£à¹‰à¸­à¸‡à¸‚อผิดพลาด เปลี่ยนทางมาà¸à¹€à¸à¸´à¸™à¹„ป"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
-msgstr "ส่งผ่านไปยัง Lightmaps:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
+msgstr "เปลี่ยนทางมาà¸à¹€à¸à¸´à¸™à¹„ป"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
-msgstr "จัดสรร Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "ผิดพลาด:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
-msgstr "à¸à¸³à¸¥à¸±à¸‡ Bake สามเหลี่ยม #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr "à¹à¸®à¸Šà¸œà¸´à¸”พลาด ไฟล์ดาวน์โหลดอาจเสียหาย"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
-msgstr "ประมวลผล Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr "ที่ควรจะเป็น:"
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
-msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr "ที่ได้รับ:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr "ผิดพลาดในà¸à¸²à¸£à¸•รวจสอบà¹à¸®à¸Š SHA256"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr "à¸à¸²à¸£à¸”าวน์โหลดผิดพลาด:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸£à¸±à¸šà¸‚้อมูล:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸„้นหา.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting.."
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¸•่อ.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸£à¹‰à¸­à¸‡à¸‚อ.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
+msgstr "à¸à¸²à¸£à¸£à¹‰à¸­à¸‡à¸‚อผิดพลาด"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr "พร้อมใช้งาน"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr "ลองใหม่"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr "ดาวน์โหลดผิดพลาด"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸”าวน์โหลดไฟล์นี้อยู่à¹à¸¥à¹‰à¸§!"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr "à¹à¸£à¸à¸ªà¸¸à¸”"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr "à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr "ถัดไป"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr "ท้ายสุด"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "ทั้งหมด"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr "ปลั๊à¸à¸­à¸´à¸™"
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
-msgstr "รีเซ็ตขั้นตอนà¸à¸²à¸£ bake lightmap octree (เริ่มใหม่)"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "เรียงตาม:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr "ย้อนà¸à¸¥à¸±à¸š"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "หมวดหมู่:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "ไซต์:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr "à¸à¸²à¸£à¸ªà¸™à¸±à¸šà¸ªà¸™à¸¸à¸™.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "ผู้พัฒนา"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr "ทดสอบ"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr "ไฟล์ ZIP"
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr "ตัวอย่าง"
@@ -3721,12 +3218,17 @@ msgid "Edit CanvasItem"
msgstr "à¹à¸à¹‰à¹„ข CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
-msgstr "à¹à¸à¹‰à¹„ขà¸à¸²à¸£à¸•รึง"
+#, fuzzy
+msgid "Anchors only"
+msgstr "ตรึง"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
-msgstr "ซูม (%):"
+msgid "Change Anchors and Margins"
+msgstr "à¹à¸à¹‰à¹„ขà¸à¸²à¸£à¸•รึงà¹à¸¥à¸°à¸‚อบ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors"
+msgstr "à¹à¸à¹‰à¹„ขà¸à¸²à¸£à¸•รึง"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Paste Pose"
@@ -3778,60 +3280,78 @@ msgid "Pan Mode"
msgstr "โหมดมุมมอง"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
-msgstr "ล็อคไม่ให้วัตถุที่เลือà¸à¸¢à¹‰à¸²à¸¢à¸•ำà¹à¸«à¸™à¹ˆà¸‡"
+#, fuzzy
+msgid "Toggles snapping"
+msgstr "เปิด/ปิด จุดพัà¸à¹‚ปรà¹à¸à¸£à¸¡"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
-msgstr "ปลดล็อควัตถุที่เลือà¸"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
+msgstr "จำà¸à¸±à¸”à¸à¸²à¸£à¹€à¸„ลื่อนย้าย"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
-msgstr "ทำให้เลือà¸à¹‚หนดลูà¸à¹„ม่ได้"
+#, fuzzy
+msgid "Snapping options"
+msgstr "ตัวเลือà¸à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
-msgstr "ทำให้เลือà¸à¹‚หนดลูà¸à¹„ด้เหมือนเดิม"
+#, fuzzy
+msgid "Snap to grid"
+msgstr "โหมดà¸à¸²à¸£à¸ˆà¸³à¸à¸±à¸”:"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "à¹à¸à¹‰à¹„ข"
+msgid "Use Rotation Snap"
+msgstr "จำà¸à¸±à¸”à¸à¸²à¸£à¸«à¸¡à¸¸à¸™"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
-msgstr "จำà¸à¸±à¸”à¸à¸²à¸£à¹€à¸„ลื่อนย้าย"
+#, fuzzy
+msgid "Configure Snap..."
+msgstr "ตั้งค่าà¸à¸²à¸£à¸ˆà¸³à¸à¸±à¸”.."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
-msgstr "à¹à¸ªà¸”งเส้นตาราง"
+msgid "Snap Relative"
+msgstr "จำà¸à¸±à¸”โดยใช้ตำà¹à¸«à¸™à¹ˆà¸‡à¸›à¸±à¸ˆà¸ˆà¸¸à¸šà¸±à¸™"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
-msgstr "จำà¸à¸±à¸”à¸à¸²à¸£à¸«à¸¡à¸¸à¸™"
+msgid "Use Pixel Snap"
+msgstr "จำà¸à¸±à¸”ให้ย้ายเป็นพิà¸à¹€à¸‹à¸¥"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
-msgstr "จำà¸à¸±à¸”โดยใช้ตำà¹à¸«à¸™à¹ˆà¸‡à¸›à¸±à¸ˆà¸ˆà¸¸à¸šà¸±à¸™"
+msgid "Smart snapping"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
-msgstr "ตั้งค่าà¸à¸²à¸£à¸ˆà¸³à¸à¸±à¸”.."
+#, fuzzy
+msgid "Snap to parent"
+msgstr "ขยายให้เต็มโหนดà¹à¸¡à¹ˆ"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
-msgstr "จำà¸à¸±à¸”ให้ย้ายเป็นพิà¸à¹€à¸‹à¸¥"
+msgid "Snap to node anchor"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr "ล็อคไม่ให้วัตถุที่เลือà¸à¸¢à¹‰à¸²à¸¢à¸•ำà¹à¸«à¸™à¹ˆà¸‡"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
-msgstr "โครงà¸à¸£à¸°à¸”ูà¸.."
+msgid "Unlock the selected object (can be moved)."
+msgstr "ปลดล็อควัตถุที่เลือà¸"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
+msgstr "ทำให้เลือà¸à¹‚หนดลูà¸à¹„ม่ได้"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
+msgstr "ทำให้เลือà¸à¹‚หนดลูà¸à¹„ด้เหมือนเดิม"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Make Bones"
@@ -3859,12 +3379,17 @@ msgid "View"
msgstr "มุมมอง"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
-msgstr "รีเซ็ตà¸à¸²à¸£à¸‹à¸¹à¸¡"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr "à¹à¸ªà¸”งเส้นตาราง"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show helpers"
+msgstr "à¹à¸ªà¸”งตัวช่วย"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
-msgstr "ตั้งค่าà¸à¸²à¸£à¸‹à¸¹à¸¡.."
+msgid "Show rulers"
+msgstr "à¹à¸ªà¸”งไม้บรรทัด"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -3875,8 +3400,8 @@ msgid "Frame Selection"
msgstr "ให้สิ่งที่เลือà¸à¹€à¸•็มจอ"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
-msgstr "ตรึง"
+msgid "Layout"
+msgstr "เลย์เอาต์"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Keys"
@@ -3899,12 +3424,20 @@ msgid "Clear Pose"
msgstr "ลบท่าทาง"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
-msgstr "เซ็ตค่า"
+msgid "Drag pivot from mouse position"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Set pivot at mouse position"
+msgstr "à¸à¸³à¸«à¸™à¸”จุดหมุนที่ตำà¹à¸«à¸™à¹ˆà¸‡à¹€à¸¡à¸²à¸ªà¹Œ"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
-msgstr "Snap (พิà¸à¹€à¸‹à¸¥):"
+msgid "Divide grid step by 2"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
@@ -3914,23 +3447,28 @@ msgstr "เพิ่ม %s"
msgid "Adding %s..."
msgstr "à¸à¸³à¸¥à¸±à¸‡à¹€à¸žà¸´à¹ˆà¸¡ %s..."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr "สร้างโหนด"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr "ผิดพลาดขณะอินสà¹à¸•นซ์ฉาà¸à¸ˆà¸²à¸ %s"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr "ตà¸à¸¥à¸‡ :("
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr "ไม่พบโหนดà¹à¸¡à¹ˆà¸—ี่จะรับอินสà¹à¸•นซ์โหนดลูà¸"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr "ต้องเลือà¸à¹€à¸žà¸µà¸¢à¸‡à¹‚หนดเดียว"
@@ -3946,45 +3484,6 @@ msgstr ""
"ลาภ& วาง + Shift: เพิ่มเป็นโหนดà¸à¸²à¸•ิ\n"
"ลาภ& วาง + Alt: เปลี่ยนประเภทโหนด"
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr "สร้างรูปหลายเหลี่ยม"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr "à¹à¸à¹‰à¹„ขรูปหลายเหลี่ยม"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr "à¹à¸à¹‰à¹„ขรูปหลายเหลี่ยม (ลบจุด)"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "สร้างรูปหลายเหลี่ยมจาà¸à¸„วามว่างเปล่า"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "à¹à¸à¹‰à¹„ขรูปหลายเหลี่ยม 3D"
@@ -3994,14 +3493,6 @@ msgid "Set Handle"
msgstr "ปรับขนาดรูปร่าง"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡ Mesh Library"
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr "รูปตัวอย่าง.."
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr "ลบไอเทม %d?"
@@ -4024,19 +3515,36 @@ msgid "Update from Scene"
msgstr "อัพเดตจาà¸à¸‰à¸²à¸"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
+msgid "Flat0"
+msgstr "เรียบ 0"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr "เรียบ 1"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease in"
+msgstr "เข้านุ่มนวล"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr "ออà¸à¸™à¸¸à¹ˆà¸¡à¸™à¸§à¸¥"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr "นุ่มนวล"
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
-msgstr "à¹à¸à¹‰à¹„ขเส้นโค้ง"
+msgstr "à¹à¸à¹‰à¹„ขจุดบนเส้นโค้ง"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Modify Curve Tangent"
-msgstr "à¹à¸à¹‰à¹„ขเส้นโค้ง"
+msgstr "à¹à¸à¹‰à¹„ขเส้นสัมผัสเส้นโค้ง"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Load Curve Preset"
-msgstr "โหลดค่าล่วงหน้า"
+msgstr "โหลดเส้นโค้งตัวอย่าง"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Add point"
@@ -4047,23 +3555,20 @@ msgid "Remove point"
msgstr "ลบจุด"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Left linear"
-msgstr "เส้นตรง"
+msgstr "เส้นตรงซ้าย"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Right linear"
-msgstr "มุมขวา"
+msgstr "เส้นตรงขวา"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
msgstr "โหลดค่าล่วงหน้า"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Remove Curve Point"
-msgstr "ลบจุด"
+msgstr "ลบจุดบนเส้นโค้ง"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Toggle Curve Linear Tangent"
@@ -4071,7 +3576,7 @@ msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
msgid "Hold Shift to edit tangents individually"
-msgstr ""
+msgstr "à¸à¸” Shift ค้างเพื่อปรับเส้นสัมผัสà¹à¸¢à¸à¸à¸±à¸™"
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -4099,28 +3604,26 @@ msgid ""
"No OccluderPolygon2D resource on this node.\n"
"Create and assign one?"
msgstr ""
+"ไม่มี OccluderPolygon2D ในโหนดนี้\n"
+"สร้างà¹à¸¥à¸°à¸à¸³à¸«à¸™à¸”?"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "สร้างรูปหลายเหลี่ยมà¸à¸±à¹‰à¸™à¹à¸ªà¸‡"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr "à¹à¸à¹‰à¹„ขรูปหลายเหลี่ยมเดิม:"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr "คลิà¸à¸‹à¹‰à¸²à¸¢: ย้ายจุด"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr "Ctrl+คลิà¸à¸‹à¹‰à¸²à¸¢: à¹à¸¢à¸à¸ªà¹ˆà¸§à¸™"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr "คลิà¸à¸‚วา: ลบจุด"
@@ -4221,6 +3724,10 @@ msgid "Create Outline"
msgstr "สร้างเส้นรอบรูป"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr "Mesh"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr "สร้าง Trimesh Static Body"
@@ -4348,14 +3855,75 @@ msgstr "สุ่มขนาด:"
msgid "Populate"
msgstr ""
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr "สร้าง Mesh นำทาง\n"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr "ล้าง Mesh นำทาง"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡à¸ªà¸™à¸²à¸¡à¸„วามสูง..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Marking walkable triangles..."
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸à¸³à¸«à¸™à¸”พื้นผิวที่เดินผ่านได้..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr "บีบà¹à¸„บส่วนที่เดินผ่านได้..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Partitioning..."
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¹à¸šà¹ˆà¸‡à¸ªà¹ˆà¸§à¸™..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡à¸„อนทัวร์..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡ Polymesh..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr "à¸à¸³à¸¥à¸±à¸‡à¹à¸›à¸¥à¸‡à¸à¸¥à¸±à¸šà¹€à¸›à¹‡à¸™ Mesh นำทาง..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr "วิเคราะห์พื้นผิว..."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
+msgstr ""
+
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Create Navigation Polygon"
msgstr "สร้างรูปทรงนำทาง"
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
-msgstr "ลบรูปหลายเหลี่ยมà¹à¸¥à¸°à¸ˆà¸¸à¸”"
-
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Clear Emission Mask"
msgstr "ลบ Mask à¸à¸²à¸£à¸›à¸¥à¹ˆà¸­à¸¢"
@@ -4392,9 +3960,8 @@ msgstr "โหลด Mask à¸à¸²à¸£à¸›à¸°à¸—ุ"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Particles"
-msgstr "มุมรูปทรง"
+msgstr "อนุภาค"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
@@ -4531,14 +4098,17 @@ msgid "Curve Point #"
msgstr "จุดเส้นโค้ง #"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
msgstr "à¸à¸³à¸«à¸™à¸”พิà¸à¸±à¸”จุดเส้นโค้ง"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
msgstr "à¸à¸³à¸«à¸™à¸”เส้นโค้งขาเข้า"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
msgstr "à¸à¸³à¸«à¸™à¸”เส้นโค้งขาออà¸"
@@ -4599,6 +4169,14 @@ msgid "Scale Polygon"
msgstr "ปรับขนาดรูปหลายเหลี่ยม"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "à¹à¸à¹‰à¹„ข"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr "รูปหลายเหลี่ยม->UV"
@@ -4653,63 +4231,10 @@ msgstr "โหลดรีซอร์ส"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "วาง"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr "ประมวลผล BBCode"
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr "ความยาว:"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr "เปิดไฟล์เสียง"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr "ผิดพลาด: โหลดไฟล์เสียงไม่ได้!"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr "เพิ่มไฟล์เสียง"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr "เปลี่ยนชื่อไฟล์เสียง"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr "ลบไฟล์เสียง"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr "16 บิต"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr "8 บิต"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr "สเตอริโอ"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr "โมโน"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr "รูปà¹à¸šà¸š"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr "เสียงสูงต่ำ"
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr "ล้างรายà¸à¸²à¸£à¹„ฟล์ล่าสุด"
@@ -4719,6 +4244,8 @@ msgid ""
"Close and save changes?\n"
"\""
msgstr ""
+"ปิดà¹à¸¥à¸°à¸šà¸±à¸™à¸—ึà¸?\n"
+"\""
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4746,7 +4273,7 @@ msgstr "บันทึà¸à¸˜à¸µà¸¡à¹€à¸›à¹‡à¸™"
#: editor/plugins/script_editor_plugin.cpp
msgid " Class Reference"
-msgstr ""
+msgstr " ตำราอ้างอิงคลาส"
#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
@@ -4800,10 +4327,13 @@ msgstr "ปิดคู่มือ"
msgid "Close All"
msgstr "ปิดทั้งหมด"
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr "รัน"
+
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Toggle Scripts Panel"
-msgstr "เลือà¸/ลบโฟลเดอร์ที่ชอบ"
+msgstr "เปิด/ปิดà¹à¸œà¸‡à¸ªà¸„ริปต์"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -4829,7 +4359,8 @@ msgstr "คำสั่งต่อไป"
msgid "Break"
msgstr "หยุดพัà¸"
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr "ทำต่อไป"
@@ -4838,21 +4369,8 @@ msgid "Keep Debugger Open"
msgstr "เปิดตัวดีบัคค้างไว้"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Debug with external editor"
-msgstr "เปิดตัวà¹à¸à¹‰à¹„ขถัดไป"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr "หน้าต่าง"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr "ย้ายไปซ้าย"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr "ย้ายไปขวา"
+msgstr "ดีบัคด้วยโปรà¹à¸à¸£à¸¡à¸­à¸·à¹ˆà¸™"
#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
@@ -4909,7 +4427,7 @@ msgstr "สคริปต์à¸à¸±à¸‡à¸ˆà¸°à¹à¸à¹‰à¹„ขได้ต่อเ
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
-msgstr ""
+msgstr "สามารถวางรีซอร์สจาà¸à¸£à¸°à¸šà¸šà¹„ฟล์ได้เท่านั้น"
#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
@@ -4938,8 +4456,9 @@ msgid "Cut"
msgstr "ตัด"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "คัดลอà¸"
@@ -4958,9 +4477,8 @@ msgid "Move Down"
msgstr "ย้ายลง"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Delete Line"
-msgstr "ลบจุด"
+msgstr "ลบเส้น"
#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
@@ -4979,7 +4497,6 @@ msgid "Clone Down"
msgstr "คัดลอà¸à¸šà¸£à¸£à¸—ัดลงมา"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Complete Symbol"
msgstr "เสนอà¹à¸™à¸°à¸„ำเต็ม"
@@ -4988,12 +4505,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 "ใช้à¹à¸—็บเป็นย่อหน้า"
@@ -5130,16 +4645,18 @@ msgid "Add/Remove to Color Ramp"
msgstr "เพิ่ม/ลบในà¸à¸²à¸£à¹„ล่สี"
#: editor/plugins/shader_graph_editor_plugin.cpp
+#, fuzzy
msgid "Add/Remove to Curve Map"
-msgstr ""
+msgstr "เพิ่ม/ลบในเส้นโค้ง"
#: editor/plugins/shader_graph_editor_plugin.cpp
+#, fuzzy
msgid "Modify Curve Map"
-msgstr ""
+msgstr "à¹à¸à¹‰à¹„ขเส้นโค้ง"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Change Input Name"
-msgstr ""
+msgstr "เปลี่ยนชื่ออินพุต"
#: editor/plugins/shader_graph_editor_plugin.cpp
msgid "Connect Graph Nodes"
@@ -5206,10 +4723,6 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr "ปรับขนาดเป็น %s%%"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr "หมุน %s องศา"
@@ -5226,10 +4739,6 @@ msgid "Top View."
msgstr "มุมบน"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr "บน"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr "มุมหลัง"
@@ -5310,17 +4819,14 @@ msgid "Display Overdraw"
msgstr "à¹à¸ªà¸”งà¸à¸²à¸£à¸§à¸²à¸”ทับซ้อน"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Display Unshaded"
msgstr "à¹à¸ªà¸”งà¹à¸šà¸šà¹„ร้เงา"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Environment"
msgstr "à¹à¸ªà¸”งสภาพà¹à¸§à¸”ล้อม"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Gizmos"
msgstr "à¹à¸ªà¸”งสัà¸à¸¥à¸±à¸à¸©à¸“์"
@@ -5333,9 +4839,8 @@ msgid "Audio Listener"
msgstr "ตัวรับเสียง"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Doppler Enable"
-msgstr "เปิด"
+msgstr "เปิดดอปเพลอร์"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
@@ -5366,27 +4871,26 @@ msgid "Freelook Speed Modifier"
msgstr "มุมมองอิสระ ปรับความเร็ว"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "preview"
msgstr "ตัวอย่าง"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "XForm Dialog"
msgstr "เครื่องมือเคลื่อนย้าย"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Select Mode (Q)\n"
-msgstr "โหมดเลือà¸"
+msgstr "โหมดเลือภ(Q)\n"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid ""
"Drag: Rotate\n"
"Alt+Drag: Move\n"
"Alt+RMB: Depth list selection"
-msgstr "Alt+คลิà¸à¸‚วา: เลือà¸à¸—ี่ซ้อนà¸à¸±à¸™"
+msgstr ""
+"ลาà¸: หมุน\n"
+"Alt+ลาà¸: ย้าย\n"
+"Alt+คลิà¸à¸‚วา: เลือà¸à¸—ี่ซ้อนà¸à¸±à¸™"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
@@ -5465,12 +4969,16 @@ msgid "Transform"
msgstr "เคลื่อนย้าย"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr "ตั้งค่าà¸à¸²à¸£à¸ˆà¸³à¸à¸±à¸”.."
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr "พิà¸à¸±à¸”ภายใน"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Dialog.."
-msgstr ""
+msgstr "เครื่องมือเคลื่อนย้าย.."
#: editor/plugins/spatial_editor_plugin.cpp
msgid "1 Viewport"
@@ -5559,7 +5067,7 @@ msgstr "ปรับขนาด (อัตราส่วน):"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform Type"
-msgstr ""
+msgstr "ประเภทà¸à¸²à¸£à¹€à¸„ลื่อนย้าย"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Pre"
@@ -5610,6 +5118,10 @@ msgid "Speed (FPS):"
msgstr "ความเร็ว (เฟรมต่อวินาที):"
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr "วน"
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr "เฟรมà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™"
@@ -5622,12 +5134,12 @@ msgid "Insert Empty (After)"
msgstr "เพิ่มà¹à¸šà¸šà¸§à¹ˆà¸²à¸‡à¹€à¸›à¸¥à¹ˆà¸² (หลัง)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr "ขึ้น"
+msgid "Move (Before)"
+msgstr "ย้าย (à¸à¹ˆà¸­à¸™)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
-msgstr "ลง"
+msgid "Move (After)"
+msgstr "ย้าย (หลัง)"
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
@@ -5655,7 +5167,6 @@ msgid "Grid Snap"
msgstr "จำà¸à¸±à¸”ด้วยเส้นตาราง"
#: editor/plugins/texture_region_editor_plugin.cpp
-#, fuzzy
msgid "Auto Slice"
msgstr "à¹à¸šà¹ˆà¸‡à¸­à¸±à¸•โนมัติ"
@@ -5697,18 +5208,20 @@ msgid "Remove Item"
msgstr "ลบไอเทม"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All Items"
-msgstr "ลบไอเทมคลาส"
+msgstr "ลบทั้งหมด"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All"
-msgstr "ลบ"
+msgstr "ลบทั้งหมด"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
-msgstr "ธีม"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Class Items"
@@ -5792,11 +5305,14 @@ msgid "Style"
msgstr "รูปà¹à¸šà¸š"
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr "ฟอนต์"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr "สี"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase Selection"
msgstr "ลบที่เลือà¸"
@@ -5805,18 +5321,16 @@ msgid "Paint TileMap"
msgstr "วาด TileMap"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Line Draw"
-msgstr "เส้นตรง"
+msgstr "วาดเส้น"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rectangle Paint"
-msgstr ""
+msgstr "วาดสี่เหลี่ยม"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Bucket Fill"
-msgstr "ถัง"
+msgstr "ถมเต็ม"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -5843,8 +5357,8 @@ msgid "Mirror Y"
msgstr "สะท้อนซ้ายขวา"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
-msgstr "ถัง"
+msgid "Paint Tile"
+msgstr "วาด Tile"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Pick Tile"
@@ -5903,11 +5417,14 @@ msgid "Delete patch '"
msgstr "ลบà¹à¸žà¸•ช์ '"
#: editor/project_export.cpp
-#, fuzzy
msgid "Delete preset '%s'?"
msgstr "ลบ '%s'?"
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr "à¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸­à¸­à¸à¸ªà¸³à¸«à¸£à¸±à¸šà¹à¸žà¸¥à¸•ฟอร์มนี้สูà¸à¸«à¸²à¸¢/เสียหาย: "
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr "à¸à¸²à¸£à¸ªà¹ˆà¸‡à¸­à¸­à¸"
@@ -5958,18 +5475,16 @@ msgid "Make Patch"
msgstr "สร้างà¹à¸žà¸•ช์"
#: editor/project_export.cpp
-#, fuzzy
msgid "Features"
-msgstr "Texture"
+msgstr "ฟีเจอร์"
#: editor/project_export.cpp
msgid "Custom (comma-separated):"
-msgstr ""
+msgstr "à¸à¸³à¸«à¸™à¸”เอง (คั่นด้วยจุลภาค):"
#: editor/project_export.cpp
-#, fuzzy
msgid "Feature List:"
-msgstr "รายชื่อเมท็อด:"
+msgstr "รายชื่อฟีเจอร์:"
#: editor/project_export.cpp
msgid "Export PCK/Zip"
@@ -5980,71 +5495,105 @@ msgid "Export templates for this platform are missing:"
msgstr "ไม่พบà¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸­à¸­à¸à¸ªà¸³à¸«à¸£à¸±à¸šà¹à¸žà¸¥à¸•ฟอร์มนี้:"
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr "à¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸­à¸­à¸à¸ªà¸³à¸«à¸£à¸±à¸šà¹à¸žà¸¥à¸•ฟอร์มนี้สูà¸à¸«à¸²à¸¢/เสียหาย:"
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr "ส่งออà¸à¸žà¸£à¹‰à¸­à¸¡à¸•ัวดีบัค"
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
-msgstr "ที่อยู่โปรเจà¸à¸•์ผิดพลาด ต้องมีอยู่จริง!"
+#, fuzzy
+msgid "The path does not exist."
+msgstr "ไม่พบไฟล์"
+
+#: editor/project_manager.cpp
+msgid "Please choose a 'project.godot' file."
+msgstr "à¸à¸£à¸¸à¸“าเลือà¸à¹„ฟล์ 'project.godot'"
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
-msgstr "ที่อยู่โปรเจà¸à¸•์ผิดพลาด ต้องไม่มี project.godot"
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
+msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
-msgstr "ที่อยู่โปรเจà¸à¸•์ผิดพลาด ต้องมี project.godot"
+msgid "Please choose a folder that does not contain a 'project.godot' file."
+msgstr ""
#: editor/project_manager.cpp
msgid "Imported Project"
msgstr "นำเข้าโปรเจà¸à¸•์à¹à¸¥à¹‰à¸§"
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¹‚ปรเจà¸à¸•์ผิดพลาด (ได้à¹à¸à¹‰à¹„ขอะไรไปหรือไม่?)"
#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in project path."
+msgstr "ไม่พบไฟล์ project.godot"
+
+#: editor/project_manager.cpp
+msgid "Couldn't edit project.godot in project path."
+msgstr "à¹à¸à¹‰à¹„ขไฟล์ project.godot ไม่ได้"
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr "สร้างไฟล์ project.godot ไม่ได้"
#: editor/project_manager.cpp
-#, fuzzy
msgid "The following files failed extraction from package:"
msgstr "ผิดพลาดขณะà¹à¸¢à¸à¹„ฟล์ต่อไปนี้จาà¸à¹à¸žà¸„เà¸à¸ˆ:"
#: editor/project_manager.cpp
+msgid "Rename Project"
+msgstr "เปลี่ยนชื่อโปรเจà¸à¸•์"
+
+#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in the project path."
+msgstr "ไม่พบไฟล์ project.godot"
+
+#: editor/project_manager.cpp
+msgid "New Game Project"
+msgstr "โปรเจà¸à¸•์ใหม่"
+
+#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "นำเข้าโปรเจà¸à¸•์ที่มีอยู่เดิม"
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
-msgstr "ที่อยู่โปรเจà¸à¸•์ (ต้องมีอยู่จริง):"
+msgid "Create New Project"
+msgstr "สร้างโปรเจà¸à¸•์ใหม่"
+
+#: editor/project_manager.cpp
+msgid "Install Project:"
+msgstr "ติดตั้งโปรเจà¸à¸•์:"
#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "ชื่อโปรเจà¸à¸•์:"
#: editor/project_manager.cpp
-msgid "Create New Project"
-msgstr "สร้างโปรเจà¸à¸•์ใหม่"
+msgid "Create folder"
+msgstr "สร้างโฟลเดอร์"
#: editor/project_manager.cpp
msgid "Project Path:"
msgstr "ที่อยู่โปรเจà¸à¸•์:"
#: editor/project_manager.cpp
-msgid "Install Project:"
-msgstr "ติดตั้งโปรเจà¸à¸•์:"
-
-#: editor/project_manager.cpp
msgid "Browse"
msgstr "เลือà¸"
#: editor/project_manager.cpp
-msgid "New Game Project"
-msgstr "โปรเจà¸à¸•์ใหม่"
-
-#: editor/project_manager.cpp
msgid "That's a BINGO!"
msgstr "บิงโà¸!"
@@ -6053,11 +5602,14 @@ msgid "Unnamed Project"
msgstr "โปรเจà¸à¸•์ไม่มีชื่อ"
#: editor/project_manager.cpp
+msgid "Can't open project"
+msgstr "ไม่สามารถเปิดโปรเจà¸à¸•์"
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr "ยืนยันà¸à¸²à¸£à¹€à¸›à¸´à¸”โปรเจà¸à¸•์มาà¸à¸à¸§à¹ˆà¸² 1 โปรเจà¸à¸•์?"
#: editor/project_manager.cpp
-#, fuzzy
msgid ""
"Can't run project: no main scene defined.\n"
"Please edit the project and set the main scene in \"Project Settings\" under "
@@ -6071,6 +5623,8 @@ msgid ""
"Can't run project: Assets need to be imported.\n"
"Please edit the project to trigger the initial import."
msgstr ""
+"ไม่สามารถรันโปรเจà¸à¸•์: ต้องนำเข้าไฟล์\n"
+"à¸à¸£à¸¸à¸“าเปิดà¹à¸à¹‰à¹„ขโปรเจà¸à¸•์เพื่อนำเข้าไฟล์"
#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
@@ -6082,6 +5636,12 @@ msgstr "ลบโปรเจà¸à¸•์ออà¸à¸ˆà¸²à¸à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­? (
#: editor/project_manager.cpp
msgid ""
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
"You are about the scan %s folders for existing Godot projects. Do you "
"confirm?"
msgstr "จะทำà¸à¸²à¸£à¸ªà¹à¸à¸™à¸«à¸²à¹‚ปรเจà¸à¸•์ใน %s โฟลเดอร์ ยืนยัน?"
@@ -6091,10 +5651,6 @@ msgid "Project List"
msgstr "รายชื่อโปรเจà¸à¸•์"
#: editor/project_manager.cpp
-msgid "Run"
-msgstr "รัน"
-
-#: editor/project_manager.cpp
msgid "Scan"
msgstr "สà¹à¸à¸™"
@@ -6116,8 +5672,12 @@ msgstr "ออà¸"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Restart Now"
+msgstr "หาโหนดà¹à¸¡à¹ˆà¹ƒà¸«à¸¡à¹ˆ"
+
+#: editor/project_manager.cpp
msgid "Can't run project"
-msgstr "เชื่อมต่อไม่ได้"
+msgstr "ไม่สามารถรันโปรเจà¸à¸•์"
#: editor/project_settings_editor.cpp
msgid "Key "
@@ -6152,17 +5712,14 @@ msgid "Add Input Action Event"
msgstr "เพิ่มà¸à¸²à¸£à¸à¸£à¸°à¸—ำ"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
@@ -6223,7 +5780,7 @@ msgstr "เปลี่ยน"
msgid "Joypad Axis Index:"
msgstr "คันบังคับจอย:"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "à¹à¸à¸™"
@@ -6240,61 +5797,64 @@ msgid "Erase Input Action Event"
msgstr "ลบà¸à¸²à¸£à¸à¸£à¸°à¸—ำ"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Add Event"
-msgstr "เพิ่ม"
+msgstr "เพิ่มปุ่มà¸à¸”"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "อุปà¸à¸£à¸“์"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "ปุ่ม"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "ปุ่มเมาส์ซ้าย"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "ปุ่มเมาส์ขวา"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "ปุ่มเมาส์à¸à¸¥à¸²à¸‡"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr "ล้อเมาส์ขึ้น"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr "ล้อเมาส์ลง"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Add Global Property"
-msgstr "เพิ่มตัวรับคุณสมบัติ"
+msgstr "เพิ่มคุณสมบัติทั่วไป"
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
-msgstr ""
+msgid "Select a setting item first!"
+msgstr "à¸à¸£à¸¸à¸“าเลือà¸à¸•ัวเลือà¸à¸à¹ˆà¸­à¸™!"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "No property '"
-msgstr "คุณสมบัติ:"
+msgstr "ไม่พบคุณสมบัติ '"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Setting '"
-msgstr "ตัวเลือà¸"
+msgstr "ตัวเลือภ'"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Delete Item"
-msgstr "ลบอินพุต"
+msgstr "ลบไอเทม"
+
+#: editor/project_settings_editor.cpp
+msgid "Can't contain '/' or ':'"
+msgstr "ต้องไม่มี '/' หรือ ':'"
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr "มีอยู่à¸à¹ˆà¸­à¸™à¹à¸¥à¹‰à¸§"
#: editor/project_settings_editor.cpp
msgid "Error saving settings."
@@ -6306,7 +5866,7 @@ msgstr "บันทึà¸à¹à¸¥à¹‰à¸§"
#: editor/project_settings_editor.cpp
msgid "Override for Feature"
-msgstr ""
+msgstr "à¸à¸³à¸«à¸™à¸”ค่าเฉพาะของฟีเจอร์"
#: editor/project_settings_editor.cpp
msgid "Add Translation"
@@ -6337,6 +5897,15 @@ msgid "Remove Resource Remap Option"
msgstr "ลบà¸à¸²à¸£à¹à¸—นที่"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Changed Locale Filter"
+msgstr "ปรับขนาดà¸à¸¥à¹‰à¸­à¸‡"
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr "ตัวเลือà¸à¹‚ปรเจà¸à¸•์ (project.godot)"
@@ -6350,7 +5919,7 @@ msgstr "คุณสมบัติ:"
#: editor/project_settings_editor.cpp
msgid "Override For.."
-msgstr ""
+msgstr "à¸à¸³à¸«à¸™à¸”เฉพาะ.."
#: editor/project_settings_editor.cpp
msgid "Input Map"
@@ -6397,6 +5966,30 @@ msgid "Locale"
msgstr "ท้องถิ่น"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales Filter"
+msgstr "ท้องถิ่น"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Show all locales"
+msgstr "à¹à¸ªà¸”งà¸à¸£à¸°à¸”ูà¸"
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "ตัวà¸à¸£à¸­à¸‡"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales:"
+msgstr "ท้องถิ่น"
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "ออโต้โหลด"
@@ -6437,7 +6030,6 @@ msgid "Assign"
msgstr "ระบุ"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Select Node"
msgstr "เลือà¸à¹‚หนด"
@@ -6446,17 +6038,24 @@ msgid "New Script"
msgstr "สคริปต์ใหม่"
#: editor/property_editor.cpp
+msgid "Make Unique"
+msgstr "ไม่ใช้ร่วมà¸à¸±à¸šà¸§à¸±à¸•ถุอื่น"
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr "เปิดในตัวจัดà¸à¸²à¸£à¹„ฟล์"
#: editor/property_editor.cpp
+msgid "Convert To %s"
+msgstr "à¹à¸›à¸¥à¸‡à¹€à¸›à¹‡à¸™ %s"
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr "ผิดพลาดขณะโหลดไฟล์: ไม่ใช่รีซอร์ส!"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Selected node is not a Viewport!"
-msgstr "เลือà¸à¹‚หนดเพื่อนำเข้า"
+msgstr "โหนดที่เลือà¸à¹„ม่ใช่ Viewport!"
#: editor/property_editor.cpp
msgid "Pick a Node"
@@ -6487,6 +6086,10 @@ msgid "Select Property"
msgstr "เลือà¸à¸„ุณสมบัติ"
#: editor/property_selector.cpp
+msgid "Select Virtual Method"
+msgstr "เลือà¸à¹€à¸¡à¸—็อด"
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr "เลือà¸à¹€à¸¡à¸—็อด"
@@ -6514,26 +6117,6 @@ msgstr ""
msgid "Reparent"
msgstr "เลือà¸à¹‚หนดà¹à¸¡à¹ˆà¹ƒà¸«à¸¡à¹ˆ"
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr "สร้างรีซอร์สใหม่"
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr "เปิดรีซอร์ส"
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr "บันทึà¸à¸£à¸µà¸‹à¸­à¸£à¹Œà¸ª"
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr "เครื่องมือรีซอร์ส"
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr ""
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr ""
@@ -6656,17 +6239,8 @@ msgid "Error duplicating scene to save it."
msgstr "ผิดพลาดขณะทำซ้ำฉาà¸à¹€à¸žà¸·à¹ˆà¸­à¸šà¸±à¸™à¸—ึà¸"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Sub-Resources:"
-msgstr "รีซอร์ส:"
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr "à¹à¸à¹‰à¹„ขà¸à¸¥à¸¸à¹ˆà¸¡"
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr "à¹à¸à¹‰à¹„ขà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¹‚ยง"
+msgstr "รีซอร์สย่อย:"
#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
@@ -6727,7 +6301,6 @@ msgid ""
msgstr "อินสà¹à¸•นซ์ฉาà¸à¹€à¸›à¹‡à¸™à¹‚หนด สร้างฉาà¸à¸ªà¸·à¸šà¸—อดถ้าไม่มีโหนดราà¸"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Filter nodes"
msgstr "ตัวà¸à¸£à¸­à¸‡"
@@ -6808,7 +6381,6 @@ msgstr ""
"คลิà¸à¹€à¸žà¸·à¹ˆà¸­à¸—ำให้เลือà¸à¹„ด้"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Toggle Visibility"
msgstr "ซ่อน/à¹à¸ªà¸”ง"
@@ -6825,23 +6397,20 @@ msgid "Scene Tree (Nodes):"
msgstr "ผังฉาภ(โหนด):"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Node Configuration Warning!"
-msgstr "คำเตือนà¸à¸²à¸£à¸•ั้งค่าโหนด:"
+msgstr "คำเตือนà¸à¸²à¸£à¸•ั้งค่าโหนด!"
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
msgstr "เลือà¸à¹‚หนด"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Error loading template '%s'"
-msgstr "ผิดพลาดขณะโหลดรูป:"
+msgstr "ผิดพลาดขณะโหลดà¹à¸¡à¹ˆà¹à¸šà¸š '%s'"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Error - Could not create script in filesystem."
-msgstr "สร้างสคริปต์ในระบบไฟล์ไม่ได้"
+msgstr "ผิดพลาด - สร้างสคริปต์ไม่ได้"
#: editor/script_create_dialog.cpp
msgid "Error loading script from %s"
@@ -6861,18 +6430,25 @@ msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่อยู่ไม่ใช่ภายใ
#: editor/script_create_dialog.cpp
msgid "Invalid base path"
+msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¹€à¸£à¸´à¹ˆà¸¡à¸•้นไม่ถูà¸à¸•้อง"
+
+#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "File exists, will be reused"
+msgstr "มีไฟล์นี้อยู่à¹à¸¥à¹‰à¸§ จะนำมาใช้"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr "นามสà¸à¸¸à¸¥à¹„ม่ถูà¸à¸•้อง"
#: editor/script_create_dialog.cpp
msgid "Wrong extension chosen"
-msgstr ""
+msgstr "นามสà¸à¸¸à¸¥à¹„ม่ถูà¸à¸•้อง"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Invalid Path"
msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¸œà¸´à¸”พลาด"
@@ -6898,31 +6474,30 @@ msgid "Built-in script (into scene file)"
msgstr "à¸à¸±à¸‡à¸ªà¸„ริปต์ในไฟล์ฉาà¸"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Create new script file"
msgstr "สร้างสคริปต์ใหม่"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Load existing script file"
-msgstr "โหลดสคริปต์ที่มีอยู่เดิม"
+msgstr "โหลดสคริปต์จาà¸à¸”ิสà¸à¹Œ"
+
+#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr "ภาษา"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Inherits"
-msgstr "สืบทอดจาà¸:"
+msgstr "สืบทอดจาà¸"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Class Name"
-msgstr "ชื่อคลาส:"
+msgstr "ชื่อคลาส"
#: editor/script_create_dialog.cpp
msgid "Template"
msgstr "à¹à¸¡à¹ˆà¹à¸šà¸š"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Built-in Script"
msgstr "à¸à¸±à¸‡à¸ªà¸„ริปต์"
@@ -6951,6 +6526,10 @@ msgid "Function:"
msgstr "ฟังà¸à¹Œà¸Šà¸±à¸™:"
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr "ข้อผิดพลาด"
@@ -7031,6 +6610,10 @@ msgid "Type"
msgstr "ประเภท"
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr "รูปà¹à¸šà¸š"
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr "ใช้"
@@ -7107,12 +6690,29 @@ msgstr "เปลี่ยนà¸à¸£à¸­à¸šà¸­à¸™à¸¸à¸ à¸²à¸„"
msgid "Change Probe Extents"
msgstr "à¹à¸à¹‰à¹„ขขนาด Probe"
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Library"
+msgstr "ไลบรารี"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Status"
+msgstr "สถานะ:"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr "ตัวà¹à¸›à¸£à¹ƒà¸™ convert() ผิดพลาด ใช้ค่าคงที่ TYPE_* เท่านั้น"
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "ไบต์ไม่ครบหรือผิดรูปà¹à¸šà¸š ไม่สามารถà¹à¸›à¸¥à¸‡à¸„่าได้"
@@ -7151,34 +6751,27 @@ msgstr "ดิà¸à¸Šà¸±à¸™à¸™à¸²à¸£à¸µà¸—ี่เà¸à¹‡à¸šà¸­à¸´à¸™à¸ªà¹à¸•น
#: modules/gdscript/gd_functions.cpp
msgid "Object can't provide a length."
-msgstr ""
+msgstr "ไม่สามารถบอà¸à¸„วามยาวของวัตถุได้"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Delete Selection"
-msgstr "ลบสิ่งที่เลือà¸"
+msgstr "ลบที่เลือà¸à¹ƒà¸™ GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Duplicate Selection"
-msgstr "ทำซ้ำในà¹à¸—ร็à¸à¹€à¸”ิม"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
+msgstr "ทำซ้ำใน GridMap"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Snap View"
-msgstr "มุมบน"
+msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Prev Level (%sDown Wheel)"
-msgstr ""
+msgstr "ชั้นà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸² (%sล้อเมาส์ลง)"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Next Level (%sUp Wheel)"
-msgstr ""
+msgstr "ชั้นถัดไป (%sล้อเมาส์ขึ้น)"
#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
@@ -7195,30 +6788,27 @@ msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit X Axis"
-msgstr ""
+msgstr "à¹à¸à¹‰à¹„ขà¹à¸à¸™ X"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Y Axis"
-msgstr ""
+msgstr "à¹à¸à¹‰à¹„ขà¹à¸à¸™ Y"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Z Axis"
-msgstr ""
+msgstr "à¹à¸à¹‰à¹„ขà¹à¸à¸™ Z"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate X"
-msgstr "Ctrl: หมุน"
+msgstr "หมุนตามà¹à¸à¸™ X"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate Y"
-msgstr "Ctrl: หมุน"
+msgstr "หมุนตามà¹à¸à¸™ Y"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate Z"
-msgstr "Ctrl: หมุน"
+msgstr "หมุนตามà¹à¸à¸™ Z"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate X"
@@ -7237,51 +6827,38 @@ msgid "Cursor Clear Rotation"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Create Area"
-msgstr "สร้างใหม่"
+msgstr "สร้างพื้นที่ใหม่"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Create Exterior Connector"
-msgstr "สร้างโปรเจà¸à¸•์ใหม่"
+msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase Area"
-msgstr "ลบ TileMap"
+msgstr "ลบพื้นที่"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Selection -> Duplicate"
-msgstr "เฉพาะที่à¸à¸³à¸¥à¸±à¸‡à¹€à¸¥à¸·à¸­à¸"
+msgstr "ทำซ้ำที่เลือà¸"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Selection -> Clear"
-msgstr "เฉพาะที่à¸à¸³à¸¥à¸±à¸‡à¹€à¸¥à¸·à¸­à¸"
+msgstr "ลบที่เลือà¸"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Settings"
-msgstr "ตั้งค่าà¸à¸²à¸£à¸ˆà¸³à¸à¸±à¸”"
+msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Pick Distance:"
-msgstr "อินสà¹à¸•นซ์:"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr " ไฟล์"
+msgstr ""
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
-#, fuzzy
msgid ""
"A node yielded without working memory, please read the docs on how to yield "
"properly!"
@@ -7289,14 +6866,12 @@ msgstr ""
"โหนดหยุดพัà¸à¹‚ปรà¹à¸à¸£à¸¡à¹‚ดยที่ไม่มีหน่วยความจำทำงาน à¸à¸£à¸¸à¸“าอ่านคู่มือเพื่อหยุดพัà¸à¹‚ปรà¹à¸à¸£à¸¡à¹ƒà¸«à¹‰à¸–ูà¸à¸•้อง!"
#: modules/visual_script/visual_script.cpp
-#, fuzzy
msgid ""
"Node yielded, but did not return a function state in the first working "
"memory."
msgstr "โหนดหยุดพัภà¹à¸•่ไม่ได้คืนสถานะฟังà¸à¹Œà¸Šà¸±à¸™à¹ƒà¸™à¸«à¸™à¹ˆà¸§à¸¢à¸„วามจำทำงานà¹à¸£à¸"
#: modules/visual_script/visual_script.cpp
-#, fuzzy
msgid ""
"Return value must be assigned to first element of node working memory! Fix "
"your node please."
@@ -7315,29 +6890,24 @@ msgid "Stack overflow with stack depth: "
msgstr "สà¹à¸•คล้น ความสูงสà¹à¸•ค: "
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Signal Arguments"
-msgstr "à¹à¸à¹‰à¹„ขตัวà¹à¸›à¸£à¸ªà¸±à¸à¸à¸²à¸“:"
+msgstr "à¹à¸à¹‰à¹„ขตัวà¹à¸›à¸£à¸ªà¸±à¸à¸à¸²à¸“"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Argument Type"
-msgstr "เปลี่ยนประเภทตัวà¹à¸›à¸£à¹ƒà¸™à¸­à¸²à¸£à¹Œà¹€à¸£à¸¢à¹Œ"
+msgstr "เปลี่ยนประเภทตัวà¹à¸›à¸£"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Argument name"
-msgstr "เปลี่ยนชื่อà¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™:"
+msgstr "เปลี่ยนชื่อตัวà¹à¸›à¸£"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Set Variable Default Value"
-msgstr "à¹à¸à¹‰à¹„ขค่าปริยาย"
+msgstr "à¹à¸à¹‰à¹„ขค่าปริยายของตัวà¹à¸›à¸£"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Set Variable Type"
-msgstr "à¹à¸à¹‰à¹„ขตัวà¹à¸›à¸£:"
+msgstr "à¹à¸à¹‰à¹„ขประเภทตัวà¹à¸›à¸£"
#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
@@ -7389,12 +6959,10 @@ msgid "Add Node"
msgstr "เพิ่มโหนด"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Remove VisualScript Nodes"
-msgstr "ลบคีย์ที่ผิดพลาด"
+msgstr "ลบโหนด"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Duplicate VisualScript Nodes"
msgstr "ทำซ้ำโหนด"
@@ -7439,24 +7007,20 @@ msgid "Add Setter Property"
msgstr "เพิ่มตัวà¸à¸³à¸«à¸™à¸”คุณสมบัติ"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Base Type"
msgstr "เปลี่ยนประเภท"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Move Node(s)"
-msgstr "ลบโหนด"
+msgstr "ย้ายโหนด"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Remove VisualScript Node"
msgstr "ลบโหนด"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Connect Nodes"
-msgstr "เชื่อมไปยังโหนด:"
+msgstr "เชื่อมโหนด"
#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
@@ -7483,26 +7047,30 @@ msgid "Return"
msgstr "คืนค่า"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr "เรียà¸"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr "รับ"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
-msgstr "à¹à¸à¹‰à¹„ขค่าปริยาย"
+msgstr "à¹à¸à¹‰à¹„ขค่าอินพุต"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Can't copy the function node."
-msgstr "ทำงานใน '..' ไม่ได้"
+msgstr "คัดลอà¸à¹‚หนดฟังà¸à¹Œà¸Šà¸±à¸™à¹„ม่ได้"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Clipboard is empty!"
-msgstr "คลิปบอร์ดไม่มีรีซอร์ส!"
+msgstr "คลิปบอร์ดว่างเปล่า!"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Paste VisualScript Nodes"
msgstr "วางโหนด"
@@ -7511,18 +7079,16 @@ msgid "Remove Function"
msgstr "ลบฟังà¸à¹Œà¸Šà¸±à¸™"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Edit Variable"
-msgstr "à¹à¸à¹‰à¹„ขตัวà¹à¸›à¸£:"
+msgstr "à¹à¸à¹‰à¹„ขตัวà¹à¸›à¸£"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Variable"
msgstr "ลบตัวà¹à¸›à¸£"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Edit Signal"
-msgstr "à¹à¸à¹‰à¹„ขสัà¸à¸à¸²à¸“:"
+msgstr "à¹à¸à¹‰à¹„ขสัà¸à¸à¸²à¸“"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Signal"
@@ -7537,7 +7103,6 @@ msgid "Editing Signal:"
msgstr "à¹à¸à¹‰à¹„ขสัà¸à¸à¸²à¸“:"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Base Type:"
msgstr "ชนิด:"
@@ -7594,12 +7159,10 @@ msgid "Invalid index property name."
msgstr "ไม่พบคุณสมบัติ"
#: modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Base object is not a Node!"
msgstr "วัตถุนี้ไม่ใช่โหนด!"
#: modules/visual_script/visual_script_func_nodes.cpp
-#, fuzzy
msgid "Path does not lead Node!"
msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่ระบุไม่ได้นำไปยังโหนด!"
@@ -7736,7 +7299,7 @@ msgstr "ParallaxLayer จะทำงานได้ต้องเป็นโà
msgid ""
"A material to process the particles is not assigned, so no behavior is "
"imprinted."
-msgstr ""
+msgstr "ไม่ได้à¸à¸³à¸«à¸™à¸”วัสดุให้à¸à¸±à¸šà¸­à¸™à¸¸à¸ à¸²à¸„"
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
@@ -7748,6 +7311,8 @@ msgid ""
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"ระบบฟิสิà¸à¸ªà¹Œà¸ˆà¸°à¸ˆà¸±à¸”à¸à¸²à¸£à¸‚นาดของ RigidBody2D (ในโหมด character หรือ rigid) เมื่อรันเà¸à¸¡\n"
+"à¸à¸£à¸¸à¸“าปรับขนาดของ Collision shape à¹à¸—น"
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
@@ -7775,31 +7340,31 @@ msgstr "VisibilityEnable2D ควรจะเป็นโหนดลูà¸à¸‚à¸
#: scene/3d/arvr_nodes.cpp
msgid "ARVRCamera must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRCamera ต้องมี ARVROrigin เป็นโหนดà¹à¸¡à¹ˆ"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRController must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRController ต้องมี ARVROrigin เป็นโหนดà¹à¸¡à¹ˆ"
#: scene/3d/arvr_nodes.cpp
msgid ""
"The controller id must not be 0 or this controller will not be bound to an "
"actual controller"
-msgstr ""
+msgstr "Controller id ต้องไม่เป็น 0 ไม่เช่นนั้นตัวควบคุมนี้จะไม่เชื่อมà¸à¸±à¸šà¸­à¸¸à¸›à¸à¸£à¸“์จริง"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRAnchor must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRAnchor ต้องมี ARVROrigin เป็นโหนดà¹à¸¡à¹ˆ"
#: 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 ""
+msgstr "Anchor id ต้องไม่เป็น 0 ไม่เช่นนั้น anchor นี้จะไม่เชื่อมà¸à¸±à¸š anchor จริง"
#: scene/3d/arvr_nodes.cpp
msgid "ARVROrigin requires an ARVRCamera child node"
-msgstr ""
+msgstr "ARVROrigin ต้องมี ARVRCamera เป็นโหนดลูà¸"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7844,7 +7409,7 @@ msgstr ""
#: scene/3d/particles.cpp
msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
-msgstr ""
+msgstr "ไม่มีà¸à¸²à¸£à¹à¸ªà¸”งผลเนื่องจาà¸à¹„ม่ได้à¸à¸³à¸«à¸™à¸” mesh ใน draw pass"
#: scene/3d/physics_body.cpp
msgid ""
@@ -7852,6 +7417,8 @@ msgid ""
"the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"ระบบฟิสิà¸à¸ªà¹Œà¸ˆà¸°à¸ˆà¸±à¸”à¸à¸²à¸£à¸‚นาดของ RigidBody (ในโหมด character หรือ rigid) เมื่อรันเà¸à¸¡\n"
+"à¸à¸£à¸¸à¸“าปรับขนาดของ Collision shape à¹à¸—น"
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
@@ -7868,16 +7435,25 @@ msgid ""
"order for AnimatedSprite3D to display frames."
msgstr "ต้องมี SpriteFrames ใน 'Frames' เพื่อให้ AnimatedSprite3D à¹à¸ªà¸”งผลได้"
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
-#, fuzzy
msgid "Raw Mode"
-msgstr "โหมดมุมมอง"
+msgstr "โหมด Raw"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
msgstr "เพิ่มสีที่เลือà¸à¹ƒà¸™à¸£à¸²à¸¢à¸à¸²à¸£à¹‚ปรด"
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "ยà¸à¹€à¸¥à¸´à¸"
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr "à¹à¸ˆà¹‰à¸‡à¹€à¸•ือน!"
@@ -7885,10 +7461,6 @@ msgstr "à¹à¸ˆà¹‰à¸‡à¹€à¸•ือน!"
msgid "Please Confirm..."
msgstr "à¸à¸£à¸¸à¸“ายืนยัน..."
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -7927,6 +7499,620 @@ msgstr ""
"ให้à¹à¸à¹‰à¹„ขโหนดนี้ให้เป็นโหนดลูà¸à¸‚อง Control à¹à¸•่ถ้าไม่ ให้ปรับเป็น render target à¹à¸¥à¸°à¸™à¸³à¹„ปใช้เป็น "
"texture ของโหนดอื่น"
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr "ผิดพลาดขณะเริ่มต้น FreeType"
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "ไม่ทราบประเภทของฟอนต์"
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "ผิดพลาดขณะโหลดฟอนต์"
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr "ขนาดฟอนต์ผิดพลาด"
+
+#~ msgid "Filter:"
+#~ msgstr "ตัวà¸à¸£à¸­à¸‡:"
+
+#~ msgid "' parsing of config failed."
+#~ msgstr "' ผิดพลาดขณะอ่านไฟล์"
+
+#~ msgid "Theme"
+#~ msgstr "ธีม"
+
+#~ msgid "Method List For '%s':"
+#~ msgstr "รายชื่อเมท็อดของ '%s':"
+
+#~ msgid "Arguments:"
+#~ msgstr "ตัวà¹à¸›à¸£:"
+
+#~ msgid "Return:"
+#~ msgstr "คืนค่า:"
+
+#~ msgid "Added:"
+#~ msgstr "เพิ่ม:"
+
+#~ msgid "Removed:"
+#~ msgstr "ลบ:"
+
+#~ msgid "Error saving atlas:"
+#~ msgstr "ผิดพลาดขณะบันทึภatlas:"
+
+#~ msgid "Could not save atlas subtexture:"
+#~ msgstr "บันทึภtexture ย่อยของ atlas ไม่ได้:"
+
+#~ msgid "Exporting for %s"
+#~ msgstr "ส่งออà¸à¸ªà¸³à¸«à¸£à¸±à¸š %s"
+
+#~ msgid "Setting Up.."
+#~ msgstr "à¸à¸³à¸¥à¸±à¸‡à¸•ั้งค่า.."
+
+#~ msgid "Error loading scene."
+#~ msgstr "ผิดพลาดขณะโหลดฉาà¸"
+
+#~ msgid "Re-Import"
+#~ msgstr "นำเข้าอีà¸à¸„รั้ง"
+
+#~ msgid "Please wait for scan to complete."
+#~ msgstr "à¸à¸£à¸¸à¸“ารอให้à¸à¸²à¸£à¸ªà¹à¸à¸™à¹€à¸ªà¸£à¹‡à¸ˆ"
+
+#~ msgid "Current scene must be saved to re-import."
+#~ msgstr "ฉาà¸à¸›à¸±à¸ˆà¸ˆà¸¸à¸šà¸±à¸™à¸•้องบันทึà¸à¸à¹ˆà¸­à¸™à¸™à¸³à¹€à¸‚้าอีà¸à¸„รั้ง"
+
+#~ msgid "Save & Re-Import"
+#~ msgstr "บันทึà¸à¹à¸¥à¸°à¸™à¸³à¹€à¸‚้าอีà¸à¸„รั้ง"
+
+#~ msgid "Re-Importing"
+#~ msgstr "นำเข้าอีà¸à¸„รั้ง"
+
+#~ msgid "Re-Import Changed Resources"
+#~ msgstr "นำเข้ารีซอร์สที่à¹à¸à¹‰à¹„ขอีà¸à¸„รั้ง"
+
+#~ msgid "Loading Export Templates"
+#~ msgstr "à¸à¸³à¸¥à¸±à¸‡à¹‚หลดà¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸­à¸­à¸"
+
+#~ msgid ""
+#~ "\n"
+#~ "Status: Needs Re-Import"
+#~ msgstr ""
+#~ "\n"
+#~ "สถานะ: ต้องนำเข้าใหม่"
+
+#~ msgid "Same source and destination files, doing nothing."
+#~ msgstr "ไฟล์ต้นทางà¹à¸¥à¸°à¸›à¸¥à¸²à¸¢à¸—างเหมือนà¸à¸±à¸™ ไม่ทำอะไร"
+
+#~ msgid "Target file exists, can't overwrite. Delete first."
+#~ msgstr "ไฟล์ปลายทางมีอยู่ เขียนทับไม่ได้ à¸à¸£à¸¸à¸“าลบà¸à¹ˆà¸­à¸™"
+
+#~ msgid "Same source and destination paths, doing nothing."
+#~ msgstr "ไฟล์ต้นทางà¹à¸¥à¸°à¸›à¸¥à¸²à¸¢à¸—างอยู่ที่เดียวà¸à¸±à¸™ ไม่ทำอะไร"
+
+#~ msgid "Can't move directories to within themselves."
+#~ msgstr "ย้ายโฟลเดอร์เข้ามาในตัวเองไม่ได้"
+
+#~ msgid "Can't rename deps for:\n"
+#~ msgstr "ไม่สามารถà¹à¸à¹‰à¹„ขชื่อสำหรับ:\n"
+
+#~ msgid "Error moving file:\n"
+#~ msgstr "ผิดพลาดขณะย้ายไฟล์:\n"
+
+#~ msgid "Pick New Name and Location For:"
+#~ msgstr "เลือà¸à¸Šà¸·à¹ˆà¸­à¹à¸¥à¸°à¸•ำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่อยู่ใหม่ให้à¸à¸±à¸š:"
+
+#~ msgid "No files selected!"
+#~ msgstr "ไม่ได้เลือà¸à¹„ฟล์ไว้!"
+
+#~ msgid "Info"
+#~ msgstr "ข้อมูล"
+
+#~ msgid "Re-Import.."
+#~ msgstr "นำเข้าอีà¸à¸„รั้ง.."
+
+#~ msgid "No bit masks to import!"
+#~ msgstr "ไม่มีบิตà¹à¸¡à¸ªà¸à¹Œà¹ƒà¸«à¹‰à¸™à¸³à¹€à¸‚้า!"
+
+#~ msgid "Target path is empty."
+#~ msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่อยู่ว่างเปล่า"
+
+#~ msgid "Target path must be a complete resource path."
+#~ msgstr "ต้องเป็นตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่อยู่à¹à¸šà¸šà¹€à¸•็ม"
+
+#~ msgid "Target path must exist."
+#~ msgstr "ต้องมีตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่อยู่"
+
+#~ msgid "Save path is empty!"
+#~ msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¸šà¸±à¸™à¸—ึà¸à¸§à¹ˆà¸²à¸‡à¹€à¸›à¸¥à¹ˆà¸²!"
+
+#~ msgid "Import BitMasks"
+#~ msgstr "นำเข้า BitMasks"
+
+#~ msgid "Source Texture(s):"
+#~ msgstr "Texture ต้นฉบับ:"
+
+#~ msgid "Target Path:"
+#~ msgstr "ตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่อยู่:"
+
+#~ msgid "Accept"
+#~ msgstr "ยอมรับ"
+
+#~ msgid "Bit Mask"
+#~ msgstr "บิตà¹à¸¡à¸ªà¸à¹Œ"
+
+#~ msgid "No source font file!"
+#~ msgstr "ไม่ได้เลือà¸à¹„ฟล์ฟอนต์ต้นฉบับ!"
+
+#~ msgid "No target font resource!"
+#~ msgstr "ไม่ได้เลือà¸à¸§à¹ˆà¸²à¸ˆà¸°à¸™à¸³à¹€à¸‚้ามาเป็นไฟล์ฟอนต์ชื่ออะไร!"
+
+#~ msgid ""
+#~ "Invalid file extension.\n"
+#~ "Please use .font."
+#~ msgstr ""
+#~ "นามสà¸à¸¸à¸¥à¹„ม่ถูà¸à¸•้อง\n"
+#~ "à¸à¸£à¸¸à¸“าใช้ .font"
+
+#~ msgid "Couldn't save font."
+#~ msgstr "บันทึà¸à¸Ÿà¸­à¸™à¸•์ไม่ได้"
+
+#~ msgid "Source Font:"
+#~ msgstr "ฟอนต์ต้นฉบับ:"
+
+#~ msgid "Source Font Size:"
+#~ msgstr "ขนาดฟอนต์ต้นฉบับ:"
+
+#~ msgid "Dest Resource:"
+#~ msgstr "นำเข้ามาเป็นรีซอร์ส:"
+
+#~ msgid "The quick brown fox jumps over the lazy dog."
+#~ msgstr "The quick brown fox jumps over the lazy dog."
+
+#~ msgid "Test:"
+#~ msgstr "ทดสอบ:"
+
+#~ msgid "Options:"
+#~ msgstr "ตัวเลือà¸:"
+
+#~ msgid "Font Import"
+#~ msgstr "นำเข้าฟอนต์"
+
+#~ msgid ""
+#~ "This file is already a Godot font file, please supply a BMFont type file "
+#~ "instead."
+#~ msgstr "ไฟล์นี้เป็นฟอนต์ของ Godot อยู่à¹à¸¥à¹‰à¸§ à¸à¸£à¸¸à¸“าเลือà¸à¸Ÿà¸­à¸™à¸•์ที่มาจาภBMFont"
+
+#~ msgid "Failed opening as BMFont file."
+#~ msgstr "ผิดพลาดขณะเปิดไฟล์เป็น BMFont"
+
+#, fuzzy
+#~ msgid "Invalid font custom source."
+#~ msgstr "ต้นฉบับฟอนต์ที่à¸à¸³à¸«à¸™à¸”เองไม่ถูà¸à¸•้อง"
+
+#~ msgid "No meshes to import!"
+#~ msgstr "ไม่มี mesh ให้นำเข้า!"
+
+#~ msgid "Single Mesh Import"
+#~ msgstr "นำเข้า Mesh เดี่ยว"
+
+#~ msgid "Source Mesh(es):"
+#~ msgstr "Mesh ต้นฉบับ:"
+
+#~ msgid "Surface %d"
+#~ msgstr "%d พื้นผิว"
+
+#~ msgid "No samples to import!"
+#~ msgstr "ไม่มีไฟล์เสียงให้นำเข้า!"
+
+#~ msgid "Import Audio Samples"
+#~ msgstr "นำเข้าไฟล์เสียง"
+
+#~ msgid "Source Sample(s):"
+#~ msgstr "ไฟล์เสียงต้นฉบับ:"
+
+#~ msgid "Audio Sample"
+#~ msgstr "ไฟล์เสียง"
+
+#~ msgid "New Clip"
+#~ msgstr "คลิปใหม่"
+
+#~ msgid "Flags"
+#~ msgstr "ตัวเลือà¸"
+
+#~ msgid "Optimizer"
+#~ msgstr "ตัวเพิ่มประสิทธิภาพ"
+
+#~ msgid "Max Linear Error"
+#~ msgstr "ผิดพลาดเชิงเส้นมาà¸à¸—ี่สุด"
+
+#~ msgid "Max Angular Error"
+#~ msgstr "ผิดพลาดเชิงมุมมาà¸à¸—ี่สุด"
+
+#~ msgid "Max Angle"
+#~ msgstr "มุมมาà¸à¸ªà¸¸à¸”"
+
+#~ msgid "Clips"
+#~ msgstr "คลิป"
+
+#~ msgid "Start(s)"
+#~ msgstr "เริ่ม"
+
+#~ msgid "End(s)"
+#~ msgstr "จบ"
+
+#~ msgid "Filters"
+#~ msgstr "ตัวà¸à¸£à¸­à¸‡"
+
+#~ msgid "Source path is empty."
+#~ msgstr "ที่อยู่ไฟล์ต้นฉบับว่างเปล่า"
+
+#~ msgid "Couldn't load post-import script."
+#~ msgstr "โหลดสคริปต์หลังนำเข้าไม่ได้"
+
+#~ msgid "Invalid/broken script for post-import."
+#~ msgstr "สคริปต์หลังนำเข้ามีข้อผิดพลาด"
+
+#~ msgid "Error importing scene."
+#~ msgstr "ผิดพลาดขณะนำเข้าฉาà¸"
+
+#~ msgid "Import 3D Scene"
+#~ msgstr "นำเข้าฉาภ3D"
+
+#~ msgid "Source Scene:"
+#~ msgstr "ฉาà¸à¸•้นฉบับ:"
+
+#~ msgid "Same as Target Scene"
+#~ msgstr "เหมือนà¸à¸±à¸™à¸à¸±à¸šà¸‰à¸²à¸à¸›à¸¥à¸²à¸¢à¸—าง"
+
+#~ msgid "Shared"
+#~ msgstr "ใช้ร่วมà¸à¸±à¸™"
+
+#~ msgid "Target Texture Folder:"
+#~ msgstr "โฟลเดอร์ Texture ปลายทาง:"
+
+#~ msgid "Post-Process Script:"
+#~ msgstr "สคริปต์หลังประมวลผล:"
+
+#~ msgid "Custom Root Node Type:"
+#~ msgstr "ประเภทโหนดราà¸à¸à¸³à¸«à¸™à¸”เอง:"
+
+#~ msgid "Auto"
+#~ msgstr "อัตโนมัติ"
+
+#~ msgid "Root Node Name:"
+#~ msgstr "ชื่อโหนดราà¸:"
+
+#~ msgid "The Following Files are Missing:"
+#~ msgstr "ไฟล์ต่อไปนี้หายไป:"
+
+#~ msgid "Import Anyway"
+#~ msgstr "ยืนยันนำเข้า"
+
+#~ msgid "Import & Open"
+#~ msgstr "นำเข้าà¹à¸¥à¸°à¹€à¸›à¸´à¸”"
+
+#~ msgid "Edited scene has not been saved, open imported scene anyway?"
+#~ msgstr "ฉาà¸à¸›à¸±à¸ˆà¸ˆà¸¸à¸šà¸±à¸™à¸¢à¸±à¸‡à¹„ม่ได้บันทึภยืนยันเปิดไฟล์ฉาà¸à¸—ี่นำเข้า?"
+
+#~ msgid "Import Image:"
+#~ msgstr "นำเข้าไฟล์รูป:"
+
+#~ msgid "Couldn't localize path: %s (already local)"
+#~ msgstr "ทำที่อยู่ไฟล์ให้เป็นภายในไม่ได้: %s (เป็นภายในอยู่à¹à¸¥à¹‰à¸§)"
+
+#~ msgid "3D Scene Animation"
+#~ msgstr "à¹à¸­à¸™à¸´à¹€à¸¡à¸Šà¸±à¸™à¸‰à¸²à¸ 3D"
+
+#~ msgid "Uncompressed"
+#~ msgstr "ไม่บีบอัด"
+
+#~ msgid "Compress Lossless (PNG)"
+#~ msgstr "บีบอัดà¹à¸šà¸šà¹„ม่เสียคุณภาพ (PNG)"
+
+#~ msgid "Compress Lossy (WebP)"
+#~ msgstr "บีบอัดà¹à¸šà¸šà¹€à¸ªà¸µà¸¢à¸„ุณภาพ (WebP)"
+
+#~ msgid "Compress (VRAM)"
+#~ msgstr "บีบอัด (VRAM)"
+
+#~ msgid "Texture Format"
+#~ msgstr "รูปà¹à¸šà¸š Texture"
+
+#~ msgid "Texture Compression Quality (WebP):"
+#~ msgstr "คุณภาพà¸à¸²à¸£à¸šà¸µà¸šà¸­à¸±à¸” Texture (WebP):"
+
+#~ msgid "Texture Options"
+#~ msgstr "ตัวเลือภTexture"
+
+#~ msgid "Please specify some files!"
+#~ msgstr "à¸à¸£à¸¸à¸“าเลือà¸à¸ªà¸±à¸à¹„ฟล์!"
+
+#~ msgid "At least one file needed for Atlas."
+#~ msgstr "Atlas ต้องà¸à¸²à¸£à¹„ฟล์อย่างน้อย 1 ไฟล์"
+
+#~ msgid "Error importing:"
+#~ msgstr "ผิดพลาดขณะนำเข้า:"
+
+#~ msgid "Only one file is required for large texture."
+#~ msgstr "Texture ขนาดใหà¸à¹ˆà¸•้องà¸à¸²à¸£à¹à¸„่ไฟล์เดียว"
+
+#~ msgid "Max Texture Size:"
+#~ msgstr "ขนาด Texture ที่ใหà¸à¹ˆà¸—ี่สุด:"
+
+#~ msgid "Import Textures for Atlas (2D)"
+#~ msgstr "นำเข้า Texture สำหรับ Atlas (2D)"
+
+#~ msgid "Cell Size:"
+#~ msgstr "ขนาดเซลล์:"
+
+#~ msgid "Large Texture"
+#~ msgstr "Texture ขนาดใหà¸à¹ˆ"
+
+#~ msgid "Import Large Textures (2D)"
+#~ msgstr "นำเข้า Texture ขนาดใหà¸à¹ˆ (2D)"
+
+#~ msgid "Source Texture"
+#~ msgstr "Texture ต้นฉบับ"
+
+#~ msgid "Source Texture(s)"
+#~ msgstr "Texture ต้นฉบับ"
+
+#~ msgid "Import Textures for 2D"
+#~ msgstr "นำเข้า Texture สำหรับ 2D"
+
+#~ msgid "Import Textures for 3D"
+#~ msgstr "นำเข้า Texture สำหรับ 3D"
+
+#~ msgid "Import Textures"
+#~ msgstr "นำเข้า Texture"
+
+#~ msgid "2D Texture"
+#~ msgstr "Texture 2D"
+
+#~ msgid "3D Texture"
+#~ msgstr "Texture 3D"
+
+#~ msgid ""
+#~ "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files "
+#~ "to the project."
+#~ msgstr "โปรดทราบ: ไม่จำเป็นต้องนำเข้า Texture 2D à¹à¸„่คัดลอà¸à¹„ฟล์ png/jpg เข้าสู่โปรเจà¸à¸•์"
+
+#~ msgid "Crop empty space."
+#~ msgstr "ครอบตัดพื้นที่ว่าง"
+
+#~ msgid "Texture"
+#~ msgstr "Texture"
+
+#~ msgid "Import Large Texture"
+#~ msgstr "นำเข้า Texture ขนาดใหà¸à¹ˆ"
+
+#~ msgid "Load Source Image"
+#~ msgstr "โหลดรูปต้นฉบับ"
+
+#~ msgid "Slicing"
+#~ msgstr "ตัด"
+
+#~ msgid "Saving"
+#~ msgstr "บันทึà¸"
+
+#~ msgid "Couldn't save large texture:"
+#~ msgstr "บันทึภTexture ขนาดใหà¸à¹ˆà¹„ม่ได้:"
+
+#~ msgid "Build Atlas For:"
+#~ msgstr "สร้าง Atlas สำหรับ:"
+
+#~ msgid "Loading Image:"
+#~ msgstr "โหลดรูป:"
+
+#~ msgid "Couldn't load image:"
+#~ msgstr "โหลดรูปไม่ได้:"
+
+#~ msgid "Converting Images"
+#~ msgstr "à¸à¸³à¸¥à¸±à¸‡à¹à¸›à¸¥à¸‡à¸£à¸¹à¸›"
+
+#~ msgid "Cropping Images"
+#~ msgstr "ครอบตัดรูป"
+
+#~ msgid "Blitting Images"
+#~ msgstr "คัดลอà¸à¸£à¸¹à¸›"
+
+#~ msgid "Couldn't save atlas image:"
+#~ msgstr "บันทึภAtlas ไม่ได้:"
+
+#~ msgid "Couldn't save converted texture:"
+#~ msgstr "บันทึภTexture ที่à¹à¸›à¸¥à¸‡à¹à¸¥à¹‰à¸§à¹„ม่ได้:"
+
+#~ msgid "Invalid source!"
+#~ msgstr "ต้นฉบับไม่ถูà¸à¸•้อง!"
+
+#~ msgid "Invalid translation source!"
+#~ msgstr "ต้นฉบับà¸à¸²à¸£à¹à¸›à¸¥à¹„ม่ถูà¸à¸•้อง!"
+
+#~ msgid "Column"
+#~ msgstr "คอลัมน์"
+
+#~ msgid "No items to import!"
+#~ msgstr "ไม่มีอะไรให้นำเข้า!"
+
+#~ msgid "No target path!"
+#~ msgstr "ไม่มีที่อยู่ปลายทาง!"
+
+#~ msgid "Import Translations"
+#~ msgstr "นำเข้าà¸à¸²à¸£à¹à¸›à¸¥"
+
+#~ msgid "Couldn't import!"
+#~ msgstr "นำเข้าไม่ได้!"
+
+#~ msgid "Import Translation"
+#~ msgstr "นำเข้าà¸à¸²à¸£à¹à¸›à¸¥"
+
+#~ msgid "Source CSV:"
+#~ msgstr "CSV ต้นฉบับ:"
+
+#~ msgid "Ignore First Row"
+#~ msgstr "ไม่สนใจà¹à¸–วà¹à¸£à¸"
+
+#~ msgid "Compress"
+#~ msgstr "บีบอัด"
+
+#~ msgid "Add to Project (project.godot)"
+#~ msgstr "เพิ่มเข้าโปรเจà¸à¸•์ (project.godot)"
+
+#~ msgid "Import Languages:"
+#~ msgstr "นำเข้าภาษา:"
+
+#~ msgid "Translation"
+#~ msgstr "à¸à¸²à¸£à¹à¸›à¸¥"
+
+#~ msgid "Parsing %d Triangles:"
+#~ msgstr "วิเคราะห์สามเหลี่ยม %d อัน:"
+
+#~ msgid "Triangle #"
+#~ msgstr "สามเหลี่ยม #"
+
+#~ msgid "Light Baker Setup:"
+#~ msgstr "ตั้งค่า Light Baker:"
+
+#~ msgid "Fixing Lights"
+#~ msgstr "ซ่อมà¹à¸‹à¸¡à¹à¸ªà¸‡"
+
+#~ msgid "Making BVH"
+#~ msgstr "à¸à¸³à¸¥à¸±à¸‡à¸ªà¸£à¹‰à¸²à¸‡ BVH"
+
+#~ msgid "Transfer to Lightmaps:"
+#~ msgstr "ส่งผ่านไปยัง Lightmaps:"
+
+#~ msgid "Allocating Texture #"
+#~ msgstr "จัดสรร Texture #"
+
+#~ msgid "Baking Triangle #"
+#~ msgstr "à¸à¸³à¸¥à¸±à¸‡ Bake สามเหลี่ยม #"
+
+#~ msgid "Post-Processing Texture #"
+#~ msgstr "ประมวลผล Texture #"
+
+#~ msgid "Reset the lightmap octree baking process (start over)."
+#~ msgstr "รีเซ็ตขั้นตอนà¸à¸²à¸£ bake lightmap octree (เริ่มใหม่)"
+
+#~ msgid "Zoom (%):"
+#~ msgstr "ซูม (%):"
+
+#~ msgid "Skeleton.."
+#~ msgstr "โครงà¸à¸£à¸°à¸”ูà¸.."
+
+#~ msgid "Zoom Reset"
+#~ msgstr "รีเซ็ตà¸à¸²à¸£à¸‹à¸¹à¸¡"
+
+#~ msgid "Zoom Set.."
+#~ msgstr "ตั้งค่าà¸à¸²à¸£à¸‹à¸¹à¸¡.."
+
+#~ msgid "Set a Value"
+#~ msgstr "เซ็ตค่า"
+
+#~ msgid "Snap (Pixels):"
+#~ msgstr "Snap (พิà¸à¹€à¸‹à¸¥):"
+
+#~ msgid "Parse BBCode"
+#~ msgstr "ประมวลผล BBCode"
+
+#~ msgid "Length:"
+#~ msgstr "ความยาว:"
+
+#~ msgid "Open Sample File(s)"
+#~ msgstr "เปิดไฟล์เสียง"
+
+#~ msgid "ERROR: Couldn't load sample!"
+#~ msgstr "ผิดพลาด: โหลดไฟล์เสียงไม่ได้!"
+
+#~ msgid "Add Sample"
+#~ msgstr "เพิ่มไฟล์เสียง"
+
+#~ msgid "Rename Sample"
+#~ msgstr "เปลี่ยนชื่อไฟล์เสียง"
+
+#~ msgid "Delete Sample"
+#~ msgstr "ลบไฟล์เสียง"
+
+#~ msgid "16 Bits"
+#~ msgstr "16 บิต"
+
+#~ msgid "8 Bits"
+#~ msgstr "8 บิต"
+
+#~ msgid "Stereo"
+#~ msgstr "สเตอริโอ"
+
+#~ msgid "Mono"
+#~ msgstr "โมโน"
+
+#~ msgid "Pitch"
+#~ msgstr "เสียงสูงต่ำ"
+
+#~ msgid "Window"
+#~ msgstr "หน้าต่าง"
+
+#~ msgid "Move Right"
+#~ msgstr "ย้ายไปขวา"
+
+#~ msgid "Scaling to %s%%."
+#~ msgstr "ปรับขนาดเป็น %s%%"
+
+#~ msgid "Up"
+#~ msgstr "ขึ้น"
+
+#~ msgid "Down"
+#~ msgstr "ลง"
+
+#~ msgid "Bucket"
+#~ msgstr "ถัง"
+
+#~ msgid "Invalid project path, the path must exist!"
+#~ msgstr "ที่อยู่โปรเจà¸à¸•์ผิดพลาด ต้องมีอยู่จริง!"
+
+#~ msgid "Invalid project path, project.godot must not exist."
+#~ msgstr "ที่อยู่โปรเจà¸à¸•์ผิดพลาด ต้องไม่มี project.godot"
+
+#~ msgid "Invalid project path, project.godot must exist."
+#~ msgstr "ที่อยู่โปรเจà¸à¸•์ผิดพลาด ต้องมี project.godot"
+
+#~ msgid "Project Path (Must Exist):"
+#~ msgstr "ที่อยู่โปรเจà¸à¸•์ (ต้องมีอยู่จริง):"
+
+#~ msgid "Create New Resource"
+#~ msgstr "สร้างรีซอร์สใหม่"
+
+#~ msgid "Open Resource"
+#~ msgstr "เปิดรีซอร์ส"
+
+#~ msgid "Save Resource"
+#~ msgstr "บันทึà¸à¸£à¸µà¸‹à¸­à¸£à¹Œà¸ª"
+
+#~ msgid "Resource Tools"
+#~ msgstr "เครื่องมือรีซอร์ส"
+
+#~ msgid "Edit Groups"
+#~ msgstr "à¹à¸à¹‰à¹„ขà¸à¸¥à¸¸à¹ˆà¸¡"
+
+#~ msgid "Edit Connections"
+#~ msgstr "à¹à¸à¹‰à¹„ขà¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¹‚ยง"
+
+#~ msgid "GridMap Paint"
+#~ msgstr "วาด GridMap"
+
+#~ msgid "Areas"
+#~ msgstr "พื้นที่"
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl+"
+
+#~ msgid "Down Wheel)"
+#~ msgstr "ล้อเมาส์ลง)"
+
+#~ msgid "Up Wheel)"
+#~ msgstr "ล้อเมาส์ขึ้น)"
+
#~ msgid "Close scene? (Unsaved changes will be lost)"
#~ msgstr "ปิดไฟล์ฉาà¸? (à¸à¸²à¸£à¹à¸à¹‰à¹„ขที่ไม่ได้บันทึà¸à¸ˆà¸°à¸ªà¸¹à¸à¸«à¸²à¸¢)"
@@ -7940,9 +8126,6 @@ msgstr ""
#~ msgid "Close Goto Prev. Scene"
#~ msgstr "ปิดไปยังฉาà¸à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²"
-#~ msgid "Expand to Parent"
-#~ msgstr "ขยายให้เต็มโหนดà¹à¸¡à¹ˆ"
-
#~ msgid "Del"
#~ msgstr "ลบ"
@@ -8092,18 +8275,12 @@ msgstr ""
#~ msgid "Save Translatable Strings"
#~ msgstr "บันทึà¸à¸ªà¸•ริงหลายภาษา"
-#~ msgid "Translatable Strings.."
-#~ msgstr "สตริงหลายภาษา.."
-
#~ msgid "Install Export Templates"
#~ msgstr "ติดตั้งà¹à¸¡à¹ˆà¹à¸šà¸šà¸ªà¹ˆà¸‡à¸­à¸­à¸"
#~ msgid "Edit Script Options"
#~ msgstr "à¹à¸à¹‰à¹„ขตัวเลือà¸à¸ªà¸„ริปต์"
-#~ msgid "Please export outside the project folder!"
-#~ msgstr "à¸à¸£à¸¸à¸“าส่งออà¸à¹„ปนอà¸à¹‚ฟลเดอร์โปรเจà¸à¸•์!"
-
#~ msgid "Error exporting project!"
#~ msgstr "ผิดพลาดขณะส่งออà¸à¹‚ปรเจà¸à¸•์!"
@@ -8159,9 +8336,6 @@ msgstr ""
#~ msgid "Invalid character in group name!"
#~ msgstr "ใช้อัà¸à¸©à¸£à¸šà¸²à¸‡à¸•ัวในชื่อà¸à¸¥à¸¸à¹ˆà¸¡à¹„ม่ได้!"
-#~ msgid "Group name already exists!"
-#~ msgstr "มีชื่อà¸à¸¥à¸¸à¹ˆà¸¡à¸™à¸µà¹‰à¸­à¸¢à¸¹à¹ˆà¹à¸¥à¹‰à¸§!"
-
#~ msgid "Atlas Preview"
#~ msgstr "ตัวอย่าง Atlas"
diff --git a/editor/translations/tr.po b/editor/translations/tr.po
index dd10336bca..afb2c82be1 100644
--- a/editor/translations/tr.po
+++ b/editor/translations/tr.po
@@ -1,5 +1,6 @@
# Turkish translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# Aprın Çor Tigin <kabusturk38@gmail.com>, 2016-2017.
@@ -12,7 +13,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
-"PO-Revision-Date: 2017-07-19 09:38+0000\n"
+"PO-Revision-Date: 2017-08-29 13:49+0000\n"
"Last-Translator: hubbyist <hub@legrud.net>\n"
"Language-Team: Turkish <https://hosted.weblate.org/projects/godot-engine/"
"godot/tr/>\n"
@@ -20,7 +21,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 2.16-dev\n"
+"X-Generator: Weblate 2.17-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -196,10 +197,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr "%d için yeni izler oluştur ve açar gir?"
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -363,266 +363,6 @@ msgstr "Dizinin türünü degistir"
msgid "Change Array Value"
msgstr "Dizi DeÄŸerini DeÄŸiÅŸtir"
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr "Özgür"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr "Sürüm:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr "İçerikler:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr "Dosyaları Görüntüle"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr "Açıklama:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr "Kur"
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "Kapat"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr "Ana makine adı çözümlenemedi:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr "Çözümlenemedi."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr "Bağlantı hatası, lütfen tekrar deneyiniz."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "Bağlanamadı."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr "Ana makineye bağlanılamadı:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr "Ana makineden cevap yok:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "Cevap yok."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "İstem başarısız, dönen kod:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr "İstem Başarısız."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr "İstem Başarısız, çok fazla yönlendirme"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Resolving.."
-msgstr "Kaydediliyor..."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Connecting.."
-msgstr "BaÄŸlan..."
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Requesting.."
-msgstr "Deneme"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Error making request"
-msgstr "Kaynak kaydedilirken sorun!"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Download Error"
-msgstr "Aşağı"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "Hepsi"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "Ara:"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "Ara"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr "İçe Aktar"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr "Eklentiler"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "Sırala:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr "Tersi"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "Katman:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "Yer:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr "Destek..."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr "Resmi"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "Topluluk"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr "Deneme"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr "Varlıkların ZIP Dizeci"
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr "'%s' İçin Yöntem Dizelgesi:"
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "Çağır"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr "Yöntem Dizelgesi:"
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr "DeÄŸiÅŸtirgenler:"
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr "Döndür:"
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr "Dizeye Git"
@@ -660,6 +400,14 @@ msgstr "Tüm Sözcükler"
msgid "Selection Only"
msgstr "Yalnızca Seçim"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "Ara"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr "Bul"
@@ -692,11 +440,11 @@ msgstr "DeÄŸiÅŸimi Sor"
msgid "Skip"
msgstr "Geç"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "YaklaÅŸ"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr "Uzaklaştır"
@@ -765,6 +513,20 @@ msgstr "ErtelenmiÅŸ"
msgid "Oneshot"
msgstr "Tek sefer"
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "Kapat"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr "BaÄŸla"
@@ -790,7 +552,7 @@ msgstr "BaÄŸlan..."
msgid "Disconnect"
msgstr "Bağlantıyı kes"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr "İşaretler"
@@ -807,12 +569,25 @@ msgstr "BeÄŸeniler:"
msgid "Recent:"
msgstr "Yakın zamanda:"
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "Ara:"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr "EÅŸleÅŸmeler:"
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "Açıklama:"
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr "Şunun İçin Değişikliği Ara:"
@@ -872,6 +647,10 @@ msgid "Owners Of:"
msgstr "Bunun Sahibi:"
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr "Seçili dizeçleri tasarıdan kaldır? (Geri alınamaz)"
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -881,8 +660,9 @@ msgstr ""
"Yine de kaldırmak istiyor musunuz? (Geri alınamaz)"
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
-msgstr "Seçili dizeçleri tasarıdan kaldır? (Geri alınamaz)"
+#, fuzzy
+msgid "Cannot remove:\n"
+msgstr "Çözümlenemedi."
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -945,12 +725,7 @@ msgstr "SaÄŸ olun!"
#: editor/editor_about.cpp
msgid "Godot Engine contributors"
-msgstr ""
-
-#: editor/editor_about.cpp
-#, fuzzy
-msgid "Authors"
-msgstr "Yazar:"
+msgstr "Godot Oyun Motoru katkı sağlayanlar"
#: editor/editor_about.cpp
#, fuzzy
@@ -959,7 +734,7 @@ msgstr "Tasarı Yöneticisi"
#: editor/editor_about.cpp
msgid "Lead Developer"
-msgstr ""
+msgstr "BaÅŸ GeliÅŸtirici"
#: editor/editor_about.cpp editor/project_manager.cpp
msgid "Project Manager"
@@ -967,17 +742,51 @@ msgstr "Tasarı Yöneticisi"
#: editor/editor_about.cpp
msgid "Developers"
+msgstr "GeliÅŸtiriciler"
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Authors"
+msgstr "Yazar:"
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
msgstr ""
#: editor/editor_about.cpp
-msgid "License"
+msgid "Gold Sponsors"
msgstr ""
#: editor/editor_about.cpp
-msgid "Thirdparty License"
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
msgstr ""
#: editor/editor_about.cpp
+#, fuzzy
+msgid "Bronze Donors"
+msgstr "Aşağıya Eşle"
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "License"
+msgstr "Lisans"
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr "Üçüncü Parti Lisans"
+
+#: editor/editor_about.cpp
msgid ""
"Godot Engine relies on a number of thirdparty free and open source "
"libraries, all compatible with the terms of its MIT license. The following "
@@ -997,7 +806,7 @@ msgstr "İçerikler:"
#: editor/editor_about.cpp
msgid "Licenses"
-msgstr ""
+msgstr "Lisanslar"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Error opening package file, not in zip format."
@@ -1013,13 +822,23 @@ msgid "Package Installed Successfully!"
msgstr "Çıkın Başarı ile Kuruldu!"
#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr "Başarılı!"
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr "Kur"
+
+#: editor/editor_asset_installer.cpp
#, fuzzy
msgid "Package Installer"
msgstr "Çıkın Başarı ile Kuruldu!"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
-msgstr ""
+msgstr "Hoparlörler"
#: editor/editor_audio_buses.cpp
#, fuzzy
@@ -1066,21 +885,21 @@ msgid "Audio Bus, Drag and Drop to rearrange."
msgstr ""
#: editor/editor_audio_buses.cpp
-#, fuzzy
-msgid "Bus options"
-msgstr "Sorun ayıklama seçenekleri"
-
-#: editor/editor_audio_buses.cpp
msgid "Solo"
-msgstr ""
+msgstr "Tekil"
#: editor/editor_audio_buses.cpp
msgid "Mute"
-msgstr ""
+msgstr "Sessiz"
#: editor/editor_audio_buses.cpp
msgid "Bypass"
-msgstr ""
+msgstr "Dolan"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "Sorun ayıklama seçenekleri"
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
@@ -1089,6 +908,11 @@ msgstr "İkile"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Volume"
+msgstr "Yaklaşmayı Sıfırla"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Delete Effect"
msgstr "Seçilenleri Sil"
@@ -1113,6 +937,11 @@ msgstr "Canlandırmayı İkile"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Bus Volume"
+msgstr "Yaklaşmayı Sıfırla"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Move Audio Bus"
msgstr "Eylemi Taşı"
@@ -1149,7 +978,8 @@ msgstr "Ekle %s"
msgid "Create a new Bus Layout."
msgstr "Yeni Kaynak OluÅŸtur"
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr "Yükle"
@@ -1241,7 +1071,7 @@ msgid "Rearrange Autoloads"
msgstr "KendindenYüklenme'leri Yeniden Sırala"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "Dizeç yolu:"
@@ -1249,9 +1079,7 @@ msgstr "Dizeç yolu:"
msgid "Node Name:"
msgstr "Düğüm adı:"
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr "Ad"
@@ -1285,18 +1113,19 @@ msgid "Choose a Directory"
msgstr "Dizin Seç"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "Dizin OluÅŸtur"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "Ad:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "Dizin oluşturulamadı."
@@ -1314,31 +1143,7 @@ msgstr "Çıkınla"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
msgid "Template file not found:\n"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr "Eklenen:"
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr "Silinen:"
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr "Atlas kaydedilirken sorun oluÅŸtu:"
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr "Atlas alt dokusu kaydedilemedi:"
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr "%s için Dışa Aktarım"
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr "Kurulum..."
+msgstr "Biçem dosyası bulunamadı:\n"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
@@ -1424,6 +1229,11 @@ msgstr "Beğenileni Yukarı Taşı"
msgid "Move Favorite Down"
msgstr "Beğenileni Aşağı Taşı"
+#: editor/editor_file_dialog.cpp
+#, fuzzy
+msgid "Go to parent folder"
+msgstr "Dizin oluşturulamadı."
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "Dizinler & Dizeçler:"
@@ -1438,10 +1248,6 @@ msgid "File:"
msgstr "Dizeç:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "Süzgeç:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "Gecerli bir uzantı kullanılmalı."
@@ -1467,6 +1273,10 @@ msgstr "Bölüt Dizelgesi:"
msgid "Search Classes"
msgstr "Bölütleri Ara"
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr "Üst"
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr "Bölüt:"
@@ -1483,15 +1293,30 @@ msgstr "Tarafından kalıt alındı:"
msgid "Brief Description:"
msgstr "Kısa Açıklama:"
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Members"
+msgstr "Üyeler:"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "Üyeler:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Public Methods"
+msgstr "Açık Yöntemler:"
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr "Açık Yöntemler:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "GUI Theme Items"
+msgstr "Arayüz Kalıbı Öğeleri:"
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr "Arayüz Kalıbı Öğeleri:"
@@ -1501,26 +1326,63 @@ msgstr "İşaretler:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Enumerations"
+msgstr "Canlandırmalar"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Enumerations:"
msgstr "Canlandırmalar"
#: editor/editor_help.cpp
msgid "enum "
-msgstr ""
+msgstr "enum… "
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Constants"
+msgstr "Sabitler:"
#: editor/editor_help.cpp
msgid "Constants:"
msgstr "Sabitler:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Description"
+msgstr "Açıklama:"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Properties"
+msgstr "Özellikleri:"
+
+#: editor/editor_help.cpp
msgid "Property Description:"
msgstr "Özellik Açıklaması:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Methods"
+msgstr "Yöntem Dizelgesi:"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr "Yöntem Açıklaması:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr "Yazı Ara"
@@ -1530,24 +1392,21 @@ msgid "Output:"
msgstr " Çıktı:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "Temizle"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr "Kaynak kaydedilirken sorun!"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr "Kaynağı Başkaca Kaydet.."
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "Anlıyorum.."
@@ -1564,6 +1423,30 @@ msgid "Error while saving."
msgstr "Kaydedilirken sorun oluÅŸtu."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Can't open '%s'."
+msgstr "'..' üzerinde çalışılamıyor"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while parsing '%s'."
+msgstr "Kaydedilirken sorun oluÅŸtu."
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Missing '%s' or its dependencies."
+msgstr "Sahne '%s' bağımlılıkları koptu:"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while loading '%s'."
+msgstr "Kaydedilirken sorun oluÅŸtu."
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr "Sahne Kaydediliyor"
@@ -1622,6 +1505,33 @@ msgid "Restored default layout to base settings."
msgstr "Önyüklü tasarım temel ayarlara onarıldı."
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr "Değişkenleri Tıpkıla"
@@ -1798,23 +1708,35 @@ msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "Bir Ana Sahne Seç"
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "Yazı tipi %s yüklerken sorun oluştu"
+
+#: editor/editor_node.cpp
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -1824,7 +1746,7 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr "Öff"
@@ -1838,14 +1760,15 @@ msgstr ""
"kaydedin."
#: editor/editor_node.cpp
-msgid "Error loading scene."
-msgstr "Sahne yüklenirken sorun oluştu."
-
-#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
msgstr "Sahne '%s' bağımlılıkları koptu:"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Clear Recent Scenes"
+msgstr "Kemikleri Temizle"
+
+#: editor/editor_node.cpp
msgid "Save Layout"
msgstr "Tasarımı Kaydet"
@@ -1879,7 +1802,7 @@ msgstr "Dikkat Dağıtmayan Biçim"
msgid "Toggle distraction-free mode."
msgstr "Dikkat Dağıtmayan Biçim"
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr "Sahne"
@@ -2122,6 +2045,10 @@ msgstr ""
msgid "Issue Tracker"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "Topluluk"
+
#: editor/editor_node.cpp
msgid "About"
msgstr "İlişkin"
@@ -2130,7 +2057,7 @@ msgstr "İlişkin"
msgid "Play the project."
msgstr "Tasarıyı oynat."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr "Oynat"
@@ -2146,7 +2073,7 @@ msgstr "Sahneyi Duraklat"
msgid "Stop the scene."
msgstr "Sahneyi durdur."
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr "Durdur"
@@ -2219,6 +2146,16 @@ msgid "Object properties."
msgstr "Nesne özellikleri."
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Changes may be lost!"
+msgstr "Bediz Öbeğini Değiştir"
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr "İçe Aktar"
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr "DizeçDüzeni"
@@ -2234,14 +2171,6 @@ msgstr "Çıktı"
msgid "Don't Save"
msgstr ""
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr "Yeniden İçe Aktar"
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr "Güncelle"
-
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr "Kalıpları ZIP Dizecinden İçe Aktar"
@@ -2309,11 +2238,29 @@ msgstr "Düzenleyicide Aç"
msgid "Open the previous Editor"
msgstr "Düzenleyicide Aç"
+#: editor/editor_plugin.cpp
+#, fuzzy
+msgid "Creating Mesh Previews"
+msgstr "Örüntü Betikevi Oluştur"
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr "Küçük Bediz.."
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr "Yüklü Eklentiler:"
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr "Güncelle"
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "Sürüm:"
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr "Yazar:"
@@ -2346,7 +2293,8 @@ msgid "Frame %"
msgstr "Kare %"
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+#, fuzzy
+msgid "Physics Frame %"
msgstr "Sabit Kare %"
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2365,26 +2313,6 @@ msgstr "Kendi"
msgid "Frame #:"
msgstr "Kare #:"
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr "Tarama için bitmesini bekleyin."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr "Yeniden içe aktarmak için şu anki sahneyi kaydet."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr "Kaydet & Yeniden İçe Aktar"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr "Yeniden-İçe Aktarım"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr "Değiştirilmiş Kaynakları Yeniden İçe Aktar"
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2501,10 +2429,6 @@ msgid "Importing:"
msgstr "İçe Aktarım:"
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr "Dışa Aktarım Kalıpları Yükleniyor"
-
-#: editor/export_template_manager.cpp
#, fuzzy
msgid "Current Version:"
msgstr "Åžu anki Sahne"
@@ -2545,11 +2469,18 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
-msgstr "Kaydet & Yeniden İçe Aktar"
+"Status: Import of file failed. Please fix file and reimport manually."
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
@@ -2559,46 +2490,57 @@ msgid ""
msgstr "Kaynak:"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
-msgstr "Özdeş kaynak ve varış dizeçleri, hiçbir şey yapılmıyor."
+#, fuzzy
+msgid "Cannot move/rename resources root."
+msgstr "Kaynak yazı tipi yüklenemiyor / işlenemiyor."
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
-msgstr ""
+#, fuzzy
+msgid "Cannot move a folder into itself.\n"
+msgstr "Bir dizeç kendisi üzerine içe aktaramıyor:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving:\n"
+msgstr "İçe aktarırken sorun:"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
-msgstr "Özdeş kaynak ve varış yolları, hiçbir şey yapılmıyor."
+#, fuzzy
+msgid "Unable to update dependencies:\n"
+msgstr "Sahne '%s' bağımlılıkları koptu:"
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
-msgstr "Dizinleri kendi içlerine taşıyamazsınız."
+msgid "No name provided"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving file:\n"
-msgstr "Bediz yüklenirken sorun oluştu:"
+msgid "No name provided."
+msgstr "Yeniden Adlandır ya da Taşı.."
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "İçe aktarırken sorun:"
+msgid "Name contains invalid characters."
+msgstr "Geçerli damgalar:"
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
-msgstr "'..' üzerinde çalışılamıyor"
+#, fuzzy
+msgid "A file or folder with this name already exists."
+msgstr "Öbek adı zaten var!"
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
-msgstr "Şunun için yeni ad ile konum seçin:"
+#, fuzzy
+msgid "Renaming file:"
+msgstr "Değişkeni Yeniden Adlandır"
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
-msgstr "Hiçbir Dizeç Seçilmedi!"
+#, fuzzy
+msgid "Renaming folder:"
+msgstr "Düğümü Yeniden Adlandır"
#: editor/filesystem_dock.cpp
#, fuzzy
@@ -2610,40 +2552,38 @@ msgid "Collapse all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
-msgstr "Dizeç Yöneticisinde Göster"
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
-msgstr "Örnek"
+msgid "Copy Path"
+msgstr "Dizeç Yolunu Tıpkıla"
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
-msgstr "Bağımlılıkları Düzenle.."
+#, fuzzy
+msgid "Rename.."
+msgstr "Yeniden Adlandır"
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
-msgstr "Sahipleri Görüntüle.."
+msgid "Move To.."
+msgstr "Şuraya Taşı.."
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr "Dizeç Yolunu Tıpkıla"
+#, fuzzy
+msgid "New Folder.."
+msgstr "Dizin OluÅŸtur"
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
-msgstr "Yeniden Adlandır ya da Taşı.."
+msgid "Show In File Manager"
+msgstr "Dizeç Yöneticisinde Göster"
#: editor/filesystem_dock.cpp
-msgid "Move To.."
-msgstr "Şuraya Taşı.."
+msgid "Instance"
+msgstr "Örnek"
#: editor/filesystem_dock.cpp
-msgid "Info"
-msgstr "Bilgi"
+msgid "Edit Dependencies.."
+msgstr "Bağımlılıkları Düzenle.."
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
-msgstr "Yeniden İçe Aktar.."
+msgid "View Owners.."
+msgstr "Sahipleri Görüntüle.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2675,6 +2615,11 @@ msgstr ""
msgid "Move"
msgstr "Taşı"
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr "Yeniden Adlandır"
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr "Öbeğe Ekle"
@@ -2689,6 +2634,11 @@ msgid "Import as Single Scene"
msgstr "Sahneyi İçe Aktarıyor..."
#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Animations"
+msgstr "Canlandırmaları İçe Aktar.."
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -2701,6 +2651,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
#, fuzzy
msgid "Import as Multiple Scenes"
msgstr "3B Sahneyi İçe Aktar"
@@ -2710,40 +2672,33 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr "Sahneyi İçe Aktar"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr "Sahneyi İçe Aktarıyor..."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr "Çalışan Özel Betik.."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr "İçe aktarma sonrası betik dizeci yüklenemedi:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
"İçe aktarma işlemi sonrası için geçersiz/bozuk betik dizeci (konsolu "
"denetleyin):"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr "İçe aktarma sonrası betik dizeci çalıştırılırken sorun oluştu:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr "Kaydediliyor..."
@@ -2774,588 +2729,56 @@ msgstr "Ön ayar.."
msgid "Reimport"
msgstr "Yeniden İçe Aktar"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr "Alınacak hiç bit örteci yok!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr "Amaçlanan dizeç yolu boş."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr "Amaçlanan yol, tam bir kaynak yolu olmalıdır."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr "Amaçlanan dizeç yolu var olmalı."
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr "Kayıt yolu boş!"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr "BitMasks İçe Aktar"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr "Kaynak Doku(lar):"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr "Amaçlanan Dizeç Yolu :"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
+msgstr "MultiNode Kur"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr "Kabul"
+#: editor/node_dock.cpp
+msgid "Groups"
+msgstr "Öbekler"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr "Bit Örteci"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
+msgstr "İşaretleri ve Öbekleri düzenlemek için bir Düğüm seçin."
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr "Kaynak yazı türü dizeci yok!"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
+msgstr "Çoklu Oluşturun"
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr "Amaçlanan yazı türü kaynağı yok!"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "Çokluyu Düzenleyin"
-#: editor/io_plugins/editor_font_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
#, fuzzy
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-"Geçersiz dizeç uzantısı.\n"
-"Lütfen .fnt uzantısını kullanın."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr "Kaynak yazı tipi yüklenemiyor / işlenemiyor."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr "Yazı türü kaydedilemedi."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr "Yazı Türü Kaynağı:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr "Kaynak Yazı Türü Boyutu:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr "Varış Kaynağı:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr "Hızlı kahverengi tilki üşengeç köpeğin üstünden atlar."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr "Deneme:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr "Seçenekler:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr "Yazı Türü İçe Aktar"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-"Bu dizeç zaten bir Godot yazı türü dizecidir , lütfen bunun yerine bir "
-"BMFont türü dizeci sağlayın."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr "BMFont dizeci olarak açma başarısız oldu."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr "FreeType başlatılırken sorun oluştu."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "Bilinmeyen yazı türü."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "Yazı türü yüklerken sorun oluştu."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr "Geçersiz yazı türü boyutu."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr "Geçersiz yazı türü özel kaynağı."
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "Yazı Tipi"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr "İçe aktarılacak örüntü yok!"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr "Tekil Örüntü İçe Aktar"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr "Kaynak Örüntü(leri):"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr "Örüntü"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "Yüzey %d"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr "Alınacak örnek yok!"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr "Ses Örneklerini İçe Aktar"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr "Kaynak Örnek(leri):"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr "Ses Örneği"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr "Yeni Parça"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr "Canlandırma Seçenekleri"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr "Bayraklar"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr "FPS'i PiÅŸir:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr "İyileştirici"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr "En üst Doğrusal Sorun"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr "En üst Açısal Sorun"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr "En üst Açı"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr "Parçalar"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr "Başlangıç(lar)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr "Son(lar)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr "Döngü"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr "Süzgeçler"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr "Kaynak yol boÅŸ."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr "İçe aktarma sonrası betik dizeci yüklenemedi."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr "İçe aktarma sonrası için geçersiz/bozuk betik dizeci."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr "İçe aktarırken sorun oluştu."
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr "3B Sahneyi İçe Aktar"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr "Kaynak Sahne:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr "Hedef Sahne ile Aynı"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr "Paylaşılan"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr "Amaçlanan Doku Dizini:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr "İşlem Sonrası Betik Dizeci:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr "Özel Kök Düğüm Türü:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr "KendiliÄŸinden"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr "Kök Düğüm adı:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr "Aşağıdaki Dizeçler Eksik:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr "Yine de İçe Aktar"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "Vazgeç"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr "İçe Aktar & Aç"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr "Düzenlenen sahne kaydedilmedi, yine de içe aktarılan sahne açılsın mı?"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr "Bedizi İçe Aktar:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr "Bir dizeç kendisi üzerine içe aktaramıyor:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr "Yol yerelleÅŸtirilemedi: %s (zaten yerel)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr "3B Sahne Canlandırması"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr "Sıkıştırılmamış"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr "Kayıpsız Sıkıştırma (PNG)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr "Kayıplı Sıkıştırma (WebP)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr "Sıkıştır (VRAM)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr "Doku Biçemi"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr "Doku Sıkıştırma Niteliği (WebP):"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr "Doku Seçenekleri"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr "Lütfen bazı dizeçleri belirtin!"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr "Atlas için en az bir dizeç gerekli."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr "İçe aktarırken sorun:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr "Büyük doku için yalnızca bir dizeç gereklidir."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr "En üst Doku Boyutu:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr "Dokuları Atlas(2B) için içe aktar"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr "Odacık Boyutu:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr "GeniÅŸ Doku"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr "Büyük Boyutlu(2D) Dokuları İçe Aktar"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
-msgstr "Kaynak Doku"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
-msgstr "Temel Atlas Doku"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
-msgstr "Kaynak Doku(lar)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
-msgstr "2B için Dokuları İçe Aktar"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
-msgstr "3B için Dokuları İçe Aktar"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
-msgstr "Dokuları İçe Aktar"
+msgid "Insert Point"
+msgstr "Girdileme"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
-msgstr "2B Doku"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "Çokluyu Düzenleyin (Noktayı Silin)"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
-msgstr "3B Doku"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
+msgstr "Çokluyu ve Noktayı Kaldır"
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
-msgstr "Atlas Doku"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
+msgstr "Sıfırdan yeni bir çokgen oluşturun."
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
-"UYARI: 2B dokuların içe aktarılması zorunlu değildir. Png / jpg dizeçlerini "
-"tasarıya tıpkılamanız yeterlidir."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr "Boş alanı kırp."
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr "Doku"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr "Büyük Dokuyu İçe Aktar"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr "Kaynak Bedizi Yükle"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr "Dilimleme"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr "Girdileme"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr "Kaydediyor"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr "Büyük doku kaydedilemedi:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr "Atlası Şunun için Oluştur:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr "Bediz Yükleniyor:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr "Bediz yüklenemedi:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr "Bedizleri Dönüştürüyor"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr "Bedizleri Kırpıyor"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr "Bedizleri Blitle"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr "Atlas bedizi kaydedilemedi:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr "Dönüştürülmüş doku kaydedilemedi:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr "Geçersiz kaynak!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr "Geçersiz çeviri kaynağı!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr "Dikeç"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr "Dil"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr "Alınacak öğe yok!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr "Amaçlanan yol yok!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr "Çevirileri İçe Aktar"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr "Alınamadı!"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr "Çeviriyi İçe Aktar"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr "Kaynak CSV:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr "İlk Sırayı Yoksay"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr "Sıkıştır"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#, fuzzy
-msgid "Add to Project (project.godot)"
-msgstr "Tasarıya Ekle (engine.cfg)"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr "Dilleri İçe Aktar:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr "Çeviri"
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr "MultiNode Kur"
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr "Öbekler"
-
-#: editor/node_dock.cpp
-msgid "Select a Node to edit Signals and Groups."
-msgstr "İşaretleri ve Öbekleri düzenlemek için bir Düğüm seçin."
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Toggle Autoplay"
@@ -3511,7 +2934,6 @@ msgstr "Canlandırma Adı:"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3622,10 +3044,6 @@ msgid "Delete Input"
msgstr "GiriÅŸi Sil"
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr "Yeniden Adlandır"
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr "Canlandırma ağacı geçerlidir."
@@ -3681,64 +3099,185 @@ msgstr "Düğüm Süzgeçlerini Düzenle"
msgid "Filters.."
msgstr "Süzgeçler..."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
-msgstr "%d Üçgenlerini Ayrıştırma:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr "Özgür"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
-msgstr "Üçgen #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
+msgstr "İçerikler:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
-msgstr "Işık Pişirici Kurulumu:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
+msgstr "Dosyaları Görüntüle"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
-msgstr "Uzambilgisini Ayrıştırıyor"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
+msgstr "Ana makine adı çözümlenemedi:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
-msgstr "Işıkları Sabitliyor"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
+msgstr "Çözümlenemedi."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
-msgstr "BVH Yapıyor"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
+msgstr "Bağlantı hatası, lütfen tekrar deneyiniz."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
-msgstr "Işık Sekağacı Oluşturuyor"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "Bağlanamadı."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
-msgstr "Sekağaç Dokusu Oluşturuyor"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
+msgstr "Ana makineye bağlanılamadı:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
-msgstr "Işık Haritalarına Aktar:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
+msgstr "Ana makineden cevap yok:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
-msgstr "Doku Paylaşımı #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "Cevap yok."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
-msgstr "Pişirme Üçgeni #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
+msgstr "İstem başarısız, dönen kod:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
-msgstr "İşleme-Sonrası Dokusu #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
+msgstr "İstem Başarısız."
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
-msgstr "PiÅŸir!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
+msgstr "İstem Başarısız, çok fazla yönlendirme"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
+msgstr "Yönlendirme Döngüsü."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "Başarısız:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
-msgstr "Işık haritası sekağacı pişirme işlemini sıfırlayın (baştan başlayın)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr "Beklenen:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr "Alınan:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr "Başarısız sha256 hash sınaması"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr "Nesne İndirme Hatası:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr "Alınıyor:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Resolving.."
+msgstr "Kaydediliyor..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Connecting.."
+msgstr "BaÄŸlan..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Requesting.."
+msgstr "Deneme"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Error making request"
+msgstr "Kaynak kaydedilirken sorun!"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr "BoÅŸta"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr "Tekrarla"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr "İndirme Hatası"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr "Bu nesne için zaten sürdürülen bir indirme var!"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr "ilk"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr "önceki"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr "sonraki"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr "son"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "Hepsi"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr "Eklentiler"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "Sırala:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr "Tersi"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "Katman:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "Yer:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr "Destek..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "Resmi"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr "Deneme"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr "Varlıkların ZIP Dizeci"
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr "Önizleme"
@@ -3781,12 +3320,18 @@ msgid "Edit CanvasItem"
msgstr "CanvasItem Düzenle"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+#, fuzzy
+msgid "Anchors only"
+msgstr "Çapa"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Change Anchors and Margins"
msgstr "Çapaları Değiştir"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
-msgstr "YaklaÅŸ (%):"
+msgid "Change Anchors"
+msgstr "Çapaları Değiştir"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Paste Pose"
@@ -3840,60 +3385,78 @@ msgid "Pan Mode"
msgstr "Kaydırma Biçimi"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
-msgstr "Seçilen nesneyi yerine kilitleyin (taşınamaz)."
+#, fuzzy
+msgid "Toggles snapping"
+msgstr "Kesme Noktası Aç/Kapat"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
-msgstr "Seçilen nesnenin kilidini açın (taşınabilir)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
+msgstr "Yapışma Kullan"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
-msgstr "Nesnenin çocuğunun seçilemez olduğundan kuşkusuz olur."
+#, fuzzy
+msgid "Snapping options"
+msgstr "Canlandırma Seçenekleri"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
-msgstr "Nesnenin çocuğunun seçilebilme yeteneğini geri kazandırır."
+#, fuzzy
+msgid "Snap to grid"
+msgstr "Yapışma Biçimi:"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "Düzenle"
+msgid "Use Rotation Snap"
+msgstr "Döndürme Yapışması Kullan"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
-msgstr "Yapışma Kullan"
+#, fuzzy
+msgid "Configure Snap..."
+msgstr "Yapışmayı Yapılandır.."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
-msgstr "Izgarayı Göster"
+msgid "Snap Relative"
+msgstr "Göreceli Yapış"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
-msgstr "Döndürme Yapışması Kullan"
+msgid "Use Pixel Snap"
+msgstr "Nokta Yapışması Kullan"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
-msgstr "Göreceli Yapış"
+msgid "Smart snapping"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
-msgstr "Yapışmayı Yapılandır.."
+#, fuzzy
+msgid "Snap to parent"
+msgstr "Ataya geniÅŸletin"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
-msgstr "Nokta Yapışması Kullan"
+msgid "Snap to node anchor"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr "Seçilen nesneyi yerine kilitleyin (taşınamaz)."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr "Seçilen nesnenin kilidini açın (taşınabilir)."
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
-msgstr "İskelet.."
+msgid "Makes sure the object's children are not selectable."
+msgstr "Nesnenin çocuğunun seçilemez olduğundan kuşkusuz olur."
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
+msgstr "Nesnenin çocuğunun seçilebilme yeteneğini geri kazandırır."
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Make Bones"
@@ -3921,12 +3484,19 @@ msgid "View"
msgstr "Görüş"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
-msgstr "Yakınlaşmayı Sıfırla"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr "Izgarayı Göster"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Show helpers"
+msgstr "Kemikleri Göster"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
-msgstr "Yakınlaşmayı Ayarla.."
+#, fuzzy
+msgid "Show rulers"
+msgstr "Kemikleri Göster"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -3937,8 +3507,9 @@ msgid "Frame Selection"
msgstr "Kafes Seçimi"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
-msgstr "Çapa"
+#, fuzzy
+msgid "Layout"
+msgstr "Tasarımı Kaydet"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Keys"
@@ -3961,12 +3532,21 @@ msgid "Clear Pose"
msgstr "DuruÅŸu Temizle"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
-msgstr "Bir DeÄŸer Ata"
+msgid "Drag pivot from mouse position"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "Eğri Çıkış Konumunu Ayarla"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
-msgstr "Yapış (Noktalara):"
+msgid "Divide grid step by 2"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
@@ -3976,23 +3556,28 @@ msgstr "Ekle %s"
msgid "Adding %s..."
msgstr "Ekliyor %s.."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr "Düğüm Oluştur"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr "%s sahne örnekleme sorunu"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr "Tamam :("
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr "Çocuğun örnek alacağı bir ata yok."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr "Bu işlem, seçilmiş tek bir düğüm gerektirir."
@@ -4008,45 +3593,6 @@ msgstr ""
"Sürükle & bırak + Shift: Kardeş olarak düğüm ekle\n"
"Sürükle & bırak + Alt: Düğüm türünü değiştir"
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr "Çoklu Oluşturun"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr "Çokluyu Düzenleyin"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr "Çokluyu Düzenleyin (Noktayı Silin)"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "Sıfırdan yeni bir çokgen oluşturun."
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "Çoklu3B Oluştur"
@@ -4056,14 +3602,6 @@ msgid "Set Handle"
msgstr "Tutamacı Ayarla"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr "Örüntü Betikevi Oluştur"
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr "Küçük Bediz.."
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr "%d öğe kaldırılsın mı?"
@@ -4086,6 +3624,28 @@ msgid "Update from Scene"
msgstr "Sahneden Güncelle"
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Ease in"
+msgstr "Açılma"
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Ease out"
+msgstr "Kararma"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
msgid "Modify Curve Point"
msgstr "Eğri Haritasını Değiştir"
@@ -4170,22 +3730,18 @@ msgid "Create Occluder Polygon"
msgstr "Engelleyici Çokgeni Oluştur"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr "Var olan çokgeni düzenleyin:"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr "LMB: Taşıma Noktası."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr "Ctrl + LMB: Parçayı Böl."
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr "RMB: Noktayı Sil."
@@ -4290,6 +3846,10 @@ msgid "Create Outline"
msgstr "Anahat OluÅŸtur"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr "Örüntü"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr "Üçlü Örüntü Durağan Gövdesi Oluştur"
@@ -4417,14 +3977,83 @@ msgstr "Rastgele Ölçek:"
msgid "Populate"
msgstr "Doldur"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr "PiÅŸir!"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+#, fuzzy
+msgid "Bake the navigation mesh.\n"
+msgstr "Yönlendirici Örüntüsü Oluştur"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+#, fuzzy
+msgid "Clear the navigation mesh."
+msgstr "Yönlendirici Örüntüsü Oluştur"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating heightfield..."
+msgstr "Işık Sekağacı Oluşturuyor"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Marking walkable triangles..."
+msgstr "Çevirilebilir Dizeler.."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Partitioning..."
+msgstr "Uyarı"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating contours..."
+msgstr "Sekağaç Dokusu Oluşturuyor"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating polymesh..."
+msgstr "Anahat Örüntüsü Oluştur.."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Converting to native navigation mesh..."
+msgstr "Yönlendirici Örüntüsü Oluştur"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Parsing Geometry..."
+msgstr "Uzambilgisini Ayrıştırıyor"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
+msgstr ""
+
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Create Navigation Polygon"
msgstr "Yönlendirici Çokgeni Oluştur"
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
-msgstr "Çokluyu ve Noktayı Kaldır"
-
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Clear Emission Mask"
msgstr "Yayma Örtecini Temizle"
@@ -4610,14 +4239,17 @@ msgid "Curve Point #"
msgstr "EÄŸrisel Nokta #"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
msgstr "Eğri Noktası Konumu Ayarla"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
msgstr "EÄŸriyi Konumda Ayarla"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
msgstr "Eğri Çıkış Konumunu Ayarla"
@@ -4680,6 +4312,14 @@ msgid "Scale Polygon"
msgstr "Çokgeni Ölçekle"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "Düzenle"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr "Çokgen->UV"
@@ -4734,63 +4374,10 @@ msgstr "Kaynak Yükle"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "Yapıştır"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr "BBCode'u Ayrıştır"
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr "Uzunluk:"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr "Örnek Dizeçleri Aç"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr "SORUN: Örnek yüklenemedi!"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr "Örnek Ekle"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr "Örneği Yeniden Addlandır"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr "Örneği Sil"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr "16 bit"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr "8 Bit"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr "Çiftli"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr "Tekli"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr "Biçem"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr "Perde"
-
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Clear Recent Files"
@@ -4882,6 +4469,10 @@ msgstr "Belgeleri Kapat"
msgid "Close All"
msgstr "Tümünü Kapat"
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr "Çalıştır"
+
#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Toggle Scripts Panel"
@@ -4911,7 +4502,8 @@ msgstr "İçeri Adımla"
msgid "Break"
msgstr "Ara Ver"
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr "Devam Et"
@@ -4925,18 +4517,6 @@ msgid "Debug with external editor"
msgstr "Düzenleyicide Aç"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr "Pencere"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr "Sola Taşı"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr "Sağa Taşı"
-
-#: editor/plugins/script_editor_plugin.cpp
#, fuzzy
msgid "Open Godot online documentation"
msgstr "BaÅŸvuru belgelerinde arama yap."
@@ -5025,8 +4605,9 @@ msgid "Cut"
msgstr "Kes"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "Tıpkıla"
@@ -5292,10 +4873,6 @@ msgid "View Plane Transform."
msgstr "Düzlem Dönüşümünü Görüntüle."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr "Şuna %s%% Ölçeklendiriliyor."
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr "%s Düzey Dönüyor."
@@ -5312,10 +4889,6 @@ msgid "Top View."
msgstr "Üstten Görünüm."
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr "Üst"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr "Arkadan Görünüm."
@@ -5561,6 +5134,10 @@ msgid "Transform"
msgstr "Dönüşüm"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr "Yapışmayı Yapılandır.."
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr "Yerel Konaçlar"
@@ -5706,6 +5283,10 @@ msgid "Speed (FPS):"
msgstr "Hız (FPS):"
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr "Döngü"
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr "Canlandırma Çerçeveleri"
@@ -5718,12 +5299,14 @@ msgid "Insert Empty (After)"
msgstr "BoÅŸ Ekle (Sonra)"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr "Yukarı"
+#, fuzzy
+msgid "Move (Before)"
+msgstr "Düğümleri Kaldır"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
-msgstr "Aşağı"
+#, fuzzy
+msgid "Move (After)"
+msgstr "Sola Taşı"
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
@@ -5802,8 +5385,12 @@ msgid "Remove All"
msgstr "Kaldır"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
-msgstr "Kalıp"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Class Items"
@@ -5887,6 +5474,10 @@ msgid "Style"
msgstr "Yoldam"
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr "Yazı Tipi"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr "Renk"
@@ -5938,8 +5529,9 @@ msgid "Mirror Y"
msgstr "Y'ye Aynala"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
-msgstr "Kova"
+#, fuzzy
+msgid "Paint Tile"
+msgstr "TileMap'i Boya"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Pick Tile"
@@ -6005,6 +5597,10 @@ msgid "Delete preset '%s'?"
msgstr "Seçili dizeçleri sil?"
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
#, fuzzy
msgid "Presets"
msgstr "Ön ayar.."
@@ -6090,34 +5686,62 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
#, fuzzy
msgid "Export With Debug"
msgstr "Döşenti Dizi Dışa Aktar"
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
-msgstr "Geçersiz tasarı yolu, yolun var olması gerekir!"
+#, fuzzy
+msgid "The path does not exist."
+msgstr "Dizeç yok."
#: editor/project_manager.cpp
#, fuzzy
-msgid "Invalid project path, project.godot must not exist."
-msgstr "Geçersiz tasarı yolu, engine.cfg var olmaması gerekir."
+msgid "Please choose a 'project.godot' file."
+msgstr "Lütfen tasarı dizininin dışına aktarın!"
#: editor/project_manager.cpp
-#, fuzzy
-msgid "Invalid project path, project.godot must exist."
-msgstr "Geçersiz tasarı yolu, engine.cfg var olması gerekir."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose a folder that does not contain a 'project.godot' file."
+msgstr ""
#: editor/project_manager.cpp
msgid "Imported Project"
msgstr "İçe Aktarılan Tasarı"
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr "Geçersiz tasarı yolu (bir şey değişti mi?)."
#: editor/project_manager.cpp
#, fuzzy
+msgid "Couldn't get project.godot in project path."
+msgstr "engine.cfg tasarı yolunda oluşturulamadı."
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't edit project.godot in project path."
+msgstr "engine.cfg tasarı yolunda oluşturulamadı."
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Couldn't create project.godot in project path."
msgstr "engine.cfg tasarı yolunda oluşturulamadı."
@@ -6126,38 +5750,49 @@ msgid "The following files failed extraction from package:"
msgstr "Aşağıdaki dizeçlerin, çıkından ayıklanma işlemi başarısız oldu:"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Rename Project"
+msgstr "Adsız Tasarı"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't get project.godot in the project path."
+msgstr "engine.cfg tasarı yolunda oluşturulamadı."
+
+#: editor/project_manager.cpp
+msgid "New Game Project"
+msgstr "Yeni Oyun Tasarısı"
+
+#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "Var olan Tasarıyı İçe Aktar"
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
-msgstr "Tasarı Yolu (Var Olması Gerekir):"
+msgid "Create New Project"
+msgstr "Yeni Tasarı Oluştur"
+
+#: editor/project_manager.cpp
+msgid "Install Project:"
+msgstr "Tasarıyı Kur:"
#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "Tasarı Adı:"
#: editor/project_manager.cpp
-msgid "Create New Project"
-msgstr "Yeni Tasarı Oluştur"
+#, fuzzy
+msgid "Create folder"
+msgstr "Dizin OluÅŸtur"
#: editor/project_manager.cpp
msgid "Project Path:"
msgstr "Tasarı Yolu:"
#: editor/project_manager.cpp
-msgid "Install Project:"
-msgstr "Tasarıyı Kur:"
-
-#: editor/project_manager.cpp
msgid "Browse"
msgstr "Gözat"
#: editor/project_manager.cpp
-msgid "New Game Project"
-msgstr "Yeni Oyun Tasarısı"
-
-#: editor/project_manager.cpp
msgid "That's a BINGO!"
msgstr "YaÅŸa BE!"
@@ -6166,6 +5801,11 @@ msgid "Unnamed Project"
msgstr "Adsız Tasarı"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't open project"
+msgstr "Bağlanamadı."
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr "Birden fazla tasarı açmakta kararlı mısınız?"
@@ -6197,6 +5837,12 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
"You are about the scan %s folders for existing Godot projects. Do you "
"confirm?"
msgstr ""
@@ -6208,10 +5854,6 @@ msgid "Project List"
msgstr "Tasarı Dizelgesi"
#: editor/project_manager.cpp
-msgid "Run"
-msgstr "Çalıştır"
-
-#: editor/project_manager.cpp
msgid "Scan"
msgstr "Tara"
@@ -6234,6 +5876,11 @@ msgstr "Çık"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Restart Now"
+msgstr "Yeniden BaÅŸlat (sn):"
+
+#: editor/project_manager.cpp
+#, fuzzy
msgid "Can't run project"
msgstr "Bağlanamadı."
@@ -6270,17 +5917,14 @@ msgid "Add Input Action Event"
msgstr "Giriş İşlem Olayı Ekle"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
@@ -6342,7 +5986,7 @@ msgstr "DeÄŸiÅŸtir"
msgid "Joypad Axis Index:"
msgstr "Oyunçubuğu Ekseni Dizini:"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "Eksen"
@@ -6364,31 +6008,31 @@ msgstr "Giriş Eylemi Olayını Sil"
msgid "Add Event"
msgstr "BoÅŸ Ekle"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "Aygıt"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "Düğme"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "Sol Düğme."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "Sağ Düğme."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "Orta Düğme."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr "Tekerlek Yukarı."
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr "Tekerlek Aşağı."
@@ -6398,7 +6042,7 @@ msgid "Add Global Property"
msgstr "Alıcı Özellik Ekle"
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6417,6 +6061,16 @@ msgid "Delete Item"
msgstr "GiriÅŸi Sil"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Can't contain '/' or ':'"
+msgstr "Ana makineye bağlanılamadı:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Already existing"
+msgstr "Sürdürmeyi Aç/Kapat"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "Ayarları kaydetme sorunu."
@@ -6458,6 +6112,15 @@ msgstr "Kaynak Yeniden Eşle Seçeneğini Kaldır"
#: editor/project_settings_editor.cpp
#, fuzzy
+msgid "Changed Locale Filter"
+msgstr "Karışım Süresini Değiştir"
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Project Settings (project.godot)"
msgstr "Tasarı Ayarları (engine.cfg)"
@@ -6518,6 +6181,30 @@ msgid "Locale"
msgstr "Yerel"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales Filter"
+msgstr "Bediz Süzgeci:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Show all locales"
+msgstr "Kemikleri Göster"
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "Süzgeçler"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales:"
+msgstr "Yerel"
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "KendindenYükle"
@@ -6569,10 +6256,20 @@ msgstr "Yeni Betik"
#: editor/property_editor.cpp
#, fuzzy
+msgid "Make Unique"
+msgstr "Kemik Yap"
+
+#: editor/property_editor.cpp
+#, fuzzy
msgid "Show in File System"
msgstr "DizeçDüzeni"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Convert To %s"
+msgstr "Şuna Dönüştür.."
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr "Dizeç yüklenirken sorun oluştu: Bir kaynak değil!"
@@ -6611,6 +6308,11 @@ msgid "Select Property"
msgstr "Nitelik Seç"
#: editor/property_selector.cpp
+#, fuzzy
+msgid "Select Virtual Method"
+msgstr "Yöntem Seç"
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr "Yöntem Seç"
@@ -6638,26 +6340,6 @@ msgstr "Bütünsel Dönüşümü Tut"
msgid "Reparent"
msgstr "Yeniden Ata Yap"
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr "Yeni Kaynak OluÅŸtur"
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr "Kaynak Aç"
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr "Kaynağı Kaydet"
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr "Kaynak Araçları"
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr "YerelleÅŸtir"
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr "Çalışma Biçimi:"
@@ -6788,14 +6470,6 @@ msgid "Sub-Resources:"
msgstr "Kaynaklar:"
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr "Öbekleri Düzenle"
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr "Bağlantıları Düzenle"
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr "Kalıtı Temizle"
@@ -6984,6 +6658,15 @@ msgid "Invalid base path"
msgstr "Geçersiz üst yol"
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "File exists, will be reused"
+msgstr "Dizeç var. Üzerine Yazılsın mı?"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr "Geçersiz uzantı"
@@ -7029,6 +6712,10 @@ msgid "Load existing script file"
msgstr "Var olan betiği yükle"
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr "Dil"
+
+#: editor/script_create_dialog.cpp
#, fuzzy
msgid "Inherits"
msgstr "Kalıtçılar:"
@@ -7073,6 +6760,10 @@ msgid "Function:"
msgstr "İşlev:"
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr "Sorunlar"
@@ -7153,6 +6844,10 @@ msgid "Type"
msgstr "Tür"
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr "Biçem"
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr "Kullanım"
@@ -7228,13 +6923,31 @@ msgstr ""
msgid "Change Probe Extents"
msgstr "DeÅŸme GeniÅŸlemesini DeÄŸiÅŸtir"
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Library"
+msgstr "MeshLibrary .."
+
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Status"
+msgstr "Durum:"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr ""
"convert() için geçersiz türde değiştirgen, TYPE_* sabitlerini kullanın."
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "Geçersiz biçem ya da kod çözmek için yetersiz byte sayısı."
@@ -7286,10 +6999,6 @@ msgid "GridMap Duplicate Selection"
msgstr "Seçimi İkile"
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
#, fuzzy
msgid "Snap View"
msgstr "Üstten Görünüm"
@@ -7393,13 +7102,8 @@ msgstr "Yapışma Ayarları"
msgid "Pick Distance:"
msgstr "Örnek:"
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr "Dizeç"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7610,10 +7314,18 @@ msgid "Return"
msgstr "Döndür"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr "Çağır"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr "Al"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Input Value"
msgstr "Giriş Adını Değiştir"
@@ -8029,6 +7741,12 @@ msgstr ""
"AnimatedSprite3D 'nin çerçeveleri görüntülemek için bir SpriteFrames kaynağı "
"oluşturulmalı veya 'Çerçeveler' niteliğinde ayarlanmalıdır."
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
#, fuzzy
msgid "Raw Mode"
@@ -8039,6 +7757,10 @@ msgid "Add current color as a preset"
msgstr ""
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "Vazgeç"
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr "Uyarı!"
@@ -8046,10 +7768,6 @@ msgstr "Uyarı!"
msgid "Please Confirm..."
msgstr "Lütfen Doğrulayın..."
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -8085,6 +7803,624 @@ msgstr ""
"bir boyut elde edin. Ya da, onu bir RenderTarget yapın ve iç dokusunu "
"görüntülemesi için bir düğüme atayın."
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr "FreeType başlatılırken sorun oluştu."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "Bilinmeyen yazı türü."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "Yazı türü yüklerken sorun oluştu."
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr "Geçersiz yazı türü boyutu."
+
+#~ msgid "Filter:"
+#~ msgstr "Süzgeç:"
+
+#~ msgid "Theme"
+#~ msgstr "Kalıp"
+
+#~ msgid "Method List For '%s':"
+#~ msgstr "'%s' İçin Yöntem Dizelgesi:"
+
+#~ msgid "Arguments:"
+#~ msgstr "DeÄŸiÅŸtirgenler:"
+
+#~ msgid "Return:"
+#~ msgstr "Döndür:"
+
+#~ msgid "Added:"
+#~ msgstr "Eklenen:"
+
+#~ msgid "Removed:"
+#~ msgstr "Silinen:"
+
+#~ msgid "Error saving atlas:"
+#~ msgstr "Atlas kaydedilirken sorun oluÅŸtu:"
+
+#~ msgid "Could not save atlas subtexture:"
+#~ msgstr "Atlas alt dokusu kaydedilemedi:"
+
+#~ msgid "Exporting for %s"
+#~ msgstr "%s için Dışa Aktarım"
+
+#~ msgid "Setting Up.."
+#~ msgstr "Kurulum..."
+
+#~ msgid "Error loading scene."
+#~ msgstr "Sahne yüklenirken sorun oluştu."
+
+#~ msgid "Re-Import"
+#~ msgstr "Yeniden İçe Aktar"
+
+#~ msgid "Please wait for scan to complete."
+#~ msgstr "Tarama için bitmesini bekleyin."
+
+#~ msgid "Current scene must be saved to re-import."
+#~ msgstr "Yeniden içe aktarmak için şu anki sahneyi kaydet."
+
+#~ msgid "Save & Re-Import"
+#~ msgstr "Kaydet & Yeniden İçe Aktar"
+
+#~ msgid "Re-Importing"
+#~ msgstr "Yeniden-İçe Aktarım"
+
+#~ msgid "Re-Import Changed Resources"
+#~ msgstr "Değiştirilmiş Kaynakları Yeniden İçe Aktar"
+
+#~ msgid "Loading Export Templates"
+#~ msgstr "Dışa Aktarım Kalıpları Yükleniyor"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Status: Needs Re-Import"
+#~ msgstr "Kaydet & Yeniden İçe Aktar"
+
+#~ msgid "Same source and destination files, doing nothing."
+#~ msgstr "Özdeş kaynak ve varış dizeçleri, hiçbir şey yapılmıyor."
+
+#~ msgid "Same source and destination paths, doing nothing."
+#~ msgstr "Özdeş kaynak ve varış yolları, hiçbir şey yapılmıyor."
+
+#~ msgid "Can't move directories to within themselves."
+#~ msgstr "Dizinleri kendi içlerine taşıyamazsınız."
+
+#, fuzzy
+#~ msgid "Error moving file:\n"
+#~ msgstr "Bediz yüklenirken sorun oluştu:"
+
+#~ msgid "Pick New Name and Location For:"
+#~ msgstr "Şunun için yeni ad ile konum seçin:"
+
+#~ msgid "No files selected!"
+#~ msgstr "Hiçbir Dizeç Seçilmedi!"
+
+#~ msgid "Info"
+#~ msgstr "Bilgi"
+
+#~ msgid "Re-Import.."
+#~ msgstr "Yeniden İçe Aktar.."
+
+#~ msgid "No bit masks to import!"
+#~ msgstr "Alınacak hiç bit örteci yok!"
+
+#~ msgid "Target path is empty."
+#~ msgstr "Amaçlanan dizeç yolu boş."
+
+#~ msgid "Target path must be a complete resource path."
+#~ msgstr "Amaçlanan yol, tam bir kaynak yolu olmalıdır."
+
+#~ msgid "Target path must exist."
+#~ msgstr "Amaçlanan dizeç yolu var olmalı."
+
+#~ msgid "Save path is empty!"
+#~ msgstr "Kayıt yolu boş!"
+
+#~ msgid "Import BitMasks"
+#~ msgstr "BitMasks İçe Aktar"
+
+#~ msgid "Source Texture(s):"
+#~ msgstr "Kaynak Doku(lar):"
+
+#~ msgid "Target Path:"
+#~ msgstr "Amaçlanan Dizeç Yolu :"
+
+#~ msgid "Accept"
+#~ msgstr "Kabul"
+
+#~ msgid "Bit Mask"
+#~ msgstr "Bit Örteci"
+
+#~ msgid "No source font file!"
+#~ msgstr "Kaynak yazı türü dizeci yok!"
+
+#~ msgid "No target font resource!"
+#~ msgstr "Amaçlanan yazı türü kaynağı yok!"
+
+#, fuzzy
+#~ msgid ""
+#~ "Invalid file extension.\n"
+#~ "Please use .font."
+#~ msgstr ""
+#~ "Geçersiz dizeç uzantısı.\n"
+#~ "Lütfen .fnt uzantısını kullanın."
+
+#~ msgid "Couldn't save font."
+#~ msgstr "Yazı türü kaydedilemedi."
+
+#~ msgid "Source Font:"
+#~ msgstr "Yazı Türü Kaynağı:"
+
+#~ msgid "Source Font Size:"
+#~ msgstr "Kaynak Yazı Türü Boyutu:"
+
+#~ msgid "Dest Resource:"
+#~ msgstr "Varış Kaynağı:"
+
+#~ msgid "The quick brown fox jumps over the lazy dog."
+#~ msgstr "Hızlı kahverengi tilki üşengeç köpeğin üstünden atlar."
+
+#~ msgid "Test:"
+#~ msgstr "Deneme:"
+
+#~ msgid "Options:"
+#~ msgstr "Seçenekler:"
+
+#~ msgid "Font Import"
+#~ msgstr "Yazı Türü İçe Aktar"
+
+#~ msgid ""
+#~ "This file is already a Godot font file, please supply a BMFont type file "
+#~ "instead."
+#~ msgstr ""
+#~ "Bu dizeç zaten bir Godot yazı türü dizecidir , lütfen bunun yerine bir "
+#~ "BMFont türü dizeci sağlayın."
+
+#~ msgid "Failed opening as BMFont file."
+#~ msgstr "BMFont dizeci olarak açma başarısız oldu."
+
+#~ msgid "Invalid font custom source."
+#~ msgstr "Geçersiz yazı türü özel kaynağı."
+
+#~ msgid "No meshes to import!"
+#~ msgstr "İçe aktarılacak örüntü yok!"
+
+#~ msgid "Single Mesh Import"
+#~ msgstr "Tekil Örüntü İçe Aktar"
+
+#~ msgid "Source Mesh(es):"
+#~ msgstr "Kaynak Örüntü(leri):"
+
+#~ msgid "Surface %d"
+#~ msgstr "Yüzey %d"
+
+#~ msgid "No samples to import!"
+#~ msgstr "Alınacak örnek yok!"
+
+#~ msgid "Import Audio Samples"
+#~ msgstr "Ses Örneklerini İçe Aktar"
+
+#~ msgid "Source Sample(s):"
+#~ msgstr "Kaynak Örnek(leri):"
+
+#~ msgid "Audio Sample"
+#~ msgstr "Ses Örneği"
+
+#~ msgid "New Clip"
+#~ msgstr "Yeni Parça"
+
+#~ msgid "Flags"
+#~ msgstr "Bayraklar"
+
+#~ msgid "Bake FPS:"
+#~ msgstr "FPS'i PiÅŸir:"
+
+#~ msgid "Optimizer"
+#~ msgstr "İyileştirici"
+
+#~ msgid "Max Linear Error"
+#~ msgstr "En üst Doğrusal Sorun"
+
+#~ msgid "Max Angular Error"
+#~ msgstr "En üst Açısal Sorun"
+
+#~ msgid "Max Angle"
+#~ msgstr "En üst Açı"
+
+#~ msgid "Clips"
+#~ msgstr "Parçalar"
+
+#~ msgid "Start(s)"
+#~ msgstr "Başlangıç(lar)"
+
+#~ msgid "End(s)"
+#~ msgstr "Son(lar)"
+
+#~ msgid "Filters"
+#~ msgstr "Süzgeçler"
+
+#~ msgid "Source path is empty."
+#~ msgstr "Kaynak yol boÅŸ."
+
+#~ msgid "Couldn't load post-import script."
+#~ msgstr "İçe aktarma sonrası betik dizeci yüklenemedi."
+
+#~ msgid "Invalid/broken script for post-import."
+#~ msgstr "İçe aktarma sonrası için geçersiz/bozuk betik dizeci."
+
+#~ msgid "Error importing scene."
+#~ msgstr "İçe aktarırken sorun oluştu."
+
+#~ msgid "Import 3D Scene"
+#~ msgstr "3B Sahneyi İçe Aktar"
+
+#~ msgid "Source Scene:"
+#~ msgstr "Kaynak Sahne:"
+
+#~ msgid "Same as Target Scene"
+#~ msgstr "Hedef Sahne ile Aynı"
+
+#~ msgid "Shared"
+#~ msgstr "Paylaşılan"
+
+#~ msgid "Target Texture Folder:"
+#~ msgstr "Amaçlanan Doku Dizini:"
+
+#~ msgid "Post-Process Script:"
+#~ msgstr "İşlem Sonrası Betik Dizeci:"
+
+#~ msgid "Custom Root Node Type:"
+#~ msgstr "Özel Kök Düğüm Türü:"
+
+#~ msgid "Auto"
+#~ msgstr "KendiliÄŸinden"
+
+#~ msgid "Root Node Name:"
+#~ msgstr "Kök Düğüm adı:"
+
+#~ msgid "The Following Files are Missing:"
+#~ msgstr "Aşağıdaki Dizeçler Eksik:"
+
+#~ msgid "Import Anyway"
+#~ msgstr "Yine de İçe Aktar"
+
+#~ msgid "Import & Open"
+#~ msgstr "İçe Aktar & Aç"
+
+#~ msgid "Edited scene has not been saved, open imported scene anyway?"
+#~ msgstr ""
+#~ "Düzenlenen sahne kaydedilmedi, yine de içe aktarılan sahne açılsın mı?"
+
+#~ msgid "Import Image:"
+#~ msgstr "Bedizi İçe Aktar:"
+
+#~ msgid "Couldn't localize path: %s (already local)"
+#~ msgstr "Yol yerelleÅŸtirilemedi: %s (zaten yerel)"
+
+#~ msgid "3D Scene Animation"
+#~ msgstr "3B Sahne Canlandırması"
+
+#~ msgid "Uncompressed"
+#~ msgstr "Sıkıştırılmamış"
+
+#~ msgid "Compress Lossless (PNG)"
+#~ msgstr "Kayıpsız Sıkıştırma (PNG)"
+
+#~ msgid "Compress Lossy (WebP)"
+#~ msgstr "Kayıplı Sıkıştırma (WebP)"
+
+#~ msgid "Compress (VRAM)"
+#~ msgstr "Sıkıştır (VRAM)"
+
+#~ msgid "Texture Format"
+#~ msgstr "Doku Biçemi"
+
+#~ msgid "Texture Compression Quality (WebP):"
+#~ msgstr "Doku Sıkıştırma Niteliği (WebP):"
+
+#~ msgid "Texture Options"
+#~ msgstr "Doku Seçenekleri"
+
+#~ msgid "Please specify some files!"
+#~ msgstr "Lütfen bazı dizeçleri belirtin!"
+
+#~ msgid "At least one file needed for Atlas."
+#~ msgstr "Atlas için en az bir dizeç gerekli."
+
+#~ msgid "Error importing:"
+#~ msgstr "İçe aktarırken sorun:"
+
+#~ msgid "Only one file is required for large texture."
+#~ msgstr "Büyük doku için yalnızca bir dizeç gereklidir."
+
+#~ msgid "Max Texture Size:"
+#~ msgstr "En üst Doku Boyutu:"
+
+#~ msgid "Import Textures for Atlas (2D)"
+#~ msgstr "Dokuları Atlas(2B) için içe aktar"
+
+#~ msgid "Cell Size:"
+#~ msgstr "Odacık Boyutu:"
+
+#~ msgid "Large Texture"
+#~ msgstr "GeniÅŸ Doku"
+
+#~ msgid "Import Large Textures (2D)"
+#~ msgstr "Büyük Boyutlu(2D) Dokuları İçe Aktar"
+
+#~ msgid "Source Texture"
+#~ msgstr "Kaynak Doku"
+
+#~ msgid "Base Atlas Texture"
+#~ msgstr "Temel Atlas Doku"
+
+#~ msgid "Source Texture(s)"
+#~ msgstr "Kaynak Doku(lar)"
+
+#~ msgid "Import Textures for 2D"
+#~ msgstr "2B için Dokuları İçe Aktar"
+
+#~ msgid "Import Textures for 3D"
+#~ msgstr "3B için Dokuları İçe Aktar"
+
+#~ msgid "Import Textures"
+#~ msgstr "Dokuları İçe Aktar"
+
+#~ msgid "2D Texture"
+#~ msgstr "2B Doku"
+
+#~ msgid "3D Texture"
+#~ msgstr "3B Doku"
+
+#~ msgid "Atlas Texture"
+#~ msgstr "Atlas Doku"
+
+#~ msgid ""
+#~ "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files "
+#~ "to the project."
+#~ msgstr ""
+#~ "UYARI: 2B dokuların içe aktarılması zorunlu değildir. Png / jpg "
+#~ "dizeçlerini tasarıya tıpkılamanız yeterlidir."
+
+#~ msgid "Crop empty space."
+#~ msgstr "Boş alanı kırp."
+
+#~ msgid "Texture"
+#~ msgstr "Doku"
+
+#~ msgid "Import Large Texture"
+#~ msgstr "Büyük Dokuyu İçe Aktar"
+
+#~ msgid "Load Source Image"
+#~ msgstr "Kaynak Bedizi Yükle"
+
+#~ msgid "Slicing"
+#~ msgstr "Dilimleme"
+
+#~ msgid "Saving"
+#~ msgstr "Kaydediyor"
+
+#~ msgid "Couldn't save large texture:"
+#~ msgstr "Büyük doku kaydedilemedi:"
+
+#~ msgid "Build Atlas For:"
+#~ msgstr "Atlası Şunun için Oluştur:"
+
+#~ msgid "Loading Image:"
+#~ msgstr "Bediz Yükleniyor:"
+
+#~ msgid "Couldn't load image:"
+#~ msgstr "Bediz yüklenemedi:"
+
+#~ msgid "Converting Images"
+#~ msgstr "Bedizleri Dönüştürüyor"
+
+#~ msgid "Cropping Images"
+#~ msgstr "Bedizleri Kırpıyor"
+
+#~ msgid "Blitting Images"
+#~ msgstr "Bedizleri Blitle"
+
+#~ msgid "Couldn't save atlas image:"
+#~ msgstr "Atlas bedizi kaydedilemedi:"
+
+#~ msgid "Couldn't save converted texture:"
+#~ msgstr "Dönüştürülmüş doku kaydedilemedi:"
+
+#~ msgid "Invalid source!"
+#~ msgstr "Geçersiz kaynak!"
+
+#~ msgid "Invalid translation source!"
+#~ msgstr "Geçersiz çeviri kaynağı!"
+
+#~ msgid "Column"
+#~ msgstr "Dikeç"
+
+#~ msgid "No items to import!"
+#~ msgstr "Alınacak öğe yok!"
+
+#~ msgid "No target path!"
+#~ msgstr "Amaçlanan yol yok!"
+
+#~ msgid "Import Translations"
+#~ msgstr "Çevirileri İçe Aktar"
+
+#~ msgid "Couldn't import!"
+#~ msgstr "Alınamadı!"
+
+#~ msgid "Import Translation"
+#~ msgstr "Çeviriyi İçe Aktar"
+
+#~ msgid "Source CSV:"
+#~ msgstr "Kaynak CSV:"
+
+#~ msgid "Ignore First Row"
+#~ msgstr "İlk Sırayı Yoksay"
+
+#~ msgid "Compress"
+#~ msgstr "Sıkıştır"
+
+#, fuzzy
+#~ msgid "Add to Project (project.godot)"
+#~ msgstr "Tasarıya Ekle (engine.cfg)"
+
+#~ msgid "Import Languages:"
+#~ msgstr "Dilleri İçe Aktar:"
+
+#~ msgid "Translation"
+#~ msgstr "Çeviri"
+
+#~ msgid "Parsing %d Triangles:"
+#~ msgstr "%d Üçgenlerini Ayrıştırma:"
+
+#~ msgid "Triangle #"
+#~ msgstr "Üçgen #"
+
+#~ msgid "Light Baker Setup:"
+#~ msgstr "Işık Pişirici Kurulumu:"
+
+#~ msgid "Fixing Lights"
+#~ msgstr "Işıkları Sabitliyor"
+
+#~ msgid "Making BVH"
+#~ msgstr "BVH Yapıyor"
+
+#~ msgid "Transfer to Lightmaps:"
+#~ msgstr "Işık Haritalarına Aktar:"
+
+#~ msgid "Allocating Texture #"
+#~ msgstr "Doku Paylaşımı #"
+
+#~ msgid "Baking Triangle #"
+#~ msgstr "Pişirme Üçgeni #"
+
+#~ msgid "Post-Processing Texture #"
+#~ msgstr "İşleme-Sonrası Dokusu #"
+
+#~ msgid "Reset the lightmap octree baking process (start over)."
+#~ msgstr ""
+#~ "Işık haritası sekağacı pişirme işlemini sıfırlayın (baştan başlayın)."
+
+#~ msgid "Zoom (%):"
+#~ msgstr "YaklaÅŸ (%):"
+
+#~ msgid "Skeleton.."
+#~ msgstr "İskelet.."
+
+#~ msgid "Zoom Reset"
+#~ msgstr "Yakınlaşmayı Sıfırla"
+
+#~ msgid "Zoom Set.."
+#~ msgstr "Yakınlaşmayı Ayarla.."
+
+#~ msgid "Set a Value"
+#~ msgstr "Bir DeÄŸer Ata"
+
+#~ msgid "Snap (Pixels):"
+#~ msgstr "Yapış (Noktalara):"
+
+#~ msgid "Parse BBCode"
+#~ msgstr "BBCode'u Ayrıştır"
+
+#~ msgid "Length:"
+#~ msgstr "Uzunluk:"
+
+#~ msgid "Open Sample File(s)"
+#~ msgstr "Örnek Dizeçleri Aç"
+
+#~ msgid "ERROR: Couldn't load sample!"
+#~ msgstr "SORUN: Örnek yüklenemedi!"
+
+#~ msgid "Add Sample"
+#~ msgstr "Örnek Ekle"
+
+#~ msgid "Rename Sample"
+#~ msgstr "Örneği Yeniden Addlandır"
+
+#~ msgid "Delete Sample"
+#~ msgstr "Örneği Sil"
+
+#~ msgid "16 Bits"
+#~ msgstr "16 bit"
+
+#~ msgid "8 Bits"
+#~ msgstr "8 Bit"
+
+#~ msgid "Stereo"
+#~ msgstr "Çiftli"
+
+#~ msgid "Mono"
+#~ msgstr "Tekli"
+
+#~ msgid "Pitch"
+#~ msgstr "Perde"
+
+#~ msgid "Window"
+#~ msgstr "Pencere"
+
+#~ msgid "Move Right"
+#~ msgstr "Sağa Taşı"
+
+#~ msgid "Scaling to %s%%."
+#~ msgstr "Şuna %s%% Ölçeklendiriliyor."
+
+#~ msgid "Up"
+#~ msgstr "Yukarı"
+
+#~ msgid "Down"
+#~ msgstr "Aşağı"
+
+#~ msgid "Bucket"
+#~ msgstr "Kova"
+
+#~ msgid "Invalid project path, the path must exist!"
+#~ msgstr "Geçersiz tasarı yolu, yolun var olması gerekir!"
+
+#, fuzzy
+#~ msgid "Invalid project path, project.godot must not exist."
+#~ msgstr "Geçersiz tasarı yolu, engine.cfg var olmaması gerekir."
+
+#, fuzzy
+#~ msgid "Invalid project path, project.godot must exist."
+#~ msgstr "Geçersiz tasarı yolu, engine.cfg var olması gerekir."
+
+#~ msgid "Project Path (Must Exist):"
+#~ msgstr "Tasarı Yolu (Var Olması Gerekir):"
+
+#~ msgid "Create New Resource"
+#~ msgstr "Yeni Kaynak OluÅŸtur"
+
+#~ msgid "Open Resource"
+#~ msgstr "Kaynak Aç"
+
+#~ msgid "Save Resource"
+#~ msgstr "Kaynağı Kaydet"
+
+#~ msgid "Resource Tools"
+#~ msgstr "Kaynak Araçları"
+
+#~ msgid "Make Local"
+#~ msgstr "YerelleÅŸtir"
+
+#~ msgid "Edit Groups"
+#~ msgstr "Öbekleri Düzenle"
+
+#~ msgid "Edit Connections"
+#~ msgstr "Bağlantıları Düzenle"
+
+#, fuzzy
+#~ msgid "Tiles"
+#~ msgstr "Dizeç"
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl+"
+
#~ msgid "Close scene? (Unsaved changes will be lost)"
#~ msgstr "Sahneyi kapatsın mı? (Kaydedilmemiş değişiklikler yok olacak)"
@@ -8098,9 +8434,6 @@ msgstr ""
#~ msgid "Close Goto Prev. Scene"
#~ msgstr "Önc. Sahneye Git sekmesini Kapat"
-#~ msgid "Expand to Parent"
-#~ msgstr "Ataya geniÅŸletin"
-
#~ msgid "Del"
#~ msgstr "Sil"
@@ -8264,18 +8597,12 @@ msgstr ""
#~ msgid "Save Translatable Strings"
#~ msgstr "Çevirilebilir Metinleri Kaydet"
-#~ msgid "Translatable Strings.."
-#~ msgstr "Çevirilebilir Dizeler.."
-
#~ msgid "Install Export Templates"
#~ msgstr "Dışa Aktarım Kalıplarını Yükle"
#~ msgid "Edit Script Options"
#~ msgstr "Betik Seçeneklerini Düzenle"
-#~ msgid "Please export outside the project folder!"
-#~ msgstr "Lütfen tasarı dizininin dışına aktarın!"
-
#~ msgid "Error exporting project!"
#~ msgstr "Tasarı gönderilirken sorun oluştu!"
@@ -8334,18 +8661,12 @@ msgstr ""
#~ msgid "Include"
#~ msgstr "Katıştır"
-#~ msgid "Change Image Group"
-#~ msgstr "Bediz Öbeğini Değiştir"
-
#~ msgid "Group name can't be empty!"
#~ msgstr "Öbek adı boş olamaz!"
#~ msgid "Invalid character in group name!"
#~ msgstr "Öbek adında geçersiz damga!"
-#~ msgid "Group name already exists!"
-#~ msgstr "Öbek adı zaten var!"
-
#~ msgid "Add Image Group"
#~ msgstr "Bediz Öbeği Ekle"
@@ -8424,9 +8745,6 @@ msgstr ""
#~ msgid "Preview Atlas"
#~ msgstr "Atlası Önizle"
-#~ msgid "Image Filter:"
-#~ msgstr "Bediz Süzgeci:"
-
#~ msgid "Images:"
#~ msgstr "Bedizler:"
@@ -8493,9 +8811,6 @@ msgstr ""
#~ msgid "Lighting"
#~ msgstr "Aydınlatma"
-#~ msgid "Toggle Persisting"
-#~ msgstr "Sürdürmeyi Aç/Kapat"
-
#~ msgid "Global"
#~ msgstr "Bütünsel"
diff --git a/editor/translations/ur_PK.po b/editor/translations/ur_PK.po
index 41384a79da..3b624f4c8c 100644
--- a/editor/translations/ur_PK.po
+++ b/editor/translations/ur_PK.po
@@ -1,5 +1,6 @@
# Urdu (Pakistan) translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# Muhammad Ali <ali@codeonion.com>, 2016.
@@ -192,10 +193,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr ""
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -357,261 +357,6 @@ msgstr ""
msgid "Change Array Value"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connecting.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Requesting.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Error making request"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "سائٹ:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr ".سپورٹ"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "کمیونٹی"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr "Ø§Ø«Ø§Ø«Û Ú©ÛŒ زپ ÙØ§Ø¦Ù„"
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr ""
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr ""
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr ""
@@ -648,6 +393,14 @@ msgstr ""
msgid "Selection Only"
msgstr ""
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr ""
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr ""
@@ -680,11 +433,11 @@ msgstr ""
msgid "Skip"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr ""
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr ""
@@ -751,6 +504,20 @@ msgstr ""
msgid "Oneshot"
msgstr ""
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr ""
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr ""
@@ -776,7 +543,7 @@ msgstr ""
msgid "Disconnect"
msgstr ""
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr ""
@@ -793,12 +560,25 @@ msgstr ""
msgid "Recent:"
msgstr ""
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr ""
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr ""
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr ""
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr ""
@@ -854,6 +634,10 @@ msgid "Owners Of:"
msgstr ""
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr ""
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -861,7 +645,7 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
+msgid "Cannot remove:\n"
msgstr ""
#: editor/dependency_editor.cpp
@@ -928,10 +712,6 @@ msgid "Godot Engine contributors"
msgstr ""
#: editor/editor_about.cpp
-msgid "Authors"
-msgstr ""
-
-#: editor/editor_about.cpp
msgid "Project Founders"
msgstr ""
@@ -948,6 +728,38 @@ msgid "Developers"
msgstr ""
#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
msgid "License"
msgstr ""
@@ -988,6 +800,16 @@ msgid "Package Installed Successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
msgstr ""
@@ -1037,10 +859,6 @@ msgid "Audio Bus, Drag and Drop to rearrange."
msgstr ""
#: editor/editor_audio_buses.cpp
-msgid "Bus options"
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
msgid "Solo"
msgstr ""
@@ -1052,12 +870,20 @@ msgstr ""
msgid "Bypass"
msgstr ""
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr ""
+
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
msgid "Duplicate"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Reset Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
msgid "Delete Effect"
msgstr ""
@@ -1078,6 +904,10 @@ msgid "Duplicate Audio Bus"
msgstr ""
#: editor/editor_audio_buses.cpp
+msgid "Reset Bus Volume"
+msgstr ""
+
+#: editor/editor_audio_buses.cpp
#, fuzzy
msgid "Move Audio Bus"
msgstr "ایکشن منتقل کریں"
@@ -1110,7 +940,8 @@ msgstr ""
msgid "Create a new Bus Layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
@@ -1202,7 +1033,7 @@ msgid "Rearrange Autoloads"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr ""
@@ -1210,9 +1041,7 @@ msgstr ""
msgid "Node Name:"
msgstr ""
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr ""
@@ -1245,18 +1074,19 @@ msgid "Choose a Directory"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr ""
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr ""
@@ -1276,30 +1106,6 @@ msgstr ""
msgid "Template file not found:\n"
msgstr ""
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr ""
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr ""
@@ -1386,6 +1192,10 @@ msgstr "Ù¾Ø³Ù†Ø¯ÛŒØ¯Û Ø§ÙˆÙ¾Ø± منتقل کریں"
msgid "Move Favorite Down"
msgstr "Ù¾Ø³Ù†Ø¯ÛŒØ¯Û Ù†ÛŒÚ†Û’ منتقل کریں"
+#: editor/editor_file_dialog.cpp
+msgid "Go to parent folder"
+msgstr ""
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr ""
@@ -1400,10 +1210,6 @@ msgid "File:"
msgstr ""
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr ""
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr ""
@@ -1428,6 +1234,10 @@ msgstr ""
msgid "Search Classes"
msgstr ""
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr ""
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr ""
@@ -1444,15 +1254,27 @@ msgstr ""
msgid "Brief Description:"
msgstr ""
+#: editor/editor_help.cpp
+msgid "Members"
+msgstr ""
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Public Methods"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr ""
#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr ""
@@ -1461,6 +1283,10 @@ msgid "Signals:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Enumerations"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Enumerations:"
msgstr ""
@@ -1469,19 +1295,48 @@ msgid "enum "
msgstr ""
#: editor/editor_help.cpp
+msgid "Constants"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
#: editor/editor_help.cpp
#, fuzzy
+msgid "Description"
+msgstr "سب سکریپشن بنائیں"
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr ""
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Property Description:"
msgstr "سب سکریپشن بنائیں"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+msgid "Methods"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr ""
@@ -1490,24 +1345,21 @@ msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr ""
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr ""
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr ""
@@ -1524,6 +1376,26 @@ msgid "Error while saving."
msgstr ""
#: editor/editor_node.cpp
+msgid "Can't open '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error while parsing '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Error while loading '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr ""
@@ -1581,6 +1453,33 @@ msgid "Restored default layout to base settings."
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr ""
@@ -1742,24 +1641,35 @@ msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+
+#: editor/editor_node.cpp
#, fuzzy
msgid "Pick a Main Scene"
msgstr "ایک مینو منظر چنیں"
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgid "Unable to load addon script from path: '%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -1769,7 +1679,7 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr ""
@@ -1780,11 +1690,11 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp
-msgid "Error loading scene."
+msgid "Scene '%s' has broken dependencies:"
msgstr ""
#: editor/editor_node.cpp
-msgid "Scene '%s' has broken dependencies:"
+msgid "Clear Recent Scenes"
msgstr ""
#: editor/editor_node.cpp
@@ -1820,7 +1730,7 @@ msgstr ""
msgid "Toggle distraction-free mode."
msgstr ""
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr ""
@@ -2039,6 +1949,10 @@ msgstr ""
msgid "Issue Tracker"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "کمیونٹی"
+
#: editor/editor_node.cpp
msgid "About"
msgstr ""
@@ -2047,7 +1961,7 @@ msgstr ""
msgid "Play the project."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr ""
@@ -2063,7 +1977,7 @@ msgstr ""
msgid "Stop the scene."
msgstr ""
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr ""
@@ -2136,6 +2050,15 @@ msgid "Object properties."
msgstr ""
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr ""
@@ -2151,14 +2074,6 @@ msgstr ""
msgid "Don't Save"
msgstr ""
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr ""
-
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
@@ -2220,11 +2135,28 @@ msgstr ""
msgid "Open the previous Editor"
msgstr ""
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr ""
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr ""
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr ""
@@ -2257,7 +2189,7 @@ msgid "Frame %"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+msgid "Physics Frame %"
msgstr ""
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2276,26 +2208,6 @@ msgstr ""
msgid "Frame #:"
msgstr ""
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr ""
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2405,10 +2317,6 @@ msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr ""
@@ -2442,9 +2350,17 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
+"Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2454,87 +2370,87 @@ msgid ""
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
+msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
+msgid "Cannot move a folder into itself.\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
+msgid "Error moving:\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
+msgid "Unable to update dependencies:\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "No name provided"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving file:\n"
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Error moving dir:\n"
+msgid "No name provided."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
+msgid "Name contains invalid characters."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
+msgid "A file or folder with this name already exists."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
+msgid "Renaming file:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Expand all"
+msgid "Renaming folder:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Collapse all"
+msgid "Expand all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
+msgid "Collapse all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Instance"
+msgid "Copy Path"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
+msgid "Rename.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
+msgid "Move To.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
+msgid "New Folder.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
+msgid "Show In File Manager"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move To.."
+msgid "Instance"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Info"
+msgid "Edit Dependencies.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
+msgid "View Owners.."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2567,6 +2483,11 @@ msgstr ""
msgid "Move"
msgstr ""
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr ""
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr ""
@@ -2580,6 +2501,10 @@ msgid "Import as Single Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -2592,6 +2517,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
msgstr ""
@@ -2600,38 +2537,31 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr ""
@@ -2659,579 +2589,54 @@ msgstr ""
msgid "Reimport"
msgstr ""
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
+#: editor/node_dock.cpp
+msgid "Groups"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr ""
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Select a Node to edit Signals and Groups."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -3387,7 +2792,6 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3497,10 +2901,6 @@ msgid "Delete Input"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr ""
@@ -3556,64 +2956,181 @@ msgstr ""
msgid "Filters.."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting.."
msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "سائٹ:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr ".سپورٹ"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr "Ø§Ø«Ø§Ø«Û Ú©ÛŒ زپ ÙØ§Ø¦Ù„"
+
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3656,11 +3173,15 @@ msgid "Edit CanvasItem"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+msgid "Anchors only"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors and Margins"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
+msgid "Change Anchors"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3712,59 +3233,72 @@ msgid "Pan Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
+msgid "Toggles snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
+msgid "Snapping options"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
+msgid "Snap to grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
+msgid "Use Rotation Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Configure Snap..."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
+msgid "Snap Relative"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
+msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
+msgid "Smart snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
+msgid "Snap to parent"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
+msgid "Snap to node anchor"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3793,11 +3327,16 @@ msgid "View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
+msgid "Show helpers"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show rulers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3809,7 +3348,7 @@ msgid "Frame Selection"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
+msgid "Layout"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3833,11 +3372,20 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
+msgid "Drag pivot from mouse position"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
+msgid "Divide grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3848,23 +3396,28 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr ""
@@ -3878,45 +3431,6 @@ msgid ""
"Drag & drop + Alt : Change node type"
msgstr ""
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3926,14 +3440,6 @@ msgid "Set Handle"
msgstr ""
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr ""
@@ -3956,6 +3462,27 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Ease in"
+msgstr ".تمام کا انتخاب"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
msgstr ""
@@ -4033,22 +3560,18 @@ msgid "Create Occluder Polygon"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr ""
@@ -4149,6 +3672,10 @@ msgid "Create Outline"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr ""
@@ -4276,12 +3803,72 @@ msgstr ""
msgid "Populate"
msgstr ""
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create Navigation Polygon"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Marking walkable triangles..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Partitioning..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
msgstr ""
#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
+msgid "Create Navigation Polygon"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -4455,16 +4042,19 @@ msgid "Curve Point #"
msgstr ""
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
-msgstr ""
+msgstr ".تمام کا انتخاب"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
-msgstr ""
+msgstr ".تمام کا انتخاب"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
-msgstr ""
+msgstr ".تمام کا انتخاب"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4524,6 +4114,14 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr ""
@@ -4578,63 +4176,10 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr ""
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr ""
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr ""
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
@@ -4726,6 +4271,10 @@ msgstr ""
msgid "Close All"
msgstr ""
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
msgstr ""
@@ -4754,7 +4303,8 @@ msgstr ""
msgid "Break"
msgstr ""
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr ""
@@ -4767,18 +4317,6 @@ msgid "Debug with external editor"
msgstr ""
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
msgstr ""
@@ -4860,8 +4398,9 @@ msgid "Cut"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr ""
@@ -5124,10 +4663,6 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr ""
@@ -5144,10 +4679,6 @@ msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr ""
@@ -5378,6 +4909,10 @@ msgid "Transform"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr ""
@@ -5523,6 +5058,10 @@ msgid "Speed (FPS):"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr ""
@@ -5535,12 +5074,14 @@ msgid "Insert Empty (After)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr ""
+#, fuzzy
+msgid "Move (Before)"
+msgstr "ایکشن منتقل کریں"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
-msgstr ""
+#, fuzzy
+msgid "Move (After)"
+msgstr "ایکشن منتقل کریں"
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
@@ -5618,7 +5159,11 @@ msgid "Remove All"
msgstr ".تمام کا انتخاب"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
@@ -5703,6 +5248,10 @@ msgid "Style"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr ""
@@ -5752,7 +5301,7 @@ msgid "Mirror Y"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
+msgid "Paint Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5816,6 +5365,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr ""
@@ -5886,19 +5439,29 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
+msgid "The path does not exist."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
+msgid "Please choose a folder that does not contain a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
@@ -5906,10 +5469,26 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't edit project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr ""
@@ -5918,15 +5497,20 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Import Existing Project"
+#, fuzzy
+msgid "Rename Project"
+msgstr ".تمام کا انتخاب"
+
+#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in the project path."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
+msgid "New Game Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Name:"
+msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
@@ -5934,19 +5518,23 @@ msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path:"
+msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Install Project:"
+msgid "Project Name:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Browse"
+msgid "Create folder"
msgstr ""
#: editor/project_manager.cpp
-msgid "New Game Project"
+msgid "Project Path:"
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
@@ -5958,6 +5546,10 @@ msgid "Unnamed Project"
msgstr ""
#: editor/project_manager.cpp
+msgid "Can't open project"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr ""
@@ -5984,16 +5576,18 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
-"You are about the scan %s folders for existing Godot projects. Do you "
-"confirm?"
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project List"
+msgid ""
+"You are about the scan %s folders for existing Godot projects. Do you "
+"confirm?"
msgstr ""
#: editor/project_manager.cpp
-msgid "Run"
+msgid "Project List"
msgstr ""
#: editor/project_manager.cpp
@@ -6018,6 +5612,10 @@ msgid "Exit"
msgstr ""
#: editor/project_manager.cpp
+msgid "Restart Now"
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Can't run project"
msgstr ""
@@ -6054,17 +5652,14 @@ msgid "Add Input Action Event"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
@@ -6125,7 +5720,7 @@ msgstr ""
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr ""
@@ -6145,31 +5740,31 @@ msgstr ""
msgid "Add Event"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr ""
@@ -6178,7 +5773,7 @@ msgid "Add Global Property"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6194,6 +5789,14 @@ msgid "Delete Item"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Can't contain '/' or ':'"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
@@ -6234,6 +5837,14 @@ msgid "Remove Resource Remap Option"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
@@ -6294,6 +5905,26 @@ msgid "Locale"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Locales Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show all locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Filter mode:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Locales:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -6343,10 +5974,18 @@ msgid "New Script"
msgstr "سب سکریپشن بنائیں"
#: editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr ""
#: editor/property_editor.cpp
+msgid "Convert To %s"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr ""
@@ -6383,6 +6022,10 @@ msgid "Select Property"
msgstr ""
#: editor/property_selector.cpp
+msgid "Select Virtual Method"
+msgstr ""
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr ""
@@ -6410,26 +6053,6 @@ msgstr ""
msgid "Reparent"
msgstr ""
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr ""
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr ""
@@ -6556,14 +6179,6 @@ msgid "Sub-Resources:"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr ""
@@ -6747,6 +6362,14 @@ msgid "Invalid base path"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+msgid "File exists, will be reused"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr ""
@@ -6789,6 +6412,10 @@ msgid "Load existing script file"
msgstr "سب سکریپشن بنائیں"
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Inherits"
msgstr ""
@@ -6831,6 +6458,10 @@ msgid "Function:"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr ""
@@ -6911,6 +6542,10 @@ msgid "Type"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr ""
@@ -6987,13 +6622,29 @@ msgstr ""
msgid "Change Probe Extents"
msgstr ".Ù†ÙˆÙ¹ÙØ¦Ø± Ú©Û’ اکسٹنٹ Ú©Ùˆ تبدیل کیجیۓ"
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Library"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Status"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr ""
".استمال کیجۓ TYPE_* constants .Ú©Û’ لیے غلط Ûیں convert() دیے گئے ارگمنٹس."
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "یا تو ڈیکوڈ کرنے Ú©Û’ لئے بائیٹس Ú©Ù… Ûیں یا پھر ناقص ÙØ§Ø±Ù…یٹ Ú¾Û’."
@@ -7044,10 +6695,6 @@ msgid "GridMap Duplicate Selection"
msgstr ""
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Snap View"
msgstr ""
@@ -7139,12 +6786,8 @@ msgstr ""
msgid "Pick Distance:"
msgstr ""
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Tiles"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7336,10 +6979,18 @@ msgid "Return"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
msgstr ""
@@ -7695,6 +7346,12 @@ msgid ""
"order for AnimatedSprite3D to display frames."
msgstr ""
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -7704,15 +7361,15 @@ msgid "Add current color as a preset"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Alert!"
+msgid "Cancel"
msgstr ""
#: scene/gui/dialogs.cpp
-msgid "Please Confirm..."
+msgid "Alert!"
msgstr ""
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
+#: scene/gui/dialogs.cpp
+msgid "Please Confirm..."
msgstr ""
#: scene/gui/popup.cpp
@@ -7743,5 +7400,21 @@ msgid ""
"texture to some node for display."
msgstr ""
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr ""
+
#~ msgid "Samples"
#~ msgstr "نمونے"
diff --git a/editor/translations/zh_CN.po b/editor/translations/zh_CN.po
index f725bf6a5e..3a67defced 100644
--- a/editor/translations/zh_CN.po
+++ b/editor/translations/zh_CN.po
@@ -1,5 +1,6 @@
# Chinese (China) translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# 纯æ´çš„å蛋 <tqj.zyy@gmail.com>, 2016.
@@ -10,6 +11,7 @@
# Geequlim <geequlim@gmail.com>, 2016-2017.
# Luo Jun <vipsbpig@gmail.com>, 2016.
# oberon-tonya <360119124@qq.com>, 2016.
+# sersoong <seraphim945@qq.com>, 2017.
# wanfang liu <wanfang.liu@gmail.com>, 2016.
# Youmu <konpaku.w@gmail.com>, 2017.
#
@@ -17,15 +19,16 @@ msgid ""
msgstr ""
"Project-Id-Version: Godot Engine editor\n"
"POT-Creation-Date: \n"
-"PO-Revision-Date: 2017-07-08 15:27+0800\n"
-"Last-Translator: Geequlim <geequlim@gmail.com>\n"
-"Language-Team: 汉语 <geequlim@gmail.com>\n"
+"PO-Revision-Date: 2017-09-15 08:55+0000\n"
+"Last-Translator: sersoong <seraphim945@qq.com>\n"
+"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
+"godot-engine/godot/zh_Hans/>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Gtranslator 2.91.7\n"
+"X-Generator: Weblate 2.17-dev\n"
#: editor/animation_editor.cpp
msgid "Disabled"
@@ -201,10 +204,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr "创建%d个新轨é“å¹¶æ’入关键帧?"
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -366,261 +368,6 @@ msgstr "修改数组类型"
msgid "Change Array Value"
msgstr "修改数组值"
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr "版本:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr "内容:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "View Files"
-msgstr "查看文件"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr "æè¿°:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr "安装"
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "关闭"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr "连接错误,请é‡è¯•。"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "无法连接。"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr "无法连接到æœåС噍:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr "æœåŠ¡å™¨æ— å“应:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "æ— å“应。"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr "请求失败,错误代ç :"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "失败:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr "资æºä¸‹è½½å‡ºé”™:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr "完æˆï¼"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr "获å–:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr "è§£æžä¸­.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connecting.."
-msgstr "连接中.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Requesting.."
-msgstr "正在请求.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Error making request"
-msgstr "请求错误"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr "é‡è¯•"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr "下载错误"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr "æ­¤èµ„æºæ–‡ä»¶æ­£åœ¨ä¸‹è½½ä¸­ï¼"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "全部"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "æœç´¢:"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "æœç´¢"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr "导入"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr "æ’ä»¶"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "排åº:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr "å选"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "分类:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "站点:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr "支æŒ.."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr "官方"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "社区"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr "测试"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr "ZIP资æºåŒ…"
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr "'%s'的方法列表:"
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr "调用到"
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr "方法列表:"
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr "傿•°:"
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr "返回:"
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr "转到行"
@@ -657,6 +404,14 @@ msgstr "全字匹é…"
msgid "Selection Only"
msgstr "仅选中"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "æœç´¢"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr "查找"
@@ -689,11 +444,11 @@ msgstr "æ›´æ¢æ—¶æç¤º"
msgid "Skip"
msgstr "跳过"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "放大"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr "缩å°"
@@ -760,6 +515,20 @@ msgstr "å»¶æ—¶"
msgid "Oneshot"
msgstr "啿¬¡"
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "关闭"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr "连接"
@@ -785,7 +554,7 @@ msgstr "连接事件。"
msgid "Disconnect"
msgstr "删除事件连接"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr "ä¿¡å·"
@@ -802,12 +571,25 @@ msgstr "æ”¶è—:"
msgid "Recent:"
msgstr "最近文件:"
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "æœç´¢:"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr "匹é…项:"
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "æè¿°:"
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr "æœç´¢æ›¿æ¢:"
@@ -863,6 +645,10 @@ msgid "Owners Of:"
msgstr "拥有者:"
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr "确定从项目中删除文件?(此æ“作无法撤销)"
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -870,8 +656,9 @@ msgid ""
msgstr "è¦åˆ é™¤çš„æ–‡ä»¶è¢«å…¶ä»–èµ„æºæ‰€ä¾èµ–,ä»ç„¶è¦åˆ é™¤å—?(无法撤销)"
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
-msgstr "确定从项目中删除文件?(此æ“作无法撤销)"
+#, fuzzy
+msgid "Cannot remove:\n"
+msgstr "无法解æž."
#: editor/dependency_editor.cpp
msgid "Error loading:"
@@ -937,19 +724,12 @@ msgid "Godot Engine contributors"
msgstr "Godot引擎贡献者"
#: editor/editor_about.cpp
-#, fuzzy
-msgid "Authors"
-msgstr "作者:"
-
-#: editor/editor_about.cpp
-#, fuzzy
msgid "Project Founders"
-msgstr "项目管ç†å™¨"
+msgstr "项目创始人"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Lead Developer"
-msgstr "å¼€å‘者"
+msgstr "主è¦å¼€å‘者"
#: editor/editor_about.cpp editor/project_manager.cpp
msgid "Project Manager"
@@ -960,118 +740,153 @@ msgid "Developers"
msgstr "å¼€å‘者"
#: editor/editor_about.cpp
-msgid "License"
+msgid "Authors"
+msgstr "作者"
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
msgstr ""
#: editor/editor_about.cpp
-msgid "Thirdparty License"
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+#, fuzzy
+msgid "Bronze Donors"
+msgstr "æ‹·è´åˆ°ä¸‹ä¸€è¡Œ"
+
+#: editor/editor_about.cpp
+msgid "Donors"
msgstr ""
#: editor/editor_about.cpp
+msgid "License"
+msgstr "许å¯è¯"
+
+#: editor/editor_about.cpp
+msgid "Thirdparty License"
+msgstr "第三方许å¯è¯"
+
+#: editor/editor_about.cpp
msgid ""
"Godot Engine relies on a number of thirdparty free and open source "
"libraries, all compatible with the terms of its MIT license. The following "
"is an exhaustive list of all such thirdparty components with their "
"respective copyright statements and license terms."
msgstr ""
+"Godot引擎ä¾èµ–第三方开æºä»£ç åº“,全部符åˆMIT 许å¯è¯çš„æ¡æ¬¾ã€‚ä¸‹é¢åˆ—出所有第三方组"
+"件相关的版æƒå£°æ˜Žå’Œè®¸å¯åè®®æ¡æ¬¾ã€‚"
#: editor/editor_about.cpp
-#, fuzzy
msgid "All Components"
-msgstr "内容:"
+msgstr "所有组件"
#: editor/editor_about.cpp
-#, fuzzy
msgid "Components"
-msgstr "内容:"
+msgstr "组件"
#: editor/editor_about.cpp
msgid "Licenses"
-msgstr ""
+msgstr "许å¯è¯"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Error opening package file, not in zip format."
-msgstr ""
+msgstr "打开压缩包出错,éžzipæ ¼å¼ã€‚"
#: editor/editor_asset_installer.cpp
-#, fuzzy
msgid "Uncompressing Assets"
-msgstr "ä¸åŽ‹ç¼©"
+msgstr "无压缩资æº"
#: editor/editor_asset_installer.cpp editor/project_manager.cpp
msgid "Package Installed Successfully!"
msgstr "软件包安装æˆåŠŸï¼"
#: editor/editor_asset_installer.cpp
-#, fuzzy
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr "完æˆï¼"
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr "安装"
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
-msgstr "软件包安装æˆåŠŸï¼"
+msgstr "程åºåŒ…安装程åº"
#: editor/editor_audio_buses.cpp
msgid "Speakers"
-msgstr ""
+msgstr "扬声器"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Effect"
-msgstr "添加事件"
+msgstr "添加效果"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Rename Audio Bus"
-msgstr "打开音频Bus布局"
+msgstr "é‡å‘½å音频总线(Audio Bus)"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Toggle Audio Bus Solo"
-msgstr "打开音频Bus布局"
+msgstr "切æ¢éŸ³é¢‘独å¥"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Toggle Audio Bus Mute"
-msgstr "打开音频Bus布局"
+msgstr "切æ¢éŸ³é¢‘é™éŸ³"
#: editor/editor_audio_buses.cpp
msgid "Toggle Audio Bus Bypass Effects"
-msgstr ""
+msgstr "切æ¢éŸ³é¢‘æ—通效果"
#: editor/editor_audio_buses.cpp
msgid "Select Audio Bus Send"
-msgstr ""
+msgstr "选择音频å‘逿€»çº¿"
#: editor/editor_audio_buses.cpp
msgid "Add Audio Bus Effect"
-msgstr ""
+msgstr "添加音频总线效果"
#: editor/editor_audio_buses.cpp
msgid "Move Bus Effect"
-msgstr ""
+msgstr "移动总线效果"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Bus Effect"
-msgstr "删除选择的节点"
+msgstr "删除音频总线效果"
#: editor/editor_audio_buses.cpp
msgid "Audio Bus, Drag and Drop to rearrange."
-msgstr ""
-
-#: editor/editor_audio_buses.cpp
-#, fuzzy
-msgid "Bus options"
-msgstr "å­åœºæ™¯é€‰é¡¹"
+msgstr "éŸ³é¢‘æ€»çº¿ï¼Œæ‹–æ”¾é‡æ–°æŽ’列。"
#: editor/editor_audio_buses.cpp
msgid "Solo"
-msgstr ""
+msgstr "独å¥"
#: editor/editor_audio_buses.cpp
msgid "Mute"
-msgstr ""
+msgstr "é™éŸ³"
#: editor/editor_audio_buses.cpp
msgid "Bypass"
-msgstr ""
+msgstr "æ—通"
+
+#: editor/editor_audio_buses.cpp
+msgid "Bus options"
+msgstr "音频总线选项"
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
@@ -1080,32 +895,37 @@ msgstr "æ‹·è´"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Volume"
+msgstr "é‡ç½®ç¼©æ”¾"
+
+#: editor/editor_audio_buses.cpp
msgid "Delete Effect"
-msgstr "删除选择的节点"
+msgstr "删除效果"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Add Audio Bus"
-msgstr "添加Bus"
+msgstr "添加音频总线(Audio Bus)"
#: editor/editor_audio_buses.cpp
msgid "Master bus can't be deleted!"
-msgstr ""
+msgstr "ä¸èƒ½åˆ é™¤ä¸»éŸ³é¢‘总线!"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Delete Audio Bus"
-msgstr "删除布局"
+msgstr "删除音频总线"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Duplicate Audio Bus"
-msgstr "å¤åˆ¶åŠ¨ç”»"
+msgstr "å¤åˆ¶éŸ³é¢‘总线"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Bus Volume"
+msgstr "é‡ç½®ç¼©æ”¾"
+
+#: editor/editor_audio_buses.cpp
msgid "Move Audio Bus"
-msgstr "移动动作"
+msgstr "移动音频总线"
#: editor/editor_audio_buses.cpp
msgid "Save Audio Bus Layout As.."
@@ -1121,32 +941,28 @@ msgstr "打开音频Bus布局"
#: editor/editor_audio_buses.cpp
msgid "There is no 'res://default_bus_layout.tres' file."
-msgstr ""
+msgstr "ä¸å­˜åœ¨'res://default_bus_layout.tres'文件。"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Invalid file, not an audio bus layout."
-msgstr ""
-"文件扩展åä¸åˆæ³•\n"
-"请使用.font文件。"
+msgstr "无效文件,ä¸å­˜åœ¨éŸ³é¢‘总线布局。"
#: editor/editor_audio_buses.cpp
msgid "Add Bus"
msgstr "添加Bus"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Create a new Bus Layout."
-msgstr "创建资æº"
+msgstr "创建一个新的总线布局。"
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr "加载"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Load an existing Bus Layout."
-msgstr "从ç£ç›˜ä¸­åŠ è½½èµ„æºå¹¶ç¼–辑。"
+msgstr "加载现有的总线布局。"
#: editor/editor_audio_buses.cpp
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -1154,18 +970,16 @@ msgid "Save As"
msgstr "å¦å­˜ä¸º"
#: editor/editor_audio_buses.cpp
-#, fuzzy
msgid "Save this Bus Layout to a file."
msgstr "将音频Bus布局ä¿å­˜ä¸º.."
#: editor/editor_audio_buses.cpp editor/import_dock.cpp
-#, fuzzy
msgid "Load Default"
-msgstr "默认"
+msgstr "加载默认"
#: editor/editor_audio_buses.cpp
msgid "Load the default Bus Layout."
-msgstr ""
+msgstr "加载默认总线布局。"
#: editor/editor_autoload_settings.cpp
msgid "Invalid name."
@@ -1209,7 +1023,7 @@ msgstr "Autoload '%s'已存在ï¼"
#: editor/editor_autoload_settings.cpp
msgid "Rename Autoload"
-msgstr "移除Autoload"
+msgstr "é‡å‘½å自动加载脚本"
#: editor/editor_autoload_settings.cpp
msgid "Toggle AutoLoad Globals"
@@ -1232,7 +1046,7 @@ msgid "Rearrange Autoloads"
msgstr "釿ޒåºAutoload"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "路径:"
@@ -1240,9 +1054,7 @@ msgstr "路径:"
msgid "Node Name:"
msgstr "节点åç§°:"
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr "åç§°"
@@ -1267,27 +1079,27 @@ msgid "Updating scene.."
msgstr "更新场景中.."
#: editor/editor_dir_dialog.cpp
-#, fuzzy
msgid "Please select a base directory first"
-msgstr "请先ä¿å­˜åœºæ™¯ã€‚"
+msgstr "请先选择一个目录"
#: editor/editor_dir_dialog.cpp
msgid "Choose a Directory"
msgstr "选择目录"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "新建目录"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "åç§°:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "无法创建目录。"
@@ -1305,31 +1117,7 @@ msgstr "打包中"
#: editor/editor_export.cpp platform/javascript/export/export.cpp
msgid "Template file not found:\n"
-msgstr "找ä¸åˆ°æ¨¡æ¿æ–‡ä»¶:"
-
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr "已添加:"
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr "已移除:"
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr "ä¿å­˜è´´å›¾é›†å‡ºé”™:"
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr "无法ä¿å­˜ç²¾çµé›†å­è´´å›¾:"
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr "正在导出 %s"
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr "é…ç½®.."
+msgstr "找ä¸åˆ°æ¨¡æ¿æ–‡ä»¶:\n"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
@@ -1415,6 +1203,11 @@ msgstr "å‘上移动收è—"
msgid "Move Favorite Down"
msgstr "å‘下移动收è—"
+#: editor/editor_file_dialog.cpp
+#, fuzzy
+msgid "Go to parent folder"
+msgstr "无法创建目录。"
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "目录|文件:"
@@ -1429,10 +1222,6 @@ msgid "File:"
msgstr "文件:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "筛选:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "å¿…é¡»ä½¿ç”¨åˆæ³•的拓展å。"
@@ -1457,6 +1246,10 @@ msgstr "类型列表:"
msgid "Search Classes"
msgstr "æœç´¢ç±»åž‹"
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr "顶部"
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr "ç±»:"
@@ -1473,15 +1266,30 @@ msgstr "派生类:"
msgid "Brief Description:"
msgstr "简介:"
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Members"
+msgstr "æˆå‘˜ï¼š"
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr "æˆå‘˜ï¼š"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Public Methods"
+msgstr "公共方法:"
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr "公共方法:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "GUI Theme Items"
+msgstr "GUI主题:"
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr "GUI主题:"
@@ -1491,53 +1299,85 @@ msgstr "事件:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Enumerations"
+msgstr "枚举:"
+
+#: editor/editor_help.cpp
msgid "Enumerations:"
-msgstr "动画"
+msgstr "枚举:"
#: editor/editor_help.cpp
msgid "enum "
-msgstr ""
+msgstr "枚举 "
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Constants"
+msgstr "常é‡:"
#: editor/editor_help.cpp
msgid "Constants:"
msgstr "常é‡:"
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Description"
+msgstr "æè¿°:"
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Properties"
+msgstr "属性:"
+
+#: editor/editor_help.cpp
msgid "Property Description:"
msgstr "属性æè¿°ï¼š"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Methods"
+msgstr "方法列表:"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr "方法æè¿°:"
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr "æœç´¢æ–‡æœ¬"
#: editor/editor_log.cpp
-#, fuzzy
msgid "Output:"
-msgstr " 输出:"
+msgstr "输出:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "清除"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr "ä¿å­˜èµ„æºå‡ºé”™ï¼"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr "资æºå¦å­˜ä¸º.."
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "好å§.."
@@ -1554,6 +1394,30 @@ msgid "Error while saving."
msgstr "ä¿å­˜å‡ºé”™ã€‚"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Can't open '%s'."
+msgstr "无法对'..'引用æ“作"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while parsing '%s'."
+msgstr "ä¿å­˜å‡ºé”™ã€‚"
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Missing '%s' or its dependencies."
+msgstr "场景'%s'çš„ä¾èµ–已被破å:"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while loading '%s'."
+msgstr "ä¿å­˜å‡ºé”™ã€‚"
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr "正在ä¿å­˜åœºæ™¯"
@@ -1566,7 +1430,6 @@ msgid "Creating Thumbnail"
msgstr "创建缩略图"
#: editor/editor_node.cpp
-#, fuzzy
msgid "This operation can't be done without a tree root."
msgstr "æ­¤æ“ä½œå¿…é¡»åœ¨æ‰“å¼€ä¸€ä¸ªåœºæ™¯åŽæ‰èƒ½æ‰§è¡Œã€‚"
@@ -1612,6 +1475,33 @@ msgid "Restored default layout to base settings."
msgstr "é‡ç½®ä¸ºé»˜è®¤å¸ƒå±€è®¾ç½®ã€‚"
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr "æ‹·è´å‚æ•°"
@@ -1633,7 +1523,7 @@ msgstr "使之内置"
#: editor/editor_node.cpp
msgid "Make Sub-Resources Unique"
-msgstr "使å­èµ„æºå”¯ä¸€åŒ–"
+msgstr "转æ¢ä¸ºç‹¬ç«‹å­èµ„æº"
#: editor/editor_node.cpp
msgid "Open in Help"
@@ -1695,13 +1585,12 @@ msgid "Quick Open Script.."
msgstr "快速打开脚本.."
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Close"
-msgstr "ä¿å­˜æ–‡ä»¶"
+msgstr "ä¿å­˜å¹¶å…³é—­"
#: editor/editor_node.cpp
msgid "Save changes to '%s' before closing?"
-msgstr ""
+msgstr "在关闭å‰ä¿å­˜æ›´æ”¹åˆ° %s å—?"
#: editor/editor_node.cpp
msgid "Save Scene As.."
@@ -1725,16 +1614,15 @@ msgstr "æ­¤æ“ä½œå¿…é¡»åœ¨æ‰“å¼€ä¸€ä¸ªåœºæ™¯åŽæ‰èƒ½æ‰§è¡Œã€‚"
#: editor/editor_node.cpp
msgid "Export Mesh Library"
-msgstr "导出MeshLibrary"
+msgstr "导出网格库(Mesh Library)"
#: editor/editor_node.cpp
msgid "Export Tile Set"
-msgstr "导出砖å—集"
+msgstr "导出砖å—集(Tile Set)"
#: editor/editor_node.cpp
-#, fuzzy
msgid "This operation can't be done without a selected node."
-msgstr "æ­¤æ“ä½œå¿…é¡»åœ¨æ‰“å¼€ä¸€ä¸ªåœºæ™¯åŽæ‰èƒ½æ‰§è¡Œã€‚"
+msgstr "æ­¤æ“作必须先选择一个nodeæ‰èƒ½æ‰§è¡Œã€‚"
#: editor/editor_node.cpp
msgid "Current scene not saved. Open anyway?"
@@ -1765,21 +1653,25 @@ msgid "Exit the editor?"
msgstr "确定è¦é€€å‡ºç¼–辑器å—?"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Open Project Manager?"
-msgstr "项目管ç†å™¨"
+msgstr "打开项目管ç†å™¨ï¼Ÿ"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Save & Quit"
-msgstr "ä¿å­˜æ–‡ä»¶"
+msgstr "ä¿å­˜åŽé€€å‡º"
#: editor/editor_node.cpp
msgid "Save changes to the following scene(s) before quitting?"
-msgstr ""
+msgstr "以下场景在退出å‰ä¿å­˜æ›´æ”¹å—?"
#: editor/editor_node.cpp
msgid "Save changes the following scene(s) before opening Project Manager?"
+msgstr "在打开项目管ç†å™¨ä¹‹å‰ä¿å­˜æ›´æ”¹å—?"
+
+#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
msgstr ""
#: editor/editor_node.cpp
@@ -1787,20 +1679,30 @@ msgid "Pick a Main Scene"
msgstr "选择主场景"
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
-msgstr ""
+#, fuzzy
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
+msgstr "无法å¯ç”¨æ’ä»¶: '"
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
-msgstr ""
+#, fuzzy
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
+msgstr "在æ’件目录中没有找到脚本: 'res://addons/"
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
-msgstr ""
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "无法从路径加载æ’件脚本: '"
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
-msgstr ""
+#, fuzzy
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
+msgstr "无法从路径加载æ’件脚本: '"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
+msgstr "无法从路径加载æ’件脚本: '"
#: editor/editor_node.cpp
msgid ""
@@ -1808,12 +1710,12 @@ msgid ""
"To make changes to it, a new inherited scene can be created."
msgstr ""
"自动导入的场景'%s'无法修改。\n"
-"è¦è¿›è¡Œæ›´æ”¹ï¼Œå¯ä»¥åˆ›å»ºä¸€ä¸ªæ–°çš„场景继承自它。"
+"å¦‚è¦æ›´æ”¹ï¼Œè¯·åˆ›å»ºä¸€ä¸ªæ–°çš„备份场景。"
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
-msgstr "é¢"
+msgstr "呃"
#: editor/editor_node.cpp
msgid ""
@@ -1823,14 +1725,15 @@ msgstr ""
"加载场景出错,场景必须放在项目目录下。请å°è¯•使用'导入'èœå•导入此场景åŽå†è¯•。"
#: editor/editor_node.cpp
-msgid "Error loading scene."
-msgstr "加载场景出错。"
-
-#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
msgstr "场景'%s'çš„ä¾èµ–已被破å:"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Clear Recent Scenes"
+msgstr "清ç†å½“剿–‡ä»¶"
+
+#: editor/editor_node.cpp
msgid "Save Layout"
msgstr "ä¿å­˜å¸ƒå±€"
@@ -1860,11 +1763,10 @@ msgid "Distraction Free Mode"
msgstr "无干扰模å¼"
#: editor/editor_node.cpp
-#, fuzzy
msgid "Toggle distraction-free mode."
-msgstr "无干扰模å¼"
+msgstr "åˆ‡æ¢æ— å¹²æ‰°æ¨¡å¼ã€‚"
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr "场景"
@@ -2090,7 +1992,11 @@ msgstr "问答"
#: editor/editor_node.cpp
msgid "Issue Tracker"
-msgstr ""
+msgstr "问题跟踪器"
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "社区"
#: editor/editor_node.cpp
msgid "About"
@@ -2100,7 +2006,7 @@ msgstr "关于"
msgid "Play the project."
msgstr "è¿è¡Œæ­¤é¡¹ç›®ï¼ˆF5)。"
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr "播放"
@@ -2116,7 +2022,7 @@ msgstr "æš‚åœè¿è¡Œåœºæ™¯"
msgid "Stop the scene."
msgstr "åœæ­¢è¿è¡Œåœºæ™¯ã€‚"
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr "åœæ­¢"
@@ -2189,6 +2095,16 @@ msgid "Object properties."
msgstr "对象属性。"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Changes may be lost!"
+msgstr "修改图片分组"
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr "导入"
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr "文件系统"
@@ -2202,15 +2118,7 @@ msgstr "输出"
#: editor/editor_node.cpp
msgid "Don't Save"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr "釿–°å¯¼å…¥"
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr "æ›´æ–°"
+msgstr "ä¸ä¿å­˜"
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
@@ -2237,9 +2145,8 @@ msgid "Open & Run a Script"
msgstr "打开并è¿è¡Œè„šæœ¬"
#: editor/editor_node.cpp
-#, fuzzy
msgid "New Inherited"
-msgstr "从现有场景中创建.."
+msgstr "从现有场景中创建"
#: editor/editor_node.cpp
msgid "Load Errors"
@@ -2273,11 +2180,29 @@ msgstr "打开下一个编辑器"
msgid "Open the previous Editor"
msgstr "打开上一个编辑器"
+#: editor/editor_plugin.cpp
+#, fuzzy
+msgid "Creating Mesh Previews"
+msgstr "创建 Mesh(网格) 库"
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr "缩略图.."
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr "已安装æ’ä»¶:"
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr "æ›´æ–°"
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "版本:"
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr "作者:"
@@ -2310,8 +2235,9 @@ msgid "Frame %"
msgstr "渲染速度"
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
-msgstr "物ç†é€Ÿåº¦"
+#, fuzzy
+msgid "Physics Frame %"
+msgstr "固定帧速率 %"
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
msgid "Time:"
@@ -2329,35 +2255,17 @@ msgstr "自身"
msgid "Frame #:"
msgstr "帧åºå·:"
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr "扫æä¸­ï¼Œè¯·ç¨åŽ..."
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr "需è¦å…ˆä¿å­˜å½“å‰åœºæ™¯æ‰èƒ½é‡æ–°å¯¼å…¥ã€‚"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr "ä¿å­˜å¹¶é‡æ–°å¯¼å…¥"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr "釿–°å¯¼å…¥"
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr "釿–°å¯¼å…¥æ”¹å˜çš„资æº"
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
-msgstr ""
+msgstr "从列表中选择设备"
#: editor/editor_run_native.cpp
msgid ""
"No runnable export preset found for this platform.\n"
"Please add a runnable preset in the export menu."
msgstr ""
+"没有这个平å°çš„导出é…置。\n"
+"请在导出èœå•中添加é…置。"
#: editor/editor_run_script.cpp
msgid "Write your logic in the _run() method."
@@ -2425,7 +2333,7 @@ msgstr "(当å‰)"
#: editor/export_template_manager.cpp
msgid "Remove template version '%s'?"
-msgstr "移除版本为 '%s' 的模æ¿"
+msgstr "移除版本为 '%s' 的模�"
#: editor/export_template_manager.cpp
msgid "Can't open export templates zip."
@@ -2447,7 +2355,7 @@ msgstr "模æ¿ä¸­æ²¡æœ‰æ‰¾åˆ°version.txt文件。"
#: editor/export_template_manager.cpp
msgid "Error creating path for templates:\n"
-msgstr "无法将模æ¿ä¿å­˜åˆ°ä»¥ä¸‹æ–‡ä»¶:"
+msgstr "无法将模æ¿ä¿å­˜åˆ°ä»¥ä¸‹æ–‡ä»¶:\n"
#: editor/export_template_manager.cpp
msgid "Extracting Export Templates"
@@ -2458,10 +2366,6 @@ msgid "Importing:"
msgstr "导入:"
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr "正在加载导出模æ¿"
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr "当å‰ç‰ˆæœ¬:"
@@ -2491,63 +2395,82 @@ msgstr "无法以å¯å†™æ–¹å¼æ‰“å¼€file_type_cache.cchï¼"
#: editor/filesystem_dock.cpp
msgid "Cannot navigate to '"
-msgstr "无法导航到 "
+msgstr "无法导航到 '"
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid ""
"\n"
-"Status: Needs Re-Import"
-msgstr "ä¿å­˜å¹¶é‡æ–°å¯¼å…¥"
+"Status: Import of file failed. Please fix file and reimport manually."
+msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
msgid ""
"\n"
"Source: "
-msgstr "æº:"
+msgstr ""
+"\n"
+"æº: "
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
-msgstr "æºæ–‡ä»¶å’Œç›®æ ‡æ–‡ä»¶ç›¸åŒï¼Œæ“作忽略。"
+#, fuzzy
+msgid "Cannot move/rename resources root."
+msgstr "无法加载/å¤„ç†æºå­—体。"
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
-msgstr ""
+#, fuzzy
+msgid "Cannot move a folder into itself.\n"
+msgstr "ä¸å…许导入文件本身:"
+
+#: editor/filesystem_dock.cpp
+#, fuzzy
+msgid "Error moving:\n"
+msgstr "移动目录出错:\n"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
-msgstr "æºè·¯å¾„和目标路径相åŒï¼Œæ“作忽略。"
+#, fuzzy
+msgid "Unable to update dependencies:\n"
+msgstr "场景'%s'çš„ä¾èµ–已被破å:"
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
-msgstr "无法将目录移动到自身下。"
+msgid "No name provided"
+msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving file:\n"
-msgstr "加载图片出错:"
+msgid "No name provided."
+msgstr "移动或é‡å‘½å.."
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "导入出错:"
+msgid "Name contains invalid characters."
+msgstr "å­—ç¬¦åˆæ³•:"
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
-msgstr "无法对'..'引用æ“作"
+#, fuzzy
+msgid "A file or folder with this name already exists."
+msgstr "分组å称已存在ï¼"
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
-msgstr "选择新å称和路径:"
+#, fuzzy
+msgid "Renaming file:"
+msgstr "é‡å‘½åå˜é‡"
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
-msgstr "没有选中任何文件ï¼"
+#, fuzzy
+msgid "Renaming folder:"
+msgstr "é‡å‘½å节点"
#: editor/filesystem_dock.cpp
msgid "Expand all"
@@ -2558,40 +2481,38 @@ msgid "Collapse all"
msgstr "收起所有"
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
-msgstr "在资æºç®¡ç†å™¨ä¸­æ‰“å¼€"
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
-msgstr "创建实例节点"
+msgid "Copy Path"
+msgstr "æ‹·è´è·¯å¾„"
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
-msgstr "编辑ä¾èµ–.."
+#, fuzzy
+msgid "Rename.."
+msgstr "é‡å‘½å"
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
-msgstr "查看所有者.."
+msgid "Move To.."
+msgstr "移动.."
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr "æ‹·è´è·¯å¾„"
+#, fuzzy
+msgid "New Folder.."
+msgstr "新建目录"
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
-msgstr "移动或é‡å‘½å.."
+msgid "Show In File Manager"
+msgstr "在资æºç®¡ç†å™¨ä¸­æ‰“å¼€"
#: editor/filesystem_dock.cpp
-msgid "Move To.."
-msgstr "移动.."
+msgid "Instance"
+msgstr "创建实例节点"
#: editor/filesystem_dock.cpp
-msgid "Info"
-msgstr "ä¿¡æ¯"
+msgid "Edit Dependencies.."
+msgstr "编辑ä¾èµ–.."
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
-msgstr "釿–°å¯¼å…¥.."
+msgid "View Owners.."
+msgstr "查看所有者.."
#: editor/filesystem_dock.cpp
msgid "Previous Directory"
@@ -2618,11 +2539,18 @@ msgid ""
"Scanning Files,\n"
"Please Wait.."
msgstr ""
+"æ‰«ææ–‡ä»¶ï¼Œ\n"
+"请ç¨å€™ã€‚"
#: editor/filesystem_dock.cpp
msgid "Move"
msgstr "移动"
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr "é‡å‘½å"
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr "添加到分组"
@@ -2632,78 +2560,89 @@ msgid "Remove from Group"
msgstr "从分组中移除"
#: editor/import/resource_importer_scene.cpp
-#, fuzzy
msgid "Import as Single Scene"
-msgstr "导入场景.."
+msgstr "导入为独立场景"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Animations"
+msgstr "导入独立æè´¨"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
-msgstr ""
+msgstr "导入独立æè´¨"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects"
-msgstr ""
+msgstr "导入独立物体"
#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Objects+Materials"
-msgstr ""
+msgstr "导入独立物体 + æè´¨"
#: editor/import/resource_importer_scene.cpp
#, fuzzy
+msgid "Import with Separate Objects+Animations"
+msgstr "导入独立物体 + æè´¨"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Materials+Animations"
+msgstr "导入独立æè´¨"
+
+#: editor/import/resource_importer_scene.cpp
+#, fuzzy
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr "导入独立物体 + æè´¨"
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
-msgstr "导入3D场景"
+msgstr "导入多个场景"
#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes+Materials"
-msgstr ""
+msgstr "导入多个场景 + æè´¨"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr "导入场景"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr "导入场景.."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr "执行自定义脚本.."
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr "无法载入åŽå¯¼å…¥è„šæœ¬:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr "åŽå¤„ç†è„šæœ¬è¢«æŸå或ä¸åˆæ³•(查看控制å°ï¼‰:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr "åŽå¤„ç†è„šæœ¬è¿è¡Œå‘生错误:"
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr "ä¿å­˜ä¸­..."
#: editor/import_dock.cpp
msgid "Set as Default for '%s'"
-msgstr ""
+msgstr "将默认设置为 '%s'"
#: editor/import_dock.cpp
msgid "Clear Default for '%s'"
-msgstr ""
+msgstr "清除默认'%s'"
#: editor/import_dock.cpp
msgid " Files"
-msgstr "文件"
+msgstr " 文件"
#: editor/import_dock.cpp
msgid "Import As:"
@@ -2717,574 +2656,6 @@ msgstr "预设.."
msgid "Reimport"
msgstr "釿–°å¯¼å…¥"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr "没有è¦å¯¼å…¥çš„bit masksï¼"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr "目标路径为空。"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr "ç›®æ ‡è·¯å¾„å¿…é¡»æ˜¯ä¸€ä¸ªå®Œæ•´çš„èµ„æºæ–‡ä»¶è·¯å¾„。"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr "目标路径必须存在。"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr "ä¿å­˜è·¯å¾„为空ï¼"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr "导入BitMask"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr "æºè´´å›¾:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr "目标路径:"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr "接å—"
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr "使ީç ï¼ˆBitMask)"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr "请设置æºå­—体文件ï¼"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr "请设置目标字体资æºï¼"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-"文件扩展åä¸åˆæ³•\n"
-"请使用.font文件。"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr "无法加载/å¤„ç†æºå­—体。"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr "无法ä¿å­˜å­—体。"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr "æºå­—体文件:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr "æºå­—体大å°:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr "目标资æº:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
-"The quick brown fox jumps over the lazy dog.\n"
-"我能åžä¸‹çŽ»ç’ƒè€Œä¸ä¼¤èº«ä½“。"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr "测试:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr "选项:"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr "导入字体"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr "æ­¤æ–‡ä»¶å·²ç»æ˜¯ä¸€ä¸ªGodot的字体文件,请æä¾›ä¸€ä¸ªä½å›¾å­—体(BMFont)文件。"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr "打开ä½å›¾å­—体失败。"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr "åˆå§‹åŒ–FreeType出错。"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "未知的字体格å¼ã€‚"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "加载字体出错。"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr "字体大å°éžæ³•。"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr "è‡ªå®šä¹‰å­—ä½“æ–‡ä»¶éžæ³•。"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr "字体"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr "没有è¦å¯¼å…¥çš„Meshï¼"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr "导入å•个Mesh"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr "æºMesh:"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr "Mesh"
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr "è¡¨é¢ %d"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr "没有音效è¦å¯¼å…¥ï¼"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr "导入声音文件"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr "æºéŸ³æ•ˆæ–‡ä»¶:"
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr "音效"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr "新片段"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr "动画选项"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr "标记"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr "烘培FPS:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr "优化"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr "最大线性误差"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr "最大角度误差"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr "最大角度"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr "片段"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr "起点"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr "终点"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr "循环"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr "筛选"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr "æºè·¯å¾„为空。"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr "无法载入åŽå¯¼å…¥è„šæœ¬ã€‚"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr "åŽå¯¼å…¥è„šæœ¬è¢«æŸå或ä¸åˆæ³•。"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr "导入场景出错。"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr "导入3D场景"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr "æºåœºæ™¯:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr "与目标场景相åŒ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr "共享的"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr "目标贴图目录:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr "åŽå¤„ç†è„šæœ¬:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr "自定义根节点类型:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr "自动"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr "节点åç§°:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr "找ä¸åˆ°ä¸‹åˆ—文件:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr "ä»ç„¶å¯¼å…¥"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "å–æ¶ˆ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr "导入|打开"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr "正在编辑的场景尚未ä¿å­˜ï¼Œä»ç„¶è¦æ‰“开导入的场景å—?"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr "导入图片:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr "ä¸å…许导入文件本身:"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr "无法本地化路径:%s (å·²ç»æ˜¯æœ¬åœ°è·¯å¾„)"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr "3D场景动画"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr "ä¸åŽ‹ç¼©"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr "æ— æŸåŽ‹ç¼©ï¼ˆPNG)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr "有æŸåŽ‹ç¼©ï¼ˆWebP)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr "VRAM压缩"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr "çº¹ç†æ ¼å¼"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr "高质é‡ï¼ˆWebP)压缩方å¼:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr "纹ç†é€‰é¡¹"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr "请添加文件ï¼"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr "ç²¾çµé›†è‡³å°‘需è¦ä¸€ä¸ªæ–‡ä»¶ã€‚"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr "导入出错:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr "大图导入仅支æŒä¸€ä¸ªè¾“入文件。"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr "最大纹ç†å°ºå¯¸:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr "导入2Dç²¾çµé›†"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr "å•元尺寸:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr "大图"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr "导入2D大图"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
-msgstr "æºè´´å›¾"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
-msgstr "基础图集纹ç†"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
-msgstr "æºè´´å›¾(s)"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
-msgstr "导入2D贴图"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
-msgstr "导入3D贴图"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
-msgstr "导入贴图"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
-msgstr "2D贴图"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
-msgstr "3D贴图"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
-msgstr "ç²¾çµå›¾é›†"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-"æç¤º:大多数2D贴图并ä¸éœ€è¦å¯¼å…¥æ“作,åªè¦å°†png/jpg文件放到项目目录下å³å¯ã€‚"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr "切除空白区域。"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr "贴图"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr "导入大图"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr "加载æºå›¾ç‰‡"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr "切片中"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr "æ’入中"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr "正在ä¿å­˜æ–‡ä»¶"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr "无法ä¿å­˜å¤§å›¾:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr "使用以下图片生æˆç²¾çµé›†:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr "加载图片中:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr "无法加载图片:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr "正在转æ¢å›¾ç‰‡"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr "剪è£å›¾ç‰‡"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr "Blitting 图片"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr "无法ä¿å­˜ç²¾çµé›†å›¾ç‰‡:"
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr "无法ä¿å­˜è½¬æ¢çš„贴图:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr "输入æºéžæ³•ï¼"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr "æºè¯­è¨€æ–‡ä»¶éžæ³•ï¼"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr "列"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr "语言"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr "没有è¦å¯¼å…¥çš„项目ï¼"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr "目标路径为空ï¼"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr "导入多ç§è¯­è¨€ç¿»è¯‘"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr "无法导入ï¼"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr "导入语言翻译"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr "æºCSV文件:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr "忽略第一行"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr "压缩"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr "添加到项目 (project.godot)"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr "导入语言:"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr "语言"
-
#: editor/multi_node_edit.cpp
msgid "MultiNode Set"
msgstr "多节点组"
@@ -3297,6 +2668,49 @@ msgstr "分组"
msgid "Select a Node to edit Signals and Groups."
msgstr "请选择一个节点æ¥è®¾ç½®ä¿¡å·æˆ–分组。"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
+msgstr "创建多边形"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
+msgstr "编辑多边形"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#, fuzzy
+msgid "Insert Point"
+msgstr "æ’入中"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
+msgstr "编辑多边形(移除顶点)"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
+msgstr "移除多边形åŠé¡¶ç‚¹"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
+msgstr "从头开始创建一个新的多边形。"
+
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid ""
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
+msgstr ""
+"编辑多边形:\n"
+"LMB: 移动点。\n"
+"Ctrl + LMB: 分离片段。\n"
+"人民å¸ï¼š 擦除点。"
+
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Toggle Autoplay"
msgstr "切æ¢AutoPlay"
@@ -3315,7 +2729,7 @@ msgstr "é‡å‘½å动画:"
#: editor/plugins/animation_player_editor_plugin.cpp
msgid "Delete Animation?"
-msgstr "删除动画"
+msgstr "是å¦åˆ é™¤åŠ¨ç”»ï¼Ÿ"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp
@@ -3450,7 +2864,6 @@ msgstr "动画åç§°:"
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3478,9 +2891,8 @@ msgid "New name:"
msgstr "æ–°åç§°:"
#: editor/plugins/animation_tree_editor_plugin.cpp
-#, fuzzy
msgid "Edit Filters"
-msgstr "编辑节点筛选"
+msgstr "编辑筛选器"
#: editor/plugins/animation_tree_editor_plugin.cpp
#: editor/plugins/multimesh_editor_plugin.cpp
@@ -3561,10 +2973,6 @@ msgid "Delete Input"
msgstr "删除输入事件"
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr "é‡å‘½å"
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr "动画树å¯ç”¨ã€‚"
@@ -3620,64 +3028,181 @@ msgstr "编辑节点筛选"
msgid "Filters.."
msgstr "筛选.."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
-msgstr "正在解æžç¬¬%d个三角形:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr "释放"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
-msgstr "三角形 #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
+msgstr "内容:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
-msgstr "建立烘培:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "View Files"
+msgstr "查看文件"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
-msgstr "è§£æžå¤šè¾¹å½¢ä¸­"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
+msgstr "无法解æžä¸»æœºå:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
-msgstr "修正光照"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
+msgstr "无法解æž."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
-msgstr "制作BVH(动作骨骼)"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
+msgstr "连接错误,请é‡è¯•。"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
-msgstr "创建光的 Octree(八剿 ‘)"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "无法连接。"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
-msgstr "创建 Octree (八剿 ‘) 纹ç†"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
+msgstr "无法连接到æœåС噍:"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
-msgstr "转移到光照贴图:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
+msgstr "æœåŠ¡å™¨æ— å“应:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "æ— å“应。"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
+msgstr "请求失败,错误代ç :"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
-msgstr "分é…çº¹ç† #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
+msgstr "请求失败."
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
-msgstr "烘培三角形 #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
+msgstr "请求失败,é‡å®šå‘次数过多"
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
-msgstr "åŽåŠ å·¥çº¹ç† #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
+msgstr "循环é‡å®šå‘。"
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
-msgstr "烘培ï¼"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "失败:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
+msgstr "文件hash值错误,该文件å¯èƒ½è¢«ç¯¡æ”¹ã€‚"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
+msgstr "预计:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
+msgstr "获得:"
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
-msgstr "é‡ç½®è´´å›¾çƒ˜ç„™è¿‡ç¨‹ ï¼ˆé‡æ–°å¼€å§‹ï¼‰ çš„ octree (八剿 ‘)。"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
+msgstr "sha256哈希值校验失败"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
+msgstr "资æºä¸‹è½½å‡ºé”™:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr "获å–:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr "è§£æžä¸­.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connecting.."
+msgstr "连接中.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr "正在请求.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
+msgstr "请求错误"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr "空闲"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr "é‡è¯•"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr "下载错误"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr "æ­¤èµ„æºæ–‡ä»¶æ­£åœ¨ä¸‹è½½ä¸­ï¼"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr "首先"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr "上一页"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr "下一页"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr "最åŽä¸€é¡µ"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "全部"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr "æ’ä»¶"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "排åº:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr "å选"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "分类:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "站点:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr "支æŒ.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "官方"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr "测试"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr "ZIP资æºåŒ…"
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr "预览"
@@ -3720,12 +3245,18 @@ msgid "Edit CanvasItem"
msgstr "编辑CanvasItem"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+#, fuzzy
+msgid "Anchors only"
+msgstr "锚点"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Change Anchors and Margins"
msgstr "编辑锚点"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
-msgstr "缩放(%):"
+msgid "Change Anchors"
+msgstr "编辑锚点"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Paste Pose"
@@ -3775,60 +3306,78 @@ msgid "Pan Mode"
msgstr "移动画布"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
-msgstr "é”定选中对象的ä½ç½®ã€‚"
+#, fuzzy
+msgid "Toggles snapping"
+msgstr "设置断点"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
-msgstr "è§£é”选中对象的ä½ç½®ã€‚"
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
+msgstr "使用å¸é™„"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
-msgstr "ç¡®ä¿èŠ‚ç‚¹çš„å­å­™æ— æ³•被选中。"
+#, fuzzy
+msgid "Snapping options"
+msgstr "动画选项"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
-msgstr "æ¢å¤èŠ‚ç‚¹çš„å­å­™èƒ½å¤Ÿè¢«é€‰ä¸­ã€‚"
+#, fuzzy
+msgid "Snap to grid"
+msgstr "å¸é™„模å¼:"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "编辑"
+msgid "Use Rotation Snap"
+msgstr "使用旋转å¸é™„"
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
-msgstr "使用å¸é™„"
+#, fuzzy
+msgid "Configure Snap..."
+msgstr "设置å¸é™„.."
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
-msgstr "显示网格"
+msgid "Snap Relative"
+msgstr "相对å¸é™„"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
-msgstr "使用旋转å¸é™„"
+msgid "Use Pixel Snap"
+msgstr "使用åƒç´ å¸é™„"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
-msgstr "相对å¸é™„"
+msgid "Smart snapping"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
-msgstr "设置å¸é™„.."
+#, fuzzy
+msgid "Snap to parent"
+msgstr "展开父节点"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
-msgstr "使用åƒç´ å¸é™„"
+msgid "Snap to node anchor"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr "é”定选中对象的ä½ç½®ã€‚"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr "è§£é”选中对象的ä½ç½®ã€‚"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
+msgstr "ç¡®ä¿èŠ‚ç‚¹çš„å­å­™æ— æ³•被选中。"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
-msgstr "骨骼.."
+msgid "Restores the object's children's ability to be selected."
+msgstr "æ¢å¤èŠ‚ç‚¹çš„å­å­™èƒ½å¤Ÿè¢«é€‰ä¸­ã€‚"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Make Bones"
@@ -3856,12 +3405,19 @@ msgid "View"
msgstr "视图"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
-msgstr "é‡ç½®ç¼©æ”¾"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
+msgstr "显示网格"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Show helpers"
+msgstr "显示骨骼"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
-msgstr "设置缩放.."
+#, fuzzy
+msgid "Show rulers"
+msgstr "显示骨骼"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Center Selection"
@@ -3872,8 +3428,9 @@ msgid "Frame Selection"
msgstr "最大化显示选中节点"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
-msgstr "锚点"
+#, fuzzy
+msgid "Layout"
+msgstr "ä¿å­˜å¸ƒå±€"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Keys"
@@ -3896,12 +3453,21 @@ msgid "Clear Pose"
msgstr "清除姿势"
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
-msgstr "设置值"
+msgid "Drag pivot from mouse position"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "设置曲线输出ä½ç½®ï¼ˆPos)"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
-msgstr "å¸é™„(åƒç´ ï¼‰ï¼š"
+msgid "Divide grid step by 2"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Add %s"
@@ -3911,23 +3477,28 @@ msgstr "添加(Add) %s"
msgid "Adding %s..."
msgstr "添加(Adding) %s..."
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr "新节点"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr "从%s实例化场景出错"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr "好å§"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr "æ²¡æœ‰é€‰ä¸­èŠ‚ç‚¹æ¥æ·»åŠ å®žä¾‹ã€‚"
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr "æ­¤æ“作åªèƒ½åº”用于å•个选中节点。"
@@ -3943,45 +3514,6 @@ msgstr ""
"拖放+ Shift:将节点添加为兄弟节点\n"
"拖放+ Alt:更改节点类型"
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr "创建多边形"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr "编辑多边形"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr "编辑多边形(移除顶点)"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr "从头开始创建一个新的多边形。"
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr "创建 Poly3D (多边型3D)"
@@ -3991,14 +3523,6 @@ msgid "Set Handle"
msgstr "设置处ç†ç¨‹åº"
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr "创建 Mesh(网格) 库"
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr "缩略图.."
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr "确定è¦ç§»é™¤é¡¹ç›®%då—?"
@@ -4021,19 +3545,38 @@ msgid "Update from Scene"
msgstr "从场景中更新"
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
-msgid "Modify Curve Point"
-msgstr "修改曲线"
+msgid "Ease in"
+msgstr "缓入"
#: editor/plugins/curve_editor_plugin.cpp
#, fuzzy
+msgid "Ease out"
+msgstr "缓出"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Modify Curve Point"
+msgstr "修改曲线点"
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Tangent"
-msgstr "修改曲线图"
+msgstr "修改曲线切角"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Load Curve Preset"
-msgstr "加载预设"
+msgstr "加载曲线预设"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Add point"
@@ -4044,31 +3587,28 @@ msgid "Remove point"
msgstr "移除顶点"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Left linear"
-msgstr "线性"
+msgstr "左线性"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Right linear"
-msgstr "å³è§†å›¾"
+msgstr "å³çº¿æ€§"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Load preset"
msgstr "加载预设"
#: editor/plugins/curve_editor_plugin.cpp
-#, fuzzy
msgid "Remove Curve Point"
msgstr "移除路径顶点"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Toggle Curve Linear Tangent"
-msgstr ""
+msgstr "åˆ‡æ¢æ›²çº¿çº¿æ€§Tangent"
#: editor/plugins/curve_editor_plugin.cpp
msgid "Hold Shift to edit tangents individually"
-msgstr ""
+msgstr "æŒ‰ä½ Shift å¯å•独编辑切线"
#: editor/plugins/gradient_editor_plugin.cpp
msgid "Add/Remove Color Ramp Point"
@@ -4096,28 +3636,26 @@ msgid ""
"No OccluderPolygon2D resource on this node.\n"
"Create and assign one?"
msgstr ""
+"在这个节点上没有 OccluderPolygon2D 资æºã€‚\n"
+"创建和分é…一个å—?"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
msgid "Create Occluder Polygon"
msgstr "添加é®å…‰å¤šè¾¹å½¢"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr "编辑已存在的多边形:"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr "鼠标左键:移动点。"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr "Ctrl+鼠标左键:分割视图å—。"
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr "é¼ æ ‡å³é”®:移除点。"
@@ -4218,6 +3756,10 @@ msgid "Create Outline"
msgstr "创建轮廓(outlines)"
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr "Mesh"
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr "åˆ›å»ºä¸‰ç»´é™æ€èº«ä½“(Body)"
@@ -4345,14 +3887,83 @@ msgstr "éšæœºç¼©æ”¾:"
msgid "Populate"
msgstr "å¡«å……"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr "烘培ï¼"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+#, fuzzy
+msgid "Bake the navigation mesh.\n"
+msgstr "创建导航Mesh(网格)"
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+#, fuzzy
+msgid "Clear the navigation mesh."
+msgstr "创建导航Mesh(网格)"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating heightfield..."
+msgstr "创建光的 Octree(八剿 ‘)"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Marking walkable triangles..."
+msgstr "å¯ç¿»è¯‘字符串.."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Partitioning..."
+msgstr "警告"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating contours..."
+msgstr "创建 Octree (八剿 ‘) 纹ç†"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Creating polymesh..."
+msgstr "创建轮廓网格(Outline Mesh).."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Converting to native navigation mesh..."
+msgstr "创建导航Mesh(网格)"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Parsing Geometry..."
+msgstr "è§£æžå¤šè¾¹å½¢ä¸­"
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
+msgstr ""
+
#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Create Navigation Polygon"
msgstr "创建导航多边形"
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
-msgstr "移除多边形åŠé¡¶ç‚¹"
-
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Clear Emission Mask"
msgstr "清除Emission Mask(å‘å°„å±è”½ï¼‰"
@@ -4364,7 +3975,7 @@ msgstr "正在生æˆAABB"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Can only set point into a ParticlesMaterial process material"
-msgstr ""
+msgstr "å¯ä»¥è®¾ç½®ParticlesMaterial 点的æè´¨"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Error loading image:"
@@ -4380,7 +3991,7 @@ msgstr "设置Emission Mask(å‘å°„å±è”½ï¼‰"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generate Visibility Rect"
-msgstr ""
+msgstr "生æˆå¯è§†åŒ–区域"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Load Emission Mask"
@@ -4388,9 +3999,8 @@ msgstr "加载Emission Mask(å‘å°„å±è”½ï¼‰"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
-#, fuzzy
msgid "Particles"
-msgstr "顶点"
+msgstr "ç²’å­"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Generated Point Count:"
@@ -4399,19 +4009,19 @@ msgstr "生æˆé¡¶ç‚¹è®¡æ•°:"
#: editor/plugins/particles_2d_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp
msgid "Generation Time (sec):"
-msgstr "ç”Ÿæˆæ—¶é—´ï¼ˆç§’)"
+msgstr "ç”Ÿæˆæ—¶é—´ï¼ˆç§’):"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Emission Mask"
-msgstr ""
+msgstr "å‘å…‰é®ç½©ï¼ˆmask)"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Capture from Pixel"
-msgstr ""
+msgstr "从åƒç´ æ•æ‰"
#: editor/plugins/particles_2d_editor_plugin.cpp
msgid "Emission Colors"
-msgstr ""
+msgstr "å‘光颜色"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Node does not contain geometry."
@@ -4471,11 +4081,11 @@ msgstr "体积"
#: editor/plugins/particles_editor_plugin.cpp
msgid "Emission Source: "
-msgstr "å‘å°„æºï¼š"
+msgstr "å‘å°„æºï¼š "
#: editor/plugins/particles_editor_plugin.cpp
msgid "Generate Visibility AABB"
-msgstr ""
+msgstr "生æˆå¯è§çš„AABB"
#: editor/plugins/path_2d_editor_plugin.cpp
msgid "Remove Point from Curve"
@@ -4525,14 +4135,17 @@ msgid "Curve Point #"
msgstr "曲线定点 #"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
msgstr "è®¾ç½®æ›²çº¿é¡¶ç‚¹åæ ‡"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
msgstr "设置的曲线输入ä½ç½®ï¼ˆPos)"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
msgstr "设置曲线输出ä½ç½®ï¼ˆPos)"
@@ -4593,6 +4206,14 @@ msgid "Scale Polygon"
msgstr "缩放多边形"
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "编辑"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr "多边形->UV"
@@ -4647,63 +4268,10 @@ msgstr "加载资æº"
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "粘贴"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr "è§£æžBBCode"
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr "长度:"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr "打开声音文件"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr "错误:无法加载音效ï¼"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr "添加音效"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr "é‡å‘½å音效"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr "删除音效"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr "16ä½"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr "8ä½"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr "立体声"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr "å•声é“"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr "æ ¼å¼"
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr "音调"
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr "清ç†å½“剿–‡ä»¶"
@@ -4713,6 +4281,8 @@ msgid ""
"Close and save changes?\n"
"\""
msgstr ""
+"关闭并ä¿å­˜æ›´æ”¹å—?\n"
+"\""
#: editor/plugins/script_editor_plugin.cpp
msgid "Error while saving theme"
@@ -4740,7 +4310,7 @@ msgstr "主题å¦å­˜ä¸º.."
#: editor/plugins/script_editor_plugin.cpp
msgid " Class Reference"
-msgstr ""
+msgstr " 类引用"
#: editor/plugins/script_editor_plugin.cpp
msgid "Next script"
@@ -4794,10 +4364,13 @@ msgstr "关闭文档"
msgid "Close All"
msgstr "关闭全部"
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr "è¿è¡Œ"
+
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Toggle Scripts Panel"
-msgstr "åˆ‡æ¢æ”¶è—"
+msgstr "切æ¢è„šæœ¬é¢æ¿"
#: editor/plugins/script_editor_plugin.cpp
#: editor/plugins/script_text_editor.cpp
@@ -4823,7 +4396,8 @@ msgstr "啿­¥è¿›å…¥"
msgid "Break"
msgstr "跳过"
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr "ç»§ç»­"
@@ -4832,25 +4406,12 @@ msgid "Keep Debugger Open"
msgstr "ä¿æŒè°ƒè¯•器打开"
#: editor/plugins/script_editor_plugin.cpp
-#, fuzzy
msgid "Debug with external editor"
-msgstr "打开下一个编辑器"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr "窗å£"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr "å‘左移动"
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr "å‘å³ç§»åЍ"
+msgstr "使用外部编辑器进行调试"
#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
-msgstr ""
+msgstr "打开Godot在线文档"
#: editor/plugins/script_editor_plugin.cpp
msgid "Search the class hierarchy."
@@ -4903,7 +4464,7 @@ msgstr "å†…å»ºè„šæœ¬åªæœ‰åœ¨å…¶æ‰€å±žçš„节点读å–åŽæ‰èƒ½è¢«ä¿®æ”¹"
#: editor/plugins/script_text_editor.cpp
msgid "Only resources from filesystem can be dropped."
-msgstr ""
+msgstr "åªå¯ä»¥æ‹–入文件系统的资æºã€‚"
#: editor/plugins/script_text_editor.cpp
msgid "Pick Color"
@@ -4932,8 +4493,9 @@ msgid "Cut"
msgstr "剪切"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "å¤åˆ¶"
@@ -4952,9 +4514,8 @@ msgid "Move Down"
msgstr "å‘下移动"
#: editor/plugins/script_text_editor.cpp
-#, fuzzy
msgid "Delete Line"
-msgstr "删除顶点"
+msgstr "删除线"
#: editor/plugins/script_text_editor.cpp
msgid "Indent Left"
@@ -5197,10 +4758,6 @@ msgid "View Plane Transform."
msgstr "视图平é¢å˜æ¢ã€‚"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr "缩放到%s%%。"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr "旋转%s度。"
@@ -5217,10 +4774,6 @@ msgid "Top View."
msgstr "俯视图(Top View)。"
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr "顶部"
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr "åŽè§†å›¾ã€‚"
@@ -5262,7 +4815,7 @@ msgstr "æ’入动画键。"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Objects Drawn"
-msgstr ""
+msgstr "绘制的对象"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Material Changes"
@@ -5278,7 +4831,7 @@ msgstr "表é¢å˜æ›´"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Draw Calls"
-msgstr "Draw Calls"
+msgstr "绘制调用(Draw Calls)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Vertices"
@@ -5302,60 +4855,57 @@ msgstr "显示过度绘制"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Display Unshaded"
-msgstr ""
+msgstr "显示无阴影"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Environment"
-msgstr ""
+msgstr "视图环境"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "View Gizmos"
msgstr "Gizmos(å¯è§†åŒ–调试工具)"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "View Information"
-msgstr ""
+msgstr "查看信æ¯"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Audio Listener"
msgstr "音频监å¬å™¨"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Doppler Enable"
-msgstr "å¯ç”¨"
+msgstr "å¯ç”¨å¤šæ™®å‹’效应"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Left"
-msgstr ""
+msgstr "自由视图 左"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Right"
-msgstr ""
+msgstr "自由视图 å³"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Forward"
-msgstr ""
+msgstr "自由视图 å‰"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Backwards"
-msgstr ""
+msgstr "自由视图 åŽ"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Up"
-msgstr ""
+msgstr "自由视图 上"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Down"
-msgstr ""
+msgstr "自由视图 下"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Freelook Speed Modifier"
-msgstr ""
+msgstr "自由视图速度调整"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "preview"
msgstr "预览"
@@ -5364,17 +4914,18 @@ msgid "XForm Dialog"
msgstr "XFormå¯¹è¯æ¡†"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Select Mode (Q)\n"
-msgstr "选择模å¼"
+msgstr "é€‰æ‹©æ¨¡å¼ (Q)\n"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid ""
"Drag: Rotate\n"
"Alt+Drag: Move\n"
"Alt+RMB: Depth list selection"
-msgstr "Alt+é¼ æ ‡å³é”®:显示鼠标点击ä½ç½®ä¸‹çš„æ‰€æœ‰èŠ‚ç‚¹åˆ—è¡¨"
+msgstr ""
+"鼠标拖拽:旋转\n"
+"Alt+拖拽:移动\n"
+"Alt+é¼ æ ‡å³é”®ï¼šæ˜¾ç¤ºåˆ—表"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Move Mode (W)"
@@ -5433,30 +4984,30 @@ msgid "Align Selection With View"
msgstr "选中项与视图对é½"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Select"
-msgstr "选择"
+msgstr "选择工具"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Move"
-msgstr "移动"
+msgstr "移动工具"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Rotate"
-msgstr "Ctrl:旋转"
+msgstr "旋转工具"
#: editor/plugins/spatial_editor_plugin.cpp
-#, fuzzy
msgid "Tool Scale"
-msgstr "缩放:"
+msgstr "缩放工具"
#: editor/plugins/spatial_editor_plugin.cpp
msgid "Transform"
msgstr "å˜æ¢"
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr "设置å¸é™„.."
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr "æœ¬åœ°åæ ‡"
@@ -5602,6 +5153,10 @@ msgid "Speed (FPS):"
msgstr "速度(FPS):"
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr "循环"
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr "动画帧"
@@ -5614,19 +5169,20 @@ msgid "Insert Empty (After)"
msgstr "æ’入空白帧(之åŽï¼‰"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr "å‘上"
+#, fuzzy
+msgid "Move (Before)"
+msgstr "移动节点"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
-msgstr "å‘下"
+#, fuzzy
+msgid "Move (After)"
+msgstr "å‘左移动"
#: editor/plugins/style_box_editor_plugin.cpp
msgid "StyleBox Preview:"
msgstr "StyleBox预览:"
#: editor/plugins/texture_region_editor_plugin.cpp
-#, fuzzy
msgid "Set Region Rect"
msgstr "设置纹ç†åŒºåŸŸ"
@@ -5688,18 +5244,20 @@ msgid "Remove Item"
msgstr "移除项目"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All Items"
msgstr "移除类项目"
#: editor/plugins/theme_editor_plugin.cpp
-#, fuzzy
msgid "Remove All"
-msgstr "移除"
+msgstr "移除全部"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
-msgstr "主题"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
+msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
msgid "Add Class Items"
@@ -5783,11 +5341,14 @@ msgid "Style"
msgstr "æ ·å¼"
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr "字体"
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr "颜色"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase Selection"
msgstr "擦除选中"
@@ -5796,18 +5357,16 @@ msgid "Paint TileMap"
msgstr "绘制砖å—地图"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Line Draw"
-msgstr "线性"
+msgstr "线性绘制"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rectangle Paint"
-msgstr ""
+msgstr "绘制矩形"
#: editor/plugins/tile_map_editor_plugin.cpp
-#, fuzzy
msgid "Bucket Fill"
-msgstr "æ¡¶(Bucket)"
+msgstr "油漆桶填充"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Erase TileMap"
@@ -5834,12 +5393,13 @@ msgid "Mirror Y"
msgstr "沿Y轴翻转"
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
-msgstr "æ¡¶(Bucket)"
+#, fuzzy
+msgid "Paint Tile"
+msgstr "绘制砖å—地图"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Pick Tile"
-msgstr "选择砖å—"
+msgstr "选择砖å—(Tile)"
#: editor/plugins/tile_map_editor_plugin.cpp
msgid "Rotate 0 degrees"
@@ -5898,6 +5458,11 @@ msgid "Delete preset '%s'?"
msgstr "删除选中的 '%s'?"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr "没有下列平å°çš„导出模æ¿:"
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr "预设"
@@ -5911,15 +5476,15 @@ msgstr "资æº"
#: editor/project_export.cpp
msgid "Export all resources in the project"
-msgstr "导出项目中的所有资æºã€‚"
+msgstr "导出项目中的所有资æº"
#: editor/project_export.cpp
msgid "Export selected scenes (and dependencies)"
-msgstr "导出选中的场景(包括其ä¾èµ–)。"
+msgstr "导出选中的场景(包括ä¾èµ–项)"
#: editor/project_export.cpp
msgid "Export selected resources (and dependencies)"
-msgstr "导出选中的资æºï¼ˆåŒ…括其ä¾èµ–资æºï¼‰ã€‚"
+msgstr "导出选中的资æºï¼ˆåŒ…括ä¾èµ–资æºï¼‰"
#: editor/project_export.cpp
msgid "Export Mode:"
@@ -5932,12 +5497,12 @@ msgstr "导出的资æº:"
#: editor/project_export.cpp
msgid ""
"Filters to export non-resource files (comma separated, e.g: *.json, *.txt)"
-msgstr "导出éžèµ„æºæ–‡ä»¶ç­›é€‰ï¼ˆä½¿ç”¨è‹±æ–‡é€—å·åˆ†éš”,如:*.json,*.txt):"
+msgstr "导出éžèµ„æºæ–‡ä»¶ç­›é€‰ï¼ˆä½¿ç”¨è‹±æ–‡é€—å·åˆ†éš”,如:*.json,*.txt)"
#: editor/project_export.cpp
msgid ""
"Filters to exclude files from project (comma separated, e.g: *.json, *.txt)"
-msgstr "排除导出的éžèµ„æºæ–‡ä»¶ç­›é€‰ï¼ˆä½¿ç”¨è‹±æ–‡é€—å·åˆ†éš”,如:*.json,*.txt):"
+msgstr "排除导出的éžèµ„æºæ–‡ä»¶ç­›é€‰ï¼ˆä½¿ç”¨è‹±æ–‡é€—å·åˆ†éš”,如:*.json,*.txt)"
#: editor/project_export.cpp
msgid "Patches"
@@ -5948,18 +5513,16 @@ msgid "Make Patch"
msgstr "制作Patch"
#: editor/project_export.cpp
-#, fuzzy
msgid "Features"
-msgstr "贴图"
+msgstr "功能"
#: editor/project_export.cpp
msgid "Custom (comma-separated):"
-msgstr ""
+msgstr "自定义 (以逗å·åˆ†éš”):"
#: editor/project_export.cpp
-#, fuzzy
msgid "Feature List:"
-msgstr "方法列表:"
+msgstr "功能列表:"
#: editor/project_export.cpp
msgid "Export PCK/Zip"
@@ -5970,30 +5533,61 @@ msgid "Export templates for this platform are missing:"
msgstr "没有下列平å°çš„导出模æ¿:"
#: editor/project_export.cpp
+#, fuzzy
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr "没有下列平å°çš„导出模æ¿:"
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr "导出为调试"
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
-msgstr "项目目录ä¸å­˜åœ¨ï¼"
+#, fuzzy
+msgid "The path does not exist."
+msgstr "文件ä¸å­˜åœ¨ã€‚"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Please choose a 'project.godot' file."
+msgstr "请导出到项目目录之外ï¼"
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
-msgstr "项目目录下ä¸èƒ½åŒ…å«project.godot文件。"
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
+msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
-msgstr "项目目录下必须包å«project.godot文件。"
+msgid "Please choose a folder that does not contain a 'project.godot' file."
+msgstr ""
#: editor/project_manager.cpp
msgid "Imported Project"
msgstr "已导入的项目"
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr "é¡¹ç›®è·¯å¾„éžæ³•(被外部修改?)。"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't get project.godot in project path."
+msgstr "无法在项目目录下创建project.godot文件。"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't edit project.godot in project path."
+msgstr "无法在项目目录下创建project.godot文件。"
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr "无法在项目目录下创建project.godot文件。"
@@ -6002,38 +5596,49 @@ msgid "The following files failed extraction from package:"
msgstr "æå–以下文件失败:"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Rename Project"
+msgstr "未命å项目"
+
+#: editor/project_manager.cpp
+#, fuzzy
+msgid "Couldn't get project.godot in the project path."
+msgstr "无法在项目目录下创建project.godot文件。"
+
+#: editor/project_manager.cpp
+msgid "New Game Project"
+msgstr "新建游æˆé¡¹ç›®"
+
+#: editor/project_manager.cpp
msgid "Import Existing Project"
msgstr "导入现有项目"
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
-msgstr "项目目录(必须存在):"
+msgid "Create New Project"
+msgstr "新建项目"
+
+#: editor/project_manager.cpp
+msgid "Install Project:"
+msgstr "安装项目:"
#: editor/project_manager.cpp
msgid "Project Name:"
msgstr "项目åç§°:"
#: editor/project_manager.cpp
-msgid "Create New Project"
-msgstr "新建项目"
+#, fuzzy
+msgid "Create folder"
+msgstr "新建目录"
#: editor/project_manager.cpp
msgid "Project Path:"
msgstr "项目目录:"
#: editor/project_manager.cpp
-msgid "Install Project:"
-msgstr "安装项目:"
-
-#: editor/project_manager.cpp
msgid "Browse"
msgstr "æµè§ˆ"
#: editor/project_manager.cpp
-msgid "New Game Project"
-msgstr "新建游æˆé¡¹ç›®"
-
-#: editor/project_manager.cpp
msgid "That's a BINGO!"
msgstr "碉堡了ï¼"
@@ -6042,24 +5647,30 @@ msgid "Unnamed Project"
msgstr "未命å项目"
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't open project"
+msgstr "无法è¿è¡Œé¡¹ç›®"
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr "æ‚¨ç¡®å®šè¦æ‰“开多个项目å—?"
#: editor/project_manager.cpp
-#, fuzzy
msgid ""
"Can't run project: no main scene defined.\n"
"Please edit the project and set the main scene in \"Project Settings\" under "
"the \"Application\" category."
msgstr ""
"尚未定义主场景, 现在选择一个�\n"
-"你也å¯ä»¥ç¨åŽåœ¨é¡¹ç›®è®¾ç½®çš„application分类下修改。"
+"你也å¯ä»¥ç¨åŽåœ¨é¡¹ç›®è®¾ç½®çš„Application分类下修改。"
#: editor/project_manager.cpp
msgid ""
"Can't run project: Assets need to be imported.\n"
"Please edit the project to trigger the initial import."
msgstr ""
+"ä¸èƒ½è¿è¡Œé¡¹ç›®ï¼š 需è¦å¯¼å…¥èµ„æºæ–‡ä»¶ã€‚\n"
+"请编辑项目导入åˆå§‹åŒ–资æºã€‚"
#: editor/project_manager.cpp
msgid "Are you sure to run more than one project?"
@@ -6071,6 +5682,12 @@ msgstr "移除此项目(项目的文件ä¸å—å½±å“)"
#: editor/project_manager.cpp
msgid ""
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
"You are about the scan %s folders for existing Godot projects. Do you "
"confirm?"
msgstr "æ‚¨ç¡®è®¤è¦æ‰«æ%s目录下现有的Godot项目å—?"
@@ -6080,10 +5697,6 @@ msgid "Project List"
msgstr "项目列表"
#: editor/project_manager.cpp
-msgid "Run"
-msgstr "è¿è¡Œ"
-
-#: editor/project_manager.cpp
msgid "Scan"
msgstr "扫æ"
@@ -6105,8 +5718,12 @@ msgstr "退出"
#: editor/project_manager.cpp
#, fuzzy
+msgid "Restart Now"
+msgstr "釿–°å¼€å§‹ï¼ˆç§’):"
+
+#: editor/project_manager.cpp
msgid "Can't run project"
-msgstr "无法连接。"
+msgstr "无法è¿è¡Œé¡¹ç›®"
#: editor/project_settings_editor.cpp
msgid "Key "
@@ -6141,17 +5758,14 @@ msgid "Add Input Action Event"
msgstr "添加输入事件"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
@@ -6212,7 +5826,7 @@ msgstr "更改"
msgid "Joypad Axis Index:"
msgstr "手柄摇æ†åºå·:"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr "è½´"
@@ -6232,59 +5846,66 @@ msgstr "移除输入事件"
msgid "Add Event"
msgstr "添加事件"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "设备"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "按钮"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "左键。"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "å³é”®ã€‚"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "中键(滚轮)。"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr "滚轮å‘上滚动。"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr "滚轮å‘下滚动。"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Add Global Property"
-msgstr "添加 Getter Property"
+msgstr "添加Getter属性"
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
-msgstr ""
+#, fuzzy
+msgid "Select a setting item first!"
+msgstr "首先选择一个设置项目 ï¼"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "No property '"
-msgstr "属性:"
+msgstr "没有属性 '"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Setting '"
-msgstr "设置"
+msgstr "设置 '"
#: editor/project_settings_editor.cpp
-#, fuzzy
msgid "Delete Item"
msgstr "删除输入事件"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Can't contain '/' or ':'"
+msgstr "无法连接到æœåС噍:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Already existing"
+msgstr "动作%s已存在ï¼"
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr "ä¿å­˜è®¾ç½®å‡ºé”™ã€‚"
@@ -6294,7 +5915,7 @@ msgstr "ä¿å­˜è®¾ç½®æˆåŠŸã€‚"
#: editor/project_settings_editor.cpp
msgid "Override for Feature"
-msgstr ""
+msgstr "é‡å†™åŠŸèƒ½"
#: editor/project_settings_editor.cpp
msgid "Add Translation"
@@ -6325,6 +5946,15 @@ msgid "Remove Resource Remap Option"
msgstr "移除资æºé‡å®šå‘选项"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Changed Locale Filter"
+msgstr "æ›´æ”¹æ··åˆæ—¶é—´"
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr "项目设置(project.godot)"
@@ -6338,7 +5968,7 @@ msgstr "属性:"
#: editor/project_settings_editor.cpp
msgid "Override For.."
-msgstr ""
+msgstr "é‡å†™çš„......"
#: editor/project_settings_editor.cpp
msgid "Input Map"
@@ -6385,6 +6015,30 @@ msgid "Locale"
msgstr "地区"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales Filter"
+msgstr "纹ç†è¿‡æ»¤:"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Show all locales"
+msgstr "显示骨骼"
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "筛选节点"
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Locales:"
+msgstr "地区"
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr "自动加载(AutoLoad)"
@@ -6425,7 +6079,6 @@ msgid "Assign"
msgstr "分é…(Assign)"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Select Node"
msgstr "选择一个节点"
@@ -6434,17 +6087,26 @@ msgid "New Script"
msgstr "新建脚本"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Make Unique"
+msgstr "添加骨骼"
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr "在资æºç®¡ç†å™¨ä¸­å±•示"
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Convert To %s"
+msgstr "转æ¢ä¸º.."
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr "加载文件出错:䏿˜¯èµ„æºæ–‡ä»¶ï¼"
#: editor/property_editor.cpp
-#, fuzzy
msgid "Selected node is not a Viewport!"
-msgstr "选择è¦å¯¼å…¥çš„节点"
+msgstr "é€‰å®šçš„èŠ‚ç‚¹ä¸æ˜¯ä¸€ä¸ªViewport节点ï¼"
#: editor/property_editor.cpp
msgid "Pick a Node"
@@ -6475,6 +6137,11 @@ msgid "Select Property"
msgstr "选择属性"
#: editor/property_selector.cpp
+#, fuzzy
+msgid "Select Virtual Method"
+msgstr "选择方å¼"
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr "选择方å¼"
@@ -6502,26 +6169,6 @@ msgstr "ä¿æŒå…¨å±€å˜æ¢"
msgid "Reparent"
msgstr "é‡è®¾çˆ¶èŠ‚ç‚¹"
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr "创建资æº"
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr "打开资æº"
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr "ä¿å­˜èµ„æº"
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr "资æºå·¥å…·"
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr "使用本地"
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr "è¿è¡Œæ¨¡å¼:"
@@ -6648,14 +6295,6 @@ msgid "Sub-Resources:"
msgstr "å­èµ„æº:"
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr "编辑分组"
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr "编辑事件连接"
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr "清除继承"
@@ -6714,9 +6353,8 @@ msgid ""
msgstr "实例化场景文件为一个节点,如果没有根节点则创建一个继承自该文件的场景。"
#: editor/scene_tree_dock.cpp
-#, fuzzy
msgid "Filter nodes"
-msgstr "筛选"
+msgstr "筛选节点"
#: editor/scene_tree_dock.cpp
msgid "Attach a new or existing script for the selected node."
@@ -6751,6 +6389,8 @@ msgid ""
"Node has connection(s) and group(s)\n"
"Click to show signals dock."
msgstr ""
+"节点具有信å·è¿žæŽ¥å’Œç»„\n"
+"å•å‡»ä»¥æ˜¾ç¤ºä¿¡å·æŽ¥å£ã€‚"
#: editor/scene_tree_editor.cpp
msgid ""
@@ -6789,6 +6429,8 @@ msgid ""
"Children are not selectable.\n"
"Click to make selectable"
msgstr ""
+"å­èŠ‚ç‚¹æ— æ³•é€‰æ‹©ã€‚\n"
+"å•击使其å¯é€‰"
#: editor/scene_tree_editor.cpp
msgid "Toggle Visibility"
@@ -6807,18 +6449,16 @@ msgid "Scene Tree (Nodes):"
msgstr "场景树:"
#: editor/scene_tree_editor.cpp
-#, fuzzy
msgid "Node Configuration Warning!"
-msgstr "节点é…置警告:"
+msgstr "节点é…置警告ï¼"
#: editor/scene_tree_editor.cpp
msgid "Select a Node"
msgstr "选择一个节点"
#: editor/script_create_dialog.cpp
-#, fuzzy
msgid "Error loading template '%s'"
-msgstr "加载图片出错:"
+msgstr "åŠ è½½æ¨¡æ¿ %s 时出错"
#: editor/script_create_dialog.cpp
msgid "Error - Could not create script in filesystem."
@@ -6845,6 +6485,15 @@ msgid "Invalid base path"
msgstr "çˆ¶è·¯å¾„éžæ³•"
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "File exists, will be reused"
+msgstr "文件已存在,确定è¦è¦†ç›–它å—?"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr "扩展åéžæ³•"
@@ -6885,6 +6534,10 @@ msgid "Load existing script file"
msgstr "加载现有脚本"
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr "语言"
+
+#: editor/script_create_dialog.cpp
msgid "Inherits"
msgstr "继承自"
@@ -6925,6 +6578,10 @@ msgid "Function:"
msgstr "函数:"
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr "错误"
@@ -7005,6 +6662,10 @@ msgid "Type"
msgstr "类型"
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr "æ ¼å¼"
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr "用é‡"
@@ -7038,7 +6699,7 @@ msgstr "设置光照åŠå¾„"
#: editor/spatial_editor_gizmos.cpp
msgid "Change AudioStreamPlayer3D Emission Angle"
-msgstr ""
+msgstr "æ”¹å˜ AudioStreamPlayer3D å‘å°„è§’"
#: editor/spatial_editor_gizmos.cpp
msgid "Change Camera FOV"
@@ -7080,12 +6741,30 @@ msgstr "修改粒å­AABB"
msgid "Change Probe Extents"
msgstr "更改探针(Probe)范围"
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Library"
+msgstr "MeshLibrary(网格库).."
+
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Status"
+msgstr "状æ€ï¼š"
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr "convertå‡½æ•°å‚æ•°ç±»åž‹éžæ³•,请传入以“TYPE_â€æ‰“头的常é‡ã€‚"
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "没有足够的字节æ¥è§£ç æˆ–æ ¼å¼ä¸æ­£ç¡®ã€‚"
@@ -7124,133 +6803,112 @@ msgstr "éžæ³•çš„å­—å…¸å®žä¾‹ï¼ˆæ´¾ç”Ÿç±»éžæ³•)"
#: modules/gdscript/gd_functions.cpp
msgid "Object can't provide a length."
-msgstr ""
+msgstr "对象ä¸èƒ½æä¾›é•¿åº¦ã€‚"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Delete Selection"
-msgstr "删除选择的节点"
+msgstr "删除选择的栅格图"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Duplicate Selection"
msgstr "å¤åˆ¶é€‰ä¸­é¡¹"
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Snap View"
-msgstr "Top视图"
+msgstr "æ•æ‰è§†å›¾"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
msgid "Prev Level (%sDown Wheel)"
-msgstr ""
+msgstr "上一级"
#: modules/gridmap/grid_map_editor_plugin.cpp
+#, fuzzy
msgid "Next Level (%sUp Wheel)"
-msgstr ""
+msgstr "下一级"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Clip Disabled"
-msgstr "å·²ç¦ç”¨"
+msgstr "ç¦ç”¨å‰ªè¾‘"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clip Above"
-msgstr ""
+msgstr "上级剪辑"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Clip Below"
-msgstr ""
+msgstr "下级剪辑"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit X Axis"
-msgstr ""
+msgstr "编辑 X 轴"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Y Axis"
-msgstr ""
+msgstr "编辑 Y 轴"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Edit Z Axis"
-msgstr ""
+msgstr "编辑 Z 轴"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate X"
-msgstr "Ctrl:旋转"
+msgstr "光标沿X轴旋转"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate Y"
-msgstr "Ctrl:旋转"
+msgstr "沿Y轴旋转"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Cursor Rotate Z"
-msgstr "Ctrl:旋转"
+msgstr "沿Z轴旋转"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate X"
-msgstr ""
+msgstr "光标沿Xè½´å‘åŽæ—‹è½¬"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate Y"
-msgstr ""
+msgstr "光标沿Yè½´å‘åŽæ—‹è½¬"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Back Rotate Z"
-msgstr ""
+msgstr "光标沿Zè½´å‘åŽæ—‹è½¬"
#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Cursor Clear Rotation"
-msgstr ""
+msgstr "光标清除旋转"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Create Area"
-msgstr "新建"
+msgstr "新建区域"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Create Exterior Connector"
-msgstr "新建项目"
+msgstr "创建外部连接器"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Erase Area"
-msgstr "擦除砖å—地图"
+msgstr "擦除区域"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Selection -> Duplicate"
-msgstr "仅选中"
+msgstr "选择->å¤åˆ¶"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Selection -> Clear"
-msgstr "仅选中"
+msgstr "选择->清空"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "GridMap Settings"
-msgstr "æ•æ‰(snap)设置"
+msgstr "栅格图设置"
#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
msgid "Pick Distance:"
-msgstr "实例:"
+msgstr "拾å–è·ç¦»:"
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr "文件"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7285,29 +6943,24 @@ msgid "Stack overflow with stack depth: "
msgstr "堆栈深度溢出: "
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Signal Arguments"
-msgstr "ç¼–è¾‘äº‹ä»¶å‚æ•°:"
+msgstr "编辑信å·å‚æ•°"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Argument Type"
-msgstr "修改数组类型"
+msgstr "ä¿®æ”¹å‚æ•°ç±»åž‹"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Argument name"
-msgstr "更改输入åç§°"
+msgstr "æ›´æ”¹å‚æ•°åç§°"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Set Variable Default Value"
msgstr "修改默认值"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Set Variable Type"
-msgstr "编辑å˜é‡:"
+msgstr "设置å˜é‡ç±»åž‹"
#: modules/visual_script/visual_script_editor.cpp
msgid "Functions:"
@@ -7358,14 +7011,12 @@ msgid "Add Node"
msgstr "添加节点"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Remove VisualScript Nodes"
-msgstr "移除无效键"
+msgstr "删除 VisualScript 节点"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Duplicate VisualScript Nodes"
-msgstr "å¤åˆ¶Graph Node节点"
+msgstr "å¤åˆ¶ VisualScript 节点"
#: modules/visual_script/visual_script_editor.cpp
msgid "Hold Meta to drop a Getter. Hold Shift to drop a generic signature."
@@ -7408,24 +7059,20 @@ msgid "Add Setter Property"
msgstr "添加 Setter Property"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Change Base Type"
-msgstr "更改类型"
+msgstr "更改基本类型"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Move Node(s)"
-msgstr "移除节点"
+msgstr "移动节点"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Remove VisualScript Node"
-msgstr "移除Graph Node节点"
+msgstr "删除 VisualScript 节点"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Connect Nodes"
-msgstr "连接到节点:"
+msgstr "连接节点"
#: modules/visual_script/visual_script_editor.cpp
msgid "Condition"
@@ -7452,46 +7099,48 @@ msgid "Return"
msgstr "返回节点(Return)"
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr "调用到"
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr "获å–"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
-msgstr "更改输入åç§°"
+msgstr "更改输入的值"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Can't copy the function node."
-msgstr "无法对'..'引用æ“作"
+msgstr "无法å¤åˆ¶å‡½æ•°èŠ‚ç‚¹ã€‚"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Clipboard is empty!"
-msgstr "资æºå‰ªåˆ‡æ¿ä¸­æ— å†…容ï¼"
+msgstr "å‰ªè´´æ¿æ˜¯ç©ºçš„ ï¼"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Paste VisualScript Nodes"
-msgstr "粘贴节点"
+msgstr "粘贴 VisualScript 节点"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Function"
msgstr "删除函数"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Edit Variable"
-msgstr "编辑å˜é‡:"
+msgstr "编辑å˜é‡"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Variable"
msgstr "删除å˜é‡"
#: modules/visual_script/visual_script_editor.cpp
-#, fuzzy
msgid "Edit Signal"
-msgstr "编辑事件:"
+msgstr "编辑信å·"
#: modules/visual_script/visual_script_editor.cpp
msgid "Remove Signal"
@@ -7703,7 +7352,7 @@ msgstr ""
msgid ""
"A material to process the particles is not assigned, so no behavior is "
"imprinted."
-msgstr ""
+msgstr "ç²’å­æè´¨æ²¡æœ‰æŒ‡å®šï¼Œè¯¥è¡Œä¸ºæ— æ•ˆã€‚"
#: scene/2d/path_2d.cpp
msgid "PathFollow2D only works when set as a child of a Path2D node."
@@ -7715,6 +7364,9 @@ msgid ""
"by the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"è¿è¡Œæ—¶ï¼Œä¿®æ”¹RigidBody2D (character或rigid模å¼ï¼‰çš„尺寸,会修改物ç†å¼•擎的大å°"
+"尺寸。\n"
+"修改å­èŠ‚ç‚¹ç¢°æ’žå½¢çŠ¶çš„å¤§å°ä½œä¸ºä»£æ›¿ã€‚"
#: scene/2d/remote_transform_2d.cpp
msgid "Path property must point to a valid Node2D node to work."
@@ -7743,31 +7395,31 @@ msgstr "VisibilityEnable2D类型的节点用于场景的根节点æ‰èƒ½èŽ·å¾—æœ€
#: scene/3d/arvr_nodes.cpp
msgid "ARVRCamera must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRCamera 必须处于 ARVROrigin 节点之下"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRController must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRController 必须处于 ARVROrigin 节点之下"
#: scene/3d/arvr_nodes.cpp
msgid ""
"The controller id must not be 0 or this controller will not be bound to an "
"actual controller"
-msgstr ""
+msgstr "控制器 id å¿…é¡»ä¸ä¸º 0 或此控制器将ä¸ç»‘定到实际的控制器"
#: scene/3d/arvr_nodes.cpp
msgid "ARVRAnchor must have an ARVROrigin node as its parent"
-msgstr ""
+msgstr "ARVRAnchor 必须处于 ARVROrigin 节点之下"
#: 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 ""
+msgstr "锚 id å¿…é¡»ä¸æ˜¯ 0 或这个锚点将ä¸ç»‘定到实际的锚"
#: scene/3d/arvr_nodes.cpp
msgid "ARVROrigin requires an ARVRCamera child node"
-msgstr ""
+msgstr "ARVROrigin 必须拥有 ARVRCamera å­èŠ‚ç‚¹"
#: scene/3d/collision_polygon.cpp
msgid ""
@@ -7813,7 +7465,7 @@ msgstr ""
#: scene/3d/particles.cpp
msgid ""
"Nothing is visible because meshes have not been assigned to draw passes."
-msgstr ""
+msgstr "ç²’å­ä¸å¯è§ï¼Œå› ä¸ºæ²¡æœ‰ç½‘æ ¼(meshes)指定到绘制通é“(draw passes)。"
#: scene/3d/physics_body.cpp
msgid ""
@@ -7821,6 +7473,9 @@ msgid ""
"the physics engine when running.\n"
"Change the size in children collision shapes instead."
msgstr ""
+"è¿è¡Œæ—¶ï¼Œä¿®æ”¹RigidBody(character或rigid模å¼ï¼‰çš„尺寸,会修改物ç†å¼•擎的大å°å°º"
+"寸。\n"
+"修改å­èŠ‚ç‚¹ç¢°æ’žå½¢çŠ¶çš„å¤§å°ä½œä¸ºä»£æ›¿ã€‚"
#: scene/3d/remote_transform.cpp
msgid "Path property must point to a valid Spatial node to work."
@@ -7839,16 +7494,25 @@ msgstr ""
"SpriteFrame资æºå¿…须是通过AnimatedSprite3D节点的Frames属性创建的,å¦åˆ™æ— æ³•显示"
"动画帧。"
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
-#, fuzzy
msgid "Raw Mode"
-msgstr "移动画布"
+msgstr "Raw 模å¼"
#: scene/gui/color_picker.cpp
msgid "Add current color as a preset"
msgstr "将当å‰é¢œè‰²æ·»åŠ ä¸ºé¢„è®¾"
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "å–æ¶ˆ"
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr "æç¤ºï¼"
@@ -7856,10 +7520,6 @@ msgstr "æç¤ºï¼"
msgid "Please Confirm..."
msgstr "请确认..."
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -7883,7 +7543,7 @@ msgstr ""
msgid ""
"Default Environment as specified in Project Setings (Rendering -> Viewport -"
"> Default Environment) could not be loaded."
-msgstr ""
+msgstr "项目设置中的默认环境无法加载,详è§ï¼ˆæ¸²æŸ“->视图->默认环境) 。"
#: scene/main/viewport.cpp
msgid ""
@@ -7896,6 +7556,637 @@ msgstr ""
"使其æˆä¸ºå­æŽ§ä»¶çš„æ‰€ä»¥å®ƒå¯ä»¥æœ‰ä¸€ä¸ªå°ºå¯¸å¤§å°å€¼ã€‚å¦åˆ™è¯·è®¾ç½®ä¸ºRender target,并将其"
"内部纹ç†åˆ†é…给一些节点以显示。"
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr "åˆå§‹åŒ–FreeType出错。"
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "未知的字体格å¼ã€‚"
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "加载字体出错。"
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr "字体大å°éžæ³•。"
+
+#~ msgid "Filter:"
+#~ msgstr "筛选:"
+
+#~ msgid "' parsing of config failed."
+#~ msgstr "' è§£æžé…置失败。"
+
+#~ msgid "Theme"
+#~ msgstr "主题"
+
+#~ msgid "Method List For '%s':"
+#~ msgstr "'%s'的方法列表:"
+
+#~ msgid "Arguments:"
+#~ msgstr "傿•°:"
+
+#~ msgid "Return:"
+#~ msgstr "返回:"
+
+#~ msgid "Added:"
+#~ msgstr "已添加:"
+
+#~ msgid "Removed:"
+#~ msgstr "已移除:"
+
+#~ msgid "Error saving atlas:"
+#~ msgstr "ä¿å­˜è´´å›¾é›†å‡ºé”™:"
+
+#~ msgid "Could not save atlas subtexture:"
+#~ msgstr "无法ä¿å­˜ç²¾çµé›†å­è´´å›¾:"
+
+#~ msgid "Exporting for %s"
+#~ msgstr "正在导出 %s"
+
+#~ msgid "Setting Up.."
+#~ msgstr "é…ç½®.."
+
+#~ msgid "Error loading scene."
+#~ msgstr "加载场景出错。"
+
+#~ msgid "Re-Import"
+#~ msgstr "釿–°å¯¼å…¥"
+
+#~ msgid "Please wait for scan to complete."
+#~ msgstr "扫æä¸­ï¼Œè¯·ç¨åŽ..."
+
+#~ msgid "Current scene must be saved to re-import."
+#~ msgstr "需è¦å…ˆä¿å­˜å½“å‰åœºæ™¯æ‰èƒ½é‡æ–°å¯¼å…¥ã€‚"
+
+#~ msgid "Save & Re-Import"
+#~ msgstr "ä¿å­˜å¹¶é‡æ–°å¯¼å…¥"
+
+#~ msgid "Re-Importing"
+#~ msgstr "釿–°å¯¼å…¥"
+
+#~ msgid "Re-Import Changed Resources"
+#~ msgstr "釿–°å¯¼å…¥æ”¹å˜çš„资æº"
+
+#~ msgid "Loading Export Templates"
+#~ msgstr "正在加载导出模æ¿"
+
+#~ msgid ""
+#~ "\n"
+#~ "Status: Needs Re-Import"
+#~ msgstr ""
+#~ "\n"
+#~ "状æ€ï¼š 需è¦é‡æ–°å¯¼å…¥"
+
+#~ msgid "Same source and destination files, doing nothing."
+#~ msgstr "æºæ–‡ä»¶å’Œç›®æ ‡æ–‡ä»¶ç›¸åŒï¼Œæ“作忽略。"
+
+#~ msgid "Target file exists, can't overwrite. Delete first."
+#~ msgstr "目标文件存在,无法覆盖。请先删除。"
+
+#~ msgid "Same source and destination paths, doing nothing."
+#~ msgstr "æºè·¯å¾„和目标路径相åŒï¼Œæ“作忽略。"
+
+#~ msgid "Can't move directories to within themselves."
+#~ msgstr "无法将目录移动到自身下。"
+
+#~ msgid "Can't rename deps for:\n"
+#~ msgstr "无法é‡å‘½ådeps:\n"
+
+#~ msgid "Error moving file:\n"
+#~ msgstr "移动文件时出错:\n"
+
+#~ msgid "Pick New Name and Location For:"
+#~ msgstr "选择新å称和路径:"
+
+#~ msgid "No files selected!"
+#~ msgstr "没有选中任何文件ï¼"
+
+#~ msgid "Info"
+#~ msgstr "ä¿¡æ¯"
+
+#~ msgid "Re-Import.."
+#~ msgstr "釿–°å¯¼å…¥.."
+
+#~ msgid "No bit masks to import!"
+#~ msgstr "没有è¦å¯¼å…¥çš„bit masksï¼"
+
+#~ msgid "Target path is empty."
+#~ msgstr "目标路径为空。"
+
+#~ msgid "Target path must be a complete resource path."
+#~ msgstr "ç›®æ ‡è·¯å¾„å¿…é¡»æ˜¯ä¸€ä¸ªå®Œæ•´çš„èµ„æºæ–‡ä»¶è·¯å¾„。"
+
+#~ msgid "Target path must exist."
+#~ msgstr "目标路径必须存在。"
+
+#~ msgid "Save path is empty!"
+#~ msgstr "ä¿å­˜è·¯å¾„为空ï¼"
+
+#~ msgid "Import BitMasks"
+#~ msgstr "导入BitMask"
+
+#~ msgid "Source Texture(s):"
+#~ msgstr "æºè´´å›¾:"
+
+#~ msgid "Target Path:"
+#~ msgstr "目标路径:"
+
+#~ msgid "Accept"
+#~ msgstr "接å—"
+
+#~ msgid "Bit Mask"
+#~ msgstr "使ީç ï¼ˆBitMask)"
+
+#~ msgid "No source font file!"
+#~ msgstr "请设置æºå­—体文件ï¼"
+
+#~ msgid "No target font resource!"
+#~ msgstr "请设置目标字体资æºï¼"
+
+#~ msgid ""
+#~ "Invalid file extension.\n"
+#~ "Please use .font."
+#~ msgstr ""
+#~ "文件扩展åä¸åˆæ³•\n"
+#~ "请使用.font文件。"
+
+#~ msgid "Couldn't save font."
+#~ msgstr "无法ä¿å­˜å­—体。"
+
+#~ msgid "Source Font:"
+#~ msgstr "æºå­—体文件:"
+
+#~ msgid "Source Font Size:"
+#~ msgstr "æºå­—体大å°:"
+
+#~ msgid "Dest Resource:"
+#~ msgstr "目标资æº:"
+
+#~ msgid "The quick brown fox jumps over the lazy dog."
+#~ msgstr ""
+#~ "The quick brown fox jumps over the lazy dog.\n"
+#~ "我能åžä¸‹çŽ»ç’ƒè€Œä¸ä¼¤èº«ä½“。"
+
+#~ msgid "Test:"
+#~ msgstr "测试:"
+
+#~ msgid "Options:"
+#~ msgstr "选项:"
+
+#~ msgid "Font Import"
+#~ msgstr "导入字体"
+
+#~ msgid ""
+#~ "This file is already a Godot font file, please supply a BMFont type file "
+#~ "instead."
+#~ msgstr "æ­¤æ–‡ä»¶å·²ç»æ˜¯ä¸€ä¸ªGodot的字体文件,请æä¾›ä¸€ä¸ªä½å›¾å­—体(BMFont)文件。"
+
+#~ msgid "Failed opening as BMFont file."
+#~ msgstr "打开ä½å›¾å­—体失败。"
+
+#~ msgid "Invalid font custom source."
+#~ msgstr "è‡ªå®šä¹‰å­—ä½“æ–‡ä»¶éžæ³•。"
+
+#~ msgid "No meshes to import!"
+#~ msgstr "没有è¦å¯¼å…¥çš„Meshï¼"
+
+#~ msgid "Single Mesh Import"
+#~ msgstr "导入å•个Mesh"
+
+#~ msgid "Source Mesh(es):"
+#~ msgstr "æºMesh:"
+
+#~ msgid "Surface %d"
+#~ msgstr "è¡¨é¢ %d"
+
+#~ msgid "No samples to import!"
+#~ msgstr "没有音效è¦å¯¼å…¥ï¼"
+
+#~ msgid "Import Audio Samples"
+#~ msgstr "导入声音文件"
+
+#~ msgid "Source Sample(s):"
+#~ msgstr "æºéŸ³æ•ˆæ–‡ä»¶:"
+
+#~ msgid "Audio Sample"
+#~ msgstr "音效"
+
+#~ msgid "New Clip"
+#~ msgstr "新片段"
+
+#~ msgid "Flags"
+#~ msgstr "标记"
+
+#~ msgid "Bake FPS:"
+#~ msgstr "烘培FPS:"
+
+#~ msgid "Optimizer"
+#~ msgstr "优化"
+
+#~ msgid "Max Linear Error"
+#~ msgstr "最大线性误差"
+
+#~ msgid "Max Angular Error"
+#~ msgstr "最大角度误差"
+
+#~ msgid "Max Angle"
+#~ msgstr "最大角度"
+
+#~ msgid "Clips"
+#~ msgstr "片段"
+
+#~ msgid "Start(s)"
+#~ msgstr "起点"
+
+#~ msgid "End(s)"
+#~ msgstr "终点"
+
+#~ msgid "Filters"
+#~ msgstr "筛选"
+
+#~ msgid "Source path is empty."
+#~ msgstr "æºè·¯å¾„为空。"
+
+#~ msgid "Couldn't load post-import script."
+#~ msgstr "无法载入åŽå¯¼å…¥è„šæœ¬ã€‚"
+
+#~ msgid "Invalid/broken script for post-import."
+#~ msgstr "åŽå¯¼å…¥è„šæœ¬è¢«æŸå或ä¸åˆæ³•。"
+
+#~ msgid "Error importing scene."
+#~ msgstr "导入场景出错。"
+
+#~ msgid "Import 3D Scene"
+#~ msgstr "导入3D场景"
+
+#~ msgid "Source Scene:"
+#~ msgstr "æºåœºæ™¯:"
+
+#~ msgid "Same as Target Scene"
+#~ msgstr "与目标场景相åŒ"
+
+#~ msgid "Shared"
+#~ msgstr "共享的"
+
+#~ msgid "Target Texture Folder:"
+#~ msgstr "目标贴图目录:"
+
+#~ msgid "Post-Process Script:"
+#~ msgstr "åŽå¤„ç†è„šæœ¬:"
+
+#~ msgid "Custom Root Node Type:"
+#~ msgstr "自定义根节点类型:"
+
+#~ msgid "Auto"
+#~ msgstr "自动"
+
+#~ msgid "Root Node Name:"
+#~ msgstr "节点åç§°:"
+
+#~ msgid "The Following Files are Missing:"
+#~ msgstr "找ä¸åˆ°ä¸‹åˆ—文件:"
+
+#~ msgid "Import Anyway"
+#~ msgstr "ä»ç„¶å¯¼å…¥"
+
+#~ msgid "Import & Open"
+#~ msgstr "导入|打开"
+
+#~ msgid "Edited scene has not been saved, open imported scene anyway?"
+#~ msgstr "正在编辑的场景尚未ä¿å­˜ï¼Œä»ç„¶è¦æ‰“开导入的场景å—?"
+
+#~ msgid "Import Image:"
+#~ msgstr "导入图片:"
+
+#~ msgid "Couldn't localize path: %s (already local)"
+#~ msgstr "无法本地化路径:%s (å·²ç»æ˜¯æœ¬åœ°è·¯å¾„)"
+
+#~ msgid "3D Scene Animation"
+#~ msgstr "3D场景动画"
+
+#~ msgid "Uncompressed"
+#~ msgstr "ä¸åŽ‹ç¼©"
+
+#~ msgid "Compress Lossless (PNG)"
+#~ msgstr "æ— æŸåŽ‹ç¼©ï¼ˆPNG)"
+
+#~ msgid "Compress Lossy (WebP)"
+#~ msgstr "有æŸåŽ‹ç¼©ï¼ˆWebP)"
+
+#~ msgid "Compress (VRAM)"
+#~ msgstr "VRAM压缩"
+
+#~ msgid "Texture Format"
+#~ msgstr "çº¹ç†æ ¼å¼"
+
+#~ msgid "Texture Compression Quality (WebP):"
+#~ msgstr "高质é‡ï¼ˆWebP)压缩方å¼:"
+
+#~ msgid "Texture Options"
+#~ msgstr "纹ç†é€‰é¡¹"
+
+#~ msgid "Please specify some files!"
+#~ msgstr "请添加文件ï¼"
+
+#~ msgid "At least one file needed for Atlas."
+#~ msgstr "ç²¾çµé›†è‡³å°‘需è¦ä¸€ä¸ªæ–‡ä»¶ã€‚"
+
+#~ msgid "Error importing:"
+#~ msgstr "导入出错:"
+
+#~ msgid "Only one file is required for large texture."
+#~ msgstr "大图导入仅支æŒä¸€ä¸ªè¾“入文件。"
+
+#~ msgid "Max Texture Size:"
+#~ msgstr "最大纹ç†å°ºå¯¸:"
+
+#~ msgid "Import Textures for Atlas (2D)"
+#~ msgstr "导入2Dç²¾çµé›†"
+
+#~ msgid "Cell Size:"
+#~ msgstr "å•元尺寸:"
+
+#~ msgid "Large Texture"
+#~ msgstr "大图"
+
+#~ msgid "Import Large Textures (2D)"
+#~ msgstr "导入2D大图"
+
+#~ msgid "Source Texture"
+#~ msgstr "æºè´´å›¾"
+
+#~ msgid "Base Atlas Texture"
+#~ msgstr "基础图集纹ç†"
+
+#~ msgid "Source Texture(s)"
+#~ msgstr "æºè´´å›¾(s)"
+
+#~ msgid "Import Textures for 2D"
+#~ msgstr "导入2D贴图"
+
+#~ msgid "Import Textures for 3D"
+#~ msgstr "导入3D贴图"
+
+#~ msgid "Import Textures"
+#~ msgstr "导入贴图"
+
+#~ msgid "2D Texture"
+#~ msgstr "2D贴图"
+
+#~ msgid "3D Texture"
+#~ msgstr "3D贴图"
+
+#~ msgid "Atlas Texture"
+#~ msgstr "ç²¾çµå›¾é›†"
+
+#~ msgid ""
+#~ "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files "
+#~ "to the project."
+#~ msgstr ""
+#~ "æç¤º:大多数2D贴图并ä¸éœ€è¦å¯¼å…¥æ“作,åªè¦å°†png/jpg文件放到项目目录下å³å¯ã€‚"
+
+#~ msgid "Crop empty space."
+#~ msgstr "切除空白区域。"
+
+#~ msgid "Texture"
+#~ msgstr "贴图"
+
+#~ msgid "Import Large Texture"
+#~ msgstr "导入大图"
+
+#~ msgid "Load Source Image"
+#~ msgstr "加载æºå›¾ç‰‡"
+
+#~ msgid "Slicing"
+#~ msgstr "切片中"
+
+#~ msgid "Saving"
+#~ msgstr "正在ä¿å­˜æ–‡ä»¶"
+
+#~ msgid "Couldn't save large texture:"
+#~ msgstr "无法ä¿å­˜å¤§å›¾:"
+
+#~ msgid "Build Atlas For:"
+#~ msgstr "使用以下图片生æˆç²¾çµé›†:"
+
+#~ msgid "Loading Image:"
+#~ msgstr "加载图片中:"
+
+#~ msgid "Couldn't load image:"
+#~ msgstr "无法加载图片:"
+
+#~ msgid "Converting Images"
+#~ msgstr "正在转æ¢å›¾ç‰‡"
+
+#~ msgid "Cropping Images"
+#~ msgstr "剪è£å›¾ç‰‡"
+
+#~ msgid "Blitting Images"
+#~ msgstr "Blitting 图片"
+
+#~ msgid "Couldn't save atlas image:"
+#~ msgstr "无法ä¿å­˜ç²¾çµé›†å›¾ç‰‡:"
+
+#~ msgid "Couldn't save converted texture:"
+#~ msgstr "无法ä¿å­˜è½¬æ¢çš„贴图:"
+
+#~ msgid "Invalid source!"
+#~ msgstr "输入æºéžæ³•ï¼"
+
+#~ msgid "Invalid translation source!"
+#~ msgstr "æºè¯­è¨€æ–‡ä»¶éžæ³•ï¼"
+
+#~ msgid "Column"
+#~ msgstr "列"
+
+#~ msgid "No items to import!"
+#~ msgstr "没有è¦å¯¼å…¥çš„项目ï¼"
+
+#~ msgid "No target path!"
+#~ msgstr "目标路径为空ï¼"
+
+#~ msgid "Import Translations"
+#~ msgstr "导入多ç§è¯­è¨€ç¿»è¯‘"
+
+#~ msgid "Couldn't import!"
+#~ msgstr "无法导入ï¼"
+
+#~ msgid "Import Translation"
+#~ msgstr "导入语言翻译"
+
+#~ msgid "Source CSV:"
+#~ msgstr "æºCSV文件:"
+
+#~ msgid "Ignore First Row"
+#~ msgstr "忽略第一行"
+
+#~ msgid "Compress"
+#~ msgstr "压缩"
+
+#~ msgid "Add to Project (project.godot)"
+#~ msgstr "添加到项目 (project.godot)"
+
+#~ msgid "Import Languages:"
+#~ msgstr "导入语言:"
+
+#~ msgid "Translation"
+#~ msgstr "语言"
+
+#~ msgid "Parsing %d Triangles:"
+#~ msgstr "正在解æžç¬¬%d个三角形:"
+
+#~ msgid "Triangle #"
+#~ msgstr "三角形 #"
+
+#~ msgid "Light Baker Setup:"
+#~ msgstr "建立烘培:"
+
+#~ msgid "Fixing Lights"
+#~ msgstr "修正光照"
+
+#~ msgid "Making BVH"
+#~ msgstr "制作BVH(动作骨骼)"
+
+#~ msgid "Transfer to Lightmaps:"
+#~ msgstr "转移到光照贴图:"
+
+#~ msgid "Allocating Texture #"
+#~ msgstr "分é…çº¹ç† #"
+
+#~ msgid "Baking Triangle #"
+#~ msgstr "烘培三角形 #"
+
+#~ msgid "Post-Processing Texture #"
+#~ msgstr "åŽåŠ å·¥çº¹ç† #"
+
+#~ msgid "Reset the lightmap octree baking process (start over)."
+#~ msgstr "é‡ç½®è´´å›¾çƒ˜ç„™è¿‡ç¨‹ ï¼ˆé‡æ–°å¼€å§‹ï¼‰ çš„ octree (八剿 ‘)。"
+
+#~ msgid "Zoom (%):"
+#~ msgstr "缩放(%):"
+
+#~ msgid "Skeleton.."
+#~ msgstr "骨骼.."
+
+#~ msgid "Zoom Reset"
+#~ msgstr "é‡ç½®ç¼©æ”¾"
+
+#~ msgid "Zoom Set.."
+#~ msgstr "设置缩放.."
+
+#~ msgid "Set a Value"
+#~ msgstr "设置值"
+
+#~ msgid "Snap (Pixels):"
+#~ msgstr "å¸é™„(åƒç´ ï¼‰ï¼š"
+
+#~ msgid "Parse BBCode"
+#~ msgstr "è§£æžBBCode"
+
+#~ msgid "Length:"
+#~ msgstr "长度:"
+
+#~ msgid "Open Sample File(s)"
+#~ msgstr "打开声音文件"
+
+#~ msgid "ERROR: Couldn't load sample!"
+#~ msgstr "错误:无法加载音效ï¼"
+
+#~ msgid "Add Sample"
+#~ msgstr "添加音效"
+
+#~ msgid "Rename Sample"
+#~ msgstr "é‡å‘½å音效"
+
+#~ msgid "Delete Sample"
+#~ msgstr "删除音效"
+
+#~ msgid "16 Bits"
+#~ msgstr "16ä½"
+
+#~ msgid "8 Bits"
+#~ msgstr "8ä½"
+
+#~ msgid "Stereo"
+#~ msgstr "立体声"
+
+#~ msgid "Mono"
+#~ msgstr "å•声é“"
+
+#~ msgid "Pitch"
+#~ msgstr "音调"
+
+#~ msgid "Window"
+#~ msgstr "窗å£"
+
+#~ msgid "Move Right"
+#~ msgstr "å‘å³ç§»åЍ"
+
+#~ msgid "Scaling to %s%%."
+#~ msgstr "缩放到%s%%。"
+
+#~ msgid "Up"
+#~ msgstr "å‘上"
+
+#~ msgid "Down"
+#~ msgstr "å‘下"
+
+#~ msgid "Bucket"
+#~ msgstr "æ¡¶(Bucket)"
+
+#~ msgid "Invalid project path, the path must exist!"
+#~ msgstr "项目目录ä¸å­˜åœ¨ï¼"
+
+#~ msgid "Invalid project path, project.godot must not exist."
+#~ msgstr "项目目录下ä¸èƒ½åŒ…å«project.godot文件。"
+
+#~ msgid "Invalid project path, project.godot must exist."
+#~ msgstr "项目目录下必须包å«project.godot文件。"
+
+#~ msgid "Project Path (Must Exist):"
+#~ msgstr "项目目录(必须存在):"
+
+#~ msgid "Create New Resource"
+#~ msgstr "创建资æº"
+
+#~ msgid "Open Resource"
+#~ msgstr "打开资æº"
+
+#~ msgid "Save Resource"
+#~ msgstr "ä¿å­˜èµ„æº"
+
+#~ msgid "Resource Tools"
+#~ msgstr "资æºå·¥å…·"
+
+#~ msgid "Make Local"
+#~ msgstr "使用本地"
+
+#~ msgid "Edit Groups"
+#~ msgstr "编辑分组"
+
+#~ msgid "Edit Connections"
+#~ msgstr "编辑事件连接"
+
+#~ msgid "GridMap Paint"
+#~ msgstr "绘制栅格图"
+
+#~ msgid "Tiles"
+#~ msgstr "ç –å—(Tiles)"
+
+#~ msgid "Areas"
+#~ msgstr "区域"
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl+"
+
+#~ msgid "Down Wheel)"
+#~ msgstr "下轮)"
+
+#~ msgid "Up Wheel)"
+#~ msgstr "上轮)"
+
#~ msgid "Close scene? (Unsaved changes will be lost)"
#~ msgstr "确定è¦å…³é—­åœºæ™¯å—?(未ä¿å­˜çš„修改将丢失)"
@@ -7909,9 +8200,6 @@ msgstr ""
#~ msgid "Close Goto Prev. Scene"
#~ msgstr "关闭并å‰å¾€ä¸Šä¸€ä¸ªåœºæ™¯"
-#~ msgid "Expand to Parent"
-#~ msgstr "展开父节点"
-
#~ msgid "Del"
#~ msgstr "删除"
@@ -8070,18 +8358,12 @@ msgstr ""
#~ msgid "Save Translatable Strings"
#~ msgstr "ä¿å­˜å¯ç¿»è¯‘字符串"
-#~ msgid "Translatable Strings.."
-#~ msgstr "å¯ç¿»è¯‘字符串.."
-
#~ msgid "Install Export Templates"
#~ msgstr "安装导出模æ¿"
#~ msgid "Edit Script Options"
#~ msgstr "脚本编辑器选项"
-#~ msgid "Please export outside the project folder!"
-#~ msgstr "请导出到项目目录之外ï¼"
-
#~ msgid "Error exporting project!"
#~ msgstr "导出项目出错ï¼"
@@ -8140,18 +8422,12 @@ msgstr ""
#~ msgid "Include"
#~ msgstr "包å«"
-#~ msgid "Change Image Group"
-#~ msgstr "修改图片分组"
-
#~ msgid "Group name can't be empty!"
#~ msgstr "分组åç§°ä¸èƒ½ä¸ºç©ºï¼"
#~ msgid "Invalid character in group name!"
#~ msgstr "分组å称中包å«éžæ³•字符ï¼"
-#~ msgid "Group name already exists!"
-#~ msgstr "分组å称已存在ï¼"
-
#~ msgid "Add Image Group"
#~ msgstr "添加图片分组"
@@ -8230,9 +8506,6 @@ msgstr ""
#~ msgid "Preview Atlas"
#~ msgstr "ç²¾çµé›†é¢„览"
-#~ msgid "Image Filter:"
-#~ msgstr "纹ç†è¿‡æ»¤:"
-
#~ msgid "Images:"
#~ msgstr "图片:"
diff --git a/editor/translations/zh_HK.po b/editor/translations/zh_HK.po
index ceb21d7b85..3828ea059c 100644
--- a/editor/translations/zh_HK.po
+++ b/editor/translations/zh_HK.po
@@ -1,5 +1,6 @@
# Chinese (Hong Kong) translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# Wesley (zx-wt) <ZX_WT@ymail.com>, 2016-2017.
@@ -196,10 +197,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr ""
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -361,265 +361,6 @@ msgstr ""
msgid "Change Array Value"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr "版本:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr "內容:"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "View Files"
-msgstr "檔案"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr "æè¿°ï¼š"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr "安è£"
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr "關閉"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect."
-msgstr "ä¸èƒ½é€£æŽ¥ã€‚"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr "ä¸èƒ½é€£åˆ°ä¸»æ©Ÿï¼š"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr "主機沒有回應:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr "沒有回應。"
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Request failed, return code:"
-msgstr "請求失敗,"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr "請求失敗。"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr "失敗:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Asset Download Error:"
-msgstr "Asset下載出ç¾éŒ¯èª¤ï¼š"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr "æˆåŠŸï¼"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Connecting.."
-msgstr "連到..."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Requesting.."
-msgstr "請求中..."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Error making request"
-msgstr "請求時出ç¾éŒ¯èª¤"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr "é‡è©¦"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr "下載出ç¾éŒ¯èª¤"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr "Asset已在下載中"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr "首é "
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr "上一é "
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr "下一é "
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr "å°¾é "
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "全部"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "æœå°‹ï¼š"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "æœå°‹"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr "å°Žå…¥"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr "æ’ä»¶"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "排åºï¼š"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "分類:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr "地å€:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr "官方"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr "社群"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr "測試"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr "Assets ZIP 檔"
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr ""
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr ""
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr "跳到行"
@@ -656,6 +397,14 @@ msgstr "完整詞語"
msgid "Selection Only"
msgstr "åªé™é¸ä¸­"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "æœå°‹"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr "查找"
@@ -688,11 +437,11 @@ msgstr ""
msgid "Skip"
msgstr "è·³éŽ"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "放大"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr "縮å°"
@@ -760,6 +509,20 @@ msgstr ""
msgid "Oneshot"
msgstr ""
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr "關閉"
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr "連到"
@@ -785,7 +548,7 @@ msgstr "連到..."
msgid "Disconnect"
msgstr "中斷"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr "訊號"
@@ -802,12 +565,25 @@ msgstr "最愛:"
msgid "Recent:"
msgstr "最近:"
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "æœå°‹ï¼š"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr "å»åˆï¼š"
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "æè¿°ï¼š"
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr "æœå°‹å’Œæ›¿ä»£ç‚ºï¼š"
@@ -863,6 +639,10 @@ msgid "Owners Of:"
msgstr ""
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr ""
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -870,7 +650,7 @@ msgid ""
msgstr ""
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
+msgid "Cannot remove:\n"
msgstr ""
#: editor/dependency_editor.cpp
@@ -937,10 +717,6 @@ msgid "Godot Engine contributors"
msgstr ""
#: editor/editor_about.cpp
-msgid "Authors"
-msgstr ""
-
-#: editor/editor_about.cpp
#, fuzzy
msgid "Project Founders"
msgstr "專案設定"
@@ -959,6 +735,38 @@ msgid "Developers"
msgstr "開發者"
#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
msgid "License"
msgstr ""
@@ -1002,6 +810,16 @@ msgid "Package Installed Successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr "æˆåŠŸï¼"
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr "安è£"
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
msgstr ""
@@ -1052,11 +870,6 @@ msgid "Audio Bus, Drag and Drop to rearrange."
msgstr ""
#: editor/editor_audio_buses.cpp
-#, fuzzy
-msgid "Bus options"
-msgstr "é¸é …"
-
-#: editor/editor_audio_buses.cpp
msgid "Solo"
msgstr ""
@@ -1068,6 +881,11 @@ msgstr ""
msgid "Bypass"
msgstr ""
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "é¸é …"
+
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
msgid "Duplicate"
@@ -1075,6 +893,11 @@ msgstr "複製"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Volume"
+msgstr "é‡è¨­ç¸®æ”¾æ¯”例"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Delete Effect"
msgstr "刪除é¸ä¸­æª”案"
@@ -1098,6 +921,11 @@ msgstr "複製"
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Bus Volume"
+msgstr "é‡è¨­ç¸®æ”¾æ¯”例"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Move Audio Bus"
msgstr "移動"
@@ -1129,7 +957,8 @@ msgstr ""
msgid "Create a new Bus Layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr ""
@@ -1233,7 +1062,7 @@ msgid "Rearrange Autoloads"
msgstr "釿–°æŽ’例Autoloads"
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "路徑:"
@@ -1241,9 +1070,7 @@ msgstr "路徑:"
msgid "Node Name:"
msgstr ""
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr "å稱"
@@ -1277,18 +1104,19 @@ msgid "Choose a Directory"
msgstr "鏿“‡è³‡æ–™å¤¾"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "新增資料夾"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "å稱:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "無法新增資料夾"
@@ -1308,30 +1136,6 @@ msgstr ""
msgid "Template file not found:\n"
msgstr ""
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr "已加入:"
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr "已移除:"
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr ""
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "檔案已存在, è¦è¦†è“‹å—Ž?"
@@ -1417,6 +1221,11 @@ msgstr "上移最愛"
msgid "Move Favorite Down"
msgstr "下移最愛"
+#: editor/editor_file_dialog.cpp
+#, fuzzy
+msgid "Go to parent folder"
+msgstr "無法新增資料夾"
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "資料夾和檔案:"
@@ -1431,10 +1240,6 @@ msgid "File:"
msgstr "檔案:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "篩é¸:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr "請用有效的副檔å"
@@ -1460,6 +1265,10 @@ msgstr ""
msgid "Search Classes"
msgstr ""
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr ""
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr ""
@@ -1476,15 +1285,28 @@ msgstr ""
msgid "Brief Description:"
msgstr ""
+#: editor/editor_help.cpp
+msgid "Members"
+msgstr ""
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr ""
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Public Methods"
+msgstr "鏿“‡æ¨¡å¼"
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr ""
#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr ""
@@ -1494,6 +1316,11 @@ msgstr "訊號:"
#: editor/editor_help.cpp
#, fuzzy
+msgid "Enumerations"
+msgstr "翻譯:"
+
+#: editor/editor_help.cpp
+#, fuzzy
msgid "Enumerations:"
msgstr "翻譯:"
@@ -1502,18 +1329,49 @@ msgid "enum "
msgstr ""
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Constants"
+msgstr "常數"
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Description"
+msgstr "æè¿°ï¼š"
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Property Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Methods"
+msgstr "鏿“‡æ¨¡å¼"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr ""
@@ -1522,25 +1380,22 @@ msgid "Output:"
msgstr ""
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "清空"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
#, fuzzy
msgid "Error saving resource!"
msgstr "å„²å­˜è³‡æºæ™‚出ç¾éŒ¯èª¤ï¼"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr "把資æºå¦å­˜ç‚º..."
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "如來如此"
@@ -1559,6 +1414,29 @@ msgid "Error while saving."
msgstr "儲存時出ç¾éŒ¯èª¤"
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Can't open '%s'."
+msgstr "ä¸èƒ½é€£æŽ¥ã€‚"
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while parsing '%s'."
+msgstr "儲存時出ç¾éŒ¯èª¤"
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while loading '%s'."
+msgstr "儲存時出ç¾éŒ¯èª¤"
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr "場景儲存中"
@@ -1619,6 +1497,33 @@ msgid "Restored default layout to base settings."
msgstr "é‡è¨­é è¨­ä½ˆå±€ã€‚"
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
#, fuzzy
msgid "Copy Params"
msgstr "è¤‡è£½åƒæ•¸"
@@ -1785,23 +1690,35 @@ msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "鏿“‡ä¸»å ´æ™¯"
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+#, fuzzy
+msgid "Unable to load addon script from path: '%s'."
+msgstr "載入字形出ç¾éŒ¯èª¤"
+
+#: editor/editor_node.cpp
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -1811,7 +1728,7 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr ""
@@ -1822,14 +1739,15 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp
-msgid "Error loading scene."
-msgstr "載入場景時出ç¾éŒ¯èª¤"
-
-#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Clear Recent Scenes"
+msgstr "關閉場景"
+
+#: editor/editor_node.cpp
msgid "Save Layout"
msgstr "儲存佈局"
@@ -1862,7 +1780,7 @@ msgstr ""
msgid "Toggle distraction-free mode."
msgstr ""
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
msgid "Scene"
msgstr "場景"
@@ -2085,6 +2003,10 @@ msgstr ""
msgid "Issue Tracker"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr "社群"
+
#: editor/editor_node.cpp
msgid "About"
msgstr "關於"
@@ -2093,7 +2015,7 @@ msgstr "關於"
msgid "Play the project."
msgstr "é‹è¡Œå°ˆæ¡ˆ"
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr "é‹è¡Œ"
@@ -2109,7 +2031,7 @@ msgstr "æš«åœå ´æ™¯"
msgid "Stop the scene."
msgstr "åœæ­¢é‹è¡Œå ´æ™¯"
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr "åœæ­¢"
@@ -2182,6 +2104,15 @@ msgid "Object properties."
msgstr ""
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr "å°Žå…¥"
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr ""
@@ -2197,14 +2128,6 @@ msgstr ""
msgid "Don't Save"
msgstr ""
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr "æ›´æ–°"
-
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
@@ -2269,11 +2192,28 @@ msgstr "è¦é›¢é–‹ç·¨è¼¯å™¨å—Ž?"
msgid "Open the previous Editor"
msgstr ""
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr ""
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr ""
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr "æ›´æ–°"
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr "版本:"
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr ""
@@ -2306,7 +2246,7 @@ msgid "Frame %"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+msgid "Physics Frame %"
msgstr ""
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2325,26 +2265,6 @@ msgstr ""
msgid "Frame #:"
msgstr ""
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr ""
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2454,10 +2374,6 @@ msgid "Importing:"
msgstr "導入中:"
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr ""
@@ -2493,9 +2409,17 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
+msgid "View items as a grid of thumbnails"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View items as a list"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
msgid ""
"\n"
-"Status: Needs Re-Import"
+"Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2506,45 +2430,50 @@ msgid ""
msgstr "來æº:"
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
+msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
+msgid "Cannot move a folder into itself.\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
+#, fuzzy
+msgid "Error moving:\n"
+msgstr "載入錯誤:"
+
+#: editor/filesystem_dock.cpp
+msgid "Unable to update dependencies:\n"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
+msgid "No name provided"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
-#, fuzzy
-msgid "Error moving file:\n"
-msgstr "儲存TileSet時出ç¾éŒ¯èª¤ï¼"
+msgid "No name provided."
+msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "載入錯誤:"
+msgid "Name contains invalid characters."
+msgstr "有效字符:"
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
+msgid "A file or folder with this name already exists."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
-msgstr ""
+#, fuzzy
+msgid "Renaming file:"
+msgstr "儲存TileSet時出ç¾éŒ¯èª¤ï¼"
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
+msgid "Renaming folder:"
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2556,39 +2485,36 @@ msgid "Collapse all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid "Instance"
-msgstr ""
+msgid "Copy Path"
+msgstr "複製路徑"
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
+msgid "Rename.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
+msgid "Move To.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Copy Path"
-msgstr "複製路徑"
+#, fuzzy
+msgid "New Folder.."
+msgstr "新增資料夾"
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
+msgid "Show In File Manager"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Move To.."
+msgid "Instance"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Info"
+msgid "Edit Dependencies.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
+msgid "View Owners.."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2621,6 +2547,11 @@ msgstr ""
msgid "Move"
msgstr ""
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr ""
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr ""
@@ -2635,6 +2566,10 @@ msgid "Import as Single Scene"
msgstr "更新場景"
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -2647,6 +2582,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
msgstr ""
@@ -2655,38 +2602,31 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr ""
@@ -2717,579 +2657,54 @@ msgstr ""
msgid "Reimport"
msgstr "å°Žå…¥"
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr "字形格å¼ä¸æ˜Ž"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr "載入字形出ç¾éŒ¯èª¤"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr "無效字型"
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr "å–æ¶ˆ"
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
+#: editor/node_dock.cpp
+msgid "Groups"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr "語言"
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr ""
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Select a Node to edit Signals and Groups."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -3445,7 +2860,6 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3556,10 +2970,6 @@ msgid "Delete Input"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr ""
@@ -3615,64 +3025,185 @@ msgstr ""
msgid "Filters.."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
+msgstr "內容:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "View Files"
+msgstr "檔案"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect."
+msgstr "ä¸èƒ½é€£æŽ¥ã€‚"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
+msgstr "ä¸èƒ½é€£åˆ°ä¸»æ©Ÿï¼š"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
+msgstr "主機沒有回應:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
+msgstr "沒有回應。"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Request failed, return code:"
+msgstr "請求失敗,"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
+msgstr "請求失敗。"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
+msgstr "失敗:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Asset Download Error:"
+msgstr "Asset下載出ç¾éŒ¯èª¤ï¼š"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Connecting.."
+msgstr "連到..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr "請求中..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Error making request"
+msgstr "請求時出ç¾éŒ¯èª¤"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr "é‡è©¦"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr "下載出ç¾éŒ¯èª¤"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr "Asset已在下載中"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr "首é "
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr "上一é "
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr "下一é "
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr "å°¾é "
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "全部"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr "æ’ä»¶"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "排åºï¼š"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
msgstr ""
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "分類:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
+msgstr "地å€:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "官方"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr "測試"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
+msgstr "Assets ZIP 檔"
+
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3715,11 +3246,15 @@ msgid "Edit CanvasItem"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+msgid "Anchors only"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
+msgid "Change Anchors and Margins"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3770,59 +3305,72 @@ msgid "Pan Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
+msgid "Toggles snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
+msgid "Snapping options"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
+msgid "Snap to grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
-msgstr "編輯"
+msgid "Use Rotation Snap"
+msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Configure Snap..."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
+msgid "Snap Relative"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
+msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
+msgid "Smart snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
+msgid "Snap to parent"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
+msgid "Snap to node anchor"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Makes sure the object's children are not selectable."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3851,11 +3399,16 @@ msgid "View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
+msgid "Show helpers"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show rulers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3867,8 +3420,9 @@ msgid "Frame Selection"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
-msgstr ""
+#, fuzzy
+msgid "Layout"
+msgstr "儲存佈局"
#: editor/plugins/canvas_item_editor_plugin.cpp
msgid "Insert Keys"
@@ -3891,11 +3445,20 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
+msgid "Drag pivot from mouse position"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "åªé™é¸ä¸­"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Divide grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3906,23 +3469,28 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr "OK :("
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr ""
@@ -3936,45 +3504,6 @@ msgid ""
"Drag & drop + Alt : Change node type"
msgstr ""
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3984,14 +3513,6 @@ msgid "Set Handle"
msgstr ""
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr ""
@@ -4014,6 +3535,27 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Ease in"
+msgstr "縮放selection"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
msgstr ""
@@ -4093,22 +3635,18 @@ msgid "Create Occluder Polygon"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr ""
@@ -4209,6 +3747,10 @@ msgid "Create Outline"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr ""
@@ -4336,12 +3878,73 @@ msgstr ""
msgid "Populate"
msgstr ""
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create Navigation Polygon"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Marking walkable triangles..."
+msgstr "儲存本地更改.."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Partitioning..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
msgstr ""
#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
+msgid "Create Navigation Polygon"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -4515,16 +4118,19 @@ msgid "Curve Point #"
msgstr ""
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
-msgstr ""
+msgstr "åªé™é¸ä¸­"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
-msgstr ""
+msgstr "åªé™é¸ä¸­"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
-msgstr ""
+msgstr "åªé™é¸ä¸­"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4584,6 +4190,14 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr "編輯"
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr ""
@@ -4638,63 +4252,10 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr "貼上"
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr ""
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr ""
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
@@ -4787,6 +4348,10 @@ msgstr "關閉場景"
msgid "Close All"
msgstr "關閉"
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr "é‹è¡Œ"
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
msgstr ""
@@ -4815,7 +4380,8 @@ msgstr ""
msgid "Break"
msgstr ""
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr ""
@@ -4829,18 +4395,6 @@ msgid "Debug with external editor"
msgstr "è¦é›¢é–‹ç·¨è¼¯å™¨å—Ž?"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
msgstr ""
@@ -4924,8 +4478,9 @@ msgid "Cut"
msgstr "剪下"
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr "複製"
@@ -5191,10 +4746,6 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr ""
@@ -5211,10 +4762,6 @@ msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr ""
@@ -5451,6 +4998,10 @@ msgid "Transform"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr ""
@@ -5596,6 +5147,10 @@ msgid "Speed (FPS):"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr ""
@@ -5608,11 +5163,12 @@ msgid "Insert Empty (After)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
-msgstr ""
+#, fuzzy
+msgid "Move (Before)"
+msgstr "移動模å¼"
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
+msgid "Move (After)"
msgstr ""
#: editor/plugins/style_box_editor_plugin.cpp
@@ -5691,7 +5247,11 @@ msgid "Remove All"
msgstr "移除"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
@@ -5776,6 +5336,10 @@ msgid "Style"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr ""
@@ -5826,7 +5390,7 @@ msgid "Mirror Y"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
+msgid "Paint Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5893,6 +5457,10 @@ msgid "Delete preset '%s'?"
msgstr "è¦åˆªé™¤é¸ä¸­æª”案?"
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr ""
@@ -5966,19 +5534,30 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
+#, fuzzy
+msgid "The path does not exist."
+msgstr "檔案ä¸å­˜åœ¨."
+
+#: editor/project_manager.cpp
+msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
+msgid "Please choose a folder that does not contain a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
@@ -5986,10 +5565,26 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't edit project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr ""
@@ -5998,15 +5593,20 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Import Existing Project"
+#, fuzzy
+msgid "Rename Project"
+msgstr "專案"
+
+#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in the project path."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
+msgid "New Game Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Name:"
+msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
@@ -6014,22 +5614,27 @@ msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path:"
+msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Install Project:"
+msgid "Project Name:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Browse"
-msgstr "ç€è¦½"
+#, fuzzy
+msgid "Create folder"
+msgstr "新增資料夾"
#: editor/project_manager.cpp
-msgid "New Game Project"
+msgid "Project Path:"
msgstr ""
#: editor/project_manager.cpp
+msgid "Browse"
+msgstr "ç€è¦½"
+
+#: editor/project_manager.cpp
msgid "That's a BINGO!"
msgstr ""
@@ -6038,6 +5643,11 @@ msgid "Unnamed Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't open project"
+msgstr "ä¸èƒ½é€£æŽ¥ã€‚"
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr ""
@@ -6064,6 +5674,12 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid ""
"You are about the scan %s folders for existing Godot projects. Do you "
"confirm?"
msgstr ""
@@ -6073,10 +5689,6 @@ msgid "Project List"
msgstr ""
#: editor/project_manager.cpp
-msgid "Run"
-msgstr "é‹è¡Œ"
-
-#: editor/project_manager.cpp
msgid "Scan"
msgstr ""
@@ -6098,6 +5710,10 @@ msgid "Exit"
msgstr "離開"
#: editor/project_manager.cpp
+msgid "Restart Now"
+msgstr ""
+
+#: editor/project_manager.cpp
#, fuzzy
msgid "Can't run project"
msgstr "ä¸èƒ½é€£æŽ¥ã€‚"
@@ -6135,17 +5751,14 @@ msgid "Add Input Action Event"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr "Meta+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr "Shift+"
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr "Alt+"
@@ -6207,7 +5820,7 @@ msgstr "當改變時更新"
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
#, fuzzy
msgid "Axis"
msgstr "中軸"
@@ -6228,31 +5841,31 @@ msgstr ""
msgid "Add Event"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr "設備"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr "按éµ"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr "左𨫡"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr "å³ð¨«¡"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr "中𨫡"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr "上滾"
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr "下滾"
@@ -6261,7 +5874,7 @@ msgid "Add Global Property"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6279,6 +5892,15 @@ msgid "Delete Item"
msgstr "刪除"
#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Can't contain '/' or ':'"
+msgstr "ä¸èƒ½é€£åˆ°ä¸»æ©Ÿï¼š"
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
@@ -6319,6 +5941,14 @@ msgid "Remove Resource Remap Option"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Project Settings (project.godot)"
msgstr ""
@@ -6379,6 +6009,27 @@ msgid "Locale"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Locales Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show all locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "篩é¸:"
+
+#: editor/project_settings_editor.cpp
+msgid "Locales:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -6429,10 +6080,19 @@ msgid "New Script"
msgstr "下一個腳本"
#: editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr ""
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Convert To %s"
+msgstr "轉為..."
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr ""
@@ -6472,6 +6132,11 @@ msgstr "鏿“‡æ¨¡å¼"
#: editor/property_selector.cpp
#, fuzzy
+msgid "Select Virtual Method"
+msgstr "鏿“‡æ¨¡å¼"
+
+#: editor/property_selector.cpp
+#, fuzzy
msgid "Select Method"
msgstr "鏿“‡æ¨¡å¼"
@@ -6499,26 +6164,6 @@ msgstr ""
msgid "Reparent"
msgstr ""
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr ""
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr ""
@@ -6646,14 +6291,6 @@ msgid "Sub-Resources:"
msgstr "資æº"
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr ""
@@ -6842,6 +6479,15 @@ msgid "Invalid base path"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "File exists, will be reused"
+msgstr "檔案已存在, è¦è¦†è“‹å—Ž?"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr "無效副檔å"
@@ -6886,6 +6532,10 @@ msgid "Load existing script file"
msgstr "下一個腳本"
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr "語言"
+
+#: editor/script_create_dialog.cpp
msgid "Inherits"
msgstr ""
@@ -6929,6 +6579,10 @@ msgid "Function:"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr "錯誤"
@@ -7010,6 +6664,10 @@ msgid "Type"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr ""
@@ -7085,12 +6743,29 @@ msgstr ""
msgid "Change Probe Extents"
msgstr ""
+#: modules/gdnative/gd_native_library_editor.cpp
+#, fuzzy
+msgid "Library"
+msgstr "MeshLibrary.."
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Status"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr ""
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr ""
@@ -7142,10 +6817,6 @@ msgid "GridMap Duplicate Selection"
msgstr "複製 Selection"
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Snap View"
msgstr ""
@@ -7242,13 +6913,8 @@ msgstr "設定"
msgid "Pick Distance:"
msgstr ""
-#: modules/gridmap/grid_map_editor_plugin.cpp
-#, fuzzy
-msgid "Tiles"
-msgstr "檔案"
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7445,10 +7111,18 @@ msgid "Return"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
#, fuzzy
msgid "Change Input Value"
msgstr "動畫變化數值"
@@ -7814,6 +7488,12 @@ msgid ""
"order for AnimatedSprite3D to display frames."
msgstr ""
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -7823,6 +7503,10 @@ msgid "Add current color as a preset"
msgstr ""
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr "å–æ¶ˆ"
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr "警告!"
@@ -7830,10 +7514,6 @@ msgstr "警告!"
msgid "Please Confirm..."
msgstr "請確èª..."
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -7862,6 +7542,41 @@ msgid ""
"texture to some node for display."
msgstr ""
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr "字形格å¼ä¸æ˜Ž"
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr "載入字形出ç¾éŒ¯èª¤"
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr "無效字型"
+
+#~ msgid "Filter:"
+#~ msgstr "篩é¸:"
+
+#~ msgid "Added:"
+#~ msgstr "已加入:"
+
+#~ msgid "Removed:"
+#~ msgstr "已移除:"
+
+#~ msgid "Error loading scene."
+#~ msgstr "載入場景時出ç¾éŒ¯èª¤"
+
+#, fuzzy
+#~ msgid "Tiles"
+#~ msgstr "檔案"
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl+"
+
#~ msgid "Close scene? (Unsaved changes will be lost)"
#~ msgstr "è¦é—œé–‰å ´æ™¯å—Žï¼Ÿï¼ˆæœªå„²å­˜çš„æ›´æ”¹å°‡æœƒæ¶ˆå¤±ï¼‰"
diff --git a/editor/translations/zh_TW.po b/editor/translations/zh_TW.po
index f845efea17..7a392613d2 100644
--- a/editor/translations/zh_TW.po
+++ b/editor/translations/zh_TW.po
@@ -1,5 +1,6 @@
# Chinese (Taiwan) translation of the Godot Engine editor
-# Copyright (C) 2016-2017 Juan Linietsky, Ariel Manzur and the Godot community
+# Copyright (C) 2007-2017 Juan Linietsky, Ariel Manzur
+# Copyright (C) 2014-2017 Godot Engine contributors (cf. AUTHORS.md)
# This file is distributed under the same license as the Godot source code.
#
# Allen H <w84miracle@gmail.com>, 2017.
@@ -194,10 +195,9 @@ msgid "Create %d NEW tracks and insert keys?"
msgstr ""
#: editor/animation_editor.cpp editor/create_dialog.cpp
-#: editor/editor_audio_buses.cpp
+#: editor/editor_audio_buses.cpp editor/plugins/abstract_polygon_2d_editor.cpp
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
#: editor/plugins/mesh_instance_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
#: editor/plugins/particles_editor_plugin.cpp editor/project_manager.cpp
#: editor/script_create_dialog.cpp
msgid "Create"
@@ -359,265 +359,6 @@ msgstr ""
msgid "Change Array Value"
msgstr ""
-#: editor/asset_library_editor_plugin.cpp
-msgid "Free"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_plugin_settings.cpp
-msgid "Version:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Contents:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "View Files"
-msgstr "éŽæ¿¾æª”案.."
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_help.cpp editor/property_selector.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Description:"
-msgstr "æè¿°:"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-#: editor/project_manager.cpp
-msgid "Install"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/call_dialog.cpp
-#: editor/connections_dialog.cpp editor/export_template_manager.cpp
-#: editor/plugins/animation_player_editor_plugin.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-#: editor/project_settings_editor.cpp editor/property_editor.cpp
-#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Close"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve hostname:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't resolve."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Connection error, please try again."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Can't connect."
-msgstr "連接..."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Can't connect to host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response from host:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "No response."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, return code:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Req. Failed."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Request failed, too many redirects"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Redirect Loop."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Bad download hash, assuming file has been tampered with."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Expected:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Got:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Failed sha256 hash check"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Asset Download Error:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_asset_installer.cpp
-msgid "Success!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Fetching:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Resolving.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Connecting.."
-msgstr "連接..."
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Requesting.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-#, fuzzy
-msgid "Error making request"
-msgstr "載入場景時發生錯誤"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Idle"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Retry"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download Error"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Download for this asset is already in progress!"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "first"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "prev"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "next"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "last"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "All"
-msgstr "全部"
-
-#: editor/asset_library_editor_plugin.cpp editor/create_dialog.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/property_selector.cpp editor/quick_open.cpp
-#: editor/settings_config_dialog.cpp
-msgid "Search:"
-msgstr "æœå°‹:"
-
-#: editor/asset_library_editor_plugin.cpp editor/code_editor.cpp
-#: editor/editor_node.cpp editor/plugins/script_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Search"
-msgstr "æœå°‹"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/project_manager.cpp
-msgid "Import"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Plugins"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Sort:"
-msgstr "排åº:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Reverse"
-msgstr "å轉"
-
-#: editor/asset_library_editor_plugin.cpp editor/project_settings_editor.cpp
-msgid "Category:"
-msgstr "類別:"
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Site:"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Support.."
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Official"
-msgstr "官方"
-
-#: editor/asset_library_editor_plugin.cpp editor/editor_node.cpp
-msgid "Community"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Testing"
-msgstr ""
-
-#: editor/asset_library_editor_plugin.cpp
-msgid "Assets ZIP File"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Method List For '%s':"
-msgstr ""
-
-#: editor/call_dialog.cpp modules/visual_script/visual_script_editor.cpp
-msgid "Call"
-msgstr ""
-
-#: editor/call_dialog.cpp
-msgid "Method List:"
-msgstr "方法:"
-
-#: editor/call_dialog.cpp
-msgid "Arguments:"
-msgstr "è¼¸å…¥åƒæ•¸"
-
-#: editor/call_dialog.cpp
-msgid "Return:"
-msgstr "回傳值:"
-
#: editor/code_editor.cpp
msgid "Go to Line"
msgstr "å‰å¾€ç¬¬...行"
@@ -654,6 +395,14 @@ msgstr ""
msgid "Selection Only"
msgstr "åƒ…é¸æ“‡å€åŸŸ"
+#: editor/code_editor.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_settings_editor.cpp
+msgid "Search"
+msgstr "æœå°‹"
+
#: editor/code_editor.cpp editor/editor_help.cpp
msgid "Find"
msgstr "尋找"
@@ -686,11 +435,11 @@ msgstr "æ¯æ¬¡å–代都è¦å…ˆè©¢å•我"
msgid "Skip"
msgstr "è·³éŽ"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom In"
msgstr "放大"
-#: editor/code_editor.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/code_editor.cpp
msgid "Zoom Out"
msgstr "縮å°"
@@ -758,6 +507,20 @@ msgstr "å»¶é²"
msgid "Oneshot"
msgstr ""
+#: editor/connections_dialog.cpp editor/dependency_editor.cpp
+#: editor/export_template_manager.cpp
+#: editor/plugins/animation_player_editor_plugin.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/resource_preloader_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/project_export.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: editor/run_settings_dialog.cpp editor/settings_config_dialog.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Close"
+msgstr ""
+
#: editor/connections_dialog.cpp
msgid "Connect"
msgstr ""
@@ -783,7 +546,7 @@ msgstr "連接..."
msgid "Disconnect"
msgstr "æ–·ç·š"
-#: editor/connections_dialog.cpp editor/node_dock.cpp
+#: editor/connections_dialog.cpp editor/editor_help.cpp editor/node_dock.cpp
msgid "Signals"
msgstr ""
@@ -800,12 +563,25 @@ msgstr "我的最愛:"
msgid "Recent:"
msgstr "最近存å–:"
+#: editor/create_dialog.cpp editor/editor_node.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
+#: editor/quick_open.cpp editor/settings_config_dialog.cpp
+msgid "Search:"
+msgstr "æœå°‹:"
+
#: editor/create_dialog.cpp editor/editor_help.cpp
#: editor/plugins/script_editor_plugin.cpp editor/property_selector.cpp
#: editor/quick_open.cpp
msgid "Matches:"
msgstr "ç¬¦åˆæ¢ä»¶:"
+#: editor/create_dialog.cpp editor/editor_help.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/property_selector.cpp
+#: editor/script_editor_debugger.cpp
+msgid "Description:"
+msgstr "æè¿°:"
+
#: editor/dependency_editor.cpp
msgid "Search Replacement For:"
msgstr ""
@@ -863,6 +639,10 @@ msgid "Owners Of:"
msgstr ""
#: editor/dependency_editor.cpp
+msgid "Remove selected files from the project? (no undo)"
+msgstr "此動作無法復原, 確定è¦å¾žå°ˆæ¡ˆä¸­åˆªé™¤æ‰€é¸çš„æª”案?"
+
+#: editor/dependency_editor.cpp
msgid ""
"The files being removed are required by other resources in order for them to "
"work.\n"
@@ -872,8 +652,8 @@ msgstr ""
"此動作無法復原, 確定è¦åˆªé™¤å—Ž?"
#: editor/dependency_editor.cpp
-msgid "Remove selected files from the project? (no undo)"
-msgstr "此動作無法復原, 確定è¦å¾žå°ˆæ¡ˆä¸­åˆªé™¤æ‰€é¸çš„æª”案?"
+msgid "Cannot remove:\n"
+msgstr ""
#: editor/dependency_editor.cpp
#, fuzzy
@@ -940,10 +720,6 @@ msgid "Godot Engine contributors"
msgstr ""
#: editor/editor_about.cpp
-msgid "Authors"
-msgstr ""
-
-#: editor/editor_about.cpp
#, fuzzy
msgid "Project Founders"
msgstr "專案設定"
@@ -961,6 +737,38 @@ msgid "Developers"
msgstr ""
#: editor/editor_about.cpp
+msgid "Authors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Platinum Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Mini Sponsors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Gold Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Silver Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Bronze Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
+msgid "Donors"
+msgstr ""
+
+#: editor/editor_about.cpp
msgid "License"
msgstr ""
@@ -1002,6 +810,16 @@ msgid "Package Installed Successfully!"
msgstr ""
#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Success!"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp editor/project_manager.cpp
+msgid "Install"
+msgstr ""
+
+#: editor/editor_asset_installer.cpp
msgid "Package Installer"
msgstr ""
@@ -1050,11 +868,6 @@ msgid "Audio Bus, Drag and Drop to rearrange."
msgstr ""
#: editor/editor_audio_buses.cpp
-#, fuzzy
-msgid "Bus options"
-msgstr "除錯é¸é …"
-
-#: editor/editor_audio_buses.cpp
msgid "Solo"
msgstr ""
@@ -1066,6 +879,11 @@ msgstr ""
msgid "Bypass"
msgstr ""
+#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Bus options"
+msgstr "除錯é¸é …"
+
#: editor/editor_audio_buses.cpp editor/plugins/tile_map_editor_plugin.cpp
#: editor/scene_tree_dock.cpp
msgid "Duplicate"
@@ -1073,6 +891,11 @@ msgstr ""
#: editor/editor_audio_buses.cpp
#, fuzzy
+msgid "Reset Volume"
+msgstr "é‡è¨­ç¸®æ”¾å¤§å°"
+
+#: editor/editor_audio_buses.cpp
+#, fuzzy
msgid "Delete Effect"
msgstr "刪除"
@@ -1094,6 +917,11 @@ msgid "Duplicate Audio Bus"
msgstr "複製所é¸"
#: editor/editor_audio_buses.cpp
+#, fuzzy
+msgid "Reset Bus Volume"
+msgstr "é‡è¨­ç¸®æ”¾å¤§å°"
+
+#: editor/editor_audio_buses.cpp
msgid "Move Audio Bus"
msgstr ""
@@ -1125,7 +953,8 @@ msgstr ""
msgid "Create a new Bus Layout."
msgstr ""
-#: editor/editor_audio_buses.cpp editor/script_create_dialog.cpp
+#: editor/editor_audio_buses.cpp editor/property_editor.cpp
+#: editor/script_create_dialog.cpp
msgid "Load"
msgstr "載入"
@@ -1216,7 +1045,7 @@ msgid "Rearrange Autoloads"
msgstr ""
#: editor/editor_autoload_settings.cpp editor/editor_file_dialog.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp scene/gui/file_dialog.cpp
+#: scene/gui/file_dialog.cpp
msgid "Path:"
msgstr "路徑:"
@@ -1224,9 +1053,7 @@ msgstr "路徑:"
msgid "Node Name:"
msgstr "節點å稱:"
-#: editor/editor_autoload_settings.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp editor/project_manager.cpp
+#: editor/editor_autoload_settings.cpp editor/project_manager.cpp
msgid "Name"
msgstr "å稱"
@@ -1260,18 +1087,19 @@ msgid "Choose a Directory"
msgstr "鏿“‡è³‡æ–™å¤¾"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Create Folder"
msgstr "新增資料夾"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: editor/editor_plugin_settings.cpp editor/plugins/theme_editor_plugin.cpp
-#: editor/project_export.cpp scene/gui/file_dialog.cpp
+#: editor/editor_plugin_settings.cpp editor/filesystem_dock.cpp
+#: editor/plugins/theme_editor_plugin.cpp editor/project_export.cpp
+#: scene/gui/file_dialog.cpp
msgid "Name:"
msgstr "å稱:"
#: editor/editor_dir_dialog.cpp editor/editor_file_dialog.cpp
-#: scene/gui/file_dialog.cpp
+#: editor/filesystem_dock.cpp scene/gui/file_dialog.cpp
msgid "Could not create folder."
msgstr "無法新增資料夾"
@@ -1291,30 +1119,6 @@ msgstr ""
msgid "Template file not found:\n"
msgstr ""
-#: editor/editor_export.cpp
-msgid "Added:"
-msgstr "已新增:"
-
-#: editor/editor_export.cpp
-msgid "Removed:"
-msgstr "已刪除:"
-
-#: editor/editor_export.cpp
-msgid "Error saving atlas:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Could not save atlas subtexture:"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Exporting for %s"
-msgstr ""
-
-#: editor/editor_export.cpp
-msgid "Setting Up.."
-msgstr ""
-
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "File Exists, Overwrite?"
msgstr "檔案已經存在, è¦è¦†å¯«å—Ž?"
@@ -1399,6 +1203,11 @@ msgstr ""
msgid "Move Favorite Down"
msgstr ""
+#: editor/editor_file_dialog.cpp
+#, fuzzy
+msgid "Go to parent folder"
+msgstr "無法新增資料夾"
+
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Directories & Files:"
msgstr "資料夾 & 檔案:"
@@ -1413,10 +1222,6 @@ msgid "File:"
msgstr "檔案:"
#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
-msgid "Filter:"
-msgstr "éŽæ¿¾å™¨:"
-
-#: editor/editor_file_dialog.cpp scene/gui/file_dialog.cpp
msgid "Must use a valid extension."
msgstr ""
@@ -1441,6 +1246,10 @@ msgstr ""
msgid "Search Classes"
msgstr ""
+#: editor/editor_help.cpp editor/plugins/spatial_editor_plugin.cpp
+msgid "Top"
+msgstr ""
+
#: editor/editor_help.cpp editor/property_editor.cpp
msgid "Class:"
msgstr ""
@@ -1457,15 +1266,27 @@ msgstr ""
msgid "Brief Description:"
msgstr ""
+#: editor/editor_help.cpp
+msgid "Members"
+msgstr ""
+
#: editor/editor_help.cpp modules/visual_script/visual_script_editor.cpp
msgid "Members:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Public Methods"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Public Methods:"
msgstr ""
#: editor/editor_help.cpp
+msgid "GUI Theme Items"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "GUI Theme Items:"
msgstr ""
@@ -1474,6 +1295,10 @@ msgid "Signals:"
msgstr ""
#: editor/editor_help.cpp
+msgid "Enumerations"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Enumerations:"
msgstr ""
@@ -1482,18 +1307,48 @@ msgid "enum "
msgstr ""
#: editor/editor_help.cpp
+msgid "Constants"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Constants:"
msgstr ""
#: editor/editor_help.cpp
+#, fuzzy
+msgid "Description"
+msgstr "æè¿°:"
+
+#: editor/editor_help.cpp
+msgid "Properties"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Property Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this property. Please help us by "
+"[color=$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
+#, fuzzy
+msgid "Methods"
+msgstr "方法:"
+
+#: editor/editor_help.cpp
msgid "Method Description:"
msgstr ""
#: editor/editor_help.cpp
+msgid ""
+"There is currently no description for this method. Please help us by [color="
+"$color][url=$url]contributing one[/url][/color]!"
+msgstr ""
+
+#: editor/editor_help.cpp
msgid "Search Text"
msgstr "æœå°‹è©žå½™"
@@ -1503,24 +1358,21 @@ msgid "Output:"
msgstr " 輸出:"
#: editor/editor_log.cpp editor/plugins/animation_tree_editor_plugin.cpp
-#: editor/plugins/rich_text_editor_plugin.cpp editor/property_editor.cpp
-#: editor/script_editor_debugger.cpp scene/gui/line_edit.cpp
-#: scene/gui/text_edit.cpp
+#: editor/property_editor.cpp editor/script_editor_debugger.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Clear"
msgstr "清除"
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Error saving resource!"
msgstr ""
#: editor/editor_node.cpp editor/plugins/animation_player_editor_plugin.cpp
-#: editor/resources_dock.cpp
msgid "Save Resource As.."
msgstr ""
-#: editor/editor_node.cpp editor/export_template_manager.cpp
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "I see.."
msgstr "我知é“了"
@@ -1537,6 +1389,29 @@ msgid "Error while saving."
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Can't open '%s'."
+msgstr "連接..."
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while parsing '%s'."
+msgstr "載入場景時發生錯誤"
+
+#: editor/editor_node.cpp
+msgid "Unexpected end of file '%s'."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Missing '%s' or its dependencies."
+msgstr ""
+
+#: editor/editor_node.cpp
+#, fuzzy
+msgid "Error while loading '%s'."
+msgstr "載入場景時發生錯誤"
+
+#: editor/editor_node.cpp
msgid "Saving Scene"
msgstr ""
@@ -1595,6 +1470,33 @@ msgid "Restored default layout to base settings."
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was imported, so it's not editable.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource belongs to a scene that was instanced or inherited.\n"
+"Changes to it will not be kept when saving the current scene."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This resource was imported, so it's not editable. Change its settings in the "
+"import panel and then re-import."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid ""
+"This scene was imported, so changes to it will not be kept.\n"
+"Instancing it or inheriting will allow making changes to it.\n"
+"Please read the documentation relevant to importing scenes to better "
+"understand this workflow."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Copy Params"
msgstr "è¤‡è£½åƒæ•¸"
@@ -1757,23 +1659,34 @@ msgid "Save changes the following scene(s) before opening Project Manager?"
msgstr ""
#: editor/editor_node.cpp
+msgid ""
+"This option is deprecated. Situations where refresh must be forced are now "
+"considered a bug. Please report."
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "Pick a Main Scene"
msgstr "挑一個主è¦å ´æ™¯"
#: editor/editor_node.cpp
-msgid "Unable to enable addon plugin at: '"
+msgid "Unable to enable addon plugin at: '%s' parsing of config failed."
msgstr ""
#: editor/editor_node.cpp
-msgid "' parsing of config failed."
+msgid "Unable to find script field for addon plugin at: 'res://addons/%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to find script field for addon plugin at: 'res://addons/"
+msgid "Unable to load addon script from path: '%s'."
msgstr ""
#: editor/editor_node.cpp
-msgid "Unable to load addon script from path: '"
+msgid ""
+"Unable to load addon script from path: '%s' Base type is not EditorPlugin."
+msgstr ""
+
+#: editor/editor_node.cpp
+msgid "Unable to load addon script from path: '%s' Script is not in tool mode."
msgstr ""
#: editor/editor_node.cpp
@@ -1783,7 +1696,7 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/scene_tree_dock.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Ugh"
msgstr "呃"
@@ -1794,14 +1707,15 @@ msgid ""
msgstr ""
#: editor/editor_node.cpp
-msgid "Error loading scene."
-msgstr "載入場景時發生錯誤"
-
-#: editor/editor_node.cpp
msgid "Scene '%s' has broken dependencies:"
msgstr ""
#: editor/editor_node.cpp
+#, fuzzy
+msgid "Clear Recent Scenes"
+msgstr "關閉場景"
+
+#: editor/editor_node.cpp
msgid "Save Layout"
msgstr ""
@@ -1834,7 +1748,7 @@ msgstr ""
msgid "Toggle distraction-free mode."
msgstr ""
-#: editor/editor_node.cpp editor/io_plugins/editor_scene_import_plugin.cpp
+#: editor/editor_node.cpp
#, fuzzy
msgid "Scene"
msgstr "場景"
@@ -2055,6 +1969,10 @@ msgstr ""
msgid "Issue Tracker"
msgstr ""
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+msgid "Community"
+msgstr ""
+
#: editor/editor_node.cpp
msgid "About"
msgstr ""
@@ -2063,7 +1981,7 @@ msgstr ""
msgid "Play the project."
msgstr "éŠçŽ©æ­¤å°ˆæ¡ˆ"
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Play"
msgstr "é–‹å§‹"
@@ -2079,7 +1997,7 @@ msgstr "æš«åœå ´æ™¯"
msgid "Stop the scene."
msgstr "åœæ­¢æ­¤å ´æ™¯"
-#: editor/editor_node.cpp editor/plugins/sample_library_editor_plugin.cpp
+#: editor/editor_node.cpp
msgid "Stop"
msgstr "åœæ­¢"
@@ -2152,6 +2070,15 @@ msgid "Object properties."
msgstr ""
#: editor/editor_node.cpp
+msgid "Changes may be lost!"
+msgstr ""
+
+#: editor/editor_node.cpp editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Import"
+msgstr ""
+
+#: editor/editor_node.cpp
msgid "FileSystem"
msgstr ""
@@ -2167,14 +2094,6 @@ msgstr ""
msgid "Don't Save"
msgstr ""
-#: editor/editor_node.cpp editor/editor_reimport_dialog.cpp
-msgid "Re-Import"
-msgstr ""
-
-#: editor/editor_node.cpp editor/editor_plugin_settings.cpp
-msgid "Update"
-msgstr ""
-
#: editor/editor_node.cpp
msgid "Import Templates From ZIP File"
msgstr ""
@@ -2236,11 +2155,28 @@ msgstr "離開編輯器嗎?"
msgid "Open the previous Editor"
msgstr ""
+#: editor/editor_plugin.cpp
+msgid "Creating Mesh Previews"
+msgstr ""
+
+#: editor/editor_plugin.cpp
+msgid "Thumbnail.."
+msgstr ""
+
#: editor/editor_plugin_settings.cpp
msgid "Installed Plugins:"
msgstr ""
#: editor/editor_plugin_settings.cpp
+msgid "Update"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Version:"
+msgstr ""
+
+#: editor/editor_plugin_settings.cpp
msgid "Author:"
msgstr ""
@@ -2273,7 +2209,7 @@ msgid "Frame %"
msgstr ""
#: editor/editor_profiler.cpp
-msgid "Fixed Frame %"
+msgid "Physics Frame %"
msgstr ""
#: editor/editor_profiler.cpp editor/script_editor_debugger.cpp
@@ -2292,26 +2228,6 @@ msgstr ""
msgid "Frame #:"
msgstr ""
-#: editor/editor_reimport_dialog.cpp
-msgid "Please wait for scan to complete."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Current scene must be saved to re-import."
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Save & Re-Import"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Importing"
-msgstr ""
-
-#: editor/editor_reimport_dialog.cpp
-msgid "Re-Import Changed Resources"
-msgstr ""
-
#: editor/editor_run_native.cpp
msgid "Select device from the list"
msgstr ""
@@ -2421,10 +2337,6 @@ msgid "Importing:"
msgstr ""
#: editor/export_template_manager.cpp
-msgid "Loading Export Templates"
-msgstr ""
-
-#: editor/export_template_manager.cpp
msgid "Current Version:"
msgstr ""
@@ -2457,81 +2369,78 @@ msgid "Cannot navigate to '"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Status: Needs Re-Import"
-msgstr ""
-
-#: editor/filesystem_dock.cpp
-msgid ""
-"\n"
-"Source: "
+msgid "View items as a grid of thumbnails"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination files, doing nothing."
+msgid "View items as a list"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Target file exists, can't overwrite. Delete first."
+msgid ""
+"\n"
+"Status: Import of file failed. Please fix file and reimport manually."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Same source and destination paths, doing nothing."
+msgid ""
+"\n"
+"Source: "
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't move directories to within themselves."
+msgid "Cannot move/rename resources root."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Can't rename deps for:\n"
+msgid "Cannot move a folder into itself.\n"
msgstr ""
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving file:\n"
+msgid "Error moving:\n"
msgstr "載入時發生錯誤:"
#: editor/filesystem_dock.cpp
#, fuzzy
-msgid "Error moving dir:\n"
-msgstr "載入時發生錯誤:"
+msgid "Unable to update dependencies:\n"
+msgstr "場景缺少了æŸäº›è³‡æºä»¥è‡³æ–¼ç„¡æ³•載入"
#: editor/filesystem_dock.cpp
-msgid "Can't operate on '..'"
+msgid "No name provided"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Pick New Name and Location For:"
+msgid "Provided name contains invalid characters"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "No files selected!"
+msgid "No name provided."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Expand all"
+msgid "Name contains invalid characters."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Collapse all"
+msgid "A file or folder with this name already exists."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Show In File Manager"
-msgstr ""
+#, fuzzy
+msgid "Renaming file:"
+msgstr "載入時發生錯誤:"
#: editor/filesystem_dock.cpp
-msgid "Instance"
+msgid "Renaming folder:"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Edit Dependencies.."
+msgid "Expand all"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "View Owners.."
+msgid "Collapse all"
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2539,7 +2448,7 @@ msgid "Copy Path"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Rename or Move.."
+msgid "Rename.."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2547,11 +2456,24 @@ msgid "Move To.."
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Info"
+#, fuzzy
+msgid "New Folder.."
+msgstr "新增資料夾"
+
+#: editor/filesystem_dock.cpp
+msgid "Show In File Manager"
msgstr ""
#: editor/filesystem_dock.cpp
-msgid "Re-Import.."
+msgid "Instance"
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "Edit Dependencies.."
+msgstr ""
+
+#: editor/filesystem_dock.cpp
+msgid "View Owners.."
msgstr ""
#: editor/filesystem_dock.cpp
@@ -2584,6 +2506,11 @@ msgstr ""
msgid "Move"
msgstr ""
+#: editor/filesystem_dock.cpp editor/plugins/animation_tree_editor_plugin.cpp
+#: editor/project_manager.cpp
+msgid "Rename"
+msgstr ""
+
#: editor/groups_editor.cpp
msgid "Add to Group"
msgstr ""
@@ -2598,6 +2525,10 @@ msgid "Import as Single Scene"
msgstr "更新場景"
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import with Separate Materials"
msgstr ""
@@ -2610,6 +2541,18 @@ msgid "Import with Separate Objects+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
+msgid "Import with Separate Objects+Materials+Animations"
+msgstr ""
+
+#: editor/import/resource_importer_scene.cpp
msgid "Import as Multiple Scenes"
msgstr ""
@@ -2618,38 +2561,31 @@ msgid "Import as Multiple Scenes+Materials"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Import Scene"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Importing Scene.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Running Custom Script.."
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Couldn't load post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Invalid/broken script for post-import (check console):"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Error running post-import script:"
msgstr ""
#: editor/import/resource_importer_scene.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
msgid "Saving.."
msgstr ""
@@ -2677,579 +2613,54 @@ msgstr ""
msgid "Reimport"
msgstr ""
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "No bit masks to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must be a complete resource path."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Target path must exist."
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Save path is empty!"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Import BitMasks"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Target Path:"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Accept"
-msgstr ""
-
-#: editor/io_plugins/editor_bitmask_import_plugin.cpp
-msgid "Bit Mask"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No source font file!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "No target font resource!"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"Invalid file extension.\n"
-"Please use .font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Can't load/process source font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Couldn't save font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Source Font Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Dest Resource:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "The quick brown fox jumps over the lazy dog."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Test:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Options:"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Font Import"
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid ""
-"This file is already a Godot font file, please supply a BMFont type file "
-"instead."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Failed opening as BMFont file."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error initializing FreeType."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Unknown font format."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Error loading font."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: scene/resources/dynamic_font.cpp
-msgid "Invalid font size."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-msgid "Invalid font custom source."
-msgstr ""
-
-#: editor/io_plugins/editor_font_import_plugin.cpp
-#: editor/plugins/theme_editor_plugin.cpp
-msgid "Font"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "No meshes to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Single Mesh Import"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Source Mesh(es):"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-#: editor/plugins/mesh_instance_editor_plugin.cpp
-msgid "Mesh"
-msgstr ""
-
-#: editor/io_plugins/editor_mesh_import_plugin.cpp
-msgid "Surface %d"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "No samples to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Import Audio Samples"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Source Sample(s):"
-msgstr ""
-
-#: editor/io_plugins/editor_sample_import_plugin.cpp
-msgid "Audio Sample"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "New Clip"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Animation Options"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Flags"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Bake FPS:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Optimizer"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Linear Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angular Error"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Max Angle"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Clips"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Start(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "End(s)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Loop"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Filters"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source path is empty."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't load post-import script."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Invalid/broken script for post-import."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Error importing scene."
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import 3D Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Source Scene:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Same as Target Scene"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Shared"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Target Texture Folder:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Post-Process Script:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Custom Root Node Type:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Auto"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Root Node Name:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "The Following Files are Missing:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Anyway"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp scene/gui/dialogs.cpp
-msgid "Cancel"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import & Open"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Edited scene has not been saved, open imported scene anyway?"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Import Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Can't import a file over itself:"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "Couldn't localize path: %s (already local)"
-msgstr ""
-
-#: editor/io_plugins/editor_scene_import_plugin.cpp
-msgid "3D Scene Animation"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Uncompressed"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossless (PNG)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress Lossy (WebP)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Compress (VRAM)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Format"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Compression Quality (WebP):"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture Options"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Please specify some files!"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "At least one file needed for Atlas."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Error importing:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Only one file is required for large texture."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Max Texture Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for Atlas (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cell Size:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Textures (2D)"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture"
+#: editor/multi_node_edit.cpp
+msgid "MultiNode Set"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Base Atlas Texture"
+#: editor/node_dock.cpp
+msgid "Groups"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Source Texture(s)"
+#: editor/node_dock.cpp
+msgid "Select a Node to edit Signals and Groups."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 2D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures for 3D"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Textures"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Insert Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "2D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/collision_polygon_editor_plugin.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Edit Poly (Remove Point)"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "3D Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+msgid "Remove Poly And Point"
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Atlas Texture"
+#: editor/plugins/abstract_polygon_2d_editor.cpp
+#: editor/plugins/light_occluder_2d_editor_plugin.cpp
+msgid "Create a new polygon from scratch."
msgstr ""
-#: editor/io_plugins/editor_texture_import_plugin.cpp
+#: editor/plugins/abstract_polygon_2d_editor.cpp
msgid ""
-"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to "
-"the project."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Crop empty space."
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Import Large Texture"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Load Source Image"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Slicing"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Inserting"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Saving"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save large texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Build Atlas For:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Loading Image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't load image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Converting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Cropping Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Blitting Images"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save atlas image:"
-msgstr ""
-
-#: editor/io_plugins/editor_texture_import_plugin.cpp
-msgid "Couldn't save converted texture:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Invalid translation source!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Column"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-#: editor/script_create_dialog.cpp
-msgid "Language"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No items to import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "No target path!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translations"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Couldn't import!"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Translation"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Source CSV:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Ignore First Row"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Compress"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Add to Project (project.godot)"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Import Languages:"
-msgstr ""
-
-#: editor/io_plugins/editor_translation_import_plugin.cpp
-msgid "Translation"
-msgstr ""
-
-#: editor/multi_node_edit.cpp
-msgid "MultiNode Set"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Groups"
-msgstr ""
-
-#: editor/node_dock.cpp
-msgid "Select a Node to edit Signals and Groups."
+"Edit existing polygon:\n"
+"LMB: Move Point.\n"
+"Ctrl+LMB: Split Segment.\n"
+"RMB: Erase Point."
msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
@@ -3405,7 +2816,6 @@ msgstr ""
#: editor/plugins/animation_player_editor_plugin.cpp
#: editor/plugins/resource_preloader_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
#: editor/script_create_dialog.cpp
msgid "Error!"
@@ -3516,10 +2926,6 @@ msgid "Delete Input"
msgstr ""
#: editor/plugins/animation_tree_editor_plugin.cpp
-msgid "Rename"
-msgstr ""
-
-#: editor/plugins/animation_tree_editor_plugin.cpp
msgid "Animation tree is valid."
msgstr ""
@@ -3575,64 +2981,185 @@ msgstr ""
msgid "Filters.."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing %d Triangles:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Free"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Contents:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "View Files"
+msgstr "éŽæ¿¾æª”案.."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve hostname:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't resolve."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Connection error, please try again."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Can't connect."
+msgstr "連接..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Can't connect to host:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response from host:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "No response."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Light Baker Setup:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, return code:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Parsing Geometry"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Req. Failed."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Fixing Lights"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Request failed, too many redirects"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Making BVH"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Redirect Loop."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Light Octree"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Creating Octree Texture"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Bad download hash, assuming file has been tampered with."
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Transfer to Lightmaps:"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Expected:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Allocating Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Got:"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Baking Triangle #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Failed sha256 hash check"
msgstr ""
-#: editor/plugins/baked_light_baker.cpp
-msgid "Post-Processing Texture #"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Asset Download Error:"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Bake!"
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Fetching:"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Resolving.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Connecting.."
+msgstr "連接..."
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Requesting.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#, fuzzy
+msgid "Error making request"
+msgstr "載入場景時發生錯誤"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Idle"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Retry"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download Error"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Download for this asset is already in progress!"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "first"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "prev"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "next"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "last"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "All"
+msgstr "全部"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Plugins"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Sort:"
+msgstr "排åº:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Reverse"
+msgstr "å轉"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+#: editor/project_settings_editor.cpp
+msgid "Category:"
+msgstr "類別:"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Site:"
msgstr ""
-#: editor/plugins/baked_light_editor_plugin.cpp
-msgid "Reset the lightmap octree baking process (start over)."
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Support.."
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Official"
+msgstr "官方"
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Testing"
+msgstr ""
+
+#: editor/plugins/asset_library_editor_plugin.cpp
+msgid "Assets ZIP File"
msgstr ""
#: editor/plugins/camera_editor_plugin.cpp
-#: editor/plugins/sample_library_editor_plugin.cpp
msgid "Preview"
msgstr ""
@@ -3675,11 +3202,15 @@ msgid "Edit CanvasItem"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Change Anchors"
+msgid "Anchors only"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom (%):"
+msgid "Change Anchors and Margins"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Change Anchors"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3730,59 +3261,72 @@ msgid "Pan Mode"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Lock the selected object in place (can't be moved)."
+msgid "Toggles snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Unlock the selected object (can be moved)."
+#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Use Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Makes sure the object's children are not selectable."
+msgid "Snapping options"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Restores the object's children's ability to be selected."
+msgid "Snap to grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
-#: editor/project_settings_editor.cpp
-#: modules/visual_script/visual_script_editor.cpp
-msgid "Edit"
+msgid "Use Rotation Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Use Snap"
+msgid "Configure Snap..."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Show Grid"
+msgid "Snap Relative"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Rotation Snap"
+msgid "Use Pixel Snap"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap Relative"
+msgid "Smart snapping"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Configure Snap.."
+msgid "Snap to parent"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Use Pixel Snap"
+msgid "Snap to node anchor"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to node sides"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Snap to other nodes"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Lock the selected object in place (can't be moved)."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Unlock the selected object (can be moved)."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Skeleton.."
+msgid "Makes sure the object's children are not selectable."
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Restores the object's children's ability to be selected."
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3811,11 +3355,16 @@ msgid "View"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Reset"
+#: editor/plugins/polygon_2d_editor_plugin.cpp
+msgid "Show Grid"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Zoom Set.."
+msgid "Show helpers"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Show rulers"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3827,7 +3376,7 @@ msgid "Frame Selection"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Anchor"
+msgid "Layout"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3851,11 +3400,20 @@ msgid "Clear Pose"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Set a Value"
+msgid "Drag pivot from mouse position"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
-msgid "Snap (Pixels):"
+#, fuzzy
+msgid "Set pivot at mouse position"
+msgstr "移除"
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Multiply grid step by 2"
+msgstr ""
+
+#: editor/plugins/canvas_item_editor_plugin.cpp
+msgid "Divide grid step by 2"
msgstr ""
#: editor/plugins/canvas_item_editor_plugin.cpp
@@ -3866,23 +3424,28 @@ msgstr ""
msgid "Adding %s..."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Create Node"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "Error instancing scene from %s"
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "OK :("
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "No parent to instance a child at."
msgstr ""
-#: editor/plugins/canvas_item_editor_plugin.cpp editor/scene_tree_dock.cpp
+#: editor/plugins/canvas_item_editor_plugin.cpp
+#: editor/plugins/spatial_editor_plugin.cpp editor/scene_tree_dock.cpp
msgid "This operation requires a single selected node."
msgstr ""
@@ -3896,45 +3459,6 @@ msgid ""
"Drag & drop + Alt : Change node type"
msgstr ""
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Create Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/collision_polygon_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-#: editor/plugins/path_2d_editor_plugin.cpp
-#: editor/plugins/polygon_2d_editor_plugin.cpp
-msgid "Edit Poly (Remove Point)"
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create a new polygon from scratch."
-msgstr ""
-
-#: editor/plugins/collision_polygon_2d_editor_plugin.cpp
-msgid ""
-"Edit existing polygon:\n"
-"LMB: Move Point.\n"
-"Ctrl+LMB: Split Segment.\n"
-"RMB: Erase Point."
-msgstr ""
-
#: editor/plugins/collision_polygon_editor_plugin.cpp
msgid "Create Poly3D"
msgstr ""
@@ -3944,14 +3468,6 @@ msgid "Set Handle"
msgstr ""
#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Creating Mesh Library"
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
-msgid "Thumbnail.."
-msgstr ""
-
-#: editor/plugins/cube_grid_theme_editor_plugin.cpp
msgid "Remove item %d?"
msgstr ""
@@ -3974,6 +3490,27 @@ msgid "Update from Scene"
msgstr ""
#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat0"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Flat1"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+#, fuzzy
+msgid "Ease in"
+msgstr "æ‰€æœ‰çš„é¸æ“‡"
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Ease out"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
+msgid "Smoothstep"
+msgstr ""
+
+#: editor/plugins/curve_editor_plugin.cpp
msgid "Modify Curve Point"
msgstr ""
@@ -4052,22 +3589,18 @@ msgid "Create Occluder Polygon"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Edit existing polygon:"
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "LMB: Move Point."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "Ctrl+LMB: Split Segment."
msgstr ""
#: editor/plugins/light_occluder_2d_editor_plugin.cpp
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
msgid "RMB: Erase Point."
msgstr ""
@@ -4168,6 +3701,10 @@ msgid "Create Outline"
msgstr ""
#: editor/plugins/mesh_instance_editor_plugin.cpp
+msgid "Mesh"
+msgstr ""
+
+#: editor/plugins/mesh_instance_editor_plugin.cpp
msgid "Create Trimesh Static Body"
msgstr ""
@@ -4295,12 +3832,73 @@ msgstr ""
msgid "Populate"
msgstr ""
-#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Create Navigation Polygon"
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake!"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Bake the navigation mesh.\n"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_editor_plugin.cpp
+msgid "Clear the navigation mesh."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Setting up Configuration..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Calculating grid size..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+#, fuzzy
+msgid "Marking walkable triangles..."
+msgstr "正在儲存變更.."
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Constructing compact heightfield..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Eroding walkable area..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Partitioning..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating contours..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Creating polymesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Converting to native navigation mesh..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Navigation Mesh Generator Setup:"
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Parsing Geometry..."
+msgstr ""
+
+#: editor/plugins/navigation_mesh_generator.cpp
+msgid "Done!"
msgstr ""
#: editor/plugins/navigation_polygon_editor_plugin.cpp
-msgid "Remove Poly And Point"
+msgid "Create Navigation Polygon"
msgstr ""
#: editor/plugins/particles_2d_editor_plugin.cpp
@@ -4474,16 +4072,19 @@ msgid "Curve Point #"
msgstr ""
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Point Position"
-msgstr ""
+msgstr "移除"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve In Position"
-msgstr ""
+msgstr "移除"
#: editor/plugins/path_editor_plugin.cpp
+#, fuzzy
msgid "Set Curve Out Position"
-msgstr ""
+msgstr "移除"
#: editor/plugins/path_editor_plugin.cpp
msgid "Split Path"
@@ -4542,6 +4143,14 @@ msgid "Scale Polygon"
msgstr ""
#: editor/plugins/polygon_2d_editor_plugin.cpp
+#: editor/plugins/script_text_editor.cpp
+#: editor/plugins/shader_editor_plugin.cpp editor/project_manager.cpp
+#: editor/project_settings_editor.cpp editor/property_editor.cpp
+#: modules/visual_script/visual_script_editor.cpp
+msgid "Edit"
+msgstr ""
+
+#: editor/plugins/polygon_2d_editor_plugin.cpp
msgid "Polygon->UV"
msgstr ""
@@ -4596,63 +4205,10 @@ msgstr ""
#: editor/plugins/script_text_editor.cpp
#: editor/plugins/shader_editor_plugin.cpp
#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Paste"
msgstr ""
-#: editor/plugins/rich_text_editor_plugin.cpp
-msgid "Parse BBCode"
-msgstr ""
-
-#: editor/plugins/sample_editor_plugin.cpp
-msgid "Length:"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Open Sample File(s)"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "ERROR: Couldn't load sample!"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Add Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Rename Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Delete Sample"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "16 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "8 Bits"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Stereo"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Mono"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-#: editor/script_editor_debugger.cpp
-msgid "Format"
-msgstr ""
-
-#: editor/plugins/sample_library_editor_plugin.cpp
-msgid "Pitch"
-msgstr ""
-
#: editor/plugins/script_editor_plugin.cpp
msgid "Clear Recent Files"
msgstr ""
@@ -4743,6 +4299,10 @@ msgstr ""
msgid "Close All"
msgstr ""
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+msgid "Run"
+msgstr ""
+
#: editor/plugins/script_editor_plugin.cpp
msgid "Toggle Scripts Panel"
msgstr ""
@@ -4771,7 +4331,8 @@ msgstr ""
msgid "Break"
msgstr ""
-#: editor/plugins/script_editor_plugin.cpp editor/script_editor_debugger.cpp
+#: editor/plugins/script_editor_plugin.cpp editor/project_manager.cpp
+#: editor/script_editor_debugger.cpp
msgid "Continue"
msgstr ""
@@ -4785,18 +4346,6 @@ msgid "Debug with external editor"
msgstr "離開編輯器嗎?"
#: editor/plugins/script_editor_plugin.cpp
-msgid "Window"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Left"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
-msgid "Move Right"
-msgstr ""
-
-#: editor/plugins/script_editor_plugin.cpp
msgid "Open Godot online documentation"
msgstr ""
@@ -4879,8 +4428,9 @@ msgid "Cut"
msgstr ""
#: editor/plugins/script_text_editor.cpp
-#: editor/plugins/shader_editor_plugin.cpp editor/property_editor.cpp
-#: editor/resources_dock.cpp scene/gui/line_edit.cpp scene/gui/text_edit.cpp
+#: editor/plugins/shader_editor_plugin.cpp
+#: editor/plugins/sprite_frames_editor_plugin.cpp editor/property_editor.cpp
+#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp
msgid "Copy"
msgstr ""
@@ -5146,10 +4696,6 @@ msgid "View Plane Transform."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Scaling to %s%%."
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rotating %s degrees."
msgstr ""
@@ -5166,10 +4712,6 @@ msgid "Top View."
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
-msgid "Top"
-msgstr ""
-
-#: editor/plugins/spatial_editor_plugin.cpp
msgid "Rear View."
msgstr ""
@@ -5402,6 +4944,10 @@ msgid "Transform"
msgstr ""
#: editor/plugins/spatial_editor_plugin.cpp
+msgid "Configure Snap.."
+msgstr ""
+
+#: editor/plugins/spatial_editor_plugin.cpp
msgid "Local Coords"
msgstr ""
@@ -5547,6 +5093,10 @@ msgid "Speed (FPS):"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
+msgid "Loop"
+msgstr ""
+
+#: editor/plugins/sprite_frames_editor_plugin.cpp
msgid "Animation Frames"
msgstr ""
@@ -5559,11 +5109,11 @@ msgid "Insert Empty (After)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Up"
+msgid "Move (Before)"
msgstr ""
#: editor/plugins/sprite_frames_editor_plugin.cpp
-msgid "Down"
+msgid "Move (After)"
msgstr ""
#: editor/plugins/style_box_editor_plugin.cpp
@@ -5641,7 +5191,11 @@ msgid "Remove All"
msgstr "移除"
#: editor/plugins/theme_editor_plugin.cpp
-msgid "Theme"
+msgid "Edit theme.."
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
+msgid "Theme editing menu."
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
@@ -5726,6 +5280,10 @@ msgid "Style"
msgstr ""
#: editor/plugins/theme_editor_plugin.cpp
+msgid "Font"
+msgstr ""
+
+#: editor/plugins/theme_editor_plugin.cpp
msgid "Color"
msgstr ""
@@ -5776,7 +5334,7 @@ msgid "Mirror Y"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
-msgid "Bucket"
+msgid "Paint Tile"
msgstr ""
#: editor/plugins/tile_map_editor_plugin.cpp
@@ -5840,6 +5398,10 @@ msgid "Delete preset '%s'?"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted: "
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Presets"
msgstr ""
@@ -5912,19 +5474,30 @@ msgid "Export templates for this platform are missing:"
msgstr ""
#: editor/project_export.cpp
+msgid "Export templates for this platform are missing/corrupted:"
+msgstr ""
+
+#: editor/project_export.cpp
msgid "Export With Debug"
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, the path must exist!"
+#, fuzzy
+msgid "The path does not exist."
+msgstr "檔案ä¸å­˜åœ¨"
+
+#: editor/project_manager.cpp
+msgid "Please choose a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must not exist."
+msgid ""
+"Your project will be created in a non empty folder (you might want to create "
+"a new folder)."
msgstr ""
#: editor/project_manager.cpp
-msgid "Invalid project path, project.godot must exist."
+msgid "Please choose a folder that does not contain a 'project.godot' file."
msgstr ""
#: editor/project_manager.cpp
@@ -5932,10 +5505,26 @@ msgid "Imported Project"
msgstr ""
#: editor/project_manager.cpp
+msgid " "
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "It would be a good idea to name your project."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Invalid project path (changed anything?)."
msgstr ""
#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
+msgid "Couldn't edit project.godot in project path."
+msgstr ""
+
+#: editor/project_manager.cpp
msgid "Couldn't create project.godot in project path."
msgstr ""
@@ -5944,15 +5533,20 @@ msgid "The following files failed extraction from package:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Import Existing Project"
+#, fuzzy
+msgid "Rename Project"
+msgstr "專案設定"
+
+#: editor/project_manager.cpp
+msgid "Couldn't get project.godot in the project path."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path (Must Exist):"
+msgid "New Game Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Name:"
+msgid "Import Existing Project"
msgstr ""
#: editor/project_manager.cpp
@@ -5960,19 +5554,24 @@ msgid "Create New Project"
msgstr ""
#: editor/project_manager.cpp
-msgid "Project Path:"
+msgid "Install Project:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Install Project:"
+msgid "Project Name:"
msgstr ""
#: editor/project_manager.cpp
-msgid "Browse"
+#, fuzzy
+msgid "Create folder"
+msgstr "新增資料夾"
+
+#: editor/project_manager.cpp
+msgid "Project Path:"
msgstr ""
#: editor/project_manager.cpp
-msgid "New Game Project"
+msgid "Browse"
msgstr ""
#: editor/project_manager.cpp
@@ -5984,6 +5583,11 @@ msgid "Unnamed Project"
msgstr ""
#: editor/project_manager.cpp
+#, fuzzy
+msgid "Can't open project"
+msgstr "連接..."
+
+#: editor/project_manager.cpp
msgid "Are you sure to open more than one project?"
msgstr ""
@@ -6010,16 +5614,18 @@ msgstr ""
#: editor/project_manager.cpp
msgid ""
-"You are about the scan %s folders for existing Godot projects. Do you "
-"confirm?"
+"Language changed.\n"
+"The UI will update next time the editor or project manager starts."
msgstr ""
#: editor/project_manager.cpp
-msgid "Project List"
+msgid ""
+"You are about the scan %s folders for existing Godot projects. Do you "
+"confirm?"
msgstr ""
#: editor/project_manager.cpp
-msgid "Run"
+msgid "Project List"
msgstr ""
#: editor/project_manager.cpp
@@ -6043,6 +5649,10 @@ msgid "Exit"
msgstr ""
#: editor/project_manager.cpp
+msgid "Restart Now"
+msgstr ""
+
+#: editor/project_manager.cpp
#, fuzzy
msgid "Can't run project"
msgstr "連接..."
@@ -6080,17 +5690,14 @@ msgid "Add Input Action Event"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Meta+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Shift+"
msgstr ""
#: editor/project_settings_editor.cpp editor/settings_config_dialog.cpp
-#: scene/gui/input_action.cpp
msgid "Alt+"
msgstr ""
@@ -6151,7 +5758,7 @@ msgstr ""
msgid "Joypad Axis Index:"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Axis"
msgstr ""
@@ -6171,31 +5778,31 @@ msgstr ""
msgid "Add Event"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Device"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Button"
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Left Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Right Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Middle Button."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Up."
msgstr ""
-#: editor/project_settings_editor.cpp scene/gui/input_action.cpp
+#: editor/project_settings_editor.cpp
msgid "Wheel Down."
msgstr ""
@@ -6204,7 +5811,7 @@ msgid "Add Global Property"
msgstr ""
#: editor/project_settings_editor.cpp
-msgid "Select an setting item first!"
+msgid "Select a setting item first!"
msgstr ""
#: editor/project_settings_editor.cpp
@@ -6221,6 +5828,14 @@ msgid "Delete Item"
msgstr "刪除"
#: editor/project_settings_editor.cpp
+msgid "Can't contain '/' or ':'"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Already existing"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "Error saving settings."
msgstr ""
@@ -6262,6 +5877,15 @@ msgstr ""
#: editor/project_settings_editor.cpp
#, fuzzy
+msgid "Changed Locale Filter"
+msgstr "變更é¡é ­å°ºå¯¸"
+
+#: editor/project_settings_editor.cpp
+msgid "Changed Locale Filter Mode"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
msgid "Project Settings (project.godot)"
msgstr "專案設定"
@@ -6322,6 +5946,27 @@ msgid "Locale"
msgstr ""
#: editor/project_settings_editor.cpp
+msgid "Locales Filter"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show all locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+msgid "Show only selected locales"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
+#, fuzzy
+msgid "Filter mode:"
+msgstr "éŽæ¿¾æª”案.."
+
+#: editor/project_settings_editor.cpp
+msgid "Locales:"
+msgstr ""
+
+#: editor/project_settings_editor.cpp
msgid "AutoLoad"
msgstr ""
@@ -6370,10 +6015,19 @@ msgid "New Script"
msgstr ""
#: editor/property_editor.cpp
+msgid "Make Unique"
+msgstr ""
+
+#: editor/property_editor.cpp
msgid "Show in File System"
msgstr ""
#: editor/property_editor.cpp
+#, fuzzy
+msgid "Convert To %s"
+msgstr "è½‰æ›æˆ.."
+
+#: editor/property_editor.cpp
msgid "Error loading file: Not a resource!"
msgstr ""
@@ -6410,6 +6064,10 @@ msgid "Select Property"
msgstr ""
#: editor/property_selector.cpp
+msgid "Select Virtual Method"
+msgstr ""
+
+#: editor/property_selector.cpp
msgid "Select Method"
msgstr ""
@@ -6437,26 +6095,6 @@ msgstr ""
msgid "Reparent"
msgstr ""
-#: editor/resources_dock.cpp
-msgid "Create New Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Open Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Save Resource"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Resource Tools"
-msgstr ""
-
-#: editor/resources_dock.cpp
-msgid "Make Local"
-msgstr ""
-
#: editor/run_settings_dialog.cpp
msgid "Run Mode:"
msgstr ""
@@ -6583,14 +6221,6 @@ msgid "Sub-Resources:"
msgstr ""
#: editor/scene_tree_dock.cpp
-msgid "Edit Groups"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
-msgid "Edit Connections"
-msgstr ""
-
-#: editor/scene_tree_dock.cpp
msgid "Clear Inheritance"
msgstr ""
@@ -6775,6 +6405,15 @@ msgid "Invalid base path"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Directory of the same name exists"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
+#, fuzzy
+msgid "File exists, will be reused"
+msgstr "檔案已經存在, è¦è¦†å¯«å—Ž?"
+
+#: editor/script_create_dialog.cpp
msgid "Invalid extension"
msgstr ""
@@ -6816,6 +6455,10 @@ msgid "Load existing script file"
msgstr ""
#: editor/script_create_dialog.cpp
+msgid "Language"
+msgstr ""
+
+#: editor/script_create_dialog.cpp
msgid "Inherits"
msgstr ""
@@ -6856,6 +6499,10 @@ msgid "Function:"
msgstr ""
#: editor/script_editor_debugger.cpp
+msgid "Pick one or more items from the list to display the graph."
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Errors"
msgstr ""
@@ -6938,6 +6585,10 @@ msgid "Type"
msgstr "類型"
#: editor/script_editor_debugger.cpp
+msgid "Format"
+msgstr ""
+
+#: editor/script_editor_debugger.cpp
msgid "Usage"
msgstr "使用é‡"
@@ -7016,12 +6667,28 @@ msgstr ""
msgid "Change Probe Extents"
msgstr "變更框型範åœ"
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Library"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Status"
+msgstr ""
+
+#: modules/gdnative/gd_native_library_editor.cpp
+msgid "Libraries: "
+msgstr ""
+
+#: modules/gdnative/register_types.cpp
+msgid "GDNative"
+msgstr ""
+
#: modules/gdscript/gd_functions.cpp
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Invalid type argument to convert(), use TYPE_* constants."
msgstr ""
-#: modules/gdscript/gd_functions.cpp
+#: modules/gdscript/gd_functions.cpp modules/mono/glue/glue_header.h
#: modules/visual_script/visual_script_builtin_funcs.cpp
msgid "Not enough bytes for decoding bytes, or invalid format."
msgstr "解碼字節ä½å…ƒä¸è¶³ï¼Œæˆ–為無效格å¼ã€‚"
@@ -7078,10 +6745,6 @@ msgid "GridMap Duplicate Selection"
msgstr "複製所é¸"
#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "GridMap Paint"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
msgid "Snap View"
msgstr ""
@@ -7178,12 +6841,8 @@ msgstr "專案設定"
msgid "Pick Distance:"
msgstr ""
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Tiles"
-msgstr ""
-
-#: modules/gridmap/grid_map_editor_plugin.cpp
-msgid "Areas"
+#: modules/mono/editor/mono_bottom_panel.cpp
+msgid "Builds"
msgstr ""
#: modules/visual_script/visual_script.cpp
@@ -7377,10 +7036,18 @@ msgid "Return"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Call"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Get"
msgstr ""
#: modules/visual_script/visual_script_editor.cpp
+msgid "Script already has function '%s'"
+msgstr ""
+
+#: modules/visual_script/visual_script_editor.cpp
msgid "Change Input Value"
msgstr ""
@@ -7740,6 +7407,12 @@ msgid ""
"order for AnimatedSprite3D to display frames."
msgstr ""
+#: scene/3d/vehicle_body.cpp
+msgid ""
+"VehicleWheel serves to provide a wheel system to a VehicleBody. Please use "
+"it as a child of a VehicleBody."
+msgstr ""
+
#: scene/gui/color_picker.cpp
msgid "Raw Mode"
msgstr ""
@@ -7749,6 +7422,10 @@ msgid "Add current color as a preset"
msgstr ""
#: scene/gui/dialogs.cpp
+msgid "Cancel"
+msgstr ""
+
+#: scene/gui/dialogs.cpp
msgid "Alert!"
msgstr ""
@@ -7756,10 +7433,6 @@ msgstr ""
msgid "Please Confirm..."
msgstr ""
-#: scene/gui/input_action.cpp
-msgid "Ctrl+"
-msgstr "Ctrl+"
-
#: scene/gui/popup.cpp
msgid ""
"Popups will hide by default unless you call popup() or any of the popup*() "
@@ -7788,6 +7461,40 @@ msgid ""
"texture to some node for display."
msgstr ""
+#: scene/resources/dynamic_font.cpp
+msgid "Error initializing FreeType."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Unknown font format."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Error loading font."
+msgstr ""
+
+#: scene/resources/dynamic_font.cpp
+msgid "Invalid font size."
+msgstr ""
+
+#~ msgid "Filter:"
+#~ msgstr "éŽæ¿¾å™¨:"
+
+#~ msgid "Arguments:"
+#~ msgstr "è¼¸å…¥åƒæ•¸"
+
+#~ msgid "Return:"
+#~ msgstr "回傳值:"
+
+#~ msgid "Added:"
+#~ msgstr "已新增:"
+
+#~ msgid "Removed:"
+#~ msgstr "已刪除:"
+
+#~ msgid "Ctrl+"
+#~ msgstr "Ctrl+"
+
#~ msgid "Close scene? (Unsaved changes will be lost)"
#~ msgstr "沒有儲存的變更都會éºå¤±, 確定è¦é—œé–‰?"
diff --git a/main/SCsub b/main/SCsub
index 1f97cd1be0..ae63b94864 100644
--- a/main/SCsub
+++ b/main/SCsub
@@ -16,7 +16,7 @@ def make_splash(target, source, env):
g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
g.write("#ifndef BOOT_SPLASH_H\n")
g.write("#define BOOT_SPLASH_H\n")
- g.write("static const Color boot_splash_bg_color = Color(1,1,1,1);\n")
+ g.write('static const Color boot_splash_bg_color = Color::html("#232323");\n')
g.write("static const unsigned char boot_splash_png[] = {\n")
for i in range(len(buf)):
g.write(byte_to_str(buf[i]) + ",\n")
diff --git a/main/main.cpp b/main/main.cpp
index c6d3c3f15c..deffb3a632 100644
--- a/main/main.cpp
+++ b/main/main.cpp
@@ -45,6 +45,7 @@
#include "input_map.h"
#include "io/resource_loader.h"
#include "scene/main/scene_tree.h"
+#include "servers/arvr_server.h"
#include "servers/audio_server.h"
#include "io/resource_loader.h"
@@ -82,6 +83,7 @@ static InputMap *input_map = NULL;
static bool _start_success = false;
static ScriptDebugger *script_debugger = NULL;
AudioServer *audio_server = NULL;
+ARVRServer *arvr_server = NULL;
static MessageQueue *message_queue = NULL;
static Performance *performance = NULL;
@@ -162,6 +164,7 @@ void Main::print_help(const char *p_binary) {
#endif
OS::get_singleton()->print(" -l, --language <locale> Use a specific locale (<locale> being a two-letter code).\n");
OS::get_singleton()->print(" --path <directory> Path to a project (<directory> must contain a 'project.godot' file).\n");
+ OS::get_singleton()->print(" -u, --upwards Scan folders upwards for project.godot file.\n");
OS::get_singleton()->print(" --main-pack <file> Path to a pack (.pck) file to load.\n");
OS::get_singleton()->print(" --render-thread <mode> Render thread mode ('unsafe', 'safe', 'separate').\n");
OS::get_singleton()->print(" --remote-fs <address> Remote filesystem (<host/IP>[:<port>] address).\n");
@@ -290,6 +293,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
String video_driver = "";
String audio_driver = "";
String game_path = ".";
+ bool upwards = false;
String debug_mode;
String debug_host;
String main_pack;
@@ -498,6 +502,8 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
OS::get_singleton()->print("Missing relative or absolute path, aborting.\n");
goto error;
}
+ } else if (I->get() == "-u" || I->get() == "--upwards") { // scan folders upwards
+ upwards = true;
} else if (I->get().ends_with("project.godot")) {
String path;
String file = I->get();
@@ -695,7 +701,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
#endif
- if (globals->setup(game_path, main_pack) != OK) {
+ if (globals->setup(game_path, main_pack, upwards) != OK) {
#ifdef TOOLS_ENABLED
editor = false;
@@ -935,11 +941,14 @@ Error Main::setup2(Thread::ID p_main_tid_override) {
OS::get_singleton()->set_window_position(init_custom_pos);
}
- //right moment to create and initialize the audio server
+ // right moment to create and initialize the audio server
audio_server = memnew(AudioServer);
audio_server->init();
+ // also init our arvr_server from here
+ arvr_server = memnew(ARVRServer);
+
OS::get_singleton()->set_use_vsync(use_vsync);
register_core_singletons();
@@ -1341,7 +1350,7 @@ bool Main::start() {
String stretch_mode = GLOBAL_DEF("display/window/stretch/mode", "disabled");
String stretch_aspect = GLOBAL_DEF("display/window/stretch/aspect", "ignore");
Size2i stretch_size = Size2(GLOBAL_DEF("display/window/size/width", 0), GLOBAL_DEF("display/window/size/height", 0));
- int stretch_shrink = GLOBAL_DEF("display/window/stretch/shrink", 1);
+ real_t stretch_shrink = GLOBAL_DEF("display/window/stretch/shrink", 1.0f);
SceneTree::StretchMode sml_sm = SceneTree::STRETCH_MODE_DISABLED;
if (stretch_mode == "2d")
@@ -1624,7 +1633,7 @@ bool Main::iteration() {
while (time_accum > frame_slice) {
- uint64_t fixed_begin = OS::get_singleton()->get_ticks_usec();
+ uint64_t physics_begin = OS::get_singleton()->get_ticks_usec();
PhysicsServer::get_singleton()->sync();
PhysicsServer::get_singleton()->flush_queries();
@@ -1647,8 +1656,8 @@ bool Main::iteration() {
time_accum -= frame_slice;
message_queue->flush();
- physics_process_ticks = MAX(physics_process_ticks, OS::get_singleton()->get_ticks_usec() - fixed_begin); // keep the largest one for reference
- physics_process_max = MAX(OS::get_singleton()->get_ticks_usec() - fixed_begin, physics_process_max);
+ physics_process_ticks = MAX(physics_process_ticks, OS::get_singleton()->get_ticks_usec() - physics_begin); // keep the largest one for reference
+ physics_process_max = MAX(OS::get_singleton()->get_ticks_usec() - physics_begin, physics_process_max);
iters++;
Engine::get_singleton()->_physics_frames++;
}
@@ -1771,6 +1780,11 @@ void Main::cleanup() {
memdelete(audio_server);
}
+ if (arvr_server) {
+ // cleanup now before we pull the rug from underneath...
+ memdelete(arvr_server);
+ }
+
unregister_driver_types();
unregister_module_types();
unregister_scene_types();
diff --git a/main/performance.cpp b/main/performance.cpp
index 0f3383c4a8..39b42e803c 100644
--- a/main/performance.cpp
+++ b/main/performance.cpp
@@ -57,10 +57,10 @@ void Performance::_bind_methods() {
BIND_ENUM_CONSTANT(RENDER_SHADER_CHANGES_IN_FRAME);
BIND_ENUM_CONSTANT(RENDER_SURFACE_CHANGES_IN_FRAME);
BIND_ENUM_CONSTANT(RENDER_DRAW_CALLS_IN_FRAME);
- BIND_ENUM_CONSTANT(RENDER_USAGE_VIDEO_MEM_TOTAL);
BIND_ENUM_CONSTANT(RENDER_VIDEO_MEM_USED);
BIND_ENUM_CONSTANT(RENDER_TEXTURE_MEM_USED);
BIND_ENUM_CONSTANT(RENDER_VERTEX_MEM_USED);
+ BIND_ENUM_CONSTANT(RENDER_USAGE_VIDEO_MEM_TOTAL);
BIND_ENUM_CONSTANT(PHYSICS_2D_ACTIVE_OBJECTS);
BIND_ENUM_CONSTANT(PHYSICS_2D_COLLISION_PAIRS);
BIND_ENUM_CONSTANT(PHYSICS_2D_ISLAND_COUNT);
@@ -153,6 +153,44 @@ float Performance::get_monitor(Monitor p_monitor) const {
return 0;
}
+Performance::MonitorType Performance::get_monitor_type(Monitor p_monitor) const {
+ ERR_FAIL_INDEX_V(p_monitor, MONITOR_MAX, MONITOR_TYPE_QUANTITY);
+ // ugly
+ static const MonitorType types[MONITOR_MAX] = {
+
+ MONITOR_TYPE_QUANTITY,
+ MONITOR_TYPE_TIME,
+ MONITOR_TYPE_TIME,
+ MONITOR_TYPE_MEMORY,
+ MONITOR_TYPE_MEMORY,
+ MONITOR_TYPE_MEMORY,
+ MONITOR_TYPE_MEMORY,
+ MONITOR_TYPE_MEMORY,
+ MONITOR_TYPE_QUANTITY,
+ MONITOR_TYPE_QUANTITY,
+ MONITOR_TYPE_QUANTITY,
+ MONITOR_TYPE_QUANTITY,
+ MONITOR_TYPE_QUANTITY,
+ MONITOR_TYPE_QUANTITY,
+ MONITOR_TYPE_QUANTITY,
+ MONITOR_TYPE_QUANTITY,
+ MONITOR_TYPE_QUANTITY,
+ MONITOR_TYPE_MEMORY,
+ MONITOR_TYPE_MEMORY,
+ MONITOR_TYPE_MEMORY,
+ MONITOR_TYPE_MEMORY,
+ MONITOR_TYPE_QUANTITY,
+ MONITOR_TYPE_QUANTITY,
+ MONITOR_TYPE_QUANTITY,
+ MONITOR_TYPE_QUANTITY,
+ MONITOR_TYPE_QUANTITY,
+ MONITOR_TYPE_QUANTITY,
+
+ };
+
+ return types[p_monitor];
+}
+
void Performance::set_process_time(float p_pt) {
_process_time = p_pt;
diff --git a/main/performance.h b/main/performance.h
index 900e6434b7..21fbd7a1d2 100644
--- a/main/performance.h
+++ b/main/performance.h
@@ -79,9 +79,17 @@ public:
MONITOR_MAX
};
+ enum MonitorType {
+ MONITOR_TYPE_QUANTITY,
+ MONITOR_TYPE_MEMORY,
+ MONITOR_TYPE_TIME
+ };
+
float get_monitor(Monitor p_monitor) const;
String get_monitor_name(Monitor p_monitor) const;
+ MonitorType get_monitor_type(Monitor p_monitor) const;
+
void set_process_time(float p_pt);
void set_physics_process_time(float p_pt);
diff --git a/main/splash.png b/main/splash.png
index 894a7d7aba..34be46557f 100644
--- a/main/splash.png
+++ b/main/splash.png
Binary files differ
diff --git a/methods.py b/methods.py
index b56a0364b5..b62dfc6544 100644
--- a/methods.py
+++ b/methods.py
@@ -1710,9 +1710,13 @@ def generate_vs_project(env, num_jobs):
env.AddToVSProject(env.servers_sources)
env.AddToVSProject(env.editor_sources)
- env['MSVSBUILDCOM'] = build_commandline('scons --directory=$(ProjectDir) platform=windows target=$(Configuration) tools=!tools! -j' + str(num_jobs))
- env['MSVSREBUILDCOM'] = build_commandline('scons --directory=$(ProjectDir) platform=windows target=$(Configuration) tools=!tools! vsproj=yes -j' + str(num_jobs))
- env['MSVSCLEANCOM'] = build_commandline('scons --directory=$(ProjectDir) --clean platform=windows target=$(Configuration) tools=!tools! -j' + str(num_jobs))
+ # windows allows us to have spaces in paths, so we need
+ # to double quote off the directory. However, the path ends
+ # in a backslash, so we need to remove this, lest it escape the
+ # last double quote off, confusing MSBuild
+ env['MSVSBUILDCOM'] = build_commandline('scons --directory="$(ProjectDir.TrimEnd(\'\\\'))" platform=windows target=$(Configuration) tools=!tools! -j' + str(num_jobs))
+ env['MSVSREBUILDCOM'] = build_commandline('scons --directory="$(ProjectDir.TrimEnd(\'\\\'))" platform=windows target=$(Configuration) tools=!tools! vsproj=yes -j' + str(num_jobs))
+ env['MSVSCLEANCOM'] = build_commandline('scons --directory="$(ProjectDir.TrimEnd(\'\\\'))" --clean platform=windows target=$(Configuration) tools=!tools! -j' + str(num_jobs))
# This version information (Win32, x64, Debug, Release, Release_Debug seems to be
# required for Visual Studio to understand that it needs to generate an NMAKE
diff --git a/misc/dist/ios_xcode/godot_ios.xcodeproj/xcshareddata/xcschemes/godot_ios.xcscheme b/misc/dist/ios_xcode/godot_ios.xcodeproj/xcshareddata/xcschemes/godot_ios.xcscheme
index 3f0df5c437..b6beeb012f 100644
--- a/misc/dist/ios_xcode/godot_ios.xcodeproj/xcshareddata/xcschemes/godot_ios.xcscheme
+++ b/misc/dist/ios_xcode/godot_ios.xcodeproj/xcshareddata/xcschemes/godot_ios.xcscheme
@@ -23,7 +23,7 @@
</BuildActionEntries>
</BuildAction>
<TestAction
- buildConfiguration = "Development"
+ buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
@@ -42,7 +42,7 @@
</AdditionalOptions>
</TestAction>
<LaunchAction
- buildConfiguration = "Development"
+ buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
@@ -67,7 +67,7 @@
</AdditionalOptions>
</LaunchAction>
<ProfileAction
- buildConfiguration = "Development"
+ buildConfiguration = "Debug"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
@@ -84,10 +84,10 @@
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
- buildConfiguration = "Development">
+ buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
- buildConfiguration = "Development"
+ buildConfiguration = "Debug"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
diff --git a/modules/gdnative/SCsub b/modules/gdnative/SCsub
index 6592d0ae1d..a6ae143947 100644
--- a/modules/gdnative/SCsub
+++ b/modules/gdnative/SCsub
@@ -12,6 +12,9 @@ gdn_env.add_source_files(env.modules_sources, "nativescript/*.cpp")
gdn_env.Append(CPPPATH=['#modules/gdnative/include/'])
+SConscript("nativearvr/SCsub")
+SConscript("pluginscript/SCsub")
+
def _spaced(e):
return e if e[-1] == '*' else e + ' '
@@ -22,7 +25,9 @@ def _build_gdnative_api_struct_header(api):
'#define GODOT_GDNATIVE_API_STRUCT_H',
'',
'#include <gdnative/gdnative.h>',
+ '#include <nativearvr/godot_nativearvr.h>',
'#include <nativescript/godot_nativescript.h>',
+ '#include <pluginscript/godot_pluginscript.h>',
'',
'#define GDNATIVE_API_INIT(options) do { extern const godot_gdnative_api_struct *_gdnative_wrapper_api_struct; _gdnative_wrapper_api_struct = options->api_struct; } while (0)',
'',
@@ -95,6 +100,7 @@ def _build_gdnative_wrapper_code(api):
'',
'#include <gdnative/gdnative.h>',
'#include <nativescript/godot_nativescript.h>',
+ '#include <pluginscript/godot_pluginscript.h>',
'',
'#include <gdnative_api_struct.gen.h>',
'',
diff --git a/modules/gdnative/config.py b/modules/gdnative/config.py
index 9f57b9bb74..df3556249d 100644
--- a/modules/gdnative/config.py
+++ b/modules/gdnative/config.py
@@ -1,8 +1,12 @@
-
def can_build(platform):
return True
-
def configure(env):
env.use_ptrcall = True
+
+def get_doc_classes():
+ return ["GDNative", "GDNativeLibrary", "NativeScript", "ARVRInterfaceGDNative"]
+
+def get_doc_path():
+ return "doc_classes"
diff --git a/modules/gdnative/doc_classes/ARVRInterfaceGDNative.xml b/modules/gdnative/doc_classes/ARVRInterfaceGDNative.xml
new file mode 100644
index 0000000000..308a7d5946
--- /dev/null
+++ b/modules/gdnative/doc_classes/ARVRInterfaceGDNative.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<class name="ARVRInterfaceGDNative" inherits="ARVRInterface" category="Core" version="3.0.alpha.custom_build">
+ <brief_description>
+ GDNative wrapper for an ARVR interface
+ </brief_description>
+ <description>
+ This is a wrapper class for GDNative implementations of the ARVR interface. To use a GDNative ARVR interface simply instantiate this object and set your GDNative library containing the ARVR interface implementation.
+ </description>
+ <tutorials>
+ </tutorials>
+ <demos>
+ </demos>
+ <methods>
+ </methods>
+ <constants>
+ </constants>
+</class>
diff --git a/doc/classes/GDNative.xml b/modules/gdnative/doc_classes/GDNative.xml
index ba813c4564..83a1cf06f0 100644
--- a/doc/classes/GDNative.xml
+++ b/modules/gdnative/doc_classes/GDNative.xml
@@ -12,11 +12,11 @@
<method name="call_native">
<return type="Variant">
</return>
- <argument index="0" name="procedure_name" type="String">
+ <argument index="0" name="calling_type" type="String">
</argument>
- <argument index="1" name="arguments" type="String">
+ <argument index="1" name="procedure_name" type="String">
</argument>
- <argument index="2" name="arg2" type="Array">
+ <argument index="2" name="arguments" type="Array">
</argument>
<description>
</description>
diff --git a/doc/classes/GDNativeLibrary.xml b/modules/gdnative/doc_classes/GDNativeLibrary.xml
index c3561856cc..361c89e6b3 100644
--- a/doc/classes/GDNativeLibrary.xml
+++ b/modules/gdnative/doc_classes/GDNativeLibrary.xml
@@ -9,6 +9,12 @@
<demos>
</demos>
<methods>
+ <method name="get_active_library_path" qualifiers="const">
+ <return type="String">
+ </return>
+ <description>
+ </description>
+ </method>
<method name="get_library_path" qualifiers="const">
<return type="String">
</return>
diff --git a/doc/classes/NativeScript.xml b/modules/gdnative/doc_classes/NativeScript.xml
index b040cfd966..b040cfd966 100644
--- a/doc/classes/NativeScript.xml
+++ b/modules/gdnative/doc_classes/NativeScript.xml
diff --git a/modules/gdnative/gdnative.cpp b/modules/gdnative/gdnative.cpp
index 373b98dc8b..3fc04a5498 100644
--- a/modules/gdnative/gdnative.cpp
+++ b/modules/gdnative/gdnative.cpp
@@ -199,10 +199,7 @@ void GDNative::_bind_methods() {
ClassDB::bind_method(D_METHOD("initialize"), &GDNative::initialize);
ClassDB::bind_method(D_METHOD("terminate"), &GDNative::terminate);
- // TODO(karroffel): get_native_(raw_)call_types binding?
-
- // TODO(karroffel): make this a varargs function?
- ClassDB::bind_method(D_METHOD("call_native", "procedure_name", "arguments"), &GDNative::call_native);
+ ClassDB::bind_method(D_METHOD("call_native", "calling_type", "procedure_name", "arguments"), &GDNative::call_native);
ADD_PROPERTYNZ(PropertyInfo(Variant::OBJECT, "library", PROPERTY_HINT_RESOURCE_TYPE, "GDNativeLibrary"), "set_library", "get_library");
}
@@ -239,10 +236,7 @@ bool GDNative::initialize() {
}
void *library_init;
- err = OS::get_singleton()->get_dynamic_library_symbol_handle(
- native_handle,
- init_symbol,
- library_init);
+ err = get_symbol(init_symbol, library_init);
if (err || !library_init) {
OS::get_singleton()->close_dynamic_library(native_handle);
@@ -277,11 +271,8 @@ bool GDNative::terminate() {
}
void *library_terminate;
- Error error = OS::get_singleton()->get_dynamic_library_symbol_handle(
- native_handle,
- terminate_symbol,
- library_terminate);
- if (error) {
+ Error error = get_symbol(terminate_symbol, library_terminate);
+ if (error || !library_terminate) {
OS::get_singleton()->close_dynamic_library(native_handle);
native_handle = NULL;
return true;
@@ -313,10 +304,6 @@ void GDNativeCallRegistry::register_native_call_type(StringName p_call_type, nat
native_calls.insert(p_call_type, p_callback);
}
-void GDNativeCallRegistry::register_native_raw_call_type(StringName p_raw_call_type, native_raw_call_cb p_callback) {
- native_raw_calls.insert(p_raw_call_type, p_callback);
-}
-
Vector<StringName> GDNativeCallRegistry::get_native_call_types() {
Vector<StringName> call_types;
call_types.resize(native_calls.size());
@@ -329,18 +316,6 @@ Vector<StringName> GDNativeCallRegistry::get_native_call_types() {
return call_types;
}
-Vector<StringName> GDNativeCallRegistry::get_native_raw_call_types() {
- Vector<StringName> call_types;
- call_types.resize(native_raw_calls.size());
-
- size_t idx = 0;
- for (Map<StringName, native_raw_call_cb>::Element *E = native_raw_calls.front(); E; E = E->next(), idx++) {
- call_types[idx] = E->key();
- }
-
- return call_types;
-}
-
Variant GDNative::call_native(StringName p_native_call_type, StringName p_procedure_name, Array p_arguments) {
Map<StringName, native_call_cb>::Element *E = GDNativeCallRegistry::singleton->native_calls.find(p_native_call_type);
@@ -349,20 +324,34 @@ Variant GDNative::call_native(StringName p_native_call_type, StringName p_proced
return Variant();
}
- String procedure_name = p_procedure_name;
- godot_variant result = E->get()(native_handle, (godot_string *)&procedure_name, (godot_array *)&p_arguments);
+ void *procedure_handle;
+
+ Error err = OS::get_singleton()->get_dynamic_library_symbol_handle(
+ native_handle,
+ p_procedure_name,
+ procedure_handle);
+
+ if (err != OK || procedure_handle == NULL) {
+ return Variant();
+ }
+
+ godot_variant result = E->get()(procedure_handle, (godot_array *)&p_arguments);
return *(Variant *)&result;
}
-void GDNative::call_native_raw(StringName p_raw_call_type, StringName p_procedure_name, void *data, int num_args, void **args, void *r_return) {
+Error GDNative::get_symbol(StringName p_procedure_name, void *&r_handle) {
- Map<StringName, native_raw_call_cb>::Element *E = GDNativeCallRegistry::singleton->native_raw_calls.find(p_raw_call_type);
- if (!E) {
- ERR_PRINT((String("No handler for native raw call type \"" + p_raw_call_type) + "\" found").utf8().get_data());
- return;
+ if (native_handle == NULL) {
+ ERR_PRINT("No valid library handle, can't get symbol from GDNative object");
+ return ERR_CANT_OPEN;
}
- String procedure_name = p_procedure_name;
- E->get()(native_handle, (godot_string *)&procedure_name, data, num_args, args, r_return);
+ Error result = OS::get_singleton()->get_dynamic_library_symbol_handle(
+ native_handle,
+ p_procedure_name,
+ r_handle,
+ true);
+
+ return result;
}
diff --git a/modules/gdnative/gdnative.h b/modules/gdnative/gdnative.h
index 7bbad842eb..e44cc55a79 100644
--- a/modules/gdnative/gdnative.h
+++ b/modules/gdnative/gdnative.h
@@ -100,8 +100,7 @@ public:
_FORCE_INLINE_ void set_singleton_gdnative(bool p_singleton) { singleton_gdnative = p_singleton; }
};
-typedef godot_variant (*native_call_cb)(void *, godot_string *, godot_array *);
-typedef void (*native_raw_call_cb)(void *, godot_string *, void *, int, void **, void *);
+typedef godot_variant (*native_call_cb)(void *, godot_array *);
struct GDNativeCallRegistry {
static GDNativeCallRegistry *singleton;
@@ -111,17 +110,13 @@ struct GDNativeCallRegistry {
}
inline GDNativeCallRegistry()
- : native_calls(),
- native_raw_calls() {}
+ : native_calls() {}
Map<StringName, native_call_cb> native_calls;
- Map<StringName, native_raw_call_cb> native_raw_calls;
void register_native_call_type(StringName p_call_type, native_call_cb p_callback);
- void register_native_raw_call_type(StringName p_raw_call_type, native_raw_call_cb p_callback);
Vector<StringName> get_native_call_types();
- Vector<StringName> get_native_raw_call_types();
};
class GDNative : public Reference {
@@ -149,7 +144,8 @@ public:
bool terminate();
Variant call_native(StringName p_native_call_type, StringName p_procedure_name, Array p_arguments = Array());
- void call_native_raw(StringName p_raw_call_type, StringName p_procedure_name, void *data, int num_args, void **args, void *r_return);
+
+ Error get_symbol(StringName p_procedure_name, void *&r_handle);
};
#endif // GDNATIVE_H
diff --git a/modules/gdnative/gdnative/string.cpp b/modules/gdnative/gdnative/string.cpp
index 9b715ce36a..905c513d9d 100644
--- a/modules/gdnative/gdnative/string.cpp
+++ b/modules/gdnative/gdnative/string.cpp
@@ -29,9 +29,9 @@
/*************************************************************************/
#include "gdnative/string.h"
+#include "core/string_db.h"
+#include "core/ustring.h"
#include "core/variant.h"
-#include "string_db.h"
-#include "ustring.h"
#include <string.h>
diff --git a/modules/gdnative/gdnative_api.json b/modules/gdnative/gdnative_api.json
index 4d3c024a8f..31b021b751 100644
--- a/modules/gdnative/gdnative_api.json
+++ b/modules/gdnative/gdnative_api.json
@@ -5229,6 +5229,85 @@
"arguments": [
["godot_object *", "p_instance"]
]
+ },
+ {
+ "name": "godot_arvr_register_interface",
+ "return_type": "void",
+ "arguments": [
+ ["const godot_arvr_interface_gdnative *", "p_interface"]
+ ]
+ },
+ {
+ "name": "godot_arvr_get_worldscale",
+ "return_type": "godot_real",
+ "arguments": []
+ },
+ {
+ "name": "godot_arvr_get_reference_frame",
+ "return_type": "godot_transform",
+ "arguments": []
+ },
+ {
+ "name": "godot_arvr_blit",
+ "return_type": "void",
+ "arguments": [
+ ["int", "p_eye"],
+ ["godot_rid *", "p_render_target"],
+ ["godot_rect2 *", "p_screen_rect"]
+ ]
+ },
+ {
+ "name": "godot_arvr_get_texid",
+ "return_type": "godot_int",
+ "arguments": [
+ ["godot_rid *", "p_render_target"]
+ ]
+ },
+ {
+ "name": "godot_arvr_add_controller",
+ "return_type": "godot_int",
+ "arguments": [
+ ["char *", "p_device_name"],
+ ["godot_int", "p_hand"],
+ ["godot_bool", "p_tracks_orientation"],
+ ["godot_bool", "p_tracks_position"]
+ ]
+ },
+ {
+ "name": "godot_arvr_remove_controller",
+ "return_type": "void",
+ "arguments": [
+ ["godot_int", "p_controller_id"]
+ ]
+ },
+ {
+ "name": "godot_arvr_set_controller_transform",
+ "return_type": "void",
+ "arguments": [
+ ["godot_int", "p_controller_id"],
+ ["godot_transform *", "p_transform"],
+ ["godot_bool", "p_tracks_orientation"],
+ ["godot_bool", "p_tracks_position"]
+ ]
+ },
+ {
+ "name": "godot_arvr_set_controller_button",
+ "return_type": "void",
+ "arguments": [
+ ["godot_int", "p_controller_id"],
+ ["godot_int", "p_button"],
+ ["godot_bool", "p_is_pressed"]
+ ]
+ },
+ {
+ "name": "godot_arvr_set_controller_axis",
+ "return_type": "void",
+ "arguments": [
+ ["godot_int", "p_controller_id"],
+ ["godot_int", "p_exis"],
+ ["godot_real", "p_value"],
+ ["godot_bool", "p_can_be_negative"]
+ ]
}
]
}
diff --git a/modules/gdnative/include/gdnative/array.h b/modules/gdnative/include/gdnative/array.h
index edab028cba..d0639589b7 100644
--- a/modules/gdnative/include/gdnative/array.h
+++ b/modules/gdnative/include/gdnative/array.h
@@ -46,11 +46,20 @@ typedef struct {
} godot_array;
#endif
+// reduce extern "C" nesting for VS2013
+#ifdef __cplusplus
+}
+#endif
+
#include <gdnative/pool_arrays.h>
#include <gdnative/variant.h>
#include <gdnative/gdnative.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
void GDAPI godot_array_new(godot_array *r_dest);
void GDAPI godot_array_new_copy(godot_array *r_dest, const godot_array *p_src);
void GDAPI godot_array_new_pool_color_array(godot_array *r_dest, const godot_pool_color_array *p_pca);
diff --git a/modules/gdnative/include/gdnative/basis.h b/modules/gdnative/include/gdnative/basis.h
index 8ff6a6f541..b86b1c17d8 100644
--- a/modules/gdnative/include/gdnative/basis.h
+++ b/modules/gdnative/include/gdnative/basis.h
@@ -45,10 +45,19 @@ typedef struct {
} godot_basis;
#endif
+// reduce extern "C" nesting for VS2013
+#ifdef __cplusplus
+}
+#endif
+
#include <gdnative/gdnative.h>
#include <gdnative/quat.h>
#include <gdnative/vector3.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
void GDAPI godot_basis_new_with_rows(godot_basis *r_dest, const godot_vector3 *p_x_axis, const godot_vector3 *p_y_axis, const godot_vector3 *p_z_axis);
void GDAPI godot_basis_new_with_axis_and_angle(godot_basis *r_dest, const godot_vector3 *p_axis, const godot_real p_phi);
void GDAPI godot_basis_new_with_euler(godot_basis *r_dest, const godot_vector3 *p_euler);
diff --git a/modules/gdnative/include/gdnative/color.h b/modules/gdnative/include/gdnative/color.h
index 14265466b9..857e86a738 100644
--- a/modules/gdnative/include/gdnative/color.h
+++ b/modules/gdnative/include/gdnative/color.h
@@ -45,9 +45,18 @@ typedef struct {
} godot_color;
#endif
+// reduce extern "C" nesting for VS2013
+#ifdef __cplusplus
+}
+#endif
+
#include <gdnative/gdnative.h>
#include <gdnative/string.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
void GDAPI godot_color_new_rgba(godot_color *r_dest, const godot_real p_r, const godot_real p_g, const godot_real p_b, const godot_real p_a);
void GDAPI godot_color_new_rgb(godot_color *r_dest, const godot_real p_r, const godot_real p_g, const godot_real p_b);
diff --git a/modules/gdnative/include/gdnative/dictionary.h b/modules/gdnative/include/gdnative/dictionary.h
index c85c3f3830..e68d0fdc29 100644
--- a/modules/gdnative/include/gdnative/dictionary.h
+++ b/modules/gdnative/include/gdnative/dictionary.h
@@ -45,10 +45,19 @@ typedef struct {
} godot_dictionary;
#endif
+// reduce extern "C" nesting for VS2013
+#ifdef __cplusplus
+}
+#endif
+
#include <gdnative/array.h>
#include <gdnative/gdnative.h>
#include <gdnative/variant.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
void GDAPI godot_dictionary_new(godot_dictionary *r_dest);
void GDAPI godot_dictionary_new_copy(godot_dictionary *r_dest, const godot_dictionary *p_src);
void GDAPI godot_dictionary_destroy(godot_dictionary *p_self);
diff --git a/modules/gdnative/include/gdnative/gdnative.h b/modules/gdnative/include/gdnative/gdnative.h
index 2d8726e5db..25d45db306 100644
--- a/modules/gdnative/include/gdnative/gdnative.h
+++ b/modules/gdnative/include/gdnative/gdnative.h
@@ -47,7 +47,7 @@ extern "C" {
#define GDAPI GDCALLINGCONV
#endif
#else
-#define GDCALLINGCONV __attribute__((sysv_abi, visibility("default")))
+#define GDCALLINGCONV __attribute__((sysv_abi))
#define GDAPI GDCALLINGCONV
#endif
@@ -255,7 +255,7 @@ godot_dictionary GDAPI godot_get_global_constants();
////// GDNative procedure types
typedef void (*godot_gdnative_init_fn)(godot_gdnative_init_options *);
typedef void (*godot_gdnative_terminate_fn)(godot_gdnative_terminate_options *);
-typedef godot_variant (*godot_gdnative_procedure_fn)(void *, godot_array *);
+typedef godot_variant (*godot_gdnative_procedure_fn)(godot_array *);
////// System Functions
diff --git a/modules/gdnative/include/gdnative/node_path.h b/modules/gdnative/include/gdnative/node_path.h
index 0cfdbc1127..42446175d8 100644
--- a/modules/gdnative/include/gdnative/node_path.h
+++ b/modules/gdnative/include/gdnative/node_path.h
@@ -45,9 +45,18 @@ typedef struct {
} godot_node_path;
#endif
+// reduce extern "C" nesting for VS2013
+#ifdef __cplusplus
+}
+#endif
+
#include <gdnative/gdnative.h>
#include <gdnative/string.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
void GDAPI godot_node_path_new(godot_node_path *r_dest, const godot_string *p_from);
void GDAPI godot_node_path_new_copy(godot_node_path *r_dest, const godot_node_path *p_src);
void GDAPI godot_node_path_destroy(godot_node_path *p_self);
diff --git a/modules/gdnative/include/gdnative/plane.h b/modules/gdnative/include/gdnative/plane.h
index 6a8915e08b..dddd172122 100644
--- a/modules/gdnative/include/gdnative/plane.h
+++ b/modules/gdnative/include/gdnative/plane.h
@@ -45,9 +45,18 @@ typedef struct {
} godot_plane;
#endif
+// reduce extern "C" nesting for VS2013
+#ifdef __cplusplus
+}
+#endif
+
#include <gdnative/gdnative.h>
#include <gdnative/vector3.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
void GDAPI godot_plane_new_with_reals(godot_plane *r_dest, const godot_real p_a, const godot_real p_b, const godot_real p_c, const godot_real p_d);
void GDAPI godot_plane_new_with_vectors(godot_plane *r_dest, const godot_vector3 *p_v1, const godot_vector3 *p_v2, const godot_vector3 *p_v3);
void GDAPI godot_plane_new_with_normal(godot_plane *r_dest, const godot_vector3 *p_normal, const godot_real p_d);
diff --git a/modules/gdnative/include/gdnative/pool_arrays.h b/modules/gdnative/include/gdnative/pool_arrays.h
index cb1095ee8c..93181f2a6b 100644
--- a/modules/gdnative/include/gdnative/pool_arrays.h
+++ b/modules/gdnative/include/gdnative/pool_arrays.h
@@ -113,6 +113,11 @@ typedef struct {
} godot_pool_color_array;
#endif
+// reduce extern "C" nesting for VS2013
+#ifdef __cplusplus
+}
+#endif
+
#include <gdnative/array.h>
#include <gdnative/color.h>
#include <gdnative/vector2.h>
@@ -120,6 +125,10 @@ typedef struct {
#include <gdnative/gdnative.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
// byte
void GDAPI godot_pool_byte_array_new(godot_pool_byte_array *r_dest);
diff --git a/modules/gdnative/include/gdnative/quat.h b/modules/gdnative/include/gdnative/quat.h
index 4ffb96eb26..acae6e3e90 100644
--- a/modules/gdnative/include/gdnative/quat.h
+++ b/modules/gdnative/include/gdnative/quat.h
@@ -45,9 +45,18 @@ typedef struct {
} godot_quat;
#endif
+// reduce extern "C" nesting for VS2013
+#ifdef __cplusplus
+}
+#endif
+
#include <gdnative/gdnative.h>
#include <gdnative/vector3.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
void GDAPI godot_quat_new(godot_quat *r_dest, const godot_real p_x, const godot_real p_y, const godot_real p_z, const godot_real p_w);
void GDAPI godot_quat_new_with_axis_angle(godot_quat *r_dest, const godot_vector3 *p_axis, const godot_real p_angle);
diff --git a/modules/gdnative/include/gdnative/rect2.h b/modules/gdnative/include/gdnative/rect2.h
index 9e6cf60342..1c66443d4f 100644
--- a/modules/gdnative/include/gdnative/rect2.h
+++ b/modules/gdnative/include/gdnative/rect2.h
@@ -43,9 +43,18 @@ typedef struct godot_rect2 {
} godot_rect2;
#endif
+// reduce extern "C" nesting for VS2013
+#ifdef __cplusplus
+}
+#endif
+
#include <gdnative/gdnative.h>
#include <gdnative/vector2.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
void GDAPI godot_rect2_new_with_position_and_size(godot_rect2 *r_dest, const godot_vector2 *p_pos, const godot_vector2 *p_size);
void GDAPI godot_rect2_new(godot_rect2 *r_dest, const godot_real p_x, const godot_real p_y, const godot_real p_width, const godot_real p_height);
diff --git a/modules/gdnative/include/gdnative/rect3.h b/modules/gdnative/include/gdnative/rect3.h
index f94b6fea25..f603a9268a 100644
--- a/modules/gdnative/include/gdnative/rect3.h
+++ b/modules/gdnative/include/gdnative/rect3.h
@@ -45,10 +45,19 @@ typedef struct {
} godot_rect3;
#endif
+// reduce extern "C" nesting for VS2013
+#ifdef __cplusplus
+}
+#endif
+
#include <gdnative/gdnative.h>
#include <gdnative/plane.h>
#include <gdnative/vector3.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
void GDAPI godot_rect3_new(godot_rect3 *r_dest, const godot_vector3 *p_pos, const godot_vector3 *p_size);
godot_vector3 GDAPI godot_rect3_get_position(const godot_rect3 *p_self);
diff --git a/modules/gdnative/include/gdnative/rid.h b/modules/gdnative/include/gdnative/rid.h
index d9b5336fc9..caa1bb967e 100644
--- a/modules/gdnative/include/gdnative/rid.h
+++ b/modules/gdnative/include/gdnative/rid.h
@@ -45,8 +45,17 @@ typedef struct {
} godot_rid;
#endif
+// reduce extern "C" nesting for VS2013
+#ifdef __cplusplus
+}
+#endif
+
#include <gdnative/gdnative.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
void GDAPI godot_rid_new(godot_rid *r_dest);
godot_int GDAPI godot_rid_get_id(const godot_rid *p_self);
diff --git a/modules/gdnative/include/gdnative/string.h b/modules/gdnative/include/gdnative/string.h
index aca23a81d8..f30fdb8dc7 100644
--- a/modules/gdnative/include/gdnative/string.h
+++ b/modules/gdnative/include/gdnative/string.h
@@ -46,9 +46,18 @@ typedef struct {
} godot_string;
#endif
+// reduce extern "C" nesting for VS2013
+#ifdef __cplusplus
+}
+#endif
+
#include <gdnative/gdnative.h>
#include <gdnative/variant.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
void GDAPI godot_string_new(godot_string *r_dest);
void GDAPI godot_string_new_copy(godot_string *r_dest, const godot_string *p_src);
void GDAPI godot_string_new_data(godot_string *r_dest, const char *p_contents, const int p_size);
diff --git a/modules/gdnative/include/gdnative/string_name.h b/modules/gdnative/include/gdnative/string_name.h
index e217487250..ee9f603d20 100644
--- a/modules/gdnative/include/gdnative/string_name.h
+++ b/modules/gdnative/include/gdnative/string_name.h
@@ -46,8 +46,17 @@ typedef struct {
} godot_string_name;
#endif
+// reduce extern "C" nesting for VS2013
+#ifdef __cplusplus
+}
+#endif
+
#include <gdnative/gdnative.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
void GDAPI godot_string_name_new(godot_string_name *r_dest, const godot_string *p_name);
void GDAPI godot_string_name_new_data(godot_string_name *r_dest, const char *p_name);
diff --git a/modules/gdnative/include/gdnative/transform.h b/modules/gdnative/include/gdnative/transform.h
index 656afae129..8f50b01fb5 100644
--- a/modules/gdnative/include/gdnative/transform.h
+++ b/modules/gdnative/include/gdnative/transform.h
@@ -45,11 +45,20 @@ typedef struct {
} godot_transform;
#endif
+// reduce extern "C" nesting for VS2013
+#ifdef __cplusplus
+}
+#endif
+
#include <gdnative/basis.h>
#include <gdnative/gdnative.h>
#include <gdnative/variant.h>
#include <gdnative/vector3.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
void GDAPI godot_transform_new_with_axis_origin(godot_transform *r_dest, const godot_vector3 *p_x_axis, const godot_vector3 *p_y_axis, const godot_vector3 *p_z_axis, const godot_vector3 *p_origin);
void GDAPI godot_transform_new(godot_transform *r_dest, const godot_basis *p_basis, const godot_vector3 *p_origin);
diff --git a/modules/gdnative/include/gdnative/transform2d.h b/modules/gdnative/include/gdnative/transform2d.h
index a945868b17..c68bd2963f 100644
--- a/modules/gdnative/include/gdnative/transform2d.h
+++ b/modules/gdnative/include/gdnative/transform2d.h
@@ -45,10 +45,19 @@ typedef struct {
} godot_transform2d;
#endif
+// reduce extern "C" nesting for VS2013
+#ifdef __cplusplus
+}
+#endif
+
#include <gdnative/gdnative.h>
#include <gdnative/variant.h>
#include <gdnative/vector2.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
void GDAPI godot_transform2d_new(godot_transform2d *r_dest, const godot_real p_rot, const godot_vector2 *p_pos);
void GDAPI godot_transform2d_new_axis_origin(godot_transform2d *r_dest, const godot_vector2 *p_x_axis, const godot_vector2 *p_y_axis, const godot_vector2 *p_origin);
diff --git a/modules/gdnative/include/gdnative/variant.h b/modules/gdnative/include/gdnative/variant.h
index 7b804c1eaf..3d744ef1f2 100644
--- a/modules/gdnative/include/gdnative/variant.h
+++ b/modules/gdnative/include/gdnative/variant.h
@@ -99,6 +99,11 @@ typedef struct godot_variant_call_error {
godot_variant_type expected;
} godot_variant_call_error;
+// reduce extern "C" nesting for VS2013
+#ifdef __cplusplus
+}
+#endif
+
#include <gdnative/array.h>
#include <gdnative/basis.h>
#include <gdnative/color.h>
@@ -119,6 +124,10 @@ typedef struct godot_variant_call_error {
#include <gdnative/gdnative.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
godot_variant_type GDAPI godot_variant_get_type(const godot_variant *p_v);
void GDAPI godot_variant_new_copy(godot_variant *r_dest, const godot_variant *p_src);
diff --git a/modules/gdnative/include/gdnative/vector2.h b/modules/gdnative/include/gdnative/vector2.h
index 0af4abae27..07105abaf2 100644
--- a/modules/gdnative/include/gdnative/vector2.h
+++ b/modules/gdnative/include/gdnative/vector2.h
@@ -45,8 +45,17 @@ typedef struct {
} godot_vector2;
#endif
+// reduce extern "C" nesting for VS2013
+#ifdef __cplusplus
+}
+#endif
+
#include <gdnative/gdnative.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
void GDAPI godot_vector2_new(godot_vector2 *r_dest, const godot_real p_x, const godot_real p_y);
godot_string GDAPI godot_vector2_as_string(const godot_vector2 *p_self);
diff --git a/modules/gdnative/include/gdnative/vector3.h b/modules/gdnative/include/gdnative/vector3.h
index a27d516ec5..3ed23778ec 100644
--- a/modules/gdnative/include/gdnative/vector3.h
+++ b/modules/gdnative/include/gdnative/vector3.h
@@ -45,9 +45,18 @@ typedef struct {
} godot_vector3;
#endif
+// reduce extern "C" nesting for VS2013
+#ifdef __cplusplus
+}
+#endif
+
#include <gdnative/basis.h>
#include <gdnative/gdnative.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
typedef enum {
GODOT_VECTOR3_AXIS_X,
GODOT_VECTOR3_AXIS_Y,
diff --git a/modules/gdnative/include/nativearvr/godot_nativearvr.h b/modules/gdnative/include/nativearvr/godot_nativearvr.h
new file mode 100644
index 0000000000..1a8970d396
--- /dev/null
+++ b/modules/gdnative/include/nativearvr/godot_nativearvr.h
@@ -0,0 +1,78 @@
+/*************************************************************************/
+/* godot_nativearvr.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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 GODOT_NATIVEARVR_H
+#define GODOT_NATIVEARVR_H
+
+#include <gdnative/gdnative.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct {
+ void *(*constructor)(godot_object *);
+ void (*destructor)(void *);
+ godot_string (*get_name)(const void *);
+ godot_int (*get_capabilities)(const void *);
+ godot_bool (*get_anchor_detection_is_enabled)(const void *);
+ void (*set_anchor_detection_is_enabled)(void *, godot_bool);
+ godot_bool (*is_stereo)(const void *);
+ godot_bool (*is_initialized)(const void *);
+ godot_bool (*initialize)(void *);
+ void (*uninitialize)(void *);
+ godot_vector2 (*get_recommended_render_targetsize)(const void *);
+ godot_transform (*get_transform_for_eye)(void *, godot_int, godot_transform *);
+ void (*fill_projection_for_eye)(void *, godot_real *, godot_int, godot_real, godot_real, godot_real);
+ void (*commit_for_eye)(void *, godot_int, godot_rid *, godot_rect2 *);
+ void (*process)(void *);
+} godot_arvr_interface_gdnative;
+
+void GDAPI godot_arvr_register_interface(const godot_arvr_interface_gdnative *p_interface);
+
+// helper functions to access ARVRServer data
+godot_real GDAPI godot_arvr_get_worldscale();
+godot_transform GDAPI godot_arvr_get_reference_frame();
+
+// helper functions for rendering
+void GDAPI godot_arvr_blit(godot_int p_eye, godot_rid *p_render_target, godot_rect2 *p_rect);
+godot_int GDAPI godot_arvr_get_texid(godot_rid *p_render_target);
+
+// helper functions for updating ARVR controllers
+godot_int GDAPI godot_arvr_add_controller(char *p_device_name, godot_int p_hand, godot_bool p_tracks_orientation, godot_bool p_tracks_position);
+void GDAPI godot_arvr_remove_controller(godot_int p_controller_id);
+void GDAPI godot_arvr_set_controller_transform(godot_int p_controller_id, godot_transform *p_transform, godot_bool p_tracks_orientation, godot_bool p_tracks_position);
+void GDAPI godot_arvr_set_controller_button(godot_int p_controller_id, godot_int p_button, godot_bool p_is_pressed);
+void GDAPI godot_arvr_set_controller_axis(godot_int p_controller_id, godot_int p_axis, godot_real p_value, godot_bool p_can_be_negative);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !GODOT_NATIVEARVR_H */
diff --git a/modules/gdnative/include/pluginscript/godot_pluginscript.h b/modules/gdnative/include/pluginscript/godot_pluginscript.h
new file mode 100644
index 0000000000..d1c210529c
--- /dev/null
+++ b/modules/gdnative/include/pluginscript/godot_pluginscript.h
@@ -0,0 +1,171 @@
+/*************************************************************************/
+/* godot_nativescript.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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 GODOT_PLUGINSCRIPT_H
+#define GODOT_PLUGINSCRIPT_H
+
+#include <gdnative/gdnative.h>
+#include <nativescript/godot_nativescript.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef void godot_pluginscript_instance_data;
+typedef void godot_pluginscript_script_data;
+typedef void godot_pluginscript_language_data;
+
+// --- Instance ---
+
+// TODO: use godot_string_name for faster lookup ?
+typedef struct {
+ godot_pluginscript_instance_data *(*init)(godot_pluginscript_script_data *p_data, godot_object *p_owner);
+ void (*finish)(godot_pluginscript_instance_data *p_data);
+
+ godot_bool (*set_prop)(godot_pluginscript_instance_data *p_data, const godot_string *p_name, const godot_variant *p_value);
+ godot_bool (*get_prop)(godot_pluginscript_instance_data *p_data, const godot_string *p_name, godot_variant *r_ret);
+
+ godot_variant (*call_method)(godot_pluginscript_instance_data *p_data,
+ const godot_string_name *p_method, const godot_variant **p_args,
+ int p_argcount, godot_variant_call_error *r_error);
+
+ void (*notification)(godot_pluginscript_instance_data *p_data, int p_notification);
+ // TODO: could this rpc mode stuff be moved to the godot_pluginscript_script_manifest ?
+ godot_method_rpc_mode (*get_rpc_mode)(godot_pluginscript_instance_data *p_data, const godot_string *p_method);
+ godot_method_rpc_mode (*get_rset_mode)(godot_pluginscript_instance_data *p_data, const godot_string *p_variable);
+
+ //this is used by script languages that keep a reference counter of their own
+ //you can make make Ref<> not die when it reaches zero, so deleting the reference
+ //depends entirely from the script.
+ // Note: You can set thoses function pointer to NULL if not needed.
+ void (*refcount_incremented)(godot_pluginscript_instance_data *p_data);
+ bool (*refcount_decremented)(godot_pluginscript_instance_data *p_data); // return true if it can die
+} godot_pluginscript_instance_desc;
+
+// --- Script ---
+
+typedef struct {
+ godot_pluginscript_script_data *data;
+ godot_string_name name;
+ godot_bool is_tool;
+ godot_string_name base;
+
+ // Member lines format: {<string>: <int>}
+ godot_dictionary member_lines;
+ // Method info dictionary format
+ // {
+ // name: <string>
+ // args: [<dict:property>]
+ // default_args: [<variant>]
+ // return: <dict:property>
+ // flags: <int>
+ // rpc_mode: <int:godot_method_rpc_mode>
+ // }
+ godot_array methods;
+ // Same format than for methods
+ godot_array signals;
+ // Property info dictionary format
+ // {
+ // name: <string>
+ // type: <int:godot_variant_type>
+ // hint: <int:godot_property_hint>
+ // hint_string: <string>
+ // usage: <int:godot_property_usage_flags>
+ // default_value: <variant>
+ // rset_mode: <int:godot_method_rpc_mode>
+ // }
+ godot_array properties;
+} godot_pluginscript_script_manifest;
+
+typedef struct {
+ godot_pluginscript_script_manifest (*init)(godot_pluginscript_language_data *p_data, const godot_string *p_path, const godot_string *p_source, godot_error *r_error);
+ void (*finish)(godot_pluginscript_script_data *p_data);
+ godot_pluginscript_instance_desc instance_desc;
+} godot_pluginscript_script_desc;
+
+// --- Language ---
+
+typedef struct {
+ godot_string_name signature;
+ godot_int call_count;
+ godot_int total_time; // In microseconds
+ godot_int self_time; // In microseconds
+} godot_pluginscript_profiling_data;
+
+typedef struct {
+ const char *name;
+ const char *type;
+ const char *extension;
+ const char **recognized_extensions; // NULL terminated array
+ godot_pluginscript_language_data *(*init)();
+ void (*finish)(godot_pluginscript_language_data *p_data);
+ const char **reserved_words; // NULL terminated array
+ const char **comment_delimiters; // NULL terminated array
+ const char **string_delimiters; // NULL terminated array
+ godot_bool has_named_classes;
+ godot_bool supports_builtin_mode;
+
+ godot_string (*get_template_source_code)(godot_pluginscript_language_data *p_data, const godot_string *p_class_name, const godot_string *p_base_class_name);
+ godot_bool (*validate)(godot_pluginscript_language_data *p_data, const godot_string *p_script, int *r_line_error, int *r_col_error, godot_string *r_test_error, const godot_string *p_path, godot_pool_string_array *r_functions);
+ int (*find_function)(godot_pluginscript_language_data *p_data, const godot_string *p_function, const godot_string *p_code); // Can be NULL
+ godot_string (*make_function)(godot_pluginscript_language_data *p_data, const godot_string *p_class, const godot_string *p_name, const godot_pool_string_array *p_args);
+ godot_error (*complete_code)(godot_pluginscript_language_data *p_data, const godot_string *p_code, const godot_string *p_base_path, godot_object *p_owner, godot_array *r_options, godot_bool *r_force, godot_string *r_call_hint);
+ void (*auto_indent_code)(godot_pluginscript_language_data *p_data, godot_string *p_code, int p_from_line, int p_to_line);
+
+ void (*add_global_constant)(godot_pluginscript_language_data *p_data, const godot_string *p_variable, const godot_variant *p_value);
+ godot_string (*debug_get_error)(godot_pluginscript_language_data *p_data);
+ int (*debug_get_stack_level_count)(godot_pluginscript_language_data *p_data);
+ int (*debug_get_stack_level_line)(godot_pluginscript_language_data *p_data, int p_level);
+ godot_string (*debug_get_stack_level_function)(godot_pluginscript_language_data *p_data, int p_level);
+ godot_string (*debug_get_stack_level_source)(godot_pluginscript_language_data *p_data, int p_level);
+ void (*debug_get_stack_level_locals)(godot_pluginscript_language_data *p_data, int p_level, godot_pool_string_array *p_locals, godot_array *p_values, int p_max_subitems, int p_max_depth);
+ void (*debug_get_stack_level_members)(godot_pluginscript_language_data *p_data, int p_level, godot_pool_string_array *p_members, godot_array *p_values, int p_max_subitems, int p_max_depth);
+ void (*debug_get_globals)(godot_pluginscript_language_data *p_data, godot_pool_string_array *p_locals, godot_array *p_values, int p_max_subitems, int p_max_depth);
+ godot_string (*debug_parse_stack_level_expression)(godot_pluginscript_language_data *p_data, int p_level, const godot_string *p_expression, int p_max_subitems, int p_max_depth);
+
+ // TODO: could this stuff be moved to the godot_pluginscript_language_desc ?
+ void (*get_public_functions)(godot_pluginscript_language_data *p_data, godot_array *r_functions);
+ void (*get_public_constants)(godot_pluginscript_language_data *p_data, godot_dictionary *r_constants);
+
+ void (*profiling_start)(godot_pluginscript_language_data *p_data);
+ void (*profiling_stop)(godot_pluginscript_language_data *p_data);
+ int (*profiling_get_accumulated_data)(godot_pluginscript_language_data *p_data, godot_pluginscript_profiling_data *r_info, int p_info_max);
+ int (*profiling_get_frame_data)(godot_pluginscript_language_data *p_data, godot_pluginscript_profiling_data *r_info, int p_info_max);
+ void (*profiling_frame)(godot_pluginscript_language_data *p_data);
+
+ godot_pluginscript_script_desc script_desc;
+} godot_pluginscript_language_desc;
+
+void GDAPI godot_pluginscript_register_language(const godot_pluginscript_language_desc *language_desc);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // GODOT_PLUGINSCRIPT_H
diff --git a/modules/gdnative/nativearvr/SCsub b/modules/gdnative/nativearvr/SCsub
new file mode 100644
index 0000000000..ecc5996108
--- /dev/null
+++ b/modules/gdnative/nativearvr/SCsub
@@ -0,0 +1,13 @@
+#!/usr/bin/env python
+
+import os
+import methods
+
+Import('env')
+Import('env_modules')
+
+env_arvr_gdnative = env_modules.Clone()
+
+env_arvr_gdnative.Append(CPPPATH=['#modules/gdnative/include/'])
+env_arvr_gdnative.add_source_files(env.modules_sources, '*.cpp')
+
diff --git a/modules/gdnative/nativearvr/arvr_interface_gdnative.cpp b/modules/gdnative/nativearvr/arvr_interface_gdnative.cpp
new file mode 100644
index 0000000000..ff8bda162f
--- /dev/null
+++ b/modules/gdnative/nativearvr/arvr_interface_gdnative.cpp
@@ -0,0 +1,386 @@
+/*************************************************************************/
+/* arvr_interface_gdnative.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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 "arvr_interface_gdnative.h"
+#include "main/input_default.h"
+#include "servers/arvr/arvr_positional_tracker.h"
+#include "servers/visual/visual_server_global.h"
+
+ARVRInterfaceGDNative::ARVRInterfaceGDNative() {
+ // testing
+ printf("Construct gdnative interface\n");
+
+ // we won't have our data pointer until our library gets set
+ data = NULL;
+
+ interface = NULL;
+}
+
+ARVRInterfaceGDNative::~ARVRInterfaceGDNative() {
+ printf("Destruct gdnative interface\n");
+
+ if (is_initialized()) {
+ uninitialize();
+ };
+
+ // cleanup after ourselves
+ cleanup();
+}
+
+void ARVRInterfaceGDNative::cleanup() {
+ if (interface != NULL) {
+ interface->destructor(data);
+ data = NULL;
+ interface = NULL;
+ }
+}
+
+void ARVRInterfaceGDNative::set_interface(const godot_arvr_interface_gdnative *p_interface) {
+ // this should only be called once, just being paranoid..
+ if (interface) {
+ cleanup();
+ }
+
+ // bind to our interface
+ interface = p_interface;
+
+ // Now we do our constructing...
+ data = interface->constructor((godot_object *)this);
+}
+
+StringName ARVRInterfaceGDNative::get_name() const {
+
+ ERR_FAIL_COND_V(interface == NULL, StringName());
+
+ godot_string result = interface->get_name(data);
+
+ StringName name = *(String *)&result;
+
+ godot_string_destroy(&result);
+
+ return name;
+}
+
+int ARVRInterfaceGDNative::get_capabilities() const {
+ int capabilities;
+
+ ERR_FAIL_COND_V(interface == NULL, 0); // 0 = None
+
+ capabilities = interface->get_capabilities(data);
+
+ return capabilities;
+}
+
+bool ARVRInterfaceGDNative::get_anchor_detection_is_enabled() const {
+ bool enabled;
+
+ ERR_FAIL_COND_V(interface == NULL, false);
+
+ enabled = interface->get_anchor_detection_is_enabled(data);
+
+ return enabled;
+}
+
+void ARVRInterfaceGDNative::set_anchor_detection_is_enabled(bool p_enable) {
+
+ ERR_FAIL_COND(interface == NULL);
+
+ interface->set_anchor_detection_is_enabled(data, p_enable);
+}
+
+bool ARVRInterfaceGDNative::is_stereo() {
+ bool stereo;
+
+ ERR_FAIL_COND_V(interface == NULL, false);
+
+ stereo = interface->is_stereo(data);
+
+ return stereo;
+}
+
+bool ARVRInterfaceGDNative::is_initialized() {
+ bool initialized;
+
+ ERR_FAIL_COND_V(interface == NULL, false);
+
+ initialized = interface->is_initialized(data);
+
+ return initialized;
+}
+
+bool ARVRInterfaceGDNative::initialize() {
+ bool initialized;
+
+ ERR_FAIL_COND_V(interface == NULL, false);
+
+ initialized = interface->initialize(data);
+
+ if (initialized) {
+ // if we successfully initialize our interface and we don't have a primary interface yet, this becomes our primary interface
+
+ ARVRServer *arvr_server = ARVRServer::get_singleton();
+ if ((arvr_server != NULL) && (arvr_server->get_primary_interface() == NULL)) {
+ arvr_server->set_primary_interface(this);
+ };
+ };
+
+ return initialized;
+}
+
+void ARVRInterfaceGDNative::uninitialize() {
+ ERR_FAIL_COND(interface == NULL);
+
+ ARVRServer *arvr_server = ARVRServer::get_singleton();
+ if (arvr_server != NULL) {
+ // Whatever happens, make sure this is no longer our primary interface
+ arvr_server->clear_primary_interface_if(this);
+ }
+
+ interface->uninitialize(data);
+}
+
+Size2 ARVRInterfaceGDNative::get_recommended_render_targetsize() {
+
+ ERR_FAIL_COND_V(interface == NULL, Size2());
+
+ godot_vector2 result = interface->get_recommended_render_targetsize(data);
+ Vector2 *vec = (Vector2 *)&result;
+
+ return *vec;
+}
+
+Transform ARVRInterfaceGDNative::get_transform_for_eye(ARVRInterface::Eyes p_eye, const Transform &p_cam_transform) {
+ Transform *ret;
+
+ ERR_FAIL_COND_V(interface == NULL, Transform());
+
+ godot_transform t = interface->get_transform_for_eye(data, (int)p_eye, (godot_transform *)&p_cam_transform);
+
+ ret = (Transform *)&t;
+
+ return *ret;
+}
+
+CameraMatrix ARVRInterfaceGDNative::get_projection_for_eye(ARVRInterface::Eyes p_eye, real_t p_aspect, real_t p_z_near, real_t p_z_far) {
+ CameraMatrix cm;
+
+ ERR_FAIL_COND_V(interface == NULL, CameraMatrix());
+
+ interface->fill_projection_for_eye(data, (godot_real *)cm.matrix, (godot_int)p_eye, p_aspect, p_z_near, p_z_far);
+
+ return cm;
+}
+
+void ARVRInterfaceGDNative::commit_for_eye(ARVRInterface::Eyes p_eye, RID p_render_target, const Rect2 &p_screen_rect) {
+
+ ERR_FAIL_COND(interface == NULL);
+
+ interface->commit_for_eye(data, (godot_int)p_eye, (godot_rid *)&p_render_target, (godot_rect2 *)&p_screen_rect);
+}
+
+void ARVRInterfaceGDNative::process() {
+ ERR_FAIL_COND(interface == NULL);
+
+ interface->process(data);
+}
+
+/////////////////////////////////////////////////////////////////////////////////////
+// some helper callbacks
+
+extern "C" {
+
+void GDAPI godot_arvr_register_interface(const godot_arvr_interface_gdnative *p_interface) {
+ Ref<ARVRInterfaceGDNative> new_interface;
+ new_interface.instance();
+ new_interface->set_interface((godot_arvr_interface_gdnative * const)p_interface);
+ ARVRServer::get_singleton()->add_interface(new_interface);
+}
+
+godot_real GDAPI godot_arvr_get_worldscale() {
+ ARVRServer *arvr_server = ARVRServer::get_singleton();
+ ERR_FAIL_NULL_V(arvr_server, 1.0);
+
+ return arvr_server->get_world_scale();
+}
+
+godot_transform GDAPI godot_arvr_get_reference_frame() {
+ godot_transform reference_frame;
+ Transform *reference_frame_ptr = (Transform *)&reference_frame;
+
+ ARVRServer *arvr_server = ARVRServer::get_singleton();
+ if (arvr_server != NULL) {
+ *reference_frame_ptr = arvr_server->get_reference_frame();
+ } else {
+ godot_transform_new_identity(&reference_frame);
+ }
+
+ return reference_frame;
+}
+
+void GDAPI godot_arvr_blit(godot_int p_eye, godot_rid *p_render_target, godot_rect2 *p_rect) {
+ // blits out our texture as is, handy for preview display of one of the eyes that is already rendered with lens distortion on an external HMD
+ ARVRInterface::Eyes eye = (ARVRInterface::Eyes)p_eye;
+ RID *render_target = (RID *)p_render_target;
+ Rect2 screen_rect = *(Rect2 *)p_rect;
+
+ if (eye == ARVRInterface::EYE_LEFT) {
+ screen_rect.size.x /= 2.0;
+ } else if (p_eye == ARVRInterface::EYE_RIGHT) {
+ screen_rect.size.x /= 2.0;
+ screen_rect.position.x += screen_rect.size.x;
+ }
+
+ VSG::rasterizer->set_current_render_target(RID());
+ VSG::rasterizer->blit_render_target_to_screen(*render_target, screen_rect, 0);
+}
+
+godot_int GDAPI godot_arvr_get_texid(godot_rid *p_render_target) {
+ // In order to send off our textures to display on our hardware we need the opengl texture ID instead of the render target RID
+ // This is a handy function to expose that.
+ RID *render_target = (RID *)p_render_target;
+
+ RID eye_texture = VSG::storage->render_target_get_texture(*render_target);
+ uint32_t texid = VS::get_singleton()->texture_get_texid(eye_texture);
+
+ return texid;
+}
+
+godot_int GDAPI godot_arvr_add_controller(char *p_device_name, godot_int p_hand, godot_bool p_tracks_orientation, godot_bool p_tracks_position) {
+ ARVRServer *arvr_server = ARVRServer::get_singleton();
+ ERR_FAIL_NULL_V(arvr_server, 0);
+
+ InputDefault *input = (InputDefault *)Input::get_singleton();
+ ERR_FAIL_NULL_V(input, 0);
+
+ ARVRPositionalTracker *new_tracker = memnew(ARVRPositionalTracker);
+ new_tracker->set_name(p_device_name);
+ new_tracker->set_type(ARVRServer::TRACKER_CONTROLLER);
+ if (p_hand == 1) {
+ new_tracker->set_hand(ARVRPositionalTracker::TRACKER_LEFT_HAND);
+ } else if (p_hand == 2) {
+ new_tracker->set_hand(ARVRPositionalTracker::TRACKER_RIGHT_HAND);
+ }
+
+ // also register as joystick...
+ int joyid = input->get_unused_joy_id();
+ if (joyid != -1) {
+ new_tracker->set_joy_id(joyid);
+ input->joy_connection_changed(joyid, true, p_device_name, "");
+ }
+
+ if (p_tracks_orientation) {
+ Basis orientation;
+ new_tracker->set_orientation(orientation);
+ }
+ if (p_tracks_position) {
+ Vector3 position;
+ new_tracker->set_position(position);
+ }
+
+ // add our tracker to our server and remember its pointer
+ arvr_server->add_tracker(new_tracker);
+
+ // note, this ID is only unique within controllers!
+ return new_tracker->get_tracker_id();
+}
+
+void GDAPI godot_arvr_remove_controller(godot_int p_controller_id) {
+ ARVRServer *arvr_server = ARVRServer::get_singleton();
+ ERR_FAIL_NULL(arvr_server);
+
+ InputDefault *input = (InputDefault *)Input::get_singleton();
+ ERR_FAIL_NULL(input);
+
+ ARVRPositionalTracker *remove_tracker = arvr_server->find_by_type_and_id(ARVRServer::TRACKER_CONTROLLER, p_controller_id);
+ if (remove_tracker != NULL) {
+ // unset our joystick if applicable
+ int joyid = remove_tracker->get_joy_id();
+ if (joyid != -1) {
+ input->joy_connection_changed(joyid, false, "", "");
+ remove_tracker->set_joy_id(-1);
+ }
+
+ // remove our tracker from our server
+ arvr_server->remove_tracker(remove_tracker);
+ memdelete(remove_tracker);
+ }
+}
+
+void GDAPI godot_arvr_set_controller_transform(godot_int p_controller_id, godot_transform *p_transform, godot_bool p_tracks_orientation, godot_bool p_tracks_position) {
+ ARVRServer *arvr_server = ARVRServer::get_singleton();
+ ERR_FAIL_NULL(arvr_server);
+
+ ARVRPositionalTracker *tracker = arvr_server->find_by_type_and_id(ARVRServer::TRACKER_CONTROLLER, p_controller_id);
+ if (tracker != NULL) {
+ Transform *transform = (Transform *)p_transform;
+ if (p_tracks_orientation) {
+ tracker->set_orientation(transform->basis);
+ }
+ if (p_tracks_position) {
+ tracker->set_position(transform->origin);
+ }
+ }
+}
+
+void GDAPI godot_arvr_set_controller_button(godot_int p_controller_id, godot_int p_button, godot_bool p_is_pressed) {
+ ARVRServer *arvr_server = ARVRServer::get_singleton();
+ ERR_FAIL_NULL(arvr_server);
+
+ InputDefault *input = (InputDefault *)Input::get_singleton();
+ ERR_FAIL_NULL(input);
+
+ ARVRPositionalTracker *tracker = arvr_server->find_by_type_and_id(ARVRServer::TRACKER_CONTROLLER, p_controller_id);
+ if (tracker != NULL) {
+ int joyid = tracker->get_joy_id();
+ if (joyid != -1) {
+ input->joy_button(joyid, p_button, p_is_pressed);
+ }
+ }
+}
+
+void GDAPI godot_arvr_set_controller_axis(godot_int p_controller_id, godot_int p_axis, godot_real p_value, godot_bool p_can_be_negative) {
+ ARVRServer *arvr_server = ARVRServer::get_singleton();
+ ERR_FAIL_NULL(arvr_server);
+
+ InputDefault *input = (InputDefault *)Input::get_singleton();
+ ERR_FAIL_NULL(input);
+
+ ARVRPositionalTracker *tracker = arvr_server->find_by_type_and_id(ARVRServer::TRACKER_CONTROLLER, p_controller_id);
+ if (tracker != NULL) {
+ int joyid = tracker->get_joy_id();
+ if (joyid != -1) {
+ InputDefault::JoyAxis jx;
+ jx.min = p_can_be_negative ? -1 : 0;
+ jx.value = p_value;
+ input->joy_axis(joyid, p_axis, jx);
+ }
+ }
+}
+}
diff --git a/modules/gdnative/nativearvr/arvr_interface_gdnative.h b/modules/gdnative/nativearvr/arvr_interface_gdnative.h
new file mode 100644
index 0000000000..e45b51e070
--- /dev/null
+++ b/modules/gdnative/nativearvr/arvr_interface_gdnative.h
@@ -0,0 +1,86 @@
+/*************************************************************************/
+/* arvr_interface_gdnative.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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 ARVR_INTERFACE_GDNATIVE_H
+#define ARVR_INTERFACE_GDNATIVE_H
+
+#include "modules/gdnative/gdnative.h"
+#include "servers/arvr/arvr_interface.h"
+
+/**
+ @authors Hinsbart & Karroffel & Mux213
+
+ This subclass of our AR/VR interface forms a bridge to GDNative.
+*/
+
+class ARVRInterfaceGDNative : public ARVRInterface {
+ GDCLASS(ARVRInterfaceGDNative, ARVRInterface)
+
+ void cleanup();
+
+protected:
+ const godot_arvr_interface_gdnative *interface;
+ void *data;
+
+public:
+ /** general interface information **/
+ ARVRInterfaceGDNative();
+ ~ARVRInterfaceGDNative();
+
+ void set_interface(const godot_arvr_interface_gdnative *p_interface);
+
+ virtual StringName get_name() const;
+ virtual int get_capabilities() const;
+
+ virtual bool is_initialized();
+ virtual bool initialize();
+ virtual void uninitialize();
+
+ /** specific to AR **/
+ virtual bool get_anchor_detection_is_enabled() const;
+ virtual void set_anchor_detection_is_enabled(bool p_enable);
+
+ /** rendering and internal **/
+ virtual Size2 get_recommended_render_targetsize();
+ virtual bool is_stereo();
+ virtual Transform get_transform_for_eye(ARVRInterface::Eyes p_eye, const Transform &p_cam_transform);
+
+ // we expose a PoolVector<float> version of this function to GDNative
+ PoolVector<float> _get_projection_for_eye(ARVRInterface::Eyes p_eye, real_t p_aspect, real_t p_z_near, real_t p_z_far);
+
+ // and a CameraMatrix version to ARVRServer
+ virtual CameraMatrix get_projection_for_eye(ARVRInterface::Eyes p_eye, real_t p_aspect, real_t p_z_near, real_t p_z_far);
+
+ virtual void commit_for_eye(ARVRInterface::Eyes p_eye, RID p_render_target, const Rect2 &p_screen_rect);
+
+ virtual void process();
+};
+
+#endif // ARVR_INTERFACE_GDNATIVE_H
diff --git a/modules/gdnative/nativearvr/config.py b/modules/gdnative/nativearvr/config.py
new file mode 100644
index 0000000000..4d1bdfe4d1
--- /dev/null
+++ b/modules/gdnative/nativearvr/config.py
@@ -0,0 +1,5 @@
+def can_build(platform):
+ return True
+
+def configure(env):
+ pass
diff --git a/modules/gdnative/nativearvr/register_types.cpp b/modules/gdnative/nativearvr/register_types.cpp
new file mode 100644
index 0000000000..c7d7847a21
--- /dev/null
+++ b/modules/gdnative/nativearvr/register_types.cpp
@@ -0,0 +1,39 @@
+/*************************************************************************/
+/* register_types.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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 "register_types.h"
+#include "arvr_interface_gdnative.h"
+
+void register_nativearvr_types() {
+ ClassDB::register_class<ARVRInterfaceGDNative>();
+}
+
+void unregister_nativearvr_types() {
+}
diff --git a/modules/gdnative/nativearvr/register_types.h b/modules/gdnative/nativearvr/register_types.h
new file mode 100644
index 0000000000..5e7557c7e9
--- /dev/null
+++ b/modules/gdnative/nativearvr/register_types.h
@@ -0,0 +1,32 @@
+/*************************************************************************/
+/* register_types.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* https://godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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. */
+/*************************************************************************/
+
+void register_nativearvr_types();
+void unregister_nativearvr_types();
diff --git a/modules/gdnative/nativescript/SCsub b/modules/gdnative/nativescript/SCsub
index 178afec64a..ee3b9c351d 100644
--- a/modules/gdnative/nativescript/SCsub
+++ b/modules/gdnative/nativescript/SCsub
@@ -4,7 +4,6 @@ Import('env')
mod_env = env.Clone()
mod_env.add_source_files(env.modules_sources, "*.cpp")
-mod_env.Append(CPPPATH='#modules/gdnative')
mod_env.Append(CPPFLAGS=['-DGDAPI_BUILT_IN'])
if "platform" in env and env["platform"] in ["x11", "iphone"]:
diff --git a/modules/gdnative/nativescript/api_generator.cpp b/modules/gdnative/nativescript/api_generator.cpp
index 9a956ff594..63fb71feb6 100644
--- a/modules/gdnative/nativescript/api_generator.cpp
+++ b/modules/gdnative/nativescript/api_generator.cpp
@@ -31,7 +31,7 @@
#ifdef TOOLS_ENABLED
-#include "class_db.h"
+#include "core/class_db.h"
#include "core/global_constants.h"
#include "core/pair.h"
#include "core/project_settings.h"
diff --git a/modules/gdnative/nativescript/api_generator.h b/modules/gdnative/nativescript/api_generator.h
index 56c2d786e6..a8e2eaf0bf 100644
--- a/modules/gdnative/nativescript/api_generator.h
+++ b/modules/gdnative/nativescript/api_generator.h
@@ -30,8 +30,8 @@
#ifndef API_GENERATOR_H
#define API_GENERATOR_H
+#include "core/typedefs.h"
#include "core/ustring.h"
-#include "typedefs.h"
Error generate_c_api(const String &p_path);
diff --git a/modules/gdnative/nativescript/nativescript.cpp b/modules/gdnative/nativescript/nativescript.cpp
index b9bd65af53..c1df7def2e 100644
--- a/modules/gdnative/nativescript/nativescript.cpp
+++ b/modules/gdnative/nativescript/nativescript.cpp
@@ -31,11 +31,11 @@
#include "gdnative/gdnative.h"
-#include "global_constants.h"
+#include "core/global_constants.h"
+#include "core/project_settings.h"
#include "io/file_access_encrypted.h"
#include "os/file_access.h"
#include "os/os.h"
-#include "project_settings.h"
#include "scene/main/scene_tree.h"
#include "scene/resources/scene_format_text.h"
@@ -137,7 +137,6 @@ bool NativeScript::can_instance() const {
#endif
}
-// TODO(karroffel): implement this
Ref<Script> NativeScript::get_base_script() const {
NativeScriptDesc *script_data = get_script_desc();
@@ -271,10 +270,6 @@ bool NativeScript::is_tool() const {
return false;
}
-String NativeScript::get_node_type() const {
- return ""; // NOTE(karroffel): uhm?
-}
-
ScriptLanguage *NativeScript::get_language() const {
return NativeScriptLanguage::get_singleton();
}
@@ -909,6 +904,9 @@ Script *NativeScriptLanguage::create_script() const {
bool NativeScriptLanguage::has_named_classes() const {
return true;
}
+bool NativeScriptLanguage::supports_builtin_mode() const {
+ return true;
+}
int NativeScriptLanguage::find_function(const String &p_function, const String &p_code) const {
return -1;
}
@@ -1010,17 +1008,15 @@ void NativeScriptLanguage::init_library(const Ref<GDNativeLibrary> &lib) {
if (!library_script_users.has(lib_path))
library_script_users.insert(lib_path, Set<NativeScript *>());
- void *args[1] = {
- (void *)&lib_path
- };
+ void *proc_ptr;
- // here the library registers all the classes and stuff.
- gdn->call_native_raw(_init_call_type,
- _init_call_name,
- NULL,
- 1,
- args,
- NULL);
+ Error err = gdn->get_symbol(_init_call_name, proc_ptr);
+
+ if (err != OK) {
+ ERR_PRINT(String("No " + _init_call_name + " in \"" + lib_path + "\" found").utf8().get_data());
+ } else {
+ ((void (*)(godot_string *))proc_ptr)((godot_string *)&lib_path);
+ }
} else {
// already initialized. Nice.
}
@@ -1053,13 +1049,13 @@ void NativeScriptLanguage::call_libraries_cb(const StringName &name) {
// library_gdnatives is modified only from the main thread, so it's safe not to use mutex here
for (Map<String, Ref<GDNative> >::Element *L = library_gdnatives.front(); L; L = L->next()) {
if (L->get()->is_initialized()) {
- L->get()->call_native_raw(
- _noarg_call_type,
- name,
- NULL,
- 0,
- NULL,
- NULL);
+
+ void *proc_ptr;
+ Error err = L->get()->get_symbol(name, proc_ptr);
+
+ if (!err) {
+ ((void (*)())proc_ptr)();
+ }
}
}
}
@@ -1142,12 +1138,14 @@ void NativeReloadNode::_notification(int p_what) {
};
// here the library registers all the classes and stuff.
- L->get()->call_native_raw(NSL->_init_call_type,
- NSL->_init_call_name,
- NULL,
- 1,
- args,
- NULL);
+
+ void *proc_ptr;
+ Error err = L->get()->get_symbol("godot_nativescript_init", proc_ptr);
+ if (err != OK) {
+ ERR_PRINT(String("No godot_nativescript_init in \"" + L->key() + "\" found").utf8().get_data());
+ } else {
+ ((void (*)(void *))proc_ptr)((void *)&L->key());
+ }
for (Map<String, Set<NativeScript *> >::Element *U = NSL->library_script_users.front(); U; U = U->next()) {
for (Set<NativeScript *>::Element *S = U->get().front(); S; S = S->next()) {
diff --git a/modules/gdnative/nativescript/nativescript.h b/modules/gdnative/nativescript/nativescript.h
index bc7e850d3e..e8fc9e6880 100644
--- a/modules/gdnative/nativescript/nativescript.h
+++ b/modules/gdnative/nativescript/nativescript.h
@@ -30,14 +30,14 @@
#ifndef NATIVE_SCRIPT_H
#define NATIVE_SCRIPT_H
+#include "core/resource.h"
+#include "core/script_language.h"
+#include "core/self_list.h"
#include "io/resource_loader.h"
#include "io/resource_saver.h"
#include "ordered_hash_map.h"
#include "os/thread_safe.h"
-#include "resource.h"
#include "scene/main/node.h"
-#include "script_language.h"
-#include "self_list.h"
#include "modules/gdnative/gdnative.h"
#include <nativescript/godot_nativescript.h>
@@ -142,8 +142,6 @@ public:
virtual bool is_tool() const;
- virtual String get_node_type() const;
-
virtual ScriptLanguage *get_language() const;
virtual bool has_script_signal(const StringName &p_signal) const;
@@ -271,6 +269,7 @@ public:
virtual bool validate(const String &p_script, int &r_line_error, int &r_col_error, String &r_test_error, const String &p_path, List<String> *r_functions) const;
virtual Script *create_script() const;
virtual bool has_named_classes() const;
+ virtual bool supports_builtin_mode() const;
virtual int find_function(const String &p_function, const String &p_code) const;
virtual String make_function(const String &p_class, const String &p_name, const PoolStringArray &p_args) const;
virtual void auto_indent_code(String &p_code, int p_from_line, int p_to_line) const;
diff --git a/modules/gdnative/nativescript/register_types.cpp b/modules/gdnative/nativescript/register_types.cpp
index b846710ab8..d734bba810 100644
--- a/modules/gdnative/nativescript/register_types.cpp
+++ b/modules/gdnative/nativescript/register_types.cpp
@@ -38,53 +38,6 @@
NativeScriptLanguage *native_script_language;
-typedef void (*native_script_init_fn)(void *);
-
-void init_call_cb(void *p_handle, godot_string *p_proc_name, void *p_data, int p_num_args, void **args, void *r_ret) {
- if (p_handle == NULL) {
- ERR_PRINT("No valid library handle, can't call nativescript init procedure");
- return;
- }
-
- void *library_proc;
- Error err = OS::get_singleton()->get_dynamic_library_symbol_handle(
- p_handle,
- *(String *)p_proc_name,
- library_proc,
- true); // we print our own message
- if (err != OK) {
- ERR_PRINT((String("GDNative procedure \"" + *(String *)p_proc_name) + "\" does not exists and can't be called").utf8().get_data());
- return;
- }
-
- native_script_init_fn fn = (native_script_init_fn)library_proc;
-
- fn(args[0]);
-}
-
-typedef void (*native_script_empty_callback)();
-
-void noarg_call_cb(void *p_handle, godot_string *p_proc_name, void *p_data, int p_num_args, void **args, void *r_ret) {
- if (p_handle == NULL) {
- ERR_PRINT("No valid library handle, can't call nativescript callback");
- return;
- }
-
- void *library_proc;
- Error err = OS::get_singleton()->get_dynamic_library_symbol_handle(
- p_handle,
- *(String *)p_proc_name,
- library_proc,
- true);
- if (err != OK) {
- // it's fine if thread callbacks are not present in the library.
- return;
- }
-
- native_script_empty_callback fn = (native_script_empty_callback)library_proc;
- fn();
-}
-
ResourceFormatLoaderNativeScript *resource_loader_gdns = NULL;
ResourceFormatSaverNativeScript *resource_saver_gdns = NULL;
@@ -95,9 +48,6 @@ void register_nativescript_types() {
ScriptServer::register_language(native_script_language);
- GDNativeCallRegistry::singleton->register_native_raw_call_type(native_script_language->_init_call_type, init_call_cb);
- GDNativeCallRegistry::singleton->register_native_raw_call_type(native_script_language->_noarg_call_type, noarg_call_cb);
-
resource_saver_gdns = memnew(ResourceFormatSaverNativeScript);
ResourceSaver::add_resource_format_saver(resource_saver_gdns);
diff --git a/modules/gdnative/pluginscript/SCsub b/modules/gdnative/pluginscript/SCsub
new file mode 100644
index 0000000000..2031a4236b
--- /dev/null
+++ b/modules/gdnative/pluginscript/SCsub
@@ -0,0 +1,9 @@
+#!/usr/bin/env python
+
+Import('env')
+Import('env_modules')
+
+env_pluginscript = env_modules.Clone()
+
+env_pluginscript.Append(CPPPATH=['#modules/gdnative/include/'])
+env_pluginscript.add_source_files(env.modules_sources, '*.cpp')
diff --git a/modules/gdnative/pluginscript/pluginscript_instance.cpp b/modules/gdnative/pluginscript/pluginscript_instance.cpp
new file mode 100644
index 0000000000..8f01350826
--- /dev/null
+++ b/modules/gdnative/pluginscript/pluginscript_instance.cpp
@@ -0,0 +1,181 @@
+/*************************************************************************/
+/* pluginscript_instance.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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. */
+/*************************************************************************/
+
+// Godot imports
+#include "core/os/os.h"
+#include "core/variant.h"
+// PluginScript imports
+#include "pluginscript_instance.h"
+#include "pluginscript_language.h"
+#include "pluginscript_script.h"
+
+bool PluginScriptInstance::set(const StringName &p_name, const Variant &p_value) {
+ String name = String(p_name);
+ return _desc->set_prop(_data, (const godot_string *)&name, (const godot_variant *)&p_value);
+}
+
+bool PluginScriptInstance::get(const StringName &p_name, Variant &r_ret) const {
+ String name = String(p_name);
+ return _desc->get_prop(_data, (const godot_string *)&name, (godot_variant *)&r_ret);
+}
+
+Ref<Script> PluginScriptInstance::get_script() const {
+ return _script;
+}
+
+ScriptLanguage *PluginScriptInstance::get_language() {
+ return _script->get_language();
+}
+
+Variant::Type PluginScriptInstance::get_property_type(const StringName &p_name, bool *r_is_valid) const {
+ if (!_script->has_property(p_name)) {
+ if (r_is_valid) {
+ *r_is_valid = false;
+ }
+ return Variant::NIL;
+ }
+ if (r_is_valid) {
+ *r_is_valid = true;
+ }
+ return _script->get_property_info(p_name).type;
+}
+
+void PluginScriptInstance::get_property_list(List<PropertyInfo> *p_properties) const {
+ _script->get_script_property_list(p_properties);
+}
+
+void PluginScriptInstance::get_method_list(List<MethodInfo> *p_list) const {
+ _script->get_script_method_list(p_list);
+}
+
+bool PluginScriptInstance::has_method(const StringName &p_method) const {
+ return _script->has_method(p_method);
+}
+
+Variant PluginScriptInstance::call(const StringName &p_method, const Variant **p_args, int p_argcount, Variant::CallError &r_error) {
+ // TODO: optimize when calling a Godot method from Godot to avoid param conversion ?
+ godot_variant ret = _desc->call_method(
+ _data, (godot_string_name *)&p_method, (const godot_variant **)p_args,
+ p_argcount, (godot_variant_call_error *)&r_error);
+ Variant *var_ret = (Variant *)&ret;
+ return *var_ret;
+}
+
+#if 0 // TODO: Don't rely on default implementations provided by ScriptInstance ?
+void PluginScriptInstance::call_multilevel(const StringName& p_method,const Variant** p_args,int p_argcount) {
+
+#if 0
+ PluginScript *sptr=script.ptr();
+ Variant::CallError ce;
+
+ while(sptr) {
+ Map<StringName,GDFunction*>::Element *E = sptr->member_functions.find(p_method);
+ if (E) {
+ E->get()->call(this,p_args,p_argcount,ce);
+ }
+ sptr = sptr->_base;
+ }
+#endif
+
+}
+
+#if 0
+void PluginScriptInstance::_ml_call_reversed(PluginScript *sptr,const StringName& p_method,const Variant** p_args,int p_argcount) {
+
+ if (sptr->_base)
+ _ml_call_reversed(sptr->_base,p_method,p_args,p_argcount);
+
+ Variant::CallError ce;
+
+ Map<StringName,GDFunction*>::Element *E = sptr->member_functions.find(p_method);
+ if (E) {
+ E->get()->call(this,p_args,p_argcount,ce);
+ }
+
+}
+#endif
+
+
+void PluginScriptInstance::call_multilevel_reversed(const StringName& p_method,const Variant** p_args,int p_argcount) {
+
+#if 0
+ if (script.ptr()) {
+ _ml_call_reversed(script.ptr(),p_method,p_args,p_argcount);
+ }
+#endif
+}
+#endif // Multilevel stuff
+
+void PluginScriptInstance::notification(int p_notification) {
+ _desc->notification(_data, p_notification);
+}
+
+ScriptInstance::RPCMode PluginScriptInstance::get_rpc_mode(const StringName &p_method) const {
+ return _script->get_rpc_mode(p_method);
+}
+
+ScriptInstance::RPCMode PluginScriptInstance::get_rset_mode(const StringName &p_variable) const {
+ return _script->get_rset_mode(p_variable);
+}
+
+void PluginScriptInstance::refcount_incremented() {
+ if (_desc->refcount_decremented) {
+ _desc->refcount_incremented(_data);
+ }
+}
+
+bool PluginScriptInstance::refcount_decremented() {
+ // Return true if it can die
+ if (_desc->refcount_decremented) {
+ return _desc->refcount_decremented(_data);
+ }
+ return true;
+}
+
+PluginScriptInstance::PluginScriptInstance() {
+}
+
+bool PluginScriptInstance::init(PluginScript *p_script, Object *p_owner) {
+ _owner = p_owner;
+ _owner_variant = Variant(p_owner);
+ _script = Ref<PluginScript>(p_script);
+ _desc = &p_script->_desc->instance_desc;
+ _data = _desc->init(p_script->_data, (godot_object *)p_owner);
+ ERR_FAIL_COND_V(_data == NULL, false);
+ p_owner->set_script_instance(this);
+ return true;
+}
+
+PluginScriptInstance::~PluginScriptInstance() {
+ _desc->finish(_data);
+ _script->_language->lock();
+ _script->_instances.erase(_owner);
+ _script->_language->unlock();
+}
diff --git a/modules/gdnative/pluginscript/pluginscript_instance.h b/modules/gdnative/pluginscript/pluginscript_instance.h
new file mode 100644
index 0000000000..68696b4417
--- /dev/null
+++ b/modules/gdnative/pluginscript/pluginscript_instance.h
@@ -0,0 +1,90 @@
+/*************************************************************************/
+/* pluginscript_instance.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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 PLUGINSCRIPT_INSTANCE_H
+#define PLUGINSCRIPT_INSTANCE_H
+
+// Godot imports
+#include "core/script_language.h"
+// PluginScript imports
+#include <pluginscript/godot_pluginscript.h>
+
+class PluginScript;
+
+class PluginScriptInstance : public ScriptInstance {
+ friend class PluginScript;
+
+private:
+ Ref<PluginScript> _script;
+ Object *_owner;
+ Variant _owner_variant;
+ godot_pluginscript_instance_data *_data;
+ const godot_pluginscript_instance_desc *_desc;
+
+public:
+ _FORCE_INLINE_ Object *get_owner() { return _owner; }
+
+ 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;
+ virtual Variant::Type get_property_type(const StringName &p_name, bool *r_is_valid = NULL) const;
+
+ virtual void get_method_list(List<MethodInfo> *p_list) const;
+ virtual bool has_method(const StringName &p_method) const;
+
+ virtual Variant call(const StringName &p_method, const Variant **p_args, int p_argcount, Variant::CallError &r_error);
+#if 0
+ // Rely on default implementations provided by ScriptInstance for the moment.
+ // Note that multilevel call could be removed in 3.0 release, so stay tunned
+ // (see https://godotengine.org/qa/9244/can-override-the-_ready-and-_process-functions-child-classes)
+ virtual void call_multilevel(const StringName& p_method,const Variant** p_args,int p_argcount);
+ virtual void call_multilevel_reversed(const StringName& p_method,const Variant** p_args,int p_argcount);
+#endif
+
+ virtual void notification(int p_notification);
+
+ virtual Ref<Script> get_script() const;
+
+ virtual ScriptLanguage *get_language();
+
+ void set_path(const String &p_path);
+
+ virtual RPCMode get_rpc_mode(const StringName &p_method) const;
+ virtual RPCMode get_rset_mode(const StringName &p_variable) const;
+
+ virtual void refcount_incremented();
+ virtual bool refcount_decremented();
+
+ PluginScriptInstance();
+ bool init(PluginScript *p_script, Object *p_owner);
+ virtual ~PluginScriptInstance();
+};
+
+#endif // PLUGINSCRIPT_INSTANCE_H
diff --git a/modules/gdnative/pluginscript/pluginscript_language.cpp b/modules/gdnative/pluginscript/pluginscript_language.cpp
new file mode 100644
index 0000000000..40feb5ae43
--- /dev/null
+++ b/modules/gdnative/pluginscript/pluginscript_language.cpp
@@ -0,0 +1,435 @@
+/*************************************************************************/
+/* pluginscript_language.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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. */
+/*************************************************************************/
+
+// Godot imports
+#include "core/os/file_access.h"
+#include "core/os/os.h"
+#include "core/project_settings.h"
+// PluginScript imports
+#include "pluginscript_language.h"
+#include "pluginscript_script.h"
+
+String PluginScriptLanguage::get_name() const {
+ return String(_desc.name);
+}
+
+void PluginScriptLanguage::init() {
+ _data = _desc.init();
+}
+
+String PluginScriptLanguage::get_type() const {
+ return String(_desc.type);
+}
+
+String PluginScriptLanguage::get_extension() const {
+ return String(_desc.extension);
+}
+
+Error PluginScriptLanguage::execute_file(const String &p_path) {
+ // TODO: pretty sure this method is totally deprecated and should be removed...
+ return OK;
+}
+
+void PluginScriptLanguage::finish() {
+ _desc.finish(_data);
+}
+
+/* EDITOR FUNCTIONS */
+
+void PluginScriptLanguage::get_reserved_words(List<String> *p_words) const {
+ if (_desc.reserved_words) {
+ const char **w = _desc.reserved_words;
+ while (*w) {
+ p_words->push_back(*w);
+ w++;
+ }
+ }
+}
+
+void PluginScriptLanguage::get_comment_delimiters(List<String> *p_delimiters) const {
+ if (_desc.comment_delimiters) {
+ const char **w = _desc.comment_delimiters;
+ while (*w) {
+ p_delimiters->push_back(*w);
+ w++;
+ }
+ }
+}
+
+void PluginScriptLanguage::get_string_delimiters(List<String> *p_delimiters) const {
+ if (_desc.string_delimiters) {
+ const char **w = _desc.string_delimiters;
+ while (*w) {
+ p_delimiters->push_back(*w);
+ w++;
+ }
+ }
+}
+
+Ref<Script> PluginScriptLanguage::get_template(const String &p_class_name, const String &p_base_class_name) const {
+ Script *ns = create_script();
+ Ref<Script> script = Ref<Script>(ns);
+ if (_desc.get_template_source_code) {
+ godot_string src = _desc.get_template_source_code(_data, (godot_string *)&p_class_name, (godot_string *)&p_base_class_name);
+ script->set_source_code(*(String *)&src);
+ }
+ return script;
+}
+
+bool PluginScriptLanguage::validate(const String &p_script, int &r_line_error, int &r_col_error, String &r_test_error, const String &p_path, List<String> *r_functions) const {
+ PoolStringArray functions;
+ if (_desc.validate) {
+ bool ret = _desc.validate(
+ _data,
+ (godot_string *)&p_script,
+ &r_line_error,
+ &r_col_error,
+ (godot_string *)&r_test_error,
+ (godot_string *)&p_path,
+ (godot_pool_string_array *)&functions);
+ for (int i = 0; i < functions.size(); i++) {
+ r_functions->push_back(functions[i]);
+ }
+ return ret;
+ }
+ return true;
+}
+
+Script *PluginScriptLanguage::create_script() const {
+ PluginScript *script = memnew(PluginScript());
+ // I'm hurting kittens doing this I guess...
+ script->init(const_cast<PluginScriptLanguage *>(this));
+ return script;
+}
+
+bool PluginScriptLanguage::has_named_classes() const {
+ return _desc.has_named_classes;
+}
+
+bool PluginScriptLanguage::supports_builtin_mode() const {
+ return _desc.supports_builtin_mode;
+}
+
+int PluginScriptLanguage::find_function(const String &p_function, const String &p_code) const {
+ if (_desc.find_function) {
+ return _desc.find_function(_data, (godot_string *)&p_function, (godot_string *)&p_code);
+ }
+ return -1;
+}
+
+String PluginScriptLanguage::make_function(const String &p_class, const String &p_name, const PoolStringArray &p_args) const {
+ if (_desc.make_function) {
+ godot_string tmp = _desc.make_function(_data, (godot_string *)&p_class, (godot_string *)&p_name, (godot_pool_string_array *)&p_args);
+ String ret = *(String *)&tmp;
+ godot_string_destroy(&tmp);
+ return ret;
+ }
+ return String();
+}
+
+Error PluginScriptLanguage::complete_code(const String &p_code, const String &p_base_path, Object *p_owner, List<String> *r_options, bool &r_force, String &r_call_hint) {
+ if (_desc.complete_code) {
+ Array options;
+ godot_error tmp = _desc.complete_code(
+ _data,
+ (godot_string *)&p_code,
+ (godot_string *)&p_base_path,
+ (godot_object *)p_owner,
+ (godot_array *)&options,
+ &r_force,
+ (godot_string *)&r_call_hint);
+ for (int i = 0; i < options.size(); i++) {
+ r_options->push_back(String(options[i]));
+ }
+ Error err = *(Error *)tmp;
+ return err;
+ }
+ return ERR_UNAVAILABLE;
+}
+
+void PluginScriptLanguage::auto_indent_code(String &p_code, int p_from_line, int p_to_line) const {
+ if (_desc.auto_indent_code) {
+ _desc.auto_indent_code(_data, (godot_string *)&p_code, p_from_line, p_to_line);
+ }
+ return;
+}
+
+void PluginScriptLanguage::add_global_constant(const StringName &p_variable, const Variant &p_value) {
+ const String variable = String(p_variable);
+ _desc.add_global_constant(_data, (godot_string *)&variable, (godot_variant *)&p_value);
+}
+
+/* LOADER FUNCTIONS */
+
+void PluginScriptLanguage::get_recognized_extensions(List<String> *p_extensions) const {
+ for (int i = 0; _desc.recognized_extensions[i]; ++i) {
+ p_extensions->push_back(String(_desc.recognized_extensions[i]));
+ }
+}
+
+void PluginScriptLanguage::get_public_functions(List<MethodInfo> *p_functions) const {
+ // TODO: provid this statically in `godot_pluginscript_language_desc` ?
+ if (_desc.get_public_functions) {
+ Array functions;
+ _desc.get_public_functions(_data, (godot_array *)&functions);
+ for (int i = 0; i < functions.size(); i++) {
+ MethodInfo mi = MethodInfo::from_dict(functions[i]);
+ p_functions->push_back(mi);
+ }
+ }
+}
+
+void PluginScriptLanguage::get_public_constants(List<Pair<String, Variant> > *p_constants) const {
+ // TODO: provid this statically in `godot_pluginscript_language_desc` ?
+ if (_desc.get_public_constants) {
+ Dictionary constants;
+ _desc.get_public_constants(_data, (godot_dictionary *)&constants);
+ for (const Variant *key = constants.next(); key; key = constants.next(key)) {
+ Variant value = constants[key];
+ p_constants->push_back(Pair<String, Variant>(*key, value));
+ }
+ }
+}
+
+void PluginScriptLanguage::profiling_start() {
+#ifdef DEBUG_ENABLED
+ if (_desc.profiling_start) {
+ lock();
+ _desc.profiling_start(_data);
+ unlock();
+ }
+#endif
+}
+
+void PluginScriptLanguage::profiling_stop() {
+#ifdef DEBUG_ENABLED
+ if (_desc.profiling_stop) {
+ lock();
+ _desc.profiling_stop(_data);
+ unlock();
+ }
+#endif
+}
+
+int PluginScriptLanguage::profiling_get_accumulated_data(ProfilingInfo *p_info_arr, int p_info_max) {
+ int info_count = 0;
+#ifdef DEBUG_ENABLED
+ if (_desc.profiling_get_accumulated_data) {
+ godot_pluginscript_profiling_data *info = (godot_pluginscript_profiling_data *)memalloc(
+ sizeof(godot_pluginscript_profiling_data) * p_info_max);
+ info_count = _desc.profiling_get_accumulated_data(_data, info, p_info_max);
+ for (int i = 0; i < info_count; ++i) {
+ p_info_arr[i].signature = *(StringName *)&info[i].signature;
+ p_info_arr[i].call_count = info[i].call_count;
+ p_info_arr[i].total_time = info[i].total_time;
+ p_info_arr[i].self_time = info[i].self_time;
+ godot_string_name_destroy(&info[i].signature);
+ }
+ }
+#endif
+ return info_count;
+}
+
+int PluginScriptLanguage::profiling_get_frame_data(ProfilingInfo *p_info_arr, int p_info_max) {
+ int info_count = 0;
+#ifdef DEBUG_ENABLED
+ if (_desc.profiling_get_frame_data) {
+ godot_pluginscript_profiling_data *info = (godot_pluginscript_profiling_data *)memalloc(
+ sizeof(godot_pluginscript_profiling_data) * p_info_max);
+ info_count = _desc.profiling_get_frame_data(_data, info, p_info_max);
+ for (int i = 0; i < info_count; ++i) {
+ p_info_arr[i].signature = *(StringName *)&info[i].signature;
+ p_info_arr[i].call_count = info[i].call_count;
+ p_info_arr[i].total_time = info[i].total_time;
+ p_info_arr[i].self_time = info[i].self_time;
+ godot_string_name_destroy(&info[i].signature);
+ }
+ }
+#endif
+ return info_count;
+}
+
+void PluginScriptLanguage::frame() {
+#ifdef DEBUG_ENABLED
+ if (_desc.profiling_frame) {
+ _desc.profiling_frame(_data);
+ }
+#endif
+}
+
+/* DEBUGGER FUNCTIONS */
+
+String PluginScriptLanguage::debug_get_error() const {
+ if (_desc.debug_get_error) {
+ godot_string tmp = _desc.debug_get_error(_data);
+ String ret = *(String *)&tmp;
+ godot_string_destroy(&tmp);
+ return ret;
+ }
+ return String("Nothing");
+}
+
+int PluginScriptLanguage::debug_get_stack_level_count() const {
+ if (_desc.debug_get_stack_level_count) {
+ return _desc.debug_get_stack_level_count(_data);
+ }
+ return 1;
+}
+
+int PluginScriptLanguage::debug_get_stack_level_line(int p_level) const {
+ if (_desc.debug_get_stack_level_line) {
+ return _desc.debug_get_stack_level_line(_data, p_level);
+ }
+ return 1;
+}
+
+String PluginScriptLanguage::debug_get_stack_level_function(int p_level) const {
+ if (_desc.debug_get_stack_level_function) {
+ godot_string tmp = _desc.debug_get_stack_level_function(_data, p_level);
+ String ret = *(String *)&tmp;
+ godot_string_destroy(&tmp);
+ return ret;
+ }
+ return String("Nothing");
+}
+
+String PluginScriptLanguage::debug_get_stack_level_source(int p_level) const {
+ if (_desc.debug_get_stack_level_source) {
+ godot_string tmp = _desc.debug_get_stack_level_source(_data, p_level);
+ String ret = *(String *)&tmp;
+ godot_string_destroy(&tmp);
+ return ret;
+ }
+ return String("Nothing");
+}
+
+void PluginScriptLanguage::debug_get_stack_level_locals(int p_level, List<String> *p_locals, List<Variant> *p_values, int p_max_subitems, int p_max_depth) {
+ if (_desc.debug_get_stack_level_locals) {
+ PoolStringArray locals;
+ Array values;
+ _desc.debug_get_stack_level_locals(_data, p_level, (godot_pool_string_array *)&locals, (godot_array *)&values, p_max_subitems, p_max_depth);
+ for (int i = 0; i < locals.size(); i++) {
+ p_locals->push_back(locals[i]);
+ }
+ for (int i = 0; i < values.size(); i++) {
+ p_values->push_back(values[i]);
+ }
+ }
+}
+
+void PluginScriptLanguage::debug_get_stack_level_members(int p_level, List<String> *p_members, List<Variant> *p_values, int p_max_subitems, int p_max_depth) {
+ if (_desc.debug_get_stack_level_members) {
+ PoolStringArray members;
+ Array values;
+ _desc.debug_get_stack_level_members(_data, p_level, (godot_pool_string_array *)&members, (godot_array *)&values, p_max_subitems, p_max_depth);
+ for (int i = 0; i < members.size(); i++) {
+ p_members->push_back(members[i]);
+ }
+ for (int i = 0; i < values.size(); i++) {
+ p_values->push_back(values[i]);
+ }
+ }
+}
+
+void PluginScriptLanguage::debug_get_globals(List<String> *p_locals, List<Variant> *p_values, int p_max_subitems, int p_max_depth) {
+ if (_desc.debug_get_globals) {
+ PoolStringArray locals;
+ Array values;
+ _desc.debug_get_globals(_data, (godot_pool_string_array *)&locals, (godot_array *)&values, p_max_subitems, p_max_depth);
+ for (int i = 0; i < locals.size(); i++) {
+ p_locals->push_back(locals[i]);
+ }
+ for (int i = 0; i < values.size(); i++) {
+ p_values->push_back(values[i]);
+ }
+ }
+}
+
+String PluginScriptLanguage::debug_parse_stack_level_expression(int p_level, const String &p_expression, int p_max_subitems, int p_max_depth) {
+ if (_desc.debug_parse_stack_level_expression) {
+ godot_string tmp = _desc.debug_parse_stack_level_expression(_data, p_level, (godot_string *)&p_expression, p_max_subitems, p_max_depth);
+ String ret = *(String *)&tmp;
+ godot_string_destroy(&tmp);
+ return ret;
+ }
+ return String("Nothing");
+}
+
+void PluginScriptLanguage::reload_all_scripts() {
+ // TODO
+}
+
+void PluginScriptLanguage::reload_tool_script(const Ref<Script> &p_script, bool p_soft_reload) {
+#ifdef DEBUG_ENABLED
+ lock();
+ // TODO
+ unlock();
+#endif
+}
+
+void PluginScriptLanguage::lock() {
+#ifndef NO_THREADS
+ if (_lock) {
+ _lock->lock();
+ }
+#endif
+}
+
+void PluginScriptLanguage::unlock() {
+#ifndef NO_THREADS
+ if (_lock) {
+ _lock->unlock();
+ }
+#endif
+}
+
+PluginScriptLanguage::PluginScriptLanguage(const godot_pluginscript_language_desc *desc)
+ : _desc(*desc) {
+ _resource_loader = memnew(ResourceFormatLoaderPluginScript(this));
+ _resource_saver = memnew(ResourceFormatSaverPluginScript(this));
+
+// TODO: totally remove _lock attribute if NO_THREADS is set
+#ifdef NO_THREADS
+ _lock = NULL;
+#else
+ _lock = Mutex::create();
+#endif
+}
+
+PluginScriptLanguage::~PluginScriptLanguage() {
+ memdelete(_resource_loader);
+ memdelete(_resource_saver);
+#ifndef NO_THREADS
+ if (_lock) {
+ memdelete(_lock);
+ _lock = NULL;
+ }
+#endif
+}
diff --git a/modules/gdnative/pluginscript/pluginscript_language.h b/modules/gdnative/pluginscript/pluginscript_language.h
new file mode 100644
index 0000000000..79b95ff4e6
--- /dev/null
+++ b/modules/gdnative/pluginscript/pluginscript_language.h
@@ -0,0 +1,132 @@
+/*************************************************************************/
+/* pluginscript_language.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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 PLUGINSCRIPT_LANGUAGE_H
+#define PLUGINSCRIPT_LANGUAGE_H
+
+// Godot imports
+#include "core/io/resource_loader.h"
+#include "core/io/resource_saver.h"
+#include "core/map.h"
+#include "core/script_language.h"
+#include "core/self_list.h"
+// PluginScript imports
+#include "pluginscript_loader.h"
+#include <pluginscript/godot_pluginscript.h>
+
+class PluginScript;
+class PluginScriptInstance;
+
+class PluginScriptLanguage : public ScriptLanguage {
+ friend class PluginScript;
+ friend class PluginScriptInstance;
+
+ ResourceFormatLoaderPluginScript *_resource_loader;
+ ResourceFormatSaverPluginScript *_resource_saver;
+ const godot_pluginscript_language_desc _desc;
+ godot_pluginscript_language_data *_data;
+
+ Mutex *_lock;
+ SelfList<PluginScript>::List _script_list;
+
+public:
+ virtual String get_name() const;
+
+ _FORCE_INLINE_ ResourceFormatLoaderPluginScript *get_resource_loader() { return _resource_loader; };
+ _FORCE_INLINE_ ResourceFormatSaverPluginScript *get_resource_saver() { return _resource_saver; };
+
+ /* LANGUAGE FUNCTIONS */
+ virtual void init();
+ virtual String get_type() const;
+ virtual String get_extension() const;
+ virtual Error execute_file(const String &p_path);
+ virtual void finish();
+
+ /* EDITOR FUNCTIONS */
+ virtual void get_reserved_words(List<String> *p_words) const;
+ virtual void get_comment_delimiters(List<String> *p_delimiters) const;
+ virtual void get_string_delimiters(List<String> *p_delimiters) const;
+ virtual Ref<Script> get_template(const String &p_class_name, const String &p_base_class_name) const;
+ virtual bool validate(const String &p_script, int &r_line_error, int &r_col_error, String &r_test_error, const String &p_path = "", List<String> *r_functions = NULL) const;
+ virtual Script *create_script() const;
+ virtual bool has_named_classes() const;
+ virtual bool supports_builtin_mode() const;
+ virtual bool can_inherit_from_file() { return true; }
+ virtual int find_function(const String &p_function, const String &p_code) const;
+ virtual String make_function(const String &p_class, const String &p_name, const PoolStringArray &p_args) const;
+ virtual Error complete_code(const String &p_code, const String &p_base_path, Object *p_owner, List<String> *r_options, bool &r_force, String &r_call_hint);
+ virtual void auto_indent_code(String &p_code, int p_from_line, int p_to_line) const;
+ virtual void add_global_constant(const StringName &p_variable, const Variant &p_value);
+
+ /* MULTITHREAD FUNCTIONS */
+
+ //some VMs need to be notified of thread creation/exiting to allocate a stack
+ // void thread_enter() {}
+ // void thread_exit() {}
+
+ /* DEBUGGER FUNCTIONS */
+
+ virtual String debug_get_error() const;
+ virtual int debug_get_stack_level_count() const;
+ virtual int debug_get_stack_level_line(int p_level) const;
+ virtual String debug_get_stack_level_function(int p_level) const;
+ virtual String debug_get_stack_level_source(int p_level) const;
+ virtual void debug_get_stack_level_locals(int p_level, List<String> *p_locals, List<Variant> *p_values, int p_max_subitems = -1, int p_max_depth = -1);
+ virtual void debug_get_stack_level_members(int p_level, List<String> *p_members, List<Variant> *p_values, int p_max_subitems = -1, int p_max_depth = -1);
+ virtual void debug_get_globals(List<String> *p_locals, List<Variant> *p_values, int p_max_subitems = -1, int p_max_depth = -1);
+ virtual String debug_parse_stack_level_expression(int p_level, const String &p_expression, int p_max_subitems = -1, int p_max_depth = -1);
+
+ // virtual Vector<StackInfo> debug_get_current_stack_info() { return Vector<StackInfo>(); }
+
+ virtual void reload_all_scripts();
+ virtual void reload_tool_script(const Ref<Script> &p_script, bool p_soft_reload);
+
+ /* LOADER FUNCTIONS */
+
+ virtual void get_recognized_extensions(List<String> *p_extensions) const;
+ virtual void get_public_functions(List<MethodInfo> *p_functions) const;
+ virtual void get_public_constants(List<Pair<String, Variant> > *p_constants) const;
+
+ virtual void profiling_start();
+ virtual void profiling_stop();
+
+ virtual int profiling_get_accumulated_data(ProfilingInfo *p_info_arr, int p_info_max);
+ virtual int profiling_get_frame_data(ProfilingInfo *p_info_arr, int p_info_max);
+
+ virtual void frame();
+
+ void lock();
+ void unlock();
+
+ PluginScriptLanguage(const godot_pluginscript_language_desc *desc);
+ virtual ~PluginScriptLanguage();
+};
+
+#endif // PLUGINSCRIPT_LANGUAGE_H
diff --git a/modules/gdnative/pluginscript/pluginscript_loader.cpp b/modules/gdnative/pluginscript/pluginscript_loader.cpp
new file mode 100644
index 0000000000..3648e1a5b4
--- /dev/null
+++ b/modules/gdnative/pluginscript/pluginscript_loader.cpp
@@ -0,0 +1,113 @@
+/*************************************************************************/
+/* pluginscript_loader.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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. */
+/*************************************************************************/
+
+// Godot imports
+#include "os/file_access.h"
+// Pythonscript imports
+#include "pluginscript_language.h"
+#include "pluginscript_loader.h"
+#include "pluginscript_script.h"
+
+ResourceFormatLoaderPluginScript::ResourceFormatLoaderPluginScript(PluginScriptLanguage *language) {
+ _language = language;
+}
+
+RES ResourceFormatLoaderPluginScript::load(const String &p_path, const String &p_original_path, Error *r_error) {
+ if (r_error)
+ *r_error = ERR_FILE_CANT_OPEN;
+
+ PluginScript *script = memnew(PluginScript);
+ script->init(_language);
+
+ Ref<PluginScript> scriptres(script);
+
+ Error err = script->load_source_code(p_path);
+ ERR_FAIL_COND_V(err != OK, RES());
+
+ script->set_path(p_original_path);
+
+ script->reload();
+
+ if (r_error)
+ *r_error = OK;
+
+ return scriptres;
+}
+
+void ResourceFormatLoaderPluginScript::get_recognized_extensions(List<String> *p_extensions) const {
+ p_extensions->push_back(_language->get_extension());
+}
+
+bool ResourceFormatLoaderPluginScript::handles_type(const String &p_type) const {
+ return p_type == "Script" || p_type == _language->get_type();
+}
+
+String ResourceFormatLoaderPluginScript::get_resource_type(const String &p_path) const {
+ String el = p_path.get_extension().to_lower();
+ if (el == _language->get_extension())
+ return _language->get_type();
+ return "";
+}
+
+ResourceFormatSaverPluginScript::ResourceFormatSaverPluginScript(PluginScriptLanguage *language) {
+ _language = language;
+}
+
+Error ResourceFormatSaverPluginScript::save(const String &p_path, const RES &p_resource, uint32_t p_flags) {
+ Ref<PluginScript> sqscr = p_resource;
+ ERR_FAIL_COND_V(sqscr.is_null(), ERR_INVALID_PARAMETER);
+
+ String source = sqscr->get_source_code();
+
+ Error err;
+ FileAccess *file = FileAccess::open(p_path, FileAccess::WRITE, &err);
+ ERR_FAIL_COND_V(err, err);
+
+ file->store_string(source);
+ if (file->get_error() != OK && file->get_error() != ERR_FILE_EOF) {
+ memdelete(file);
+ return ERR_CANT_CREATE;
+ }
+ file->close();
+ memdelete(file);
+ return OK;
+}
+
+void ResourceFormatSaverPluginScript::get_recognized_extensions(const RES &p_resource, List<String> *p_extensions) const {
+
+ if (Object::cast_to<PluginScript>(*p_resource)) {
+ p_extensions->push_back(_language->get_extension());
+ }
+}
+
+bool ResourceFormatSaverPluginScript::recognize(const RES &p_resource) const {
+
+ return Object::cast_to<PluginScript>(*p_resource) != NULL;
+}
diff --git a/modules/gdnative/pluginscript/pluginscript_loader.h b/modules/gdnative/pluginscript/pluginscript_loader.h
new file mode 100644
index 0000000000..b85e7725a1
--- /dev/null
+++ b/modules/gdnative/pluginscript/pluginscript_loader.h
@@ -0,0 +1,62 @@
+/*************************************************************************/
+/* pluginscript_loader.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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 PYTHONSCRIPT_PY_LOADER_H
+#define PYTHONSCRIPT_PY_LOADER_H
+
+// Godot imports
+#include "core/script_language.h"
+#include "io/resource_loader.h"
+#include "io/resource_saver.h"
+
+class PluginScriptLanguage;
+
+class ResourceFormatLoaderPluginScript : public ResourceFormatLoader {
+ PluginScriptLanguage *_language;
+
+public:
+ ResourceFormatLoaderPluginScript(PluginScriptLanguage *language);
+ virtual RES load(const String &p_path, const String &p_original_path = "", Error *r_error = NULL);
+ virtual void get_recognized_extensions(List<String> *p_extensions) const;
+ virtual bool handles_type(const String &p_type) const;
+ virtual String get_resource_type(const String &p_path) const;
+};
+
+class ResourceFormatSaverPluginScript : public ResourceFormatSaver {
+ PluginScriptLanguage *_language;
+
+public:
+ ResourceFormatSaverPluginScript(PluginScriptLanguage *language);
+ virtual Error save(const String &p_path, const RES &p_resource, uint32_t p_flags = 0);
+ virtual void get_recognized_extensions(const RES &p_resource, List<String> *p_extensions) const;
+ virtual bool recognize(const RES &p_resource) const;
+};
+
+#endif // PYTHONSCRIPT_PY_LOADER_H
diff --git a/modules/gdnative/pluginscript/pluginscript_script.cpp b/modules/gdnative/pluginscript/pluginscript_script.cpp
new file mode 100644
index 0000000000..4169b07f63
--- /dev/null
+++ b/modules/gdnative/pluginscript/pluginscript_script.cpp
@@ -0,0 +1,449 @@
+/*************************************************************************/
+/* pluginscript_script.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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. */
+/*************************************************************************/
+
+// Godot imports
+#include "core/os/file_access.h"
+// PluginScript imports
+#include "pluginscript_instance.h"
+#include "pluginscript_script.h"
+
+#if DEBUG_ENABLED
+#define __ASSERT_SCRIPT_REASON "Cannot retrieve pluginscript class for this script, is you code correct ?"
+#define ASSERT_SCRIPT_VALID() \
+ { \
+ ERR_EXPLAIN(__ASSERT_SCRIPT_REASON); \
+ ERR_FAIL_COND(!can_instance()) \
+ }
+#define ASSERT_SCRIPT_VALID_V(ret) \
+ { \
+ ERR_EXPLAIN(__ASSERT_SCRIPT_REASON); \
+ ERR_FAIL_COND_V(!can_instance(), ret) \
+ }
+#else
+#define ASSERT_SCRIPT_VALID()
+#define ASSERT_SCRIPT_VALID_V(ret)
+#endif
+
+void PluginScript::_bind_methods() {
+}
+
+#ifdef TOOLS_ENABLED
+
+void PluginScript::_placeholder_erased(PlaceHolderScriptInstance *p_placeholder) {
+ placeholders.erase(p_placeholder);
+}
+
+#endif
+
+bool PluginScript::can_instance() const {
+ bool can = _valid || (!_tool && !ScriptServer::is_scripting_enabled());
+ return can;
+}
+
+Ref<Script> PluginScript::get_base_script() const {
+ if (_ref_base_parent.is_valid()) {
+ return Ref<PluginScript>(_ref_base_parent);
+ } else {
+ return Ref<Script>();
+ }
+}
+
+StringName PluginScript::get_instance_base_type() const {
+ if (_native_parent)
+ return _native_parent;
+ if (_ref_base_parent.is_valid())
+ return _ref_base_parent->get_instance_base_type();
+ return StringName();
+}
+
+void PluginScript::update_exports() {
+// TODO
+#ifdef TOOLS_ENABLED
+#if 0
+ ASSERT_SCRIPT_VALID();
+ if (/*changed &&*/ placeholders.size()) { //hm :(
+
+ //update placeholders if any
+ Map<StringName, Variant> propdefvalues;
+ List<PropertyInfo> propinfos;
+ const String *props = (const String *)pybind_get_prop_list(_py_exposed_class);
+ for (int i = 0; props[i] != ""; ++i) {
+ const String propname = props[i];
+ pybind_get_prop_default_value(_py_exposed_class, propname.c_str(), (godot_variant *)&propdefvalues[propname]);
+ pybind_prop_info raw_info;
+ pybind_get_prop_info(_py_exposed_class, propname.c_str(), &raw_info);
+ PropertyInfo info;
+ info.type = (Variant::Type)raw_info.type;
+ info.name = propname;
+ info.hint = (PropertyHint)raw_info.hint;
+ info.hint_string = *(String *)&raw_info.hint_string;
+ info.usage = raw_info.usage;
+ propinfos.push_back(info);
+ }
+ for (Set<PlaceHolderScriptInstance *>::Element *E = placeholders.front(); E; E = E->next()) {
+ E->get()->update(propinfos, propdefvalues);
+ }
+ }
+#endif
+#endif
+}
+
+// TODO: rename p_this "p_owner" ?
+ScriptInstance *PluginScript::instance_create(Object *p_this) {
+ ASSERT_SCRIPT_VALID_V(NULL);
+ // TODO check script validity ?
+ if (!_tool && !ScriptServer::is_scripting_enabled()) {
+#ifdef TOOLS_ENABLED
+ // Instance a fake script for editing the values
+ PlaceHolderScriptInstance *si = memnew(PlaceHolderScriptInstance(get_language(), Ref<Script>(this), p_this));
+ placeholders.insert(si);
+ update_exports();
+ return si;
+#else
+ return NULL;
+#endif
+ }
+
+ PluginScript *top = this;
+ // TODO: can be optimized by storing a PluginScript::_base_parent direct pointer
+ while (top->_ref_base_parent.is_valid())
+ top = top->_ref_base_parent.ptr();
+ if (top->_native_parent) {
+ if (!ClassDB::is_parent_class(p_this->get_class_name(), top->_native_parent)) {
+ String msg = "Script inherits from native type '" + String(top->_native_parent) + "', so it can't be instanced in object of type: '" + p_this->get_class() + "'";
+ // TODO: implement PluginscriptLanguage::debug_break_parse
+ // if (ScriptDebugger::get_singleton()) {
+ // _language->debug_break_parse(get_path(), 0, msg);
+ // }
+ ERR_EXPLAIN(msg);
+ ERR_FAIL_V(NULL);
+ }
+ }
+
+ PluginScriptInstance *instance = memnew(PluginScriptInstance());
+ const bool success = instance->init(this, p_this);
+ if (success) {
+ _language->lock();
+ _instances.insert(instance->get_owner());
+ _language->unlock();
+ return instance;
+ } else {
+ memdelete(instance);
+ ERR_FAIL_V(NULL);
+ }
+}
+
+bool PluginScript::instance_has(const Object *p_this) const {
+ _language->lock();
+ bool hasit = _instances.has((Object *)p_this);
+ _language->unlock();
+ return hasit;
+}
+
+bool PluginScript::has_source_code() const {
+ bool has = _source != "";
+ return has;
+}
+
+String PluginScript::get_source_code() const {
+ return _source;
+}
+
+void PluginScript::set_source_code(const String &p_code) {
+ if (_source == p_code)
+ return;
+ _source = p_code;
+}
+
+Error PluginScript::reload(bool p_keep_state) {
+ _language->lock();
+ ERR_FAIL_COND_V(!p_keep_state && _instances.size(), ERR_ALREADY_IN_USE);
+ _language->unlock();
+
+ _valid = false;
+ String basedir = _path;
+
+ if (basedir == "")
+ basedir = get_path();
+
+ if (basedir != "")
+ basedir = basedir.get_base_dir();
+
+ if (_data) {
+ _desc->finish(_data);
+ }
+
+ Error err;
+ godot_pluginscript_script_manifest manifest = _desc->init(
+ _language->_data,
+ (godot_string *)&_path,
+ (godot_string *)&_source,
+ (godot_error *)&err);
+ if (err) {
+ // TODO: GDscript uses `ScriptDebugger` here to jump into the parsing error
+ return err;
+ }
+ _valid = true;
+ // Use the manifest to configure this script object
+ _data = manifest.data;
+ _name = *(StringName *)&manifest.name;
+ _tool = manifest.is_tool;
+ // Base name is either another PluginScript or a regular class accessible
+ // through ClassDB
+ StringName *base_name = (StringName *)&manifest.base;
+ for (SelfList<PluginScript> *e = _language->_script_list.first(); e != NULL; e = e->next()) {
+ if (e->self()->_name == *base_name) {
+ // Found you, base is a PluginScript !
+ _ref_base_parent = Ref<PluginScript>(e->self());
+ break;
+ }
+ }
+ if (!_ref_base_parent.is_valid()) {
+ // Base is a native ClassDB
+ if (!ClassDB::class_exists(*base_name)) {
+ ERR_EXPLAIN("Unknown script '" + String(_name) + "' parent '" + String(*base_name) + "'.");
+ ERR_FAIL_V(ERR_PARSE_ERROR);
+ }
+ _native_parent = *base_name;
+ }
+
+ Dictionary *members = (Dictionary *)&manifest.member_lines;
+ for (const Variant *key = members->next(); key != NULL; key = members->next(key)) {
+ _member_lines[*key] = (*members)[key];
+ }
+ Array *methods = (Array *)&manifest.methods;
+ for (int i = 0; i < methods->size(); ++i) {
+ Dictionary v = (*methods)[i];
+ MethodInfo mi = MethodInfo::from_dict(v);
+ _methods_info[mi.name] = mi;
+ // rpc_mode is passed as an optional field and is not part of MethodInfo
+ Variant var = v["rpc_mode"];
+ if (var == Variant()) {
+ _methods_rpc_mode[mi.name] = ScriptInstance::RPC_MODE_DISABLED;
+ } else {
+ _methods_rpc_mode[mi.name] = ScriptInstance::RPCMode(int(var));
+ }
+ }
+ Array *signals = (Array *)&manifest.signals;
+ for (int i = 0; i < signals->size(); ++i) {
+ Variant v = (*signals)[i];
+ MethodInfo mi = MethodInfo::from_dict(v);
+ _signals_info[mi.name] = mi;
+ }
+ Array *properties = (Array *)&manifest.properties;
+ for (int i = 0; i < properties->size(); ++i) {
+ Dictionary v = (*properties)[i];
+ PropertyInfo pi = PropertyInfo::from_dict(v);
+ _properties_info[pi.name] = pi;
+ _properties_default_values[pi.name] = v["default_value"];
+ // rset_mode is passed as an optional field and is not part of PropertyInfo
+ Variant var = v["rset_mode"];
+ if (var == Variant()) {
+ _methods_rpc_mode[pi.name] = ScriptInstance::RPC_MODE_DISABLED;
+ } else {
+ _methods_rpc_mode[pi.name] = ScriptInstance::RPCMode(int(var));
+ }
+ }
+ // Manifest's attributes must be explicitly freed
+ godot_string_name_destroy(&manifest.name);
+ godot_string_name_destroy(&manifest.base);
+ godot_dictionary_destroy(&manifest.member_lines);
+ godot_array_destroy(&manifest.methods);
+ godot_array_destroy(&manifest.signals);
+ godot_array_destroy(&manifest.properties);
+
+#ifdef TOOLS_ENABLED
+/*for (Set<PlaceHolderScriptInstance*>::Element *E=placeholders.front();E;E=E->next()) {
+
+ _update_placeholder(E->get());
+ }*/
+#endif
+ return OK;
+}
+
+void PluginScript::get_script_method_list(List<MethodInfo> *r_methods) const {
+ ASSERT_SCRIPT_VALID();
+ for (Map<StringName, MethodInfo>::Element *e = _methods_info.front(); e != NULL; e = e->next()) {
+ r_methods->push_back(e->get());
+ }
+}
+
+void PluginScript::get_script_property_list(List<PropertyInfo> *r_properties) const {
+ ASSERT_SCRIPT_VALID();
+ for (Map<StringName, PropertyInfo>::Element *e = _properties_info.front(); e != NULL; e = e->next()) {
+ r_properties->push_back(e->get());
+ }
+}
+
+bool PluginScript::has_method(const StringName &p_method) const {
+ ASSERT_SCRIPT_VALID_V(false);
+ return _methods_info.has(p_method);
+}
+
+MethodInfo PluginScript::get_method_info(const StringName &p_method) const {
+ ASSERT_SCRIPT_VALID_V(MethodInfo());
+ const Map<StringName, MethodInfo>::Element *e = _methods_info.find(p_method);
+ if (e != NULL) {
+ return e->get();
+ } else {
+ return MethodInfo();
+ }
+}
+
+bool PluginScript::has_property(const StringName &p_method) const {
+ ASSERT_SCRIPT_VALID_V(false);
+ return _properties_info.has(p_method);
+}
+
+PropertyInfo PluginScript::get_property_info(const StringName &p_property) const {
+ ASSERT_SCRIPT_VALID_V(PropertyInfo());
+ const Map<StringName, PropertyInfo>::Element *e = _properties_info.find(p_property);
+ if (e != NULL) {
+ return e->get();
+ } else {
+ return PropertyInfo();
+ }
+}
+
+bool PluginScript::get_property_default_value(const StringName &p_property, Variant &r_value) const {
+ ASSERT_SCRIPT_VALID_V(false);
+#ifdef TOOLS_ENABLED
+ const Map<StringName, Variant>::Element *e = _properties_default_values.find(p_property);
+ if (e != NULL) {
+ r_value = e->get();
+ return true;
+ } else {
+ return false;
+ }
+#endif
+ return false;
+}
+
+ScriptLanguage *PluginScript::get_language() const {
+ return _language;
+}
+
+Error PluginScript::load_source_code(const String &p_path) {
+
+ PoolVector<uint8_t> sourcef;
+ Error err;
+ FileAccess *f = FileAccess::open(p_path, FileAccess::READ, &err);
+ if (err) {
+ ERR_FAIL_COND_V(err, err);
+ }
+
+ int len = f->get_len();
+ sourcef.resize(len + 1);
+ PoolVector<uint8_t>::Write w = sourcef.write();
+ int r = f->get_buffer(w.ptr(), len);
+ f->close();
+ memdelete(f);
+ ERR_FAIL_COND_V(r != len, ERR_CANT_OPEN);
+ w[len] = 0;
+
+ String s;
+ if (s.parse_utf8((const char *)w.ptr())) {
+ ERR_EXPLAIN("Script '" + p_path + "' contains invalid unicode (utf-8), so it was not loaded. Please ensure that scripts are saved in valid utf-8 unicode.");
+ ERR_FAIL_V(ERR_INVALID_DATA);
+ }
+
+ _source = s;
+#ifdef TOOLS_ENABLED
+// source_changed_cache=true;
+#endif
+ _path = p_path;
+ return OK;
+}
+
+bool PluginScript::has_script_signal(const StringName &p_signal) const {
+ ASSERT_SCRIPT_VALID_V(false);
+ return _signals_info.has(p_signal);
+}
+
+void PluginScript::get_script_signal_list(List<MethodInfo> *r_signals) const {
+ ASSERT_SCRIPT_VALID();
+ for (Map<StringName, MethodInfo>::Element *e = _signals_info.front(); e != NULL; e = e->next()) {
+ r_signals->push_back(e->get());
+ }
+}
+
+int PluginScript::get_member_line(const StringName &p_member) const {
+#ifdef TOOLS_ENABLED
+ if (_member_lines.has(p_member))
+ return _member_lines[p_member];
+ else
+#endif
+ return -1;
+}
+
+ScriptInstance::RPCMode PluginScript::get_rpc_mode(const StringName &p_method) const {
+ ASSERT_SCRIPT_VALID_V(ScriptInstance::RPC_MODE_DISABLED);
+ const Map<StringName, ScriptInstance::RPCMode>::Element *e = _methods_rpc_mode.find(p_method);
+ if (e != NULL) {
+ return e->get();
+ } else {
+ return ScriptInstance::RPC_MODE_DISABLED;
+ }
+}
+
+ScriptInstance::RPCMode PluginScript::get_rset_mode(const StringName &p_variable) const {
+ ASSERT_SCRIPT_VALID_V(ScriptInstance::RPC_MODE_DISABLED);
+ const Map<StringName, ScriptInstance::RPCMode>::Element *e = _variables_rset_mode.find(p_variable);
+ if (e != NULL) {
+ return e->get();
+ } else {
+ return ScriptInstance::RPC_MODE_DISABLED;
+ }
+}
+
+PluginScript::PluginScript()
+ : _data(NULL), _tool(false), _valid(false), _script_list(this) {
+}
+
+void PluginScript::init(PluginScriptLanguage *language) {
+ _desc = &language->_desc.script_desc;
+ _language = language;
+
+#ifdef DEBUG_ENABLED
+ _language->lock();
+ _language->_script_list.add(&_script_list);
+ _language->unlock();
+#endif
+}
+
+PluginScript::~PluginScript() {
+ _desc->finish(_data);
+
+#ifdef DEBUG_ENABLED
+ _language->lock();
+ _language->_script_list.remove(&_script_list);
+ _language->unlock();
+#endif
+}
diff --git a/modules/gdnative/pluginscript/pluginscript_script.h b/modules/gdnative/pluginscript/pluginscript_script.h
new file mode 100644
index 0000000000..5600bca5ef
--- /dev/null
+++ b/modules/gdnative/pluginscript/pluginscript_script.h
@@ -0,0 +1,127 @@
+/*************************************************************************/
+/* pluginscript_script.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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 PLUGINSCRIPT_SCRIPT_H
+#define PLUGINSCRIPT_SCRIPT_H
+
+// Godot imports
+#include "core/script_language.h"
+// PluginScript imports
+#include "pluginscript_language.h"
+#include <pluginscript/godot_pluginscript.h>
+
+class PyInstance;
+
+class PluginScript : public Script {
+
+ GDCLASS(PluginScript, Script);
+
+ friend class PluginScriptInstance;
+ friend class PluginScriptLanguage;
+
+private:
+ godot_pluginscript_script_data *_data;
+ const godot_pluginscript_script_desc *_desc;
+ PluginScriptLanguage *_language;
+ bool _tool;
+ bool _valid;
+
+ Ref<PluginScript> _ref_base_parent;
+ StringName _native_parent;
+ SelfList<PluginScript> _script_list;
+
+ Map<StringName, int> _member_lines;
+ Map<StringName, Variant> _properties_default_values;
+ Map<StringName, PropertyInfo> _properties_info;
+ Map<StringName, MethodInfo> _signals_info;
+ Map<StringName, MethodInfo> _methods_info;
+ Map<StringName, ScriptInstance::RPCMode> _variables_rset_mode;
+ Map<StringName, ScriptInstance::RPCMode> _methods_rpc_mode;
+
+ Set<Object *> _instances;
+ //exported members
+ String _source;
+ String _path;
+ StringName _name;
+
+protected:
+ static void _bind_methods();
+
+#ifdef TOOLS_ENABLED
+ Set<PlaceHolderScriptInstance *> placeholders;
+ //void _update_placeholder(PlaceHolderScriptInstance *p_placeholder);
+ virtual void _placeholder_erased(PlaceHolderScriptInstance *p_placeholder);
+#endif
+public:
+ virtual bool can_instance() const;
+
+ virtual Ref<Script> get_base_script() const; //for script inheritance
+
+ virtual StringName get_instance_base_type() const; // this may not work in all scripts, will return empty if so
+ virtual ScriptInstance *instance_create(Object *p_this);
+ virtual bool instance_has(const Object *p_this) const;
+
+ virtual bool has_source_code() const;
+ virtual String get_source_code() const;
+ virtual void set_source_code(const String &p_code);
+ virtual Error reload(bool p_keep_state = false);
+ // TODO: load_source_code only allow utf-8 file, should handle bytecode as well ?
+ virtual Error load_source_code(const String &p_path);
+
+ virtual bool has_method(const StringName &p_method) const;
+ virtual MethodInfo get_method_info(const StringName &p_method) const;
+
+ bool has_property(const StringName &p_method) const;
+ PropertyInfo get_property_info(const StringName &p_property) const;
+
+ bool is_tool() const { return _tool; }
+
+ virtual ScriptLanguage *get_language() const;
+
+ virtual bool has_script_signal(const StringName &p_signal) const;
+ virtual void get_script_signal_list(List<MethodInfo> *r_signals) const;
+
+ virtual bool get_property_default_value(const StringName &p_property, Variant &r_value) const;
+
+ virtual void update_exports();
+ virtual void get_script_method_list(List<MethodInfo> *r_methods) const;
+ virtual void get_script_property_list(List<PropertyInfo> *r_propertieslist) const;
+
+ virtual int get_member_line(const StringName &p_member) const;
+
+ ScriptInstance::RPCMode get_rpc_mode(const StringName &p_method) const;
+ ScriptInstance::RPCMode get_rset_mode(const StringName &p_variable) const;
+
+ PluginScript();
+ void init(PluginScriptLanguage *language);
+ virtual ~PluginScript();
+};
+
+#endif // PLUGINSCRIPT_SCRIPT_H
diff --git a/modules/gdnative/pluginscript/register_types.cpp b/modules/gdnative/pluginscript/register_types.cpp
new file mode 100644
index 0000000000..5829d08dff
--- /dev/null
+++ b/modules/gdnative/pluginscript/register_types.cpp
@@ -0,0 +1,118 @@
+/*************************************************************************/
+/* register_types.cpp */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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 "register_types.h"
+
+#include "core/project_settings.h"
+#include "io/resource_loader.h"
+#include "io/resource_saver.h"
+#include "os/dir_access.h"
+#include "os/os.h"
+#include "scene/main/scene_tree.h"
+
+#include "pluginscript_language.h"
+#include "pluginscript_script.h"
+#include <pluginscript/godot_pluginscript.h>
+
+static List<PluginScriptLanguage *> pluginscript_languages;
+
+static Error _check_language_desc(const godot_pluginscript_language_desc *desc) {
+ ERR_FAIL_COND_V(!desc->name || desc->name == String(), ERR_BUG);
+ ERR_FAIL_COND_V(!desc->type || desc->type == String(), ERR_BUG);
+ ERR_FAIL_COND_V(!desc->extension || desc->extension == String(), ERR_BUG);
+ ERR_FAIL_COND_V(!desc->recognized_extensions || !desc->recognized_extensions[0], ERR_BUG);
+ ERR_FAIL_COND_V(!desc->init, ERR_BUG);
+ ERR_FAIL_COND_V(!desc->finish, ERR_BUG);
+
+ // desc->reserved_words is not mandatory
+ // desc->comment_delimiters is not mandatory
+ // desc->string_delimiters is not mandatory
+
+ // desc->get_template_source_code is not mandatory
+ // desc->validate is not mandatory
+
+ // desc->get_template_source_code is not mandatory
+ // desc->validate is not mandatory
+ // desc->find_function is not mandatory
+ // desc->make_function is not mandatory
+ // desc->complete_code is not mandatory
+ // desc->auto_indent_code is not mandatory
+ // desc->add_global_constant is not mandatory
+ // desc->debug_get_error is not mandatory
+ // desc->debug_get_stack_level_count is not mandatory
+ // desc->debug_get_stack_level_line is not mandatory
+ // desc->debug_get_stack_level_function is not mandatory
+ // desc->debug_get_stack_level_source is not mandatory
+ // desc->debug_get_stack_level_locals is not mandatory
+ // desc->debug_get_stack_level_members is not mandatory
+ // desc->debug_get_globals is not mandatory
+ // desc->debug_parse_stack_level_expression is not mandatory
+ // desc->profiling_start is not mandatory
+ // desc->profiling_stop is not mandatory
+ // desc->profiling_get_accumulated_data is not mandatory
+ // desc->profiling_get_frame_data is not mandatory
+ // desc->frame is not mandatory
+
+ ERR_FAIL_COND_V(!desc->script_desc.init, ERR_BUG);
+ ERR_FAIL_COND_V(!desc->script_desc.finish, ERR_BUG);
+
+ ERR_FAIL_COND_V(!desc->script_desc.instance_desc.init, ERR_BUG);
+ ERR_FAIL_COND_V(!desc->script_desc.instance_desc.finish, ERR_BUG);
+ ERR_FAIL_COND_V(!desc->script_desc.instance_desc.set_prop, ERR_BUG);
+ ERR_FAIL_COND_V(!desc->script_desc.instance_desc.get_prop, ERR_BUG);
+ ERR_FAIL_COND_V(!desc->script_desc.instance_desc.call_method, ERR_BUG);
+ ERR_FAIL_COND_V(!desc->script_desc.instance_desc.notification, ERR_BUG);
+ // desc->script_desc.instance_desc.refcount_incremented is not mandatory
+ // desc->script_desc.instance_desc.refcount_decremented is not mandatory
+ return OK;
+}
+
+void GDAPI godot_pluginscript_register_language(const godot_pluginscript_language_desc *language_desc) {
+ Error ret = _check_language_desc(language_desc);
+ if (ret) {
+ ERR_FAIL();
+ }
+ PluginScriptLanguage *language = memnew(PluginScriptLanguage(language_desc));
+ ScriptServer::register_language(language);
+ ResourceLoader::add_resource_format_loader(language->get_resource_loader());
+ ResourceSaver::add_resource_format_saver(language->get_resource_saver());
+ pluginscript_languages.push_back(language);
+}
+
+void register_pluginscript_types() {
+ ClassDB::register_class<PluginScript>();
+}
+
+void unregister_pluginscript_types() {
+ for (List<PluginScriptLanguage *>::Element *e = pluginscript_languages.front(); e; e = e->next()) {
+ PluginScriptLanguage *language = e->get();
+ ScriptServer::unregister_language(language);
+ memdelete(language);
+ }
+}
diff --git a/modules/gdnative/pluginscript/register_types.h b/modules/gdnative/pluginscript/register_types.h
new file mode 100644
index 0000000000..70bbb16c62
--- /dev/null
+++ b/modules/gdnative/pluginscript/register_types.h
@@ -0,0 +1,31 @@
+/*************************************************************************/
+/* register_types.h */
+/*************************************************************************/
+/* This file is part of: */
+/* GODOT ENGINE */
+/* http://www.godotengine.org */
+/*************************************************************************/
+/* Copyright (c) 2007-2017 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2017 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. */
+/*************************************************************************/
+void register_pluginscript_types();
+void unregister_pluginscript_types();
diff --git a/modules/gdnative/register_types.cpp b/modules/gdnative/register_types.cpp
index 059cd197d1..87f9cddaa2 100644
--- a/modules/gdnative/register_types.cpp
+++ b/modules/gdnative/register_types.cpp
@@ -35,7 +35,9 @@
#include "io/resource_loader.h"
#include "io/resource_saver.h"
+#include "nativearvr/register_types.h"
#include "nativescript/register_types.h"
+#include "pluginscript/register_types.h"
#include "core/engine.h"
#include "core/os/os.h"
@@ -127,57 +129,12 @@ static void editor_init_callback() {
#endif
-godot_variant cb_standard_varcall(void *handle, godot_string *p_procedure, godot_array *p_args) {
- if (handle == NULL) {
- ERR_PRINT("No valid library handle, can't call standard varcall procedure");
- godot_variant ret;
- godot_variant_new_nil(&ret);
- return ret;
- }
-
- void *library_proc;
- Error err = OS::get_singleton()->get_dynamic_library_symbol_handle(
- handle,
- *(String *)p_procedure,
- library_proc,
- true); // we roll our own message
- if (err != OK) {
- ERR_PRINT((String("GDNative procedure \"" + *(String *)p_procedure) + "\" does not exists and can't be called").utf8().get_data());
- godot_variant ret;
- godot_variant_new_nil(&ret);
- return ret;
- }
+godot_variant cb_standard_varcall(void *p_procedure_handle, godot_array *p_args) {
godot_gdnative_procedure_fn proc;
- proc = (godot_gdnative_procedure_fn)library_proc;
-
- return proc(NULL, p_args);
-}
-
-void cb_singleton_call(
- void *p_handle,
- godot_string *p_proc_name,
- void *p_data,
- int p_num_args,
- void **p_args,
- void *r_return) {
- if (p_handle == NULL) {
- ERR_PRINT("No valid library handle, can't call singleton procedure");
- return;
- }
+ proc = (godot_gdnative_procedure_fn)p_procedure_handle;
- void *singleton_proc;
- Error err = OS::get_singleton()->get_dynamic_library_symbol_handle(
- p_handle,
- *(String *)p_proc_name,
- singleton_proc);
-
- if (err != OK) {
- return;
- }
-
- void (*singleton_procedure_ptr)() = (void (*)())singleton_proc;
- singleton_procedure_ptr();
+ return proc(p_args);
}
GDNativeCallRegistry *GDNativeCallRegistry::singleton;
@@ -200,13 +157,16 @@ void register_gdnative_types() {
GDNativeCallRegistry::singleton->register_native_call_type("standard_varcall", cb_standard_varcall);
- GDNativeCallRegistry::singleton->register_native_raw_call_type("gdnative_singleton_call", cb_singleton_call);
-
+ register_nativearvr_types();
register_nativescript_types();
+ register_pluginscript_types();
// run singletons
- Array singletons = ProjectSettings::get_singleton()->get("gdnative/singletons");
+ Array singletons = Array();
+ if (ProjectSettings::get_singleton()->has_setting("gdnative/singletons")) {
+ singletons = ProjectSettings::get_singleton()->get("gdnative/singletons");
+ }
singleton_gdnatives.resize(singletons.size());
@@ -223,13 +183,16 @@ void register_gdnative_types() {
continue;
}
- singleton_gdnatives[i]->call_native_raw(
- "gdnative_singleton_call",
+ void *proc_ptr;
+ Error err = singleton_gdnatives[i]->get_symbol(
"godot_gdnative_singleton",
- NULL,
- 0,
- NULL,
- NULL);
+ proc_ptr);
+
+ if (err != OK) {
+ ERR_PRINT((String("No godot_gdnative_singleton in \"" + singleton_gdnatives[i]->get_library()->get_active_library_path()) + "\" found").utf8().get_data());
+ } else {
+ ((void (*)())proc_ptr)();
+ }
}
}
@@ -249,7 +212,9 @@ void unregister_gdnative_types() {
}
singleton_gdnatives.clear();
+ unregister_pluginscript_types();
unregister_nativescript_types();
+ unregister_nativearvr_types();
memdelete(GDNativeCallRegistry::singleton);
diff --git a/modules/gdscript/gd_editor.cpp b/modules/gdscript/gd_editor.cpp
index b0408917a4..d9b10ff3fa 100644
--- a/modules/gdscript/gd_editor.cpp
+++ b/modules/gdscript/gd_editor.cpp
@@ -61,7 +61,11 @@ Ref<Script> GDScriptLanguage::get_template(const String &p_class_name, const Str
"func _ready():\n" +
"%TS%# Called every time the node is added to the scene.\n" +
"%TS%# Initialization here\n" +
- "%TS%pass\n";
+ "%TS%pass\n\n" +
+ "#func _process(delta):\n" +
+ "#%TS%# Called every frame. Delta is time since last frame.\n" +
+ "#%TS%# Update game logic here.\n" +
+ "#%TS%pass\n";
_template = _template.replace("%BASE%", p_base_class_name);
_template = _template.replace("%TS%", _get_indentation());
@@ -127,6 +131,11 @@ bool GDScriptLanguage::has_named_classes() const {
return false;
}
+bool GDScriptLanguage::supports_builtin_mode() const {
+
+ return true;
+}
+
int GDScriptLanguage::find_function(const String &p_function, const String &p_code) const {
GDTokenizerText tokenizer;
@@ -2102,9 +2111,9 @@ Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base
for (List<String>::Element *E = opts.front(); E; E = E->next()) {
String opt = E->get().strip_edges();
- if (opt.begins_with("\"") && opt.ends_with("\"")) {
+ if (opt.is_quoted()) {
r_forced = true;
- String idopt = opt.substr(1, opt.length() - 2);
+ String idopt = opt.unquote();
if (idopt.replace("/", "_").is_valid_identifier()) {
options.insert(idopt);
} else {
diff --git a/modules/gdscript/gd_parser.cpp b/modules/gdscript/gd_parser.cpp
index 36aaa1f807..94385dc0d0 100644
--- a/modules/gdscript/gd_parser.cpp
+++ b/modules/gdscript/gd_parser.cpp
@@ -1906,7 +1906,8 @@ GDParser::PatternNode *GDParser::_parse_pattern(bool p_static) {
// all the constants like strings and numbers
default: {
Node *value = _parse_and_reduce_expression(pattern, p_static);
- if (error_set) {
+ if (!value) {
+ _set_error("Expect constant expression or variables in a pattern");
return NULL;
}
diff --git a/modules/gdscript/gd_script.cpp b/modules/gdscript/gd_script.cpp
index cf6529d5ae..3f3818ffb9 100644
--- a/modules/gdscript/gd_script.cpp
+++ b/modules/gdscript/gd_script.cpp
@@ -609,11 +609,6 @@ Error GDScript::reload(bool p_keep_state) {
return OK;
}
-String GDScript::get_node_type() const {
-
- return ""; // ?
-}
-
ScriptLanguage *GDScript::get_language() const {
return GDScriptLanguage::get_singleton();
diff --git a/modules/gdscript/gd_script.h b/modules/gdscript/gd_script.h
index 5e1a8b19ac..e0d142014a 100644
--- a/modules/gdscript/gd_script.h
+++ b/modules/gdscript/gd_script.h
@@ -172,7 +172,6 @@ public:
virtual Error reload(bool p_keep_state = false);
- virtual String get_node_type() const;
void set_script_path(const String &p_path) { path = p_path; } //because subclasses need a path too...
Error load_source_code(const String &p_path);
Error load_byte_code(const String &p_path);
@@ -386,6 +385,7 @@ public:
virtual bool validate(const String &p_script, int &r_line_error, int &r_col_error, String &r_test_error, const String &p_path = "", List<String> *r_functions = NULL) const;
virtual Script *create_script() const;
virtual bool has_named_classes() const;
+ virtual bool supports_builtin_mode() const;
virtual bool can_inherit_from_file() { return true; }
virtual int find_function(const String &p_function, const String &p_code) const;
virtual String make_function(const String &p_class, const String &p_name, const PoolStringArray &p_args) const;
diff --git a/modules/gridmap/doc_classes/GridMap.xml b/modules/gridmap/doc_classes/GridMap.xml
index 3676570ec1..5b0fe56f25 100644
--- a/modules/gridmap/doc_classes/GridMap.xml
+++ b/modules/gridmap/doc_classes/GridMap.xml
@@ -1,8 +1,13 @@
<?xml version="1.0" encoding="UTF-8" ?>
<class name="GridMap" inherits="Spatial" category="Core" version="3.0.alpha.custom_build">
<brief_description>
+ Node for 3D tile-based maps.
</brief_description>
<description>
+ GridMap lets you place meshes on a grid interactively. It works both from the editor and can help you create in-game level editors.
+ GridMaps use a [MeshLibrary] which contain a list of tiles: meshes with materials plus optional collisions and extra elements.
+ A GridMap contains a collection of cells. Each grid cell refers to a [MeshLibrary] item. All cells in the map have the same dimensions.
+ A GridMap is split into a sparse collection of octants for efficient rendering and physics processing. Every octant has the same dimensions and can contain several cells.
</description>
<tutorials>
</tutorials>
@@ -13,6 +18,7 @@
<return type="void">
</return>
<description>
+ Clear all cells.
</description>
</method>
<method name="get_cell_item" qualifiers="const">
@@ -25,6 +31,7 @@
<argument index="2" name="z" type="int">
</argument>
<description>
+ The [MeshLibrary] item index located at the grid-based X, Y and Z coordinates. If the cell is empty, [INVALID_CELL_ITEM] will be returned.
</description>
</method>
<method name="get_cell_item_orientation" qualifiers="const">
@@ -37,48 +44,75 @@
<argument index="2" name="z" type="int">
</argument>
<description>
+ The orientation of the cell at the grid-based X, Y and Z coordinates. -1 is retuned if the cell is empty.
</description>
</method>
<method name="get_cell_size" qualifiers="const">
<return type="Vector3">
</return>
<description>
+ The dimensions of the grid's cells.
</description>
</method>
<method name="get_center_x" qualifiers="const">
<return type="bool">
</return>
<description>
+ Returns whether or not grid items are centered on the X axis.
</description>
</method>
<method name="get_center_y" qualifiers="const">
<return type="bool">
</return>
<description>
+ Returns whether or not grid items are centered on the Y axis.
</description>
</method>
<method name="get_center_z" qualifiers="const">
<return type="bool">
</return>
<description>
+ Returns whether or not grid items are centered on the Z axis.
</description>
</method>
<method name="get_meshes">
<return type="Array">
</return>
<description>
+ Array of [Transform] and [Mesh] references corresponding to the non empty cells in the grid. The transforms are specified in world space.
</description>
</method>
<method name="get_octant_size" qualifiers="const">
<return type="int">
</return>
<description>
+ The size of each octant measured in number of cells. This applies to all three axis.
</description>
</method>
<method name="get_theme" qualifiers="const">
<return type="MeshLibrary">
</return>
<description>
+ The assigned [MeshLibrary].
+ </description>
+ </method>
+ <method name="get_used_cells" qualifiers="const">
+ <return type="Array">
+ </return>
+ <description>
+ Array of [Vector3] with the non empty cell coordinates in the grid map.
+ </description>
+ </method>
+ <method name="map_to_world" qualifiers="const">
+ <return type="Vector3">
+ </return>
+ <argument index="0" name="x" type="int">
+ </argument>
+ <argument index="1" name="y" type="int">
+ </argument>
+ <argument index="2" name="z" type="int">
+ </argument>
+ <description>
</description>
</method>
<method name="resource_changed">
@@ -103,6 +137,9 @@
<argument index="4" name="orientation" type="int" default="0">
</argument>
<description>
+ Set the mesh index for the cell referenced by its grid-based X, Y and Z coordinates.
+ A negative item index will clear the cell.
+ Optionally, the item's orientation can be passed.
</description>
</method>
<method name="set_cell_size">
@@ -111,6 +148,7 @@
<argument index="0" name="size" type="Vector3">
</argument>
<description>
+ Sets the height, width and depth of the grid's cells.
</description>
</method>
<method name="set_center_x">
@@ -119,6 +157,7 @@
<argument index="0" name="enable" type="bool">
</argument>
<description>
+ Set grid items to be centered on the X axis. By default it is enabled.
</description>
</method>
<method name="set_center_y">
@@ -127,6 +166,7 @@
<argument index="0" name="enable" type="bool">
</argument>
<description>
+ Set grid items to be centered on the Y axis. By default it is enabled.
</description>
</method>
<method name="set_center_z">
@@ -135,6 +175,7 @@
<argument index="0" name="enable" type="bool">
</argument>
<description>
+ Set grid items to be centered on the Z axis. By default it is enabled.
</description>
</method>
<method name="set_clip">
@@ -157,6 +198,7 @@
<argument index="0" name="size" type="int">
</argument>
<description>
+ Sets the size for each octant measured in number of cells. This applies to all three axis.
</description>
</method>
<method name="set_theme">
@@ -165,11 +207,21 @@
<argument index="0" name="theme" type="MeshLibrary">
</argument>
<description>
+ Sets the collection of meshes for the map.
+ </description>
+ </method>
+ <method name="world_to_map" qualifiers="const">
+ <return type="Vector3">
+ </return>
+ <argument index="0" name="pos" type="Vector3">
+ </argument>
+ <description>
</description>
</method>
</methods>
<constants>
<constant name="INVALID_CELL_ITEM" value="-1" enum="">
+ Invalid cell item that can be used in [method set_cell_item] to clear cells (or represent an empty cell in [method get_cell_item]).
</constant>
</constants>
</class>
diff --git a/modules/gridmap/grid_map.cpp b/modules/gridmap/grid_map.cpp
index 4e8b67e4e8..cb14a5ee9c 100644
--- a/modules/gridmap/grid_map.cpp
+++ b/modules/gridmap/grid_map.cpp
@@ -333,6 +333,23 @@ int GridMap::get_cell_item_orientation(int p_x, int p_y, int p_z) const {
return cell_map[key].rot;
}
+Vector3 GridMap::world_to_map(const Vector3 &p_world_pos) const {
+ Vector3 map_pos = p_world_pos / cell_size;
+ map_pos.x = floor(map_pos.x);
+ map_pos.y = floor(map_pos.y);
+ map_pos.z = floor(map_pos.z);
+ return map_pos;
+}
+
+Vector3 GridMap::map_to_world(int p_x, int p_y, int p_z) const {
+ Vector3 offset = _get_offset();
+ Vector3 world_pos(
+ p_x * cell_size.x + offset.x,
+ p_y * cell_size.y + offset.y,
+ p_z * cell_size.z + offset.z);
+ return world_pos;
+}
+
void GridMap::_octant_transform(const OctantKey &p_key) {
ERR_FAIL_COND(!octant_map.has(p_key));
@@ -407,7 +424,7 @@ bool GridMap::_octant_update(const OctantKey &p_key) {
//print_line("OCTANT, CELLS: "+itos(ii.cells.size()));
Vector3 cellpos = Vector3(E->get().x, E->get().y, E->get().z);
- Vector3 ofs(cell_size.x * 0.5 * int(center_x), cell_size.y * 0.5 * int(center_y), cell_size.z * 0.5 * int(center_z));
+ Vector3 ofs = _get_offset();
Transform xform;
@@ -754,6 +771,9 @@ void GridMap::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_cell_item", "x", "y", "z"), &GridMap::get_cell_item);
ClassDB::bind_method(D_METHOD("get_cell_item_orientation", "x", "y", "z"), &GridMap::get_cell_item_orientation);
+ ClassDB::bind_method(D_METHOD("world_to_map", "pos"), &GridMap::world_to_map);
+ ClassDB::bind_method(D_METHOD("map_to_world", "x", "y", "z"), &GridMap::map_to_world);
+
//ClassDB::bind_method(D_METHOD("_recreate_octants"),&GridMap::_recreate_octants);
ClassDB::bind_method(D_METHOD("_update_octants_callback"), &GridMap::_update_octants_callback);
ClassDB::bind_method(D_METHOD("resource_changed", "resource"), &GridMap::resource_changed);
@@ -801,7 +821,7 @@ void GridMap::set_clip(bool p_enabled, bool p_clip_above, int p_floor, Vector3::
void GridMap::set_cell_scale(float p_scale) {
cell_scale = p_scale;
- _queue_octants_dirty();
+ _recreate_octant_data();
}
float GridMap::get_cell_scale() const {
@@ -827,7 +847,7 @@ Array GridMap::get_meshes() {
if (theme.is_null())
return Array();
- Vector3 ofs(cell_size.x * 0.5 * int(center_x), cell_size.y * 0.5 * int(center_y), cell_size.z * 0.5 * int(center_z));
+ Vector3 ofs = _get_offset();
Array meshes;
for (Map<IndexKey, Cell>::Element *E = cell_map.front(); E; E = E->next()) {
@@ -857,6 +877,13 @@ Array GridMap::get_meshes() {
return meshes;
}
+Vector3 GridMap::_get_offset() const {
+ return Vector3(
+ cell_size.x * 0.5 * int(center_x),
+ cell_size.y * 0.5 * int(center_y),
+ cell_size.z * 0.5 * int(center_z));
+}
+
GridMap::GridMap() {
cell_size = Vector3(2, 2, 2);
diff --git a/modules/gridmap/grid_map.h b/modules/gridmap/grid_map.h
index 296956ff5d..5bfdf1dac3 100644
--- a/modules/gridmap/grid_map.h
+++ b/modules/gridmap/grid_map.h
@@ -184,6 +184,8 @@ class GridMap : public Spatial {
void _clear_internal();
+ Vector3 _get_offset() const;
+
protected:
bool _set(const StringName &p_name, const Variant &p_value);
bool _get(const StringName &p_name, Variant &r_ret) const;
@@ -218,6 +220,9 @@ public:
int get_cell_item(int p_x, int p_y, int p_z) const;
int get_cell_item_orientation(int p_x, int p_y, int p_z) const;
+ Vector3 world_to_map(const Vector3 &p_pos) const;
+ Vector3 map_to_world(int p_x, int p_y, int p_z) const;
+
void set_clip(bool p_enabled, bool p_clip_above = true, int p_floor = 0, Vector3::Axis p_axis = Vector3::AXIS_X);
void set_cell_scale(float p_scale);
diff --git a/modules/hdr/image_loader_hdr.cpp b/modules/hdr/image_loader_hdr.cpp
index 92d88207b3..08ac624504 100644
--- a/modules/hdr/image_loader_hdr.cpp
+++ b/modules/hdr/image_loader_hdr.cpp
@@ -38,7 +38,6 @@ Error ImageLoaderHDR::load_image(Ref<Image> p_image, FileAccess *f, bool p_force
String header = f->get_token();
- print_line("HEADER: " + header);
ERR_FAIL_COND_V(header != "#?RADIANCE" && header != "#?RGBE", ERR_FILE_UNRECOGNIZED);
while (true) {
@@ -64,8 +63,6 @@ Error ImageLoaderHDR::load_image(Ref<Image> p_image, FileAccess *f, bool p_force
int width = f->get_line().to_int();
- print_line("HDR w: " + itos(width) + " h:" + itos(height));
-
PoolVector<uint8_t> imgdata;
imgdata.resize(height * width * sizeof(uint32_t));
@@ -102,7 +99,6 @@ Error ImageLoaderHDR::load_image(Ref<Image> p_image, FileAccess *f, bool p_force
len <<= 8;
len |= f->get_8();
- print_line("line: " + itos(len));
if (len != width) {
ERR_EXPLAIN("invalid decoded scanline length, corrupt HDR");
ERR_FAIL_V(ERR_FILE_CORRUPT);
diff --git a/modules/mobile_vr/mobile_interface.h b/modules/mobile_vr/mobile_interface.h
index 6a5e01c163..747377ae46 100644
--- a/modules/mobile_vr/mobile_interface.h
+++ b/modules/mobile_vr/mobile_interface.h
@@ -90,7 +90,7 @@ private:
///@TODO a few support functions for trackers, most are math related and should likely be moved elsewhere
float floor_decimals(float p_value, float p_decimals) {
- float power_of_10 = pow(10.0, p_decimals);
+ float power_of_10 = pow(10.0f, p_decimals);
return floor(p_value * power_of_10) / power_of_10;
};
diff --git a/modules/mono/SCsub b/modules/mono/SCsub
index caf4fdb3ca..27e60c4623 100644
--- a/modules/mono/SCsub
+++ b/modules/mono/SCsub
@@ -53,68 +53,151 @@ if env['tools']:
vars = Variables()
vars.Add(BoolVariable('mono_glue', 'Build with the mono glue sources', True))
+vars.Add(BoolVariable('xbuild_fallback', 'If MSBuild is not found, fallback to xbuild', False))
vars.Update(env)
# Glue sources
if env['mono_glue']:
env.add_source_files(env.modules_sources, 'glue/*.cpp')
else:
- env.Append(CPPDEFINES = [ 'MONO_GLUE_DISABLED' ])
+ env.Append(CPPDEFINES=['MONO_GLUE_DISABLED'])
if ARGUMENTS.get('yolo_copy', False):
- env.Append(CPPDEFINES = [ 'YOLO_COPY' ])
+ env.Append(CPPDEFINES=['YOLO_COPY'])
+
# Build GodotSharpTools solution
+
import os
-import subprocess
-import mono_reg_utils as monoreg
+
+
+def find_msbuild_unix(filename):
+ import os.path
+ import sys
+
+ hint_dirs = ['/opt/novell/mono/bin']
+ if sys.platform == "darwin":
+ hint_dirs = ['/Library/Frameworks/Mono.framework/Versions/Current/bin'] + hint_dirs
+
+ for hint_dir in hint_dirs:
+ hint_path = os.path.join(hint_dir, filename)
+ if os.path.isfile(hint_path):
+ return hint_path
+
+ for hint_dir in os.environ["PATH"].split(os.pathsep):
+ hint_dir = hint_dir.strip('"')
+ hint_path = os.path.join(hint_dir, filename)
+ if os.path.isfile(hint_path) and os.access(hint_path, os.X_OK):
+ return hint_path
+
+ return None
+
+
+def find_msbuild_windows():
+ import mono_reg_utils as monoreg
+
+ bits = env['bits']
+
+ if bits == '32':
+ if os.getenv('MONO32_PREFIX'):
+ mono_root = os.getenv('MONO32_PREFIX')
+ else:
+ mono_root = monoreg.find_mono_root_dir(bits)
+ else:
+ if os.getenv('MONO64_PREFIX'):
+ mono_root = os.getenv('MONO64_PREFIX')
+ else:
+ mono_root = monoreg.find_mono_root_dir(bits)
+
+ if not mono_root:
+ raise RuntimeError('Cannot find mono root directory')
+
+ msbuild_tools_path = monoreg.find_msbuild_tools_path_reg()
+
+ if msbuild_tools_path:
+ return (os.path.join(msbuild_tools_path, 'MSBuild.exe'), os.path.join(mono_root, 'lib', 'mono', '4.5'))
+ else:
+ msbuild_mono = os.path.join(mono_root, 'bin', 'msbuild.bat')
+
+ if os.path.isfile(msbuild_mono):
+ return (msbuild_mono, '')
+
+ return None
def mono_build_solution(source, target, env):
+ import subprocess
+ import mono_reg_utils as monoreg
+ from shutil import copyfile
+
+ framework_path_override = ''
+
if os.name == 'nt':
- msbuild_tools_path = monoreg.find_msbuild_tools_path_reg()
- if not msbuild_tools_path:
- raise RuntimeError('Cannot find MSBuild Tools Path in the registry')
- msbuild_path = os.path.join(msbuild_tools_path, 'MSBuild.exe')
+ msbuild_info = find_msbuild_windows()
+ if msbuild_info is None:
+ raise RuntimeError('Cannot find MSBuild executable')
+ msbuild_path = msbuild_info[0]
+ framework_path_override = msbuild_info[1]
else:
- msbuild_path = 'msbuild'
+ msbuild_path = find_msbuild_unix('msbuild')
+ if msbuild_path is None:
+ xbuild_fallback = env['xbuild_fallback']
+
+ if xbuild_fallback and os.name == 'nt':
+ print("Option 'xbuild_fallback' not supported on Windows")
+ xbuild_fallback = False
+
+ if xbuild_fallback:
+ print('Cannot find MSBuild executable, trying with xbuild')
+ print('Warning: xbuild is deprecated')
+
+ msbuild_path = find_msbuild_unix('xbuild')
+
+ if msbuild_path is None:
+ raise RuntimeError('Cannot find xbuild executable')
+ else:
+ raise RuntimeError('Cannot find MSBuild executable')
+
+ print('MSBuild path: ' + msbuild_path)
- output_path = os.path.abspath(os.path.join(str(target[0]), os.pardir))
+ build_config = 'Release'
msbuild_args = [
msbuild_path,
os.path.abspath(str(source[0])),
- '/p:Configuration=Release',
- '/p:OutputPath=' + output_path
+ '/p:Configuration=' + build_config,
]
+ if framework_path_override:
+ msbuild_args += ['/p:FrameworkPathOverride=' + framework_path_override]
+
msbuild_env = os.environ.copy()
# Needed when running from Developer Command Prompt for VS
if 'PLATFORM' in msbuild_env:
del msbuild_env['PLATFORM']
- msbuild_alt_paths = [ 'xbuild' ]
-
- while True:
- try:
- subprocess.check_call(msbuild_args, env = msbuild_env)
- break
- except subprocess.CalledProcessError:
- raise RuntimeError('GodotSharpTools build failed')
- except OSError:
- if os.name != 'nt':
- if not msbuild_alt_paths:
- raise RuntimeError('Could not find commands msbuild or xbuild')
- # Try xbuild
- msbuild_args[0] = msbuild_alt_paths.pop(0)
- else:
- raise RuntimeError('Could not find command MSBuild.exe')
+ try:
+ subprocess.check_call(msbuild_args, env=msbuild_env)
+ except subprocess.CalledProcessError:
+ raise RuntimeError('GodotSharpTools build failed')
+
+ src_dir = os.path.abspath(os.path.join(str(source[0]), os.pardir, 'bin', build_config))
+ dst_dir = os.path.abspath(os.path.join(str(target[0]), os.pardir))
+
+ if not os.path.isdir(dst_dir):
+ if os.path.exists(dst_dir):
+ raise RuntimeError('Target directory is a file')
+ os.makedirs(dst_dir)
+
+ asm_file = 'GodotSharpTools.dll'
+
+ copyfile(os.path.join(src_dir, asm_file), os.path.join(dst_dir, asm_file))
mono_sln_builder = Builder(action = mono_build_solution)
-env.Append(BUILDERS = { 'MonoBuildSolution' : mono_sln_builder })
+env.Append(BUILDERS={'MonoBuildSolution': mono_sln_builder})
env.MonoBuildSolution(
os.path.join(Dir('#bin').abspath, 'GodotSharpTools.dll'),
'editor/GodotSharpTools/GodotSharpTools.sln'
diff --git a/modules/mono/config.py b/modules/mono/config.py
index 9de199bb5a..44eef45f76 100644
--- a/modules/mono/config.py
+++ b/modules/mono/config.py
@@ -2,7 +2,6 @@
import imp
import os
import sys
-from shutil import copyfile
from SCons.Script import BoolVariable, Environment, Variables
@@ -16,8 +15,7 @@ def find_file_in_dir(directory, files, prefix='', extension=''):
for curfile in files:
if os.path.isfile(os.path.join(directory, prefix + curfile + extension)):
return curfile
-
- return None
+ return ''
def can_build(platform):
@@ -31,6 +29,22 @@ def is_enabled():
return False
+def copy_file_no_replace(src_dir, dst_dir, name):
+ from shutil import copyfile
+
+ src_path = os.path.join(src_dir, name)
+ dst_path = os.path.join(dst_dir, name)
+ need_copy = True
+
+ if not os.path.isdir(dst_dir):
+ os.mkdir(dst_dir)
+ elif os.path.exists(dst_path):
+ need_copy = False
+
+ if need_copy:
+ copyfile(src_path, dst_path)
+
+
def configure(env):
env.use_ptrcall = True
@@ -38,6 +52,8 @@ def configure(env):
envvars.Add(BoolVariable('mono_static', 'Statically link mono', False))
envvars.Update(env)
+ bits = env['bits']
+
mono_static = env['mono_static']
mono_lib_names = ['mono-2.0-sgen', 'monosgen-2.0']
@@ -46,18 +62,18 @@ def configure(env):
if mono_static:
raise RuntimeError('mono-static: Not supported on Windows')
- if env['bits'] == '32':
+ if bits == '32':
if os.getenv('MONO32_PREFIX'):
mono_root = os.getenv('MONO32_PREFIX')
elif os.name == 'nt':
- mono_root = monoreg.find_mono_root_dir()
+ mono_root = monoreg.find_mono_root_dir(bits)
else:
if os.getenv('MONO64_PREFIX'):
mono_root = os.getenv('MONO64_PREFIX')
elif os.name == 'nt':
- mono_root = monoreg.find_mono_root_dir()
+ mono_root = monoreg.find_mono_root_dir(bits)
- if mono_root is None:
+ if not mono_root:
raise RuntimeError('Mono installation directory not found')
mono_lib_path = os.path.join(mono_root, 'lib')
@@ -67,7 +83,7 @@ def configure(env):
mono_lib_name = find_file_in_dir(mono_lib_path, mono_lib_names, extension='.lib')
- if mono_lib_name is None:
+ if not mono_lib_name:
raise RuntimeError('Could not find mono library in: ' + mono_lib_path)
if os.getenv('VCINSTALLDIR'):
@@ -79,28 +95,23 @@ def configure(env):
mono_dll_name = find_file_in_dir(mono_bin_path, mono_lib_names, extension='.dll')
- mono_dll_src = os.path.join(mono_bin_path, mono_dll_name + '.dll')
- mono_dll_dst = os.path.join('bin', mono_dll_name + '.dll')
- copy_mono_dll = True
+ if not mono_dll_name:
+ raise RuntimeError('Could not find mono shared library in: ' + mono_bin_path)
- if not os.path.isdir('bin'):
- os.mkdir('bin')
- elif os.path.exists(mono_dll_dst):
- copy_mono_dll = False
-
- if copy_mono_dll:
- copyfile(mono_dll_src, mono_dll_dst)
+ copy_file_no_replace(mono_bin_path, 'bin', mono_dll_name + '.dll')
else:
- mono_root = None
+ sharedlib_ext = '.dylib' if sys.platform == 'darwin' else '.so'
+
+ mono_root = ''
- if env['bits'] == '32':
+ if bits == '32':
if os.getenv('MONO32_PREFIX'):
mono_root = os.getenv('MONO32_PREFIX')
else:
if os.getenv('MONO64_PREFIX'):
mono_root = os.getenv('MONO64_PREFIX')
- if mono_root is not None:
+ if mono_root:
mono_lib_path = os.path.join(mono_root, 'lib')
env.Append(LIBPATH=mono_lib_path)
@@ -108,7 +119,7 @@ def configure(env):
mono_lib = find_file_in_dir(mono_lib_path, mono_lib_names, prefix='lib', extension='.a')
- if mono_lib is None:
+ if not mono_lib:
raise RuntimeError('Could not find mono library in: ' + mono_lib_path)
env.Append(CPPFLAGS=['-D_REENTRANT'])
@@ -125,12 +136,41 @@ def configure(env):
else:
env.Append(LIBS=[mono_lib])
- env.Append(LIBS=['m', 'rt', 'dl', 'pthread'])
+ if sys.platform == "darwin":
+ env.Append(LIBS=['iconv', 'pthread'])
+ elif sys.platform == "linux" or sys.platform == "linux2":
+ env.Append(LIBS=['m', 'rt', 'dl', 'pthread'])
+
+ if not mono_static:
+ mono_so_name = find_file_in_dir(mono_lib_path, mono_lib_names, prefix='lib', extension=sharedlib_ext)
+
+ if not mono_so_name:
+ raise RuntimeError('Could not find mono shared library in: ' + mono_lib_path)
+
+ copy_file_no_replace(mono_lib_path, 'bin', 'lib' + mono_so_name + sharedlib_ext)
else:
if mono_static:
raise RuntimeError('mono-static: Not supported with pkg-config. Specify a mono prefix manually')
- env.ParseConfig('pkg-config mono-2 --cflags --libs')
+ env.ParseConfig('pkg-config monosgen-2 --cflags --libs')
+
+ mono_lib_path = ''
+ mono_so_name = ''
+
+ tmpenv = Environment()
+ tmpenv.ParseConfig('pkg-config monosgen-2 --libs-only-L')
+
+ for hint_dir in tmpenv['LIBPATH']:
+ name_found = find_file_in_dir(hint_dir, mono_lib_names, prefix='lib', extension=sharedlib_ext)
+ if name_found:
+ mono_lib_path = hint_dir
+ mono_so_name = name_found
+ break
+
+ if not mono_so_name:
+ raise RuntimeError('Could not find mono shared library in: ' + str(tmpenv['LIBPATH']))
+
+ copy_file_no_replace(mono_lib_path, 'bin', 'lib' + mono_so_name + sharedlib_ext)
env.Append(LINKFLAGS='-rdynamic')
diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp
index b475782729..3d91a6de6c 100644
--- a/modules/mono/csharp_script.cpp
+++ b/modules/mono/csharp_script.cpp
@@ -41,6 +41,7 @@
#include "editor/csharp_project.h"
#include "editor/editor_node.h"
#include "editor/godotsharp_editor.h"
+#include "utils/string_utils.h"
#endif
#include "godotsharp_dirs.h"
@@ -48,8 +49,9 @@
#include "mono_gd/gd_mono_marshal.h"
#include "signal_awaiter_utils.h"
-#define CACHED_STRING_NAME(m_var) (CSharpLanguage::get_singleton()->string_names.m_var)
+#define CACHED_STRING_NAME(m_var) (CSharpLanguage::get_singleton()->get_string_names().m_var)
+#ifdef TOOLS_ENABLED
static bool _create_project_solution_if_needed() {
String sln_path = GodotSharpDirs::get_project_sln_path();
@@ -64,6 +66,7 @@ static bool _create_project_solution_if_needed() {
return true;
}
+#endif
CSharpLanguage *CSharpLanguage::singleton = NULL;
@@ -274,13 +277,22 @@ Ref<Script> CSharpLanguage::get_template(const String &p_class_name, const Strin
" // Initialization here\n"
" \n"
" }\n"
+ "\n"
+ "// public override void _Process(float delta)\n"
+ "// {\n"
+ "// // Called every frame. Delta is time since last frame.\n"
+ "// // Update game logic here.\n"
+ "// \n"
+ "// }\n"
"}\n";
- script_template = script_template.replace("%BASE_CLASS_NAME%", p_base_class_name).replace("%CLASS_NAME%", p_class_name);
+ script_template = script_template.replace("%BASE_CLASS_NAME%", p_base_class_name)
+ .replace("%CLASS_NAME%", p_class_name);
Ref<CSharpScript> script;
script.instance();
script->set_source_code(script_template);
+ script->set_name(p_class_name);
return script;
}
@@ -292,23 +304,96 @@ Script *CSharpLanguage::create_script() const {
bool CSharpLanguage::has_named_classes() const {
- return true;
+ return false;
}
-String CSharpLanguage::make_function(const String &p_class, const String &p_name, const PoolStringArray &p_args) const {
+bool CSharpLanguage::supports_builtin_mode() const {
+
+ return false;
+}
+
+static String variant_type_to_managed_name(const String &p_var_type_name) {
+
+ if (p_var_type_name.empty())
+ 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::RECT3,
+ 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;
+ }
+
+ if (p_var_type_name == "String")
+ return "string"; // I prefer this one >:[
+
+ // TODO these will be rewritten later into custom containers
+
+ if (p_var_type_name == "Array")
+ return "object[]";
+
+ if (p_var_type_name == "Dictionary")
+ return "Dictionary<object, object>";
+
+ 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[]";
+
+ return "object";
+ }
+ return p_var_type_name;
+}
+
+String CSharpLanguage::make_function(const String &p_class, const String &p_name, const PoolStringArray &p_args) const {
+#ifdef TOOLS_ENABLED
// FIXME
- // Due to Godot's API limitation this just appends the function to the end of the file
- // Another limitation is that the parameter types are not specified, so we must use System.Object
+ // - Due to Godot's API limitation this just appends the function to the end of the file
+ // - Use fully qualified name if there is ambiguity
String s = "private void " + p_name + "(";
for (int i = 0; i < p_args.size(); i++) {
+ const String &arg = p_args[i];
+
if (i > 0)
s += ", ";
- s += "object " + p_args[i];
+
+ s += variant_type_to_managed_name(arg.get_slice(":", 1)) + " " + escape_csharp_keyword(arg.get_slice(":", 0));
}
s += ")\n{\n // Replace with function body\n}\n";
return s;
+#else
+ return String();
+#endif
}
void CSharpLanguage::frame() {
@@ -392,6 +477,7 @@ void CSharpLanguage::reload_tool_script(const Ref<Script> &p_script, bool p_soft
(void)p_script; // UNUSED
#ifdef TOOLS_ENABLED
+ MonoReloadNode::get_singleton()->restart_reload_timer();
reload_assemblies_if_needed(p_soft_reload);
#endif
}
@@ -403,13 +489,17 @@ void CSharpLanguage::reload_assemblies_if_needed(bool p_soft_reload) {
GDMonoAssembly *proj_assembly = gdmono->get_project_assembly();
+ String name = ProjectSettings::get_singleton()->get("application/config/name");
+ if (name.empty()) {
+ name = "UnnamedProject";
+ }
+
if (proj_assembly) {
String proj_asm_path = proj_assembly->get_path();
if (!FileAccess::exists(proj_assembly->get_path())) {
// Maybe it wasn't loaded from the default path, so check this as well
- String proj_asm_name = ProjectSettings::get_singleton()->get("application/config/name");
- proj_asm_path = GodotSharpDirs::get_res_temp_assemblies_dir().plus_file(proj_asm_name);
+ proj_asm_path = GodotSharpDirs::get_res_temp_assemblies_dir().plus_file(name);
if (!FileAccess::exists(proj_asm_path))
return; // No assembly to load
}
@@ -417,8 +507,7 @@ void CSharpLanguage::reload_assemblies_if_needed(bool p_soft_reload) {
if (FileAccess::get_modified_time(proj_asm_path) <= proj_assembly->get_modified_time())
return; // Already up to date
} else {
- String proj_asm_name = ProjectSettings::get_singleton()->get("application/config/name");
- if (!FileAccess::exists(GodotSharpDirs::get_res_temp_assemblies_dir().plus_file(proj_asm_name)))
+ if (!FileAccess::exists(GodotSharpDirs::get_res_temp_assemblies_dir().plus_file(name)))
return; // No assembly to load
}
}
@@ -536,6 +625,9 @@ void CSharpLanguage::reload_assemblies_if_needed(bool p_soft_reload) {
//if instance states were saved, set them!
}
+
+ if (Engine::get_singleton()->is_editor_hint())
+ EditorNode::get_singleton()->get_property_editor()->update_tree();
}
#endif
@@ -903,46 +995,6 @@ Variant CSharpInstance::call(const StringName &p_method, const Variant **p_args,
} else {
return Variant();
}
- } else if (p_method == CACHED_STRING_NAME(_awaited_signal_callback)) {
- // shitty hack..
- // TODO move to its own function, thx
-
- if (p_argcount < 1) {
- r_error.error = Variant::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS;
- r_error.argument = 1;
- return Variant();
- }
-
- Ref<SignalAwaiterHandle> awaiter = *p_args[p_argcount - 1];
-
- if (awaiter.is_null()) {
- r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;
- r_error.argument = p_argcount - 1;
- r_error.expected = Variant::OBJECT;
- return Variant();
- }
-
- awaiter->set_completed(true);
-
- int extra_argc = p_argcount - 1;
- MonoArray *extra_args = mono_array_new(SCRIPTS_DOMAIN, CACHED_CLASS_RAW(MonoObject), extra_argc);
-
- for (int i = 0; i < extra_argc; i++) {
- MonoObject *boxed = GDMonoMarshal::variant_to_mono_object(*p_args[i]);
- mono_array_set(extra_args, MonoObject *, i, boxed);
- }
-
- GDMonoUtils::GodotObject__AwaitedSignalCallback thunk = CACHED_METHOD_THUNK(GodotObject, _AwaitedSignalCallback);
-
- MonoObject *ex = NULL;
- thunk(mono_object, &extra_args, awaiter->get_target(), &ex);
-
- if (ex) {
- mono_print_unhandled_exception(ex);
- ERR_FAIL_V(Variant());
- }
-
- return Variant();
}
top = top->get_parent_class();
@@ -1239,8 +1291,11 @@ bool CSharpScript::_update_exports() {
for (int i = 0; i < fields.size(); i++) {
GDMonoField *field = fields[i];
- if (field->is_static() || field->get_visibility() != GDMono::PUBLIC)
+ if (field->is_static()) {
+ if (field->has_attribute(CACHED_CLASS(ExportAttribute)))
+ ERR_PRINTS("Cannot export field because it is static: " + top->get_full_name() + "." + field->get_name());
continue;
+ }
String name = field->get_name();
StringName cname = name;
@@ -1248,17 +1303,39 @@ bool CSharpScript::_update_exports() {
if (member_info.has(cname))
continue;
- Variant::Type type = GDMonoMarshal::managed_to_variant_type(field->get_type());
+ ManagedType field_type = field->get_type();
+ Variant::Type type = GDMonoMarshal::managed_to_variant_type(field_type);
if (field->has_attribute(CACHED_CLASS(ExportAttribute))) {
+ // Field has Export attribute
MonoObject *attr = field->get_attribute(CACHED_CLASS(ExportAttribute));
- // Field has Export attribute
- int hint = CACHED_FIELD(ExportAttribute, hint)->get_int_value(attr);
- String hint_string = CACHED_FIELD(ExportAttribute, hint_string)->get_string_value(attr);
- int usage = CACHED_FIELD(ExportAttribute, usage)->get_int_value(attr);
+ PropertyHint hint;
+ String hint_string;
+
+ if (type == Variant::NIL) {
+ ERR_PRINTS("Unknown type of exported field: " + top->get_full_name() + "." + field->get_name());
+ continue;
+ } else if (type == Variant::INT && field_type.type_encoding == MONO_TYPE_VALUETYPE && mono_class_is_enum(field_type.type_class->get_raw())) {
+ type = Variant::INT;
+ hint = PROPERTY_HINT_ENUM;
+
+ Vector<MonoClassField *> fields = field_type.type_class->get_enum_fields();
+
+ for (int i = 0; i < fields.size(); i++) {
+ if (i > 0)
+ hint_string += ",";
+ hint_string += mono_field_get_name(fields[i]);
+ }
+ } else if (type == Variant::OBJECT && CACHED_CLASS(GodotReference)->is_assignable_from(field_type.type_class)) {
+ hint = PROPERTY_HINT_RESOURCE_TYPE;
+ hint_string = NATIVE_GDMONOCLASS_NAME(field_type.type_class);
+ } else {
+ hint = PropertyHint(CACHED_FIELD(ExportAttribute, hint)->get_int_value(attr));
+ hint_string = CACHED_FIELD(ExportAttribute, hint_string)->get_string_value(attr);
+ }
- PropertyInfo prop_info = PropertyInfo(type, name, PropertyHint(hint), hint_string, PropertyUsageFlags(usage));
+ PropertyInfo prop_info = PropertyInfo(type, name, hint, hint_string, PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_SCRIPT_VARIABLE);
member_info[cname] = prop_info;
exported_members_cache.push_back(prop_info);
@@ -1392,12 +1469,15 @@ bool CSharpScript::can_instance() const {
#ifdef TOOLS_ENABLED
if (Engine::get_singleton()->is_editor_hint()) {
- if (_create_project_solution_if_needed()) {
- CSharpProject::add_item(GodotSharpDirs::get_project_csproj_path(),
- "Compile",
- ProjectSettings::get_singleton()->globalize_path(get_path()));
- } else {
- ERR_PRINTS("Cannot add " + get_path() + " to the C# project because it could not be created.");
+
+ if (get_path().find("::") == -1) { // Ignore if built-in script. Can happen if the file is deleted...
+ if (_create_project_solution_if_needed()) {
+ CSharpProject::add_item(GodotSharpDirs::get_project_csproj_path(),
+ "Compile",
+ ProjectSettings::get_singleton()->globalize_path(get_path()));
+ } else {
+ ERR_PRINTS("Cannot add " + get_path() + " to the C# project because it could not be created.");
+ }
}
}
#endif
@@ -1647,11 +1727,6 @@ Error CSharpScript::reload(bool p_keep_state) {
return ERR_FILE_MISSING_DEPENDENCIES;
}
-String CSharpScript::get_node_type() const {
-
- return ""; // ?
-}
-
ScriptLanguage *CSharpScript::get_language() const {
return CSharpLanguage::get_singleton();
@@ -1679,16 +1754,6 @@ void CSharpScript::update_exports() {
#ifdef TOOLS_ENABLED
_update_exports();
-
- if (placeholders.size()) {
- Map<StringName, Variant> values;
- List<PropertyInfo> propnames;
- _update_exports_values(values, propnames);
-
- for (Set<PlaceHolderScriptInstance *>::Element *E = placeholders.front(); E; E = E->next()) {
- E->get()->update(propnames, values);
- }
- }
#endif
}
@@ -1915,7 +1980,7 @@ bool ResourceFormatSaverCSharpScript::recognize(const RES &p_resource) const {
CSharpLanguage::StringNameCache::StringNameCache() {
- _awaited_signal_callback = StaticCString::create("_AwaitedSignalCallback");
+ _signal_callback = StaticCString::create("_signal_callback");
_set = StaticCString::create("_set");
_get = StaticCString::create("_get");
_notification = StaticCString::create("_notification");
diff --git a/modules/mono/csharp_script.h b/modules/mono/csharp_script.h
index 3fcc3bdf04..65a6450da5 100644
--- a/modules/mono/csharp_script.h
+++ b/modules/mono/csharp_script.h
@@ -138,7 +138,6 @@ public:
virtual bool is_tool() const { return tool; }
virtual Ref<Script> get_base_script() const;
- virtual String get_node_type() const;
virtual ScriptLanguage *get_language() const;
/* TODO */ virtual void get_script_method_list(List<MethodInfo> *p_list) const {}
@@ -225,7 +224,7 @@ class CSharpLanguage : public ScriptLanguage {
struct StringNameCache {
- StringName _awaited_signal_callback;
+ StringName _signal_callback;
StringName _set;
StringName _get;
StringName _notification;
@@ -242,6 +241,8 @@ public:
_FORCE_INLINE_ int get_language_index() { return lang_idx; }
void set_language_index(int p_idx);
+ _FORCE_INLINE_ const StringNameCache &get_string_names() { return string_names; }
+
_FORCE_INLINE_ static CSharpLanguage *get_singleton() { return singleton; }
bool debug_break(const String &p_error, bool p_allow_continue = true);
@@ -268,6 +269,7 @@ public:
/* TODO */ virtual bool validate(const String &p_script, int &r_line_error, int &r_col_error, String &r_test_error, const String &p_path, List<String> *r_functions) const { return true; }
virtual Script *create_script() const;
virtual bool has_named_classes() const;
+ virtual bool supports_builtin_mode() const;
/* TODO? */ virtual int find_function(const String &p_function, const String &p_code) const { return -1; }
virtual String make_function(const String &p_class, const String &p_name, const PoolStringArray &p_args) const;
/* TODO? */ Error complete_code(const String &p_code, const String &p_base_path, Object *p_owner, List<String> *r_options, String &r_call_hint) { return ERR_UNAVAILABLE; }
diff --git a/modules/mono/editor/GodotSharpTools/Build/BuildSystem.cs b/modules/mono/editor/GodotSharpTools/Build/BuildSystem.cs
index 5544233eb7..04da0600cc 100644
--- a/modules/mono/editor/GodotSharpTools/Build/BuildSystem.cs
+++ b/modules/mono/editor/GodotSharpTools/Build/BuildSystem.cs
@@ -4,6 +4,7 @@ using System.Collections.Specialized;
using System.Diagnostics;
using System.IO;
using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
using System.Security;
using Microsoft.Build.Framework;
@@ -12,22 +13,27 @@ namespace GodotSharpTools.Build
public class BuildInstance : IDisposable
{
[MethodImpl(MethodImplOptions.InternalCall)]
- internal extern static void godot_icall_BuildInstance_ExitCallback(string solution, string config, int exitCode);
+ private extern static void godot_icall_BuildInstance_ExitCallback(string solution, string config, int exitCode);
[MethodImpl(MethodImplOptions.InternalCall)]
- internal extern static string godot_icall_BuildInstance_get_MSBuildPath();
+ private extern static void godot_icall_BuildInstance_get_MSBuildInfo(ref string msbuildPath, ref string frameworkPath);
- private static string MSBuildPath
+ private struct MSBuildInfo
{
- get
- {
- string ret = godot_icall_BuildInstance_get_MSBuildPath();
+ public string path;
+ public string frameworkPathOverride;
+ }
- if (ret == null)
- throw new FileNotFoundException("Cannot find the MSBuild executable.");
+ private static MSBuildInfo GetMSBuildInfo()
+ {
+ MSBuildInfo msbuildInfo = new MSBuildInfo();
- return ret;
- }
+ godot_icall_BuildInstance_get_MSBuildInfo(ref msbuildInfo.path, ref msbuildInfo.frameworkPathOverride);
+
+ if (msbuildInfo.path == null)
+ throw new FileNotFoundException("Cannot find the MSBuild executable.");
+
+ return msbuildInfo;
}
private string solution;
@@ -48,9 +54,19 @@ namespace GodotSharpTools.Build
public bool Build(string loggerAssemblyPath, string loggerOutputDir, string[] customProperties = null)
{
- string compilerArgs = BuildArguments(loggerAssemblyPath, loggerOutputDir, customProperties);
+ MSBuildInfo msbuildInfo = GetMSBuildInfo();
+
+ List<string> customPropertiesList = new List<string>();
+
+ if (customProperties != null)
+ customPropertiesList.AddRange(customProperties);
+
+ if (msbuildInfo.frameworkPathOverride != null)
+ customPropertiesList.Add("FrameworkPathOverride=" + msbuildInfo.frameworkPathOverride);
- ProcessStartInfo startInfo = new ProcessStartInfo(MSBuildPath, compilerArgs);
+ string compilerArgs = BuildArguments(loggerAssemblyPath, loggerOutputDir, customPropertiesList);
+
+ ProcessStartInfo startInfo = new ProcessStartInfo(msbuildInfo.path, compilerArgs);
// No console output, thanks
startInfo.RedirectStandardOutput = true;
@@ -82,9 +98,19 @@ namespace GodotSharpTools.Build
if (process != null)
throw new InvalidOperationException("Already in use");
- string compilerArgs = BuildArguments(loggerAssemblyPath, loggerOutputDir, customProperties);
+ MSBuildInfo msbuildInfo = GetMSBuildInfo();
+
+ List<string> customPropertiesList = new List<string>();
+
+ if (customProperties != null)
+ customPropertiesList.AddRange(customProperties);
+
+ if (msbuildInfo.frameworkPathOverride.Length > 0)
+ customPropertiesList.Add("FrameworkPathOverride=" + msbuildInfo.frameworkPathOverride);
- ProcessStartInfo startInfo = new ProcessStartInfo("msbuild", compilerArgs);
+ string compilerArgs = BuildArguments(loggerAssemblyPath, loggerOutputDir, customPropertiesList);
+
+ ProcessStartInfo startInfo = new ProcessStartInfo(msbuildInfo.path, compilerArgs);
// No console output, thanks
startInfo.RedirectStandardOutput = true;
@@ -101,10 +127,13 @@ namespace GodotSharpTools.Build
process.Start();
+ process.BeginOutputReadLine();
+ process.BeginErrorReadLine();
+
return true;
}
- private string BuildArguments(string loggerAssemblyPath, string loggerOutputDir, string[] customProperties)
+ private string BuildArguments(string loggerAssemblyPath, string loggerOutputDir, List<string> customProperties)
{
string arguments = string.Format(@"""{0}"" /v:normal /t:Build ""/p:{1}"" ""/l:{2},{3};{4}""",
solution,
@@ -114,12 +143,9 @@ namespace GodotSharpTools.Build
loggerOutputDir
);
- if (customProperties != null)
+ foreach (string customProperty in customProperties)
{
- foreach (string customProperty in customProperties)
- {
- arguments += " /p:" + customProperty;
- }
+ arguments += " \"/p:" + customProperty + "\"";
}
return arguments;
diff --git a/modules/mono/editor/bindings_generator.cpp b/modules/mono/editor/bindings_generator.cpp
index 704910c5b9..eb504ec021 100644
--- a/modules/mono/editor/bindings_generator.cpp
+++ b/modules/mono/editor/bindings_generator.cpp
@@ -108,36 +108,6 @@ const char *BindingsGenerator::TypeInterface::DEFAULT_VARARG_C_IN = "\t%0 %1_in
bool BindingsGenerator::verbose_output = false;
-static bool is_csharp_keyword(const String &p_name) {
-
- // Reserved keywords
-
- return p_name == "abstract" || p_name == "as" || p_name == "base" || p_name == "bool" ||
- p_name == "break" || p_name == "byte" || p_name == "case" || p_name == "catch" ||
- p_name == "char" || p_name == "checked" || p_name == "class" || p_name == "const" ||
- p_name == "continue" || p_name == "decimal" || p_name == "default" || p_name == "delegate" ||
- p_name == "do" || p_name == "double" || p_name == "else" || p_name == "enum" ||
- p_name == "event" || p_name == "explicit" || p_name == "extern" || p_name == "false" ||
- p_name == "finally" || p_name == "fixed" || p_name == "float" || p_name == "for" ||
- p_name == "forech" || p_name == "goto" || p_name == "if" || p_name == "implicit" ||
- p_name == "in" || p_name == "int" || p_name == "interface" || p_name == "internal" ||
- p_name == "is" || p_name == "lock" || p_name == "long" || p_name == "namespace" ||
- p_name == "new" || p_name == "null" || p_name == "object" || p_name == "operator" ||
- p_name == "out" || p_name == "override" || p_name == "params" || p_name == "private" ||
- p_name == "protected" || p_name == "public" || p_name == "readonly" || p_name == "ref" ||
- p_name == "return" || p_name == "sbyte" || p_name == "sealed" || p_name == "short" ||
- p_name == "sizeof" || p_name == "stackalloc" || p_name == "static" || p_name == "string" ||
- p_name == "struct" || p_name == "switch" || p_name == "this" || p_name == "throw" ||
- p_name == "true" || p_name == "try" || p_name == "typeof" || p_name == "uint" || p_name == "ulong" ||
- p_name == "unchecked" || p_name == "unsafe" || p_name == "ushort" || p_name == "using" ||
- p_name == "virtual" || p_name == "volatile" || p_name == "void" || p_name == "while";
-}
-
-inline static String escape_csharp_keyword(const String &p_name) {
-
- return is_csharp_keyword(p_name) ? "@" + p_name : p_name;
-}
-
static String snake_to_pascal_case(const String &p_identifier) {
String ret;
@@ -468,6 +438,9 @@ Error BindingsGenerator::generate_cs_core_project(const String &p_output_dir, bo
return sln_error;
}
+ if (verbose_output)
+ OS::get_singleton()->print("The solution and C# project for the Core API was generated successfully\n");
+
return OK;
}
@@ -560,6 +533,9 @@ Error BindingsGenerator::generate_cs_editor_project(const String &p_output_dir,
return sln_error;
}
+ if (verbose_output)
+ OS::get_singleton()->print("The solution and C# project for the Editor API was generated successfully\n");
+
return OK;
}
@@ -567,8 +543,6 @@ Error BindingsGenerator::generate_cs_editor_project(const String &p_output_dir,
// e.g.: warning CS0108: 'SpriteBase3D.FLAG_MAX' hides inherited member 'GeometryInstance.FLAG_MAX'. Use the new keyword if hiding was intended.
Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const String &p_output_file) {
- int method_bind_count = 0;
-
bool is_derived_type = itype.base_name.length();
List<InternalCall> &custom_icalls = itype.api_type == ClassDB::API_EDITOR ? editor_custom_icalls : core_custom_icalls;
@@ -578,51 +552,51 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str
String ctor_method(ICALL_PREFIX + itype.proxy_name + "_Ctor");
- List<String> cs_file;
+ List<String> output;
- cs_file.push_back("using System;\n"); // IntPtr
+ output.push_back("using System;\n"); // IntPtr
if (itype.requires_collections)
- cs_file.push_back("using System.Collections.Generic;\n"); // Dictionary
+ output.push_back("using System.Collections.Generic;\n"); // Dictionary
- cs_file.push_back("\nnamespace " BINDINGS_NAMESPACE "\n" OPEN_BLOCK);
+ output.push_back("\nnamespace " BINDINGS_NAMESPACE "\n" OPEN_BLOCK);
const DocData::ClassDoc *class_doc = itype.class_doc;
if (class_doc && class_doc->description.size()) {
- cs_file.push_back(INDENT1 "/// <summary>\n");
+ output.push_back(INDENT1 "/// <summary>\n");
Vector<String> description_lines = class_doc->description.split("\n");
for (int i = 0; i < description_lines.size(); i++) {
if (description_lines[i].size()) {
- cs_file.push_back(INDENT1 "/// ");
- cs_file.push_back(description_lines[i].strip_edges().xml_escape());
- cs_file.push_back("\n");
+ output.push_back(INDENT1 "/// ");
+ output.push_back(description_lines[i].strip_edges().xml_escape());
+ output.push_back("\n");
}
}
- cs_file.push_back(INDENT1 "/// </summary>\n");
+ output.push_back(INDENT1 "/// </summary>\n");
}
- cs_file.push_back(INDENT1 "public ");
- cs_file.push_back(itype.is_singleton ? "static class " : "class ");
- cs_file.push_back(itype.proxy_name);
+ output.push_back(INDENT1 "public ");
+ output.push_back(itype.is_singleton ? "static class " : "class ");
+ output.push_back(itype.proxy_name);
if (itype.is_singleton || !itype.is_object_type) {
- cs_file.push_back("\n");
+ output.push_back("\n");
} else if (!is_derived_type) {
- cs_file.push_back(" : IDisposable\n");
+ output.push_back(" : IDisposable\n");
} else if (obj_types.has(itype.base_name)) {
- cs_file.push_back(" : ");
- cs_file.push_back(obj_types[itype.base_name].proxy_name);
- cs_file.push_back("\n");
+ output.push_back(" : ");
+ output.push_back(obj_types[itype.base_name].proxy_name);
+ output.push_back("\n");
} else {
- ERR_PRINTS("Base type ' " + itype.base_name + "' does not exist");
+ ERR_PRINTS("Base type '" + itype.base_name + "' does not exist, for class " + itype.name);
return ERR_INVALID_DATA;
}
- cs_file.push_back(INDENT1 "{");
+ output.push_back(INDENT1 "{");
if (class_doc) {
@@ -632,270 +606,165 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str
const DocData::ConstantDoc &const_doc = class_doc->constants[i];
if (const_doc.description.size()) {
- cs_file.push_back(MEMBER_BEGIN "/// <summary>\n");
+ output.push_back(MEMBER_BEGIN "/// <summary>\n");
Vector<String> description_lines = const_doc.description.split("\n");
for (int i = 0; i < description_lines.size(); i++) {
if (description_lines[i].size()) {
- cs_file.push_back(INDENT2 "/// ");
- cs_file.push_back(description_lines[i].strip_edges().xml_escape());
- cs_file.push_back("\n");
+ output.push_back(INDENT2 "/// ");
+ output.push_back(description_lines[i].strip_edges().xml_escape());
+ output.push_back("\n");
}
}
- cs_file.push_back(INDENT2 "/// </summary>");
+ output.push_back(INDENT2 "/// </summary>");
}
- cs_file.push_back(MEMBER_BEGIN "public const int ");
- cs_file.push_back(const_doc.name);
- cs_file.push_back(" = ");
- cs_file.push_back(const_doc.value);
- cs_file.push_back(";");
+ output.push_back(MEMBER_BEGIN "public const int ");
+ output.push_back(const_doc.name);
+ output.push_back(" = ");
+ output.push_back(const_doc.value);
+ output.push_back(";");
}
if (class_doc->constants.size())
- cs_file.push_back("\n");
+ output.push_back("\n");
// Add properties
- const Vector<DocData::PropertyDoc> &properties = itype.class_doc->properties;
+ const Vector<DocData::PropertyDoc> &properties = class_doc->properties;
for (int i = 0; i < properties.size(); i++) {
const DocData::PropertyDoc &prop_doc = properties[i];
-
- const MethodInterface *setter = itype.find_method_by_name(prop_doc.setter);
-
- // Search it in base types too
- const TypeInterface *current_type = &itype;
- while (!setter && current_type->base_name.length()) {
- Map<String, TypeInterface>::Element *base_match = obj_types.find(current_type->base_name);
- ERR_FAIL_NULL_V(base_match, ERR_BUG);
- current_type = &base_match->get();
- setter = current_type->find_method_by_name(prop_doc.setter);
- }
-
- const MethodInterface *getter = itype.find_method_by_name(prop_doc.getter);
-
- // Search it in base types too
- current_type = &itype;
- while (!getter && current_type->base_name.length()) {
- Map<String, TypeInterface>::Element *base_match = obj_types.find(current_type->base_name);
- ERR_FAIL_NULL_V(base_match, ERR_BUG);
- current_type = &base_match->get();
- getter = current_type->find_method_by_name(prop_doc.getter);
+ Error prop_err = _generate_cs_property(itype, prop_doc, output);
+ if (prop_err != OK) {
+ ERR_EXPLAIN("Failed to generate property '" + prop_doc.name + "' for class '" + itype.name + "'");
+ ERR_FAIL_V(prop_err);
}
-
- ERR_FAIL_COND_V(!setter && !getter, ERR_BUG);
-
- bool is_valid = false;
- int prop_index = ClassDB::get_property_index(itype.name, prop_doc.name, &is_valid);
- ERR_FAIL_COND_V(!is_valid, ERR_BUG);
-
- if (setter) {
- int setter_argc = prop_index != -1 ? 2 : 1;
- ERR_FAIL_COND_V(setter->arguments.size() != setter_argc, ERR_BUG);
- }
-
- if (getter) {
- int getter_argc = prop_index != -1 ? 1 : 0;
- ERR_FAIL_COND_V(getter->arguments.size() != getter_argc, ERR_BUG);
- }
-
- if (getter && setter) {
- ERR_FAIL_COND_V(getter->return_type != setter->arguments.back()->get().type, ERR_BUG);
- }
-
- // Let's not trust PropertyDoc::type
- String proptype_name = getter ? getter->return_type : setter->arguments.back()->get().type;
-
- const TypeInterface *prop_itype = _get_type_by_name_or_null(proptype_name);
- if (!prop_itype) {
- // Try with underscore prefix
- prop_itype = _get_type_by_name_or_null("_" + proptype_name);
- }
-
- ERR_FAIL_NULL_V(prop_itype, ERR_BUG);
-
- String prop_proxy_name = escape_csharp_keyword(snake_to_pascal_case(prop_doc.name));
-
- // Prevent property and enclosing type from sharing the same name
- if (prop_proxy_name == itype.proxy_name) {
- if (verbose_output) {
- WARN_PRINTS("Name of property `" + prop_proxy_name + "` is ambiguous with the name of its class `" +
- itype.proxy_name + "`. Renaming property to `" + prop_proxy_name + "_`");
- }
-
- prop_proxy_name += "_";
- }
-
- if (prop_doc.description.size()) {
- cs_file.push_back(MEMBER_BEGIN "/// <summary>\n");
-
- Vector<String> description_lines = prop_doc.description.split("\n");
-
- for (int i = 0; i < description_lines.size(); i++) {
- if (description_lines[i].size()) {
- cs_file.push_back(INDENT2 "/// ");
- cs_file.push_back(description_lines[i].strip_edges().xml_escape());
- cs_file.push_back("\n");
- }
- }
-
- cs_file.push_back(INDENT2 "/// </summary>");
- }
-
- cs_file.push_back(MEMBER_BEGIN "public ");
-
- if (itype.is_singleton)
- cs_file.push_back("static ");
-
- cs_file.push_back(prop_itype->cs_type);
- cs_file.push_back(" ");
- cs_file.push_back(prop_proxy_name.replace("/", "__"));
- cs_file.push_back("\n" INDENT2 OPEN_BLOCK);
-
- if (getter) {
- cs_file.push_back(INDENT3 "get\n" OPEN_BLOCK_L3);
- cs_file.push_back("return ");
- cs_file.push_back(getter->proxy_name + "(");
- if (prop_index != -1)
- cs_file.push_back(itos(prop_index));
- cs_file.push_back(");\n" CLOSE_BLOCK_L3);
- }
-
- if (setter) {
- cs_file.push_back(INDENT3 "set\n" OPEN_BLOCK_L3);
- cs_file.push_back(setter->proxy_name + "(");
- if (prop_index != -1)
- cs_file.push_back(itos(prop_index) + ", ");
- cs_file.push_back("value);\n" CLOSE_BLOCK_L3);
- }
-
- cs_file.push_back(CLOSE_BLOCK_L2);
}
if (class_doc->properties.size())
- cs_file.push_back("\n");
+ output.push_back("\n");
}
if (!itype.is_object_type) {
- cs_file.push_back(MEMBER_BEGIN "private const string " BINDINGS_NATIVE_NAME_FIELD " = \"" + itype.name + "\";\n");
- cs_file.push_back(MEMBER_BEGIN "private bool disposed = false;\n");
- cs_file.push_back(MEMBER_BEGIN "internal IntPtr " BINDINGS_PTR_FIELD ";\n");
+ output.push_back(MEMBER_BEGIN "private const string " BINDINGS_NATIVE_NAME_FIELD " = \"" + itype.name + "\";\n");
+ output.push_back(MEMBER_BEGIN "private bool disposed = false;\n");
+ output.push_back(MEMBER_BEGIN "internal IntPtr " BINDINGS_PTR_FIELD ";\n");
- cs_file.push_back(MEMBER_BEGIN "internal static IntPtr " CS_SMETHOD_GETINSTANCE "(");
- cs_file.push_back(itype.proxy_name);
- cs_file.push_back(" instance)\n" OPEN_BLOCK_L2 "return instance == null ? IntPtr.Zero : instance." BINDINGS_PTR_FIELD ";\n" CLOSE_BLOCK_L2);
+ output.push_back(MEMBER_BEGIN "internal static IntPtr " CS_SMETHOD_GETINSTANCE "(");
+ output.push_back(itype.proxy_name);
+ output.push_back(" instance)\n" OPEN_BLOCK_L2 "return instance == null ? IntPtr.Zero : instance." BINDINGS_PTR_FIELD ";\n" CLOSE_BLOCK_L2);
// Add Destructor
- cs_file.push_back(MEMBER_BEGIN "~");
- cs_file.push_back(itype.proxy_name);
- cs_file.push_back("()\n" OPEN_BLOCK_L2 "Dispose(false);\n" CLOSE_BLOCK_L2);
+ output.push_back(MEMBER_BEGIN "~");
+ output.push_back(itype.proxy_name);
+ output.push_back("()\n" OPEN_BLOCK_L2 "Dispose(false);\n" CLOSE_BLOCK_L2);
// Add the Dispose from IDisposable
- cs_file.push_back(MEMBER_BEGIN "public void Dispose()\n" OPEN_BLOCK_L2 "Dispose(true);\n" INDENT3 "GC.SuppressFinalize(this);\n" CLOSE_BLOCK_L2);
+ output.push_back(MEMBER_BEGIN "public void Dispose()\n" OPEN_BLOCK_L2 "Dispose(true);\n" INDENT3 "GC.SuppressFinalize(this);\n" CLOSE_BLOCK_L2);
// Add the virtual Dispose
- cs_file.push_back(MEMBER_BEGIN "public virtual void Dispose(bool disposing)\n" OPEN_BLOCK_L2
- "if (disposed) return;\n" INDENT3
- "if (" BINDINGS_PTR_FIELD " != IntPtr.Zero)\n" OPEN_BLOCK_L3 "NativeCalls.godot_icall_");
- cs_file.push_back(itype.proxy_name);
- cs_file.push_back("_Dtor(" BINDINGS_PTR_FIELD ");\n" INDENT5 BINDINGS_PTR_FIELD " = IntPtr.Zero;\n" CLOSE_BLOCK_L3 INDENT3
- "GC.SuppressFinalize(this);\n" INDENT3 "disposed = true;\n" CLOSE_BLOCK_L2);
-
- cs_file.push_back(MEMBER_BEGIN "internal ");
- cs_file.push_back(itype.proxy_name);
- cs_file.push_back("(IntPtr " BINDINGS_PTR_FIELD ")\n" OPEN_BLOCK_L2 "this." BINDINGS_PTR_FIELD " = " BINDINGS_PTR_FIELD ";\n" CLOSE_BLOCK_L2);
-
- cs_file.push_back(MEMBER_BEGIN "public bool HasValidHandle()\n" OPEN_BLOCK_L2
- "return " BINDINGS_PTR_FIELD " == IntPtr.Zero;\n" CLOSE_BLOCK_L2);
+ output.push_back(MEMBER_BEGIN "public virtual void Dispose(bool disposing)\n" OPEN_BLOCK_L2
+ "if (disposed) return;\n" INDENT3
+ "if (" BINDINGS_PTR_FIELD " != IntPtr.Zero)\n" OPEN_BLOCK_L3 "NativeCalls.godot_icall_");
+ output.push_back(itype.proxy_name);
+ output.push_back("_Dtor(" BINDINGS_PTR_FIELD ");\n" INDENT5 BINDINGS_PTR_FIELD " = IntPtr.Zero;\n" CLOSE_BLOCK_L3 INDENT3
+ "GC.SuppressFinalize(this);\n" INDENT3 "disposed = true;\n" CLOSE_BLOCK_L2);
+
+ output.push_back(MEMBER_BEGIN "internal ");
+ output.push_back(itype.proxy_name);
+ output.push_back("(IntPtr " BINDINGS_PTR_FIELD ")\n" OPEN_BLOCK_L2 "this." BINDINGS_PTR_FIELD " = " BINDINGS_PTR_FIELD ";\n" CLOSE_BLOCK_L2);
+
+ output.push_back(MEMBER_BEGIN "public IntPtr NativeInstance\n" OPEN_BLOCK_L2
+ "get { return " BINDINGS_PTR_FIELD "; }\n" CLOSE_BLOCK_L2);
} else if (itype.is_singleton) {
// Add the type name and the singleton pointer as static fields
- cs_file.push_back(MEMBER_BEGIN "private const string " BINDINGS_NATIVE_NAME_FIELD " = \"");
- cs_file.push_back(itype.name);
- cs_file.push_back("\";\n");
+ output.push_back(MEMBER_BEGIN "private const string " BINDINGS_NATIVE_NAME_FIELD " = \"");
+ output.push_back(itype.name);
+ output.push_back("\";\n");
- cs_file.push_back(INDENT2 "internal static IntPtr " BINDINGS_PTR_FIELD " = ");
- cs_file.push_back(itype.api_type == ClassDB::API_EDITOR ? CS_CLASS_NATIVECALLS_EDITOR : CS_CLASS_NATIVECALLS);
- cs_file.push_back("." ICALL_PREFIX);
- cs_file.push_back(itype.name);
- cs_file.push_back(SINGLETON_ICALL_SUFFIX "();\n");
+ output.push_back(INDENT2 "internal static IntPtr " BINDINGS_PTR_FIELD " = ");
+ output.push_back(itype.api_type == ClassDB::API_EDITOR ? CS_CLASS_NATIVECALLS_EDITOR : CS_CLASS_NATIVECALLS);
+ output.push_back("." ICALL_PREFIX);
+ output.push_back(itype.name);
+ output.push_back(SINGLETON_ICALL_SUFFIX "();\n");
} else {
// Add member fields
- cs_file.push_back(MEMBER_BEGIN "private const string " BINDINGS_NATIVE_NAME_FIELD " = \"");
- cs_file.push_back(itype.name);
- cs_file.push_back("\";\n");
+ output.push_back(MEMBER_BEGIN "private const string " BINDINGS_NATIVE_NAME_FIELD " = \"");
+ output.push_back(itype.name);
+ output.push_back("\";\n");
// Only the base class stores the pointer to the native object
// This pointer is expected to be and must be of type Object*
if (!is_derived_type) {
- cs_file.push_back(MEMBER_BEGIN "private bool disposed = false;\n");
- cs_file.push_back(INDENT2 "internal IntPtr " BINDINGS_PTR_FIELD ";\n");
- cs_file.push_back(INDENT2 "internal bool " CS_FIELD_MEMORYOWN ";\n");
+ output.push_back(MEMBER_BEGIN "private bool disposed = false;\n");
+ output.push_back(INDENT2 "internal IntPtr " BINDINGS_PTR_FIELD ";\n");
+ output.push_back(INDENT2 "internal bool " CS_FIELD_MEMORYOWN ";\n");
}
// Add default constructor
if (itype.is_instantiable) {
- cs_file.push_back(MEMBER_BEGIN "public ");
- cs_file.push_back(itype.proxy_name);
- cs_file.push_back("() : this(");
- cs_file.push_back(itype.memory_own ? "true" : "false");
+ output.push_back(MEMBER_BEGIN "public ");
+ output.push_back(itype.proxy_name);
+ output.push_back("() : this(");
+ output.push_back(itype.memory_own ? "true" : "false");
// The default constructor may also be called by the engine when instancing existing native objects
// The engine will initialize the pointer field of the managed side before calling the constructor
// This is why we only allocate a new native object from the constructor if the pointer field is not set
- cs_file.push_back(")\n" OPEN_BLOCK_L2 "if (" BINDINGS_PTR_FIELD " == IntPtr.Zero)\n" INDENT4 BINDINGS_PTR_FIELD " = ");
- cs_file.push_back(itype.api_type == ClassDB::API_EDITOR ? CS_CLASS_NATIVECALLS_EDITOR : CS_CLASS_NATIVECALLS);
- cs_file.push_back("." + ctor_method);
- cs_file.push_back("(this);\n" CLOSE_BLOCK_L2);
+ output.push_back(")\n" OPEN_BLOCK_L2 "if (" BINDINGS_PTR_FIELD " == IntPtr.Zero)\n" INDENT4 BINDINGS_PTR_FIELD " = ");
+ output.push_back(itype.api_type == ClassDB::API_EDITOR ? CS_CLASS_NATIVECALLS_EDITOR : CS_CLASS_NATIVECALLS);
+ output.push_back("." + ctor_method);
+ output.push_back("(this);\n" CLOSE_BLOCK_L2);
} else {
// Hide the constructor
- cs_file.push_back(MEMBER_BEGIN "internal ");
- cs_file.push_back(itype.proxy_name);
- cs_file.push_back("() {}\n");
+ output.push_back(MEMBER_BEGIN "internal ");
+ output.push_back(itype.proxy_name);
+ output.push_back("() {}\n");
}
// Add.. em.. trick constructor. Sort of.
- cs_file.push_back(MEMBER_BEGIN "internal ");
- cs_file.push_back(itype.proxy_name);
+ output.push_back(MEMBER_BEGIN "internal ");
+ output.push_back(itype.proxy_name);
if (is_derived_type) {
- cs_file.push_back("(bool " CS_FIELD_MEMORYOWN ") : base(" CS_FIELD_MEMORYOWN ") {}\n");
+ output.push_back("(bool " CS_FIELD_MEMORYOWN ") : base(" CS_FIELD_MEMORYOWN ") {}\n");
} else {
- cs_file.push_back("(bool " CS_FIELD_MEMORYOWN ")\n" OPEN_BLOCK_L2
- "this." CS_FIELD_MEMORYOWN " = " CS_FIELD_MEMORYOWN ";\n" CLOSE_BLOCK_L2);
+ output.push_back("(bool " CS_FIELD_MEMORYOWN ")\n" OPEN_BLOCK_L2
+ "this." CS_FIELD_MEMORYOWN " = " CS_FIELD_MEMORYOWN ";\n" CLOSE_BLOCK_L2);
}
// Add methods
if (!is_derived_type) {
- cs_file.push_back(MEMBER_BEGIN "public bool HasValidHandle()\n" OPEN_BLOCK_L2
- "return " BINDINGS_PTR_FIELD " == IntPtr.Zero;\n" CLOSE_BLOCK_L2);
+ output.push_back(MEMBER_BEGIN "public IntPtr NativeInstance\n" OPEN_BLOCK_L2
+ "get { return " BINDINGS_PTR_FIELD "; }\n" CLOSE_BLOCK_L2);
- cs_file.push_back(MEMBER_BEGIN "internal static IntPtr " CS_SMETHOD_GETINSTANCE "(Object instance)\n" OPEN_BLOCK_L2
- "return instance == null ? IntPtr.Zero : instance." BINDINGS_PTR_FIELD ";\n" CLOSE_BLOCK_L2);
+ output.push_back(MEMBER_BEGIN "internal static IntPtr " CS_SMETHOD_GETINSTANCE "(Object instance)\n" OPEN_BLOCK_L2
+ "return instance == null ? IntPtr.Zero : instance." BINDINGS_PTR_FIELD ";\n" CLOSE_BLOCK_L2);
}
if (!is_derived_type) {
// Add destructor
- cs_file.push_back(MEMBER_BEGIN "~");
- cs_file.push_back(itype.proxy_name);
- cs_file.push_back("()\n" OPEN_BLOCK_L2 "Dispose(false);\n" CLOSE_BLOCK_L2);
+ output.push_back(MEMBER_BEGIN "~");
+ output.push_back(itype.proxy_name);
+ output.push_back("()\n" OPEN_BLOCK_L2 "Dispose(false);\n" CLOSE_BLOCK_L2);
// Add the Dispose from IDisposable
- cs_file.push_back(MEMBER_BEGIN "public void Dispose()\n" OPEN_BLOCK_L2 "Dispose(true);\n" INDENT3 "GC.SuppressFinalize(this);\n" CLOSE_BLOCK_L2);
+ output.push_back(MEMBER_BEGIN "public void Dispose()\n" OPEN_BLOCK_L2 "Dispose(true);\n" INDENT3 "GC.SuppressFinalize(this);\n" CLOSE_BLOCK_L2);
// Add the virtual Dispose
- cs_file.push_back(MEMBER_BEGIN "public virtual void Dispose(bool disposing)\n" OPEN_BLOCK_L2
- "if (disposed) return;\n" INDENT3
- "if (" BINDINGS_PTR_FIELD " != IntPtr.Zero)\n" OPEN_BLOCK_L3
- "if (" CS_FIELD_MEMORYOWN ")\n" OPEN_BLOCK_L4 CS_FIELD_MEMORYOWN
- " = false;\n" INDENT5 CS_CLASS_NATIVECALLS "." ICALL_OBJECT_DTOR
- "(" BINDINGS_PTR_FIELD ");\n" INDENT5 BINDINGS_PTR_FIELD
- " = IntPtr.Zero;\n" CLOSE_BLOCK_L4 CLOSE_BLOCK_L3 INDENT3
- "GC.SuppressFinalize(this);\n" INDENT3 "disposed = true;\n" CLOSE_BLOCK_L2);
+ output.push_back(MEMBER_BEGIN "public virtual void Dispose(bool disposing)\n" OPEN_BLOCK_L2
+ "if (disposed) return;\n" INDENT3
+ "if (" BINDINGS_PTR_FIELD " != IntPtr.Zero)\n" OPEN_BLOCK_L3
+ "if (" CS_FIELD_MEMORYOWN ")\n" OPEN_BLOCK_L4 CS_FIELD_MEMORYOWN
+ " = false;\n" INDENT5 CS_CLASS_NATIVECALLS "." ICALL_OBJECT_DTOR
+ "(" BINDINGS_PTR_FIELD ");\n" INDENT5 BINDINGS_PTR_FIELD
+ " = IntPtr.Zero;\n" CLOSE_BLOCK_L4 CLOSE_BLOCK_L3 INDENT3
+ "GC.SuppressFinalize(this);\n" INDENT3 "disposed = true;\n" CLOSE_BLOCK_L2);
Map<String, TypeInterface>::Element *array_itype = builtin_types.find("Array");
@@ -904,416 +773,390 @@ Error BindingsGenerator::_generate_cs_type(const TypeInterface &itype, const Str
return ERR_BUG;
}
- cs_file.push_back(MEMBER_BEGIN "private void _AwaitedSignalCallback(");
- cs_file.push_back(array_itype->get().cs_type);
- cs_file.push_back(" args, SignalAwaiter awaiter)\n" OPEN_BLOCK_L2 "awaiter.SignalCallback(args);\n" CLOSE_BLOCK_L2);
-
Map<String, TypeInterface>::Element *object_itype = obj_types.find("Object");
if (!object_itype) {
- ERR_PRINT("BUG: Array type interface not found!");
+ ERR_PRINT("BUG: Object type interface not found!");
return ERR_BUG;
}
- cs_file.push_back(MEMBER_BEGIN "public " CS_CLASS_SIGNALAWAITER " ToSignal(");
- cs_file.push_back(object_itype->get().cs_type);
- cs_file.push_back(" source, string signal)\n" OPEN_BLOCK_L2
- "return new " CS_CLASS_SIGNALAWAITER "(source, signal, this);\n" CLOSE_BLOCK_L2);
+ output.push_back(MEMBER_BEGIN "public " CS_CLASS_SIGNALAWAITER " ToSignal(");
+ output.push_back(object_itype->get().cs_type);
+ output.push_back(" source, string signal)\n" OPEN_BLOCK_L2
+ "return new " CS_CLASS_SIGNALAWAITER "(source, signal, this);\n" CLOSE_BLOCK_L2);
}
}
Map<String, String>::Element *extra_member = extra_members.find(itype.name);
if (extra_member)
- cs_file.push_back(extra_member->get());
+ output.push_back(extra_member->get());
+ int method_bind_count = 0;
for (const List<MethodInterface>::Element *E = itype.methods.front(); E; E = E->next()) {
const MethodInterface &imethod = E->get();
+ Error method_err = _generate_cs_method(itype, imethod, method_bind_count, output);
+ if (method_err != OK) {
+ ERR_EXPLAIN("Failed to generate method '" + imethod.name + "' for class '" + itype.name + "'");
+ ERR_FAIL_V(method_err);
+ }
+ }
- const TypeInterface *return_type = _get_type_by_name_or_placeholder(imethod.return_type);
+ if (itype.is_singleton) {
+ InternalCall singleton_icall = InternalCall(itype.api_type, ICALL_PREFIX + itype.name + SINGLETON_ICALL_SUFFIX, "IntPtr");
- String method_bind_field = "method_bind_" + itos(method_bind_count);
+ if (!find_icall_by_name(singleton_icall.name, custom_icalls))
+ custom_icalls.push_back(singleton_icall);
+ }
- String icall_params = method_bind_field + ", " + sformat(itype.cs_in, "this");
- String arguments_sig;
- String cs_in_statements;
+ if (itype.is_instantiable) {
+ InternalCall ctor_icall = InternalCall(itype.api_type, ctor_method, "IntPtr", itype.proxy_name + " obj");
- List<String> default_args_doc;
+ if (!find_icall_by_name(ctor_icall.name, custom_icalls))
+ custom_icalls.push_back(ctor_icall);
+ }
- // Retrieve information from the arguments
- for (const List<ArgumentInterface>::Element *F = imethod.arguments.front(); F; F = F->next()) {
- const ArgumentInterface &iarg = F->get();
- const TypeInterface *arg_type = _get_type_by_name_or_placeholder(iarg.type);
+ output.push_back(INDENT1 CLOSE_BLOCK CLOSE_BLOCK);
- // Add the current arguments to the signature
- // If the argument has a default value which is not a constant, we will make it Nullable
- {
- if (F != imethod.arguments.front())
- arguments_sig += ", ";
+ return _save_file(p_output_file, output);
+}
- if (iarg.def_param_mode == ArgumentInterface::NULLABLE_VAL)
- arguments_sig += "Nullable<";
+Error BindingsGenerator::_generate_cs_property(const BindingsGenerator::TypeInterface &p_itype, const DocData::PropertyDoc &p_prop_doc, List<String> &p_output) {
- arguments_sig += arg_type->cs_type;
+ const MethodInterface *setter = p_itype.find_method_by_name(p_prop_doc.setter);
- if (iarg.def_param_mode == ArgumentInterface::NULLABLE_VAL)
- arguments_sig += "> ";
- else
- arguments_sig += " ";
+ // Search it in base types too
+ const TypeInterface *current_type = &p_itype;
+ while (!setter && current_type->base_name.length()) {
+ Map<String, TypeInterface>::Element *base_match = obj_types.find(current_type->base_name);
+ ERR_FAIL_NULL_V(base_match, ERR_BUG);
+ current_type = &base_match->get();
+ setter = current_type->find_method_by_name(p_prop_doc.setter);
+ }
- arguments_sig += iarg.name;
+ const MethodInterface *getter = p_itype.find_method_by_name(p_prop_doc.getter);
- if (iarg.default_argument.size()) {
- if (iarg.def_param_mode != ArgumentInterface::CONSTANT)
- arguments_sig += " = null";
- else
- arguments_sig += " = " + sformat(iarg.default_argument, arg_type->cs_type);
- }
- }
+ // Search it in base types too
+ current_type = &p_itype;
+ while (!getter && current_type->base_name.length()) {
+ Map<String, TypeInterface>::Element *base_match = obj_types.find(current_type->base_name);
+ ERR_FAIL_NULL_V(base_match, ERR_BUG);
+ current_type = &base_match->get();
+ getter = current_type->find_method_by_name(p_prop_doc.getter);
+ }
- icall_params += ", ";
+ ERR_FAIL_COND_V(!setter && !getter, ERR_BUG);
- if (iarg.default_argument.size() && iarg.def_param_mode != ArgumentInterface::CONSTANT) {
- // The default value of an argument must be constant. Otherwise we make it Nullable and do the following:
- // Type arg_in = arg.HasValue ? arg.Value : <non-const default value>;
- String arg_in = iarg.name;
- arg_in += "_in";
+ bool is_valid = false;
+ int prop_index = ClassDB::get_property_index(p_itype.name, p_prop_doc.name, &is_valid);
+ ERR_FAIL_COND_V(!is_valid, ERR_BUG);
- cs_in_statements += arg_type->cs_type;
- cs_in_statements += " ";
- cs_in_statements += arg_in;
- cs_in_statements += " = ";
- cs_in_statements += iarg.name;
+ if (setter) {
+ int setter_argc = prop_index != -1 ? 2 : 1;
+ ERR_FAIL_COND_V(setter->arguments.size() != setter_argc, ERR_BUG);
+ }
- if (iarg.def_param_mode == ArgumentInterface::NULLABLE_VAL)
- cs_in_statements += ".HasValue ? ";
- else
- cs_in_statements += " != null ? ";
+ if (getter) {
+ int getter_argc = prop_index != -1 ? 1 : 0;
+ ERR_FAIL_COND_V(getter->arguments.size() != getter_argc, ERR_BUG);
+ }
- cs_in_statements += iarg.name;
+ if (getter && setter) {
+ ERR_FAIL_COND_V(getter->return_type != setter->arguments.back()->get().type, ERR_BUG);
+ }
- if (iarg.def_param_mode == ArgumentInterface::NULLABLE_VAL)
- cs_in_statements += ".Value : ";
- else
- cs_in_statements += " : ";
+ // Let's not trust PropertyDoc::type
+ String proptype_name = getter ? getter->return_type : setter->arguments.back()->get().type;
- String def_arg = sformat(iarg.default_argument, arg_type->cs_type);
+ const TypeInterface *prop_itype = _get_type_by_name_or_null(proptype_name);
+ if (!prop_itype) {
+ // Try with underscore prefix
+ prop_itype = _get_type_by_name_or_null("_" + proptype_name);
+ }
- cs_in_statements += def_arg;
- cs_in_statements += ";\n" INDENT3;
+ ERR_FAIL_NULL_V(prop_itype, ERR_BUG);
- icall_params += arg_type->cs_in.empty() ? arg_in : sformat(arg_type->cs_in, arg_in);
+ String prop_proxy_name = escape_csharp_keyword(snake_to_pascal_case(p_prop_doc.name));
- default_args_doc.push_back(INDENT2 "/// <param name=\"" + iarg.name + "\">If the param is null, then the default value is " + def_arg + "</param>\n");
- } else {
- icall_params += arg_type->cs_in.empty() ? iarg.name : sformat(arg_type->cs_in, iarg.name);
- }
+ // Prevent property and enclosing type from sharing the same name
+ if (prop_proxy_name == p_itype.proxy_name) {
+ if (verbose_output) {
+ WARN_PRINTS("Name of property `" + prop_proxy_name + "` is ambiguous with the name of its class `" +
+ p_itype.proxy_name + "`. Renaming property to `" + prop_proxy_name + "_`");
}
- // Generate method
- {
- if (!imethod.is_virtual && !imethod.requires_object_call) {
- cs_file.push_back(MEMBER_BEGIN "private ");
- cs_file.push_back(itype.is_singleton ? "static IntPtr " : "IntPtr ");
- cs_file.push_back(method_bind_field + " = " CS_CLASS_NATIVECALLS "." ICALL_GET_METHODBIND "(" BINDINGS_NATIVE_NAME_FIELD ", \"");
- cs_file.push_back(imethod.name);
- cs_file.push_back("\");\n");
- }
+ prop_proxy_name += "_";
+ }
- if (imethod.method_doc && imethod.method_doc->description.size()) {
- cs_file.push_back(MEMBER_BEGIN "/// <summary>\n");
+ if (p_prop_doc.description.size()) {
+ p_output.push_back(MEMBER_BEGIN "/// <summary>\n");
- Vector<String> description_lines = imethod.method_doc->description.split("\n");
+ Vector<String> description_lines = p_prop_doc.description.split("\n");
- for (int i = 0; i < description_lines.size(); i++) {
- if (description_lines[i].size()) {
- cs_file.push_back(INDENT2 "/// ");
- cs_file.push_back(description_lines[i].strip_edges().xml_escape());
- cs_file.push_back("\n");
- }
- }
+ for (int i = 0; i < description_lines.size(); i++) {
+ if (description_lines[i].size()) {
+ p_output.push_back(INDENT2 "/// ");
+ p_output.push_back(description_lines[i].strip_edges().xml_escape());
+ p_output.push_back("\n");
+ }
+ }
- for (List<String>::Element *E = default_args_doc.front(); E; E = E->next()) {
- cs_file.push_back(E->get().xml_escape());
- }
+ p_output.push_back(INDENT2 "/// </summary>");
+ }
- cs_file.push_back(INDENT2 "/// </summary>");
- }
+ p_output.push_back(MEMBER_BEGIN "public ");
- if (!imethod.is_internal) {
- cs_file.push_back(MEMBER_BEGIN "[GodotMethod(\"");
- cs_file.push_back(imethod.name);
- cs_file.push_back("\")]");
- }
+ if (p_itype.is_singleton)
+ p_output.push_back("static ");
- cs_file.push_back(MEMBER_BEGIN);
- cs_file.push_back(imethod.is_internal ? "internal " : "public ");
+ p_output.push_back(prop_itype->cs_type);
+ p_output.push_back(" ");
+ p_output.push_back(prop_proxy_name.replace("/", "__"));
+ p_output.push_back("\n" INDENT2 OPEN_BLOCK);
- if (itype.is_singleton) {
- cs_file.push_back("static ");
- } else if (imethod.is_virtual) {
- cs_file.push_back("virtual ");
- }
+ if (getter) {
+ p_output.push_back(INDENT3 "get\n" OPEN_BLOCK_L3);
+ p_output.push_back("return ");
+ p_output.push_back(getter->proxy_name + "(");
+ if (prop_index != -1)
+ p_output.push_back(itos(prop_index));
+ p_output.push_back(");\n" CLOSE_BLOCK_L3);
+ }
- cs_file.push_back(return_type->cs_type + " ");
- cs_file.push_back(imethod.proxy_name + "(");
- cs_file.push_back(arguments_sig + ")\n" OPEN_BLOCK_L2);
+ if (setter) {
+ p_output.push_back(INDENT3 "set\n" OPEN_BLOCK_L3);
+ p_output.push_back(setter->proxy_name + "(");
+ if (prop_index != -1)
+ p_output.push_back(itos(prop_index) + ", ");
+ p_output.push_back("value);\n" CLOSE_BLOCK_L3);
+ }
- if (imethod.is_virtual) {
- // Godot virtual method must be overridden, therefore we return a default value by default.
+ p_output.push_back(CLOSE_BLOCK_L2);
- if (return_type->name == "void") {
- cs_file.push_back("return;\n" CLOSE_BLOCK_L2);
- } else {
- cs_file.push_back("return default(");
- cs_file.push_back(return_type->cs_type);
- cs_file.push_back(");\n" CLOSE_BLOCK_L2);
- }
+ return OK;
+}
- continue;
- }
+Error BindingsGenerator::_generate_cs_method(const BindingsGenerator::TypeInterface &p_itype, const BindingsGenerator::MethodInterface &p_imethod, int &p_method_bind_count, List<String> &p_output) {
- if (imethod.requires_object_call) {
- // Fallback to Godot's object.Call(string, params)
+ const TypeInterface *return_type = _get_type_by_name_or_placeholder(p_imethod.return_type);
- cs_file.push_back(CS_METHOD_CALL "(\"");
- cs_file.push_back(imethod.name);
- cs_file.push_back("\"");
+ String method_bind_field = "method_bind_" + itos(p_method_bind_count);
- for (const List<ArgumentInterface>::Element *F = imethod.arguments.front(); F; F = F->next()) {
- cs_file.push_back(", ");
- cs_file.push_back(F->get().name);
- }
+ String icall_params = method_bind_field + ", " + sformat(p_itype.cs_in, "this");
+ String arguments_sig;
+ String cs_in_statements;
- cs_file.push_back(");\n" CLOSE_BLOCK_L2);
+ List<String> default_args_doc;
- continue;
- }
+ // Retrieve information from the arguments
+ for (const List<ArgumentInterface>::Element *F = p_imethod.arguments.front(); F; F = F->next()) {
+ const ArgumentInterface &iarg = F->get();
+ const TypeInterface *arg_type = _get_type_by_name_or_placeholder(iarg.type);
- const Map<const MethodInterface *, const InternalCall *>::Element *match = method_icalls_map.find(&E->get());
- ERR_FAIL_NULL_V(match, ERR_BUG);
+ // Add the current arguments to the signature
+ // If the argument has a default value which is not a constant, we will make it Nullable
+ {
+ if (F != p_imethod.arguments.front())
+ arguments_sig += ", ";
- const InternalCall *im_icall = match->value();
+ if (iarg.def_param_mode == ArgumentInterface::NULLABLE_VAL)
+ arguments_sig += "Nullable<";
- String im_call = im_icall->editor_only ? CS_CLASS_NATIVECALLS_EDITOR : CS_CLASS_NATIVECALLS;
- im_call += "." + im_icall->name + "(" + icall_params + ");\n";
+ arguments_sig += arg_type->cs_type;
- if (imethod.arguments.size())
- cs_file.push_back(cs_in_statements);
+ if (iarg.def_param_mode == ArgumentInterface::NULLABLE_VAL)
+ arguments_sig += "> ";
+ else
+ arguments_sig += " ";
- if (return_type->name == "void") {
- cs_file.push_back(im_call);
- } else if (return_type->cs_out.empty()) {
- cs_file.push_back("return " + im_call);
- } else {
- cs_file.push_back(return_type->im_type_out);
- cs_file.push_back(" " LOCAL_RET " = ");
- cs_file.push_back(im_call);
- cs_file.push_back(INDENT3);
- cs_file.push_back(sformat(return_type->cs_out, LOCAL_RET) + "\n");
- }
+ arguments_sig += iarg.name;
- cs_file.push_back(CLOSE_BLOCK_L2);
+ if (iarg.default_argument.size()) {
+ if (iarg.def_param_mode != ArgumentInterface::CONSTANT)
+ arguments_sig += " = null";
+ else
+ arguments_sig += " = " + sformat(iarg.default_argument, arg_type->cs_type);
+ }
}
- method_bind_count++;
- }
+ icall_params += ", ";
- if (itype.is_singleton) {
- InternalCall singleton_icall = InternalCall(itype.api_type, ICALL_PREFIX + itype.name + SINGLETON_ICALL_SUFFIX, "IntPtr");
+ if (iarg.default_argument.size() && iarg.def_param_mode != ArgumentInterface::CONSTANT) {
+ // The default value of an argument must be constant. Otherwise we make it Nullable and do the following:
+ // Type arg_in = arg.HasValue ? arg.Value : <non-const default value>;
+ String arg_in = iarg.name;
+ arg_in += "_in";
- if (!find_icall_by_name(singleton_icall.name, custom_icalls))
- custom_icalls.push_back(singleton_icall);
- }
+ cs_in_statements += arg_type->cs_type;
+ cs_in_statements += " ";
+ cs_in_statements += arg_in;
+ cs_in_statements += " = ";
+ cs_in_statements += iarg.name;
- if (itype.is_instantiable) {
- InternalCall ctor_icall = InternalCall(itype.api_type, ctor_method, "IntPtr", itype.proxy_name + " obj");
+ if (iarg.def_param_mode == ArgumentInterface::NULLABLE_VAL)
+ cs_in_statements += ".HasValue ? ";
+ else
+ cs_in_statements += " != null ? ";
- if (!find_icall_by_name(ctor_icall.name, custom_icalls))
- custom_icalls.push_back(ctor_icall);
- }
+ cs_in_statements += iarg.name;
- cs_file.push_back(INDENT1 CLOSE_BLOCK CLOSE_BLOCK);
+ if (iarg.def_param_mode == ArgumentInterface::NULLABLE_VAL)
+ cs_in_statements += ".Value : ";
+ else
+ cs_in_statements += " : ";
- return _save_file(p_output_file, cs_file);
-}
+ String def_arg = sformat(iarg.default_argument, arg_type->cs_type);
-Error BindingsGenerator::generate_glue(const String &p_output_dir) {
+ cs_in_statements += def_arg;
+ cs_in_statements += ";\n" INDENT3;
- verbose_output = true;
+ icall_params += arg_type->cs_in.empty() ? arg_in : sformat(arg_type->cs_in, arg_in);
- bool dir_exists = DirAccess::exists(p_output_dir);
- ERR_EXPLAIN("The output directory does not exist.");
- ERR_FAIL_COND_V(!dir_exists, ERR_FILE_BAD_PATH);
+ default_args_doc.push_back(INDENT2 "/// <param name=\"" + iarg.name + "\">If the param is null, then the default value is " + def_arg + "</param>\n");
+ } else {
+ icall_params += arg_type->cs_in.empty() ? iarg.name : sformat(arg_type->cs_in, iarg.name);
+ }
+ }
- List<String> cpp_file;
+ // Generate method
+ {
+ if (!p_imethod.is_virtual && !p_imethod.requires_object_call) {
+ p_output.push_back(MEMBER_BEGIN "private ");
+ p_output.push_back(p_itype.is_singleton ? "static IntPtr " : "IntPtr ");
+ p_output.push_back(method_bind_field + " = " CS_CLASS_NATIVECALLS "." ICALL_GET_METHODBIND "(" BINDINGS_NATIVE_NAME_FIELD ", \"");
+ p_output.push_back(p_imethod.name);
+ p_output.push_back("\");\n");
+ }
- cpp_file.push_back("#include \"" GLUE_HEADER_FILE "\"\n"
- "\n");
+ if (p_imethod.method_doc && p_imethod.method_doc->description.size()) {
+ p_output.push_back(MEMBER_BEGIN "/// <summary>\n");
- List<const InternalCall *> generated_icall_funcs;
+ Vector<String> description_lines = p_imethod.method_doc->description.split("\n");
- for (Map<String, TypeInterface>::Element *type_elem = obj_types.front(); type_elem; type_elem = type_elem->next()) {
- const TypeInterface &itype = type_elem->get();
+ for (int i = 0; i < description_lines.size(); i++) {
+ if (description_lines[i].size()) {
+ p_output.push_back(INDENT2 "/// ");
+ p_output.push_back(description_lines[i].strip_edges().xml_escape());
+ p_output.push_back("\n");
+ }
+ }
- List<InternalCall> &custom_icalls = itype.api_type == ClassDB::API_EDITOR ? editor_custom_icalls : core_custom_icalls;
+ for (List<String>::Element *E = default_args_doc.front(); E; E = E->next()) {
+ p_output.push_back(E->get().xml_escape());
+ }
- OS::get_singleton()->print(String("Generating " + itype.name + "...\n").utf8());
+ p_output.push_back(INDENT2 "/// </summary>");
+ }
- String ctor_method(ICALL_PREFIX + itype.proxy_name + "_Ctor");
+ if (!p_imethod.is_internal) {
+ p_output.push_back(MEMBER_BEGIN "[GodotMethod(\"");
+ p_output.push_back(p_imethod.name);
+ p_output.push_back("\")]");
+ }
- for (const List<MethodInterface>::Element *E = itype.methods.front(); E; E = E->next()) {
- const MethodInterface &imethod = E->get();
+ p_output.push_back(MEMBER_BEGIN);
+ p_output.push_back(p_imethod.is_internal ? "internal " : "public ");
- if (imethod.is_virtual)
- continue;
+ if (p_itype.is_singleton) {
+ p_output.push_back("static ");
+ } else if (p_imethod.is_virtual) {
+ p_output.push_back("virtual ");
+ }
- bool ret_void = imethod.return_type == "void";
+ p_output.push_back(return_type->cs_type + " ");
+ p_output.push_back(p_imethod.proxy_name + "(");
+ p_output.push_back(arguments_sig + ")\n" OPEN_BLOCK_L2);
- const TypeInterface *return_type = _get_type_by_name_or_placeholder(imethod.return_type);
+ if (p_imethod.is_virtual) {
+ // Godot virtual method must be overridden, therefore we return a default value by default.
- String argc_str = itos(imethod.arguments.size());
+ if (return_type->name == "void") {
+ p_output.push_back("return;\n" CLOSE_BLOCK_L2);
+ } else {
+ p_output.push_back("return default(");
+ p_output.push_back(return_type->cs_type);
+ p_output.push_back(");\n" CLOSE_BLOCK_L2);
+ }
- String c_func_sig = "MethodBind* " CS_PARAM_METHODBIND ", " + itype.c_type_in + " " CS_PARAM_INSTANCE;
- String c_in_statements;
- String c_args_var_content;
+ return OK; // Won't increment method bind count
+ }
- // Get arguments information
- int i = 0;
- for (const List<ArgumentInterface>::Element *F = imethod.arguments.front(); F; F = F->next()) {
- const ArgumentInterface &iarg = F->get();
- const TypeInterface *arg_type = _get_type_by_name_or_placeholder(iarg.type);
+ if (p_imethod.requires_object_call) {
+ // Fallback to Godot's object.Call(string, params)
- String c_param_name = "arg" + itos(i + 1);
+ p_output.push_back(CS_METHOD_CALL "(\"");
+ p_output.push_back(p_imethod.name);
+ p_output.push_back("\"");
- if (imethod.is_vararg) {
- if (i < imethod.arguments.size() - 1) {
- c_in_statements += sformat(arg_type->c_in.size() ? arg_type->c_in : TypeInterface::DEFAULT_VARARG_C_IN, "Variant", c_param_name);
- c_in_statements += "\t" C_LOCAL_PTRCALL_ARGS ".set(0, ";
- c_in_statements += sformat("&%s_in", c_param_name);
- c_in_statements += ");\n";
- }
- } else {
- if (i > 0)
- c_args_var_content += ", ";
- if (arg_type->c_in.size())
- c_in_statements += sformat(arg_type->c_in, arg_type->c_type, c_param_name);
- c_args_var_content += sformat(arg_type->c_arg_in, c_param_name);
- }
+ for (const List<ArgumentInterface>::Element *F = p_imethod.arguments.front(); F; F = F->next()) {
+ p_output.push_back(", ");
+ p_output.push_back(F->get().name);
+ }
- c_func_sig += ", ";
- c_func_sig += arg_type->c_type_in;
- c_func_sig += " ";
- c_func_sig += c_param_name;
+ p_output.push_back(");\n" CLOSE_BLOCK_L2);
- i++;
- }
+ return OK; // Won't increment method bind count
+ }
- const Map<const MethodInterface *, const InternalCall *>::Element *match = method_icalls_map.find(&E->get());
- ERR_FAIL_NULL_V(match, ERR_BUG);
+ const Map<const MethodInterface *, const InternalCall *>::Element *match = method_icalls_map.find(&p_imethod);
+ ERR_FAIL_NULL_V(match, ERR_BUG);
- const InternalCall *im_icall = match->value();
- String icall_method = im_icall->name;
+ const InternalCall *im_icall = match->value();
- if (!generated_icall_funcs.find(im_icall)) {
- generated_icall_funcs.push_back(im_icall);
+ String im_call = im_icall->editor_only ? CS_CLASS_NATIVECALLS_EDITOR : CS_CLASS_NATIVECALLS;
+ im_call += "." + im_icall->name + "(" + icall_params + ");\n";
- if (im_icall->editor_only)
- cpp_file.push_back("#ifdef TOOLS_ENABLED\n");
+ if (p_imethod.arguments.size())
+ p_output.push_back(cs_in_statements);
- // Generate icall function
+ if (return_type->name == "void") {
+ p_output.push_back(im_call);
+ } else if (return_type->cs_out.empty()) {
+ p_output.push_back("return " + im_call);
+ } else {
+ p_output.push_back(return_type->im_type_out);
+ p_output.push_back(" " LOCAL_RET " = ");
+ p_output.push_back(im_call);
+ p_output.push_back(INDENT3);
+ p_output.push_back(sformat(return_type->cs_out, LOCAL_RET) + "\n");
+ }
- cpp_file.push_back(ret_void ? "void " : return_type->c_type_out + " ");
- cpp_file.push_back(icall_method);
- cpp_file.push_back("(");
- cpp_file.push_back(c_func_sig);
- cpp_file.push_back(") " OPEN_BLOCK);
+ p_output.push_back(CLOSE_BLOCK_L2);
+ }
- String fail_ret = ret_void ? "" : ", " + (return_type->c_type_out.ends_with("*") ? "NULL" : return_type->c_type_out + "()");
+ p_method_bind_count++;
+ return OK;
+}
- if (!ret_void) {
- String ptrcall_return_type;
- String initialization;
+Error BindingsGenerator::generate_glue(const String &p_output_dir) {
- if (return_type->is_object_type) {
- ptrcall_return_type = return_type->is_reference ? "Ref<Reference>" : return_type->c_type;
- initialization = return_type->is_reference ? "" : " = NULL";
- } else {
- ptrcall_return_type = return_type->c_type;
- }
+ verbose_output = true;
- cpp_file.push_back("\t" + ptrcall_return_type);
- cpp_file.push_back(" " LOCAL_RET);
- cpp_file.push_back(initialization + ";\n");
- cpp_file.push_back("\tERR_FAIL_NULL_V(" CS_PARAM_INSTANCE);
- cpp_file.push_back(fail_ret);
- cpp_file.push_back(");\n");
- } else {
- cpp_file.push_back("\tERR_FAIL_NULL(" CS_PARAM_INSTANCE ");\n");
- }
+ bool dir_exists = DirAccess::exists(p_output_dir);
+ ERR_EXPLAIN("The output directory does not exist.");
+ ERR_FAIL_COND_V(!dir_exists, ERR_FILE_BAD_PATH);
- if (imethod.arguments.size()) {
- if (imethod.is_vararg) {
- String err_fail_macro = ret_void ? "ERR_FAIL_COND" : "ERR_FAIL_COND_V";
- String vararg_arg = "arg" + argc_str;
- String real_argc_str = itos(imethod.arguments.size() - 1); // Arguments count without vararg
-
- cpp_file.push_back("\tVector<Variant> varargs;\n"
- "\tint vararg_length = mono_array_length(");
- cpp_file.push_back(vararg_arg);
- cpp_file.push_back(");\n\tint total_length = ");
- cpp_file.push_back(real_argc_str);
- cpp_file.push_back(" + vararg_length;\n\t");
- cpp_file.push_back(err_fail_macro);
- cpp_file.push_back("(varargs.resize(vararg_length) != OK");
- cpp_file.push_back(fail_ret);
- cpp_file.push_back(");\n\tVector<Variant*> " C_LOCAL_PTRCALL_ARGS ";\n\t");
- cpp_file.push_back(err_fail_macro);
- cpp_file.push_back("(call_args.resize(total_length) != OK");
- cpp_file.push_back(fail_ret);
- cpp_file.push_back(");\n");
- cpp_file.push_back(c_in_statements);
- cpp_file.push_back("\tfor (int i = 0; i < vararg_length; i++) " OPEN_BLOCK
- "\t\tMonoObject* elem = mono_array_get(");
- cpp_file.push_back(vararg_arg);
- cpp_file.push_back(", MonoObject*, i);\n"
- "\t\tvarargs.set(i, GDMonoMarshal::mono_object_to_variant(elem));\n"
- "\t\t" C_LOCAL_PTRCALL_ARGS ".set(");
- cpp_file.push_back(real_argc_str);
- cpp_file.push_back(" + i, &varargs[i]);\n\t" CLOSE_BLOCK);
- } else {
- cpp_file.push_back(c_in_statements);
- cpp_file.push_back("\tconst void* " C_LOCAL_PTRCALL_ARGS "[");
- cpp_file.push_back(argc_str + "] = { ");
- cpp_file.push_back(c_args_var_content + " };\n");
- }
- }
+ List<String> output;
- if (imethod.is_vararg) {
- cpp_file.push_back("\tVariant::CallError vcall_error;\n\t");
+ output.push_back("#include \"" GLUE_HEADER_FILE "\"\n"
+ "\n");
- if (!ret_void)
- cpp_file.push_back(LOCAL_RET " = ");
+ generated_icall_funcs.clear();
- cpp_file.push_back(CS_PARAM_METHODBIND "->call(" CS_PARAM_INSTANCE ", ");
- cpp_file.push_back(imethod.arguments.size() ? "(const Variant**)" C_LOCAL_PTRCALL_ARGS ".ptr()" : "NULL");
- cpp_file.push_back(", total_length, vcall_error);\n");
- } else {
- cpp_file.push_back("\t" CS_PARAM_METHODBIND "->ptrcall(" CS_PARAM_INSTANCE ", ");
- cpp_file.push_back(imethod.arguments.size() ? C_LOCAL_PTRCALL_ARGS ", " : "NULL, ");
- cpp_file.push_back(!ret_void ? "&" LOCAL_RET ");\n" : "NULL);\n");
- }
+ for (Map<String, TypeInterface>::Element *type_elem = obj_types.front(); type_elem; type_elem = type_elem->next()) {
+ const TypeInterface &itype = type_elem->get();
- if (!ret_void) {
- if (return_type->c_out.empty())
- cpp_file.push_back("\treturn " LOCAL_RET ";\n");
- else
- cpp_file.push_back(sformat(return_type->c_out, return_type->c_type_out, LOCAL_RET, return_type->name));
- }
+ List<InternalCall> &custom_icalls = itype.api_type == ClassDB::API_EDITOR ? editor_custom_icalls : core_custom_icalls;
+
+ OS::get_singleton()->print(String("Generating " + itype.name + "...\n").utf8());
- cpp_file.push_back(CLOSE_BLOCK "\n");
+ String ctor_method(ICALL_PREFIX + itype.proxy_name + "_Ctor");
- if (im_icall->editor_only)
- cpp_file.push_back("#endif // TOOLS_ENABLED\n");
+ for (const List<MethodInterface>::Element *E = itype.methods.front(); E; E = E->next()) {
+ const MethodInterface &imethod = E->get();
+ Error method_err = _generate_glue_method(itype, imethod, output);
+ if (method_err != OK) {
+ ERR_EXPLAIN("Failed to generate method '" + imethod.name + "' for class '" + itype.name + "'");
+ ERR_FAIL_V(method_err);
}
}
@@ -1324,11 +1167,11 @@ Error BindingsGenerator::generate_glue(const String &p_output_dir) {
if (!find_icall_by_name(singleton_icall.name, custom_icalls))
custom_icalls.push_back(singleton_icall);
- cpp_file.push_back("Object* ");
- cpp_file.push_back(singleton_icall_name);
- cpp_file.push_back("() " OPEN_BLOCK "\treturn ProjectSettings::get_singleton()->get_singleton_object(\"");
- cpp_file.push_back(itype.proxy_name);
- cpp_file.push_back("\");\n" CLOSE_BLOCK "\n");
+ output.push_back("Object* ");
+ output.push_back(singleton_icall_name);
+ output.push_back("() " OPEN_BLOCK "\treturn ProjectSettings::get_singleton()->get_singleton_object(\"");
+ output.push_back(itype.proxy_name);
+ output.push_back("\");\n" CLOSE_BLOCK "\n");
}
if (itype.is_instantiable) {
@@ -1337,36 +1180,36 @@ Error BindingsGenerator::generate_glue(const String &p_output_dir) {
if (!find_icall_by_name(ctor_icall.name, custom_icalls))
custom_icalls.push_back(ctor_icall);
- cpp_file.push_back("Object* ");
- cpp_file.push_back(ctor_method);
- cpp_file.push_back("(MonoObject* obj) " OPEN_BLOCK
- "\t" C_MACRO_OBJECT_CONSTRUCT "(instance, \"");
- cpp_file.push_back(itype.name);
- cpp_file.push_back("\");\n"
- "\t" C_METHOD_TIE_MANAGED_TO_UNMANAGED "(obj, instance);\n"
- "\treturn instance;\n" CLOSE_BLOCK "\n");
+ output.push_back("Object* ");
+ output.push_back(ctor_method);
+ output.push_back("(MonoObject* obj) " OPEN_BLOCK
+ "\t" C_MACRO_OBJECT_CONSTRUCT "(instance, \"");
+ output.push_back(itype.name);
+ output.push_back("\");\n"
+ "\t" C_METHOD_TIE_MANAGED_TO_UNMANAGED "(obj, instance);\n"
+ "\treturn instance;\n" CLOSE_BLOCK "\n");
}
}
- cpp_file.push_back("namespace GodotSharpBindings\n" OPEN_BLOCK);
- cpp_file.push_back("uint64_t get_core_api_hash() { return ");
- cpp_file.push_back(itos(GDMono::get_singleton()->get_api_core_hash()) + "; }\n");
- cpp_file.push_back("#ifdef TOOLS_ENABLED\n"
- "uint64_t get_editor_api_hash() { return ");
- cpp_file.push_back(itos(GDMono::get_singleton()->get_api_editor_hash()) +
- "; }\n#endif // TOOLS_ENABLED\n");
- cpp_file.push_back("void register_generated_icalls() " OPEN_BLOCK);
-
-#define ADD_INTERNAL_CALL_REGISTRATION(m_icall) \
- { \
- cpp_file.push_back("\tmono_add_internal_call("); \
- cpp_file.push_back("\"" BINDINGS_NAMESPACE "."); \
- cpp_file.push_back(m_icall.editor_only ? CS_CLASS_NATIVECALLS_EDITOR : CS_CLASS_NATIVECALLS); \
- cpp_file.push_back("::"); \
- cpp_file.push_back(m_icall.name); \
- cpp_file.push_back("\", (void*)"); \
- cpp_file.push_back(m_icall.name); \
- cpp_file.push_back(");\n"); \
+ output.push_back("namespace GodotSharpBindings\n" OPEN_BLOCK);
+ output.push_back("uint64_t get_core_api_hash() { return ");
+ output.push_back(itos(GDMono::get_singleton()->get_api_core_hash()) + "; }\n");
+ output.push_back("#ifdef TOOLS_ENABLED\n"
+ "uint64_t get_editor_api_hash() { return ");
+ output.push_back(itos(GDMono::get_singleton()->get_api_editor_hash()) +
+ "; }\n#endif // TOOLS_ENABLED\n");
+ output.push_back("void register_generated_icalls() " OPEN_BLOCK);
+
+#define ADD_INTERNAL_CALL_REGISTRATION(m_icall) \
+ { \
+ output.push_back("\tmono_add_internal_call("); \
+ output.push_back("\"" BINDINGS_NAMESPACE "."); \
+ output.push_back(m_icall.editor_only ? CS_CLASS_NATIVECALLS_EDITOR : CS_CLASS_NATIVECALLS); \
+ output.push_back("::"); \
+ output.push_back(m_icall.name); \
+ output.push_back("\", (void*)"); \
+ output.push_back(m_icall.name); \
+ output.push_back(");\n"); \
}
bool tools_sequence = false;
@@ -1375,11 +1218,11 @@ Error BindingsGenerator::generate_glue(const String &p_output_dir) {
if (tools_sequence) {
if (!E->get().editor_only) {
tools_sequence = false;
- cpp_file.push_back("#endif\n");
+ output.push_back("#endif\n");
}
} else {
if (E->get().editor_only) {
- cpp_file.push_back("#ifdef TOOLS_ENABLED\n");
+ output.push_back("#ifdef TOOLS_ENABLED\n");
tools_sequence = true;
}
}
@@ -1389,24 +1232,23 @@ Error BindingsGenerator::generate_glue(const String &p_output_dir) {
if (tools_sequence) {
tools_sequence = false;
- cpp_file.push_back("#endif\n");
+ output.push_back("#endif\n");
}
- cpp_file.push_back("#ifdef TOOLS_ENABLED\n");
+ output.push_back("#ifdef TOOLS_ENABLED\n");
for (const List<InternalCall>::Element *E = editor_custom_icalls.front(); E; E = E->next())
ADD_INTERNAL_CALL_REGISTRATION(E->get());
- cpp_file.push_back("#endif // TOOLS_ENABLED\n");
+ output.push_back("#endif // TOOLS_ENABLED\n");
for (const List<InternalCall>::Element *E = method_icalls.front(); E; E = E->next()) {
-
if (tools_sequence) {
if (!E->get().editor_only) {
tools_sequence = false;
- cpp_file.push_back("#endif\n");
+ output.push_back("#endif\n");
}
} else {
if (E->get().editor_only) {
- cpp_file.push_back("#ifdef TOOLS_ENABLED\n");
+ output.push_back("#ifdef TOOLS_ENABLED\n");
tools_sequence = true;
}
}
@@ -1416,20 +1258,27 @@ Error BindingsGenerator::generate_glue(const String &p_output_dir) {
if (tools_sequence) {
tools_sequence = false;
- cpp_file.push_back("#endif\n");
+ output.push_back("#endif\n");
}
#undef ADD_INTERNAL_CALL_REGISTRATION
- cpp_file.push_back(CLOSE_BLOCK "}\n");
+ output.push_back(CLOSE_BLOCK "}\n");
+
+ Error save_err = _save_file(path_join(p_output_dir, "mono_glue.gen.cpp"), output);
+ if (save_err != OK)
+ return save_err;
- return _save_file(path_join(p_output_dir, "mono_glue.gen.cpp"), cpp_file);
+ OS::get_singleton()->print("Mono glue generated successfully\n");
+
+ return OK;
}
Error BindingsGenerator::_save_file(const String &p_path, const List<String> &p_content) {
FileAccessRef file = FileAccess::open(p_path, FileAccess::WRITE);
+ ERR_EXPLAIN("Cannot open file: " + p_path);
ERR_FAIL_COND_V(!file, ERR_FILE_CANT_WRITE);
for (const List<String>::Element *E = p_content.front(); E; E = E->next()) {
@@ -1441,6 +1290,163 @@ Error BindingsGenerator::_save_file(const String &p_path, const List<String> &p_
return OK;
}
+Error BindingsGenerator::_generate_glue_method(const BindingsGenerator::TypeInterface &p_itype, const BindingsGenerator::MethodInterface &p_imethod, List<String> &p_output) {
+
+ if (p_imethod.is_virtual)
+ return OK; // Ignore
+
+ bool ret_void = p_imethod.return_type == "void";
+
+ const TypeInterface *return_type = _get_type_by_name_or_placeholder(p_imethod.return_type);
+
+ String argc_str = itos(p_imethod.arguments.size());
+
+ String c_func_sig = "MethodBind* " CS_PARAM_METHODBIND ", " + p_itype.c_type_in + " " CS_PARAM_INSTANCE;
+ String c_in_statements;
+ String c_args_var_content;
+
+ // Get arguments information
+ int i = 0;
+ for (const List<ArgumentInterface>::Element *F = p_imethod.arguments.front(); F; F = F->next()) {
+ const ArgumentInterface &iarg = F->get();
+ const TypeInterface *arg_type = _get_type_by_name_or_placeholder(iarg.type);
+
+ String c_param_name = "arg" + itos(i + 1);
+
+ if (p_imethod.is_vararg) {
+ if (i < p_imethod.arguments.size() - 1) {
+ c_in_statements += sformat(arg_type->c_in.size() ? arg_type->c_in : TypeInterface::DEFAULT_VARARG_C_IN, "Variant", c_param_name);
+ c_in_statements += "\t" C_LOCAL_PTRCALL_ARGS ".set(0, ";
+ c_in_statements += sformat("&%s_in", c_param_name);
+ c_in_statements += ");\n";
+ }
+ } else {
+ if (i > 0)
+ c_args_var_content += ", ";
+ if (arg_type->c_in.size())
+ c_in_statements += sformat(arg_type->c_in, arg_type->c_type, c_param_name);
+ c_args_var_content += sformat(arg_type->c_arg_in, c_param_name);
+ }
+
+ c_func_sig += ", ";
+ c_func_sig += arg_type->c_type_in;
+ c_func_sig += " ";
+ c_func_sig += c_param_name;
+
+ i++;
+ }
+
+ const Map<const MethodInterface *, const InternalCall *>::Element *match = method_icalls_map.find(&p_imethod);
+ ERR_FAIL_NULL_V(match, ERR_BUG);
+
+ const InternalCall *im_icall = match->value();
+ String icall_method = im_icall->name;
+
+ if (!generated_icall_funcs.find(im_icall)) {
+ generated_icall_funcs.push_back(im_icall);
+
+ if (im_icall->editor_only)
+ p_output.push_back("#ifdef TOOLS_ENABLED\n");
+
+ // Generate icall function
+
+ p_output.push_back(ret_void ? "void " : return_type->c_type_out + " ");
+ p_output.push_back(icall_method);
+ p_output.push_back("(");
+ p_output.push_back(c_func_sig);
+ p_output.push_back(") " OPEN_BLOCK);
+
+ String fail_ret = ret_void ? "" : ", " + (return_type->c_type_out.ends_with("*") ? "NULL" : return_type->c_type_out + "()");
+
+ if (!ret_void) {
+ String ptrcall_return_type;
+ String initialization;
+
+ if (return_type->is_object_type) {
+ ptrcall_return_type = return_type->is_reference ? "Ref<Reference>" : return_type->c_type;
+ initialization = return_type->is_reference ? "" : " = NULL";
+ } else {
+ ptrcall_return_type = return_type->c_type;
+ }
+
+ p_output.push_back("\t" + ptrcall_return_type);
+ p_output.push_back(" " LOCAL_RET);
+ p_output.push_back(initialization + ";\n");
+ p_output.push_back("\tERR_FAIL_NULL_V(" CS_PARAM_INSTANCE);
+ p_output.push_back(fail_ret);
+ p_output.push_back(");\n");
+ } else {
+ p_output.push_back("\tERR_FAIL_NULL(" CS_PARAM_INSTANCE ");\n");
+ }
+
+ if (p_imethod.arguments.size()) {
+ if (p_imethod.is_vararg) {
+ String err_fail_macro = ret_void ? "ERR_FAIL_COND" : "ERR_FAIL_COND_V";
+ String vararg_arg = "arg" + argc_str;
+ String real_argc_str = itos(p_imethod.arguments.size() - 1); // Arguments count without vararg
+
+ p_output.push_back("\tVector<Variant> varargs;\n"
+ "\tint vararg_length = mono_array_length(");
+ p_output.push_back(vararg_arg);
+ p_output.push_back(");\n\tint total_length = ");
+ p_output.push_back(real_argc_str);
+ p_output.push_back(" + vararg_length;\n\t");
+ p_output.push_back(err_fail_macro);
+ p_output.push_back("(varargs.resize(vararg_length) != OK");
+ p_output.push_back(fail_ret);
+ p_output.push_back(");\n\tVector<Variant*> " C_LOCAL_PTRCALL_ARGS ";\n\t");
+ p_output.push_back(err_fail_macro);
+ p_output.push_back("(call_args.resize(total_length) != OK");
+ p_output.push_back(fail_ret);
+ p_output.push_back(");\n");
+ p_output.push_back(c_in_statements);
+ p_output.push_back("\tfor (int i = 0; i < vararg_length; i++) " OPEN_BLOCK
+ "\t\tMonoObject* elem = mono_array_get(");
+ p_output.push_back(vararg_arg);
+ p_output.push_back(", MonoObject*, i);\n"
+ "\t\tvarargs.set(i, GDMonoMarshal::mono_object_to_variant(elem));\n"
+ "\t\t" C_LOCAL_PTRCALL_ARGS ".set(");
+ p_output.push_back(real_argc_str);
+ p_output.push_back(" + i, &varargs[i]);\n\t" CLOSE_BLOCK);
+ } else {
+ p_output.push_back(c_in_statements);
+ p_output.push_back("\tconst void* " C_LOCAL_PTRCALL_ARGS "[");
+ p_output.push_back(argc_str + "] = { ");
+ p_output.push_back(c_args_var_content + " };\n");
+ }
+ }
+
+ if (p_imethod.is_vararg) {
+ p_output.push_back("\tVariant::CallError vcall_error;\n\t");
+
+ if (!ret_void)
+ p_output.push_back(LOCAL_RET " = ");
+
+ p_output.push_back(CS_PARAM_METHODBIND "->call(" CS_PARAM_INSTANCE ", ");
+ p_output.push_back(p_imethod.arguments.size() ? "(const Variant**)" C_LOCAL_PTRCALL_ARGS ".ptr()" : "NULL");
+ p_output.push_back(", total_length, vcall_error);\n");
+ } else {
+ p_output.push_back("\t" CS_PARAM_METHODBIND "->ptrcall(" CS_PARAM_INSTANCE ", ");
+ p_output.push_back(p_imethod.arguments.size() ? C_LOCAL_PTRCALL_ARGS ", " : "NULL, ");
+ p_output.push_back(!ret_void ? "&" LOCAL_RET ");\n" : "NULL);\n");
+ }
+
+ if (!ret_void) {
+ if (return_type->c_out.empty())
+ p_output.push_back("\treturn " LOCAL_RET ";\n");
+ else
+ p_output.push_back(sformat(return_type->c_out, return_type->c_type_out, LOCAL_RET, return_type->name));
+ }
+
+ p_output.push_back(CLOSE_BLOCK "\n");
+
+ if (im_icall->editor_only)
+ p_output.push_back("#endif // TOOLS_ENABLED\n");
+ }
+
+ return OK;
+}
+
const BindingsGenerator::TypeInterface *BindingsGenerator::_get_type_by_name_or_null(const String &p_name) {
const Map<String, TypeInterface>::Element *match = builtin_types.find(p_name);
@@ -1505,7 +1511,8 @@ void BindingsGenerator::_populate_object_type_interfaces() {
itype.memory_own = itype.is_reference;
if (!ClassDB::is_class_exposed(type_cname)) {
- WARN_PRINTS("Ignoring type " + String(type_cname) + " because it's not exposed");
+ if (verbose_output)
+ WARN_PRINTS("Ignoring type " + String(type_cname) + " because it's not exposed");
class_list.pop_front();
continue;
}
@@ -1569,9 +1576,11 @@ void BindingsGenerator::_populate_object_type_interfaces() {
// which could actually will return something differnet.
// Let's put this to notify us if that ever happens.
if (itype.name != "Object" || imethod.name != "free") {
- WARN_PRINTS("Notification: New unexpected virtual non-overridable method found.\n"
- "We only expected Object.free, but found " +
- itype.name + "." + imethod.name);
+ if (verbose_output) {
+ WARN_PRINTS("Notification: New unexpected virtual non-overridable method found.\n"
+ "We only expected Object.free, but found " +
+ itype.name + "." + imethod.name);
+ }
}
} else {
ERR_PRINTS("Missing MethodBind for non-virtual method: " + itype.name + "." + imethod.name);
@@ -2077,7 +2086,8 @@ BindingsGenerator::BindingsGenerator() {
void BindingsGenerator::handle_cmdline_args(const List<String> &p_cmdline_args) {
- int options_count = 3;
+ const int NUM_OPTIONS = 3;
+ int options_left = NUM_OPTIONS;
String mono_glue_option = "--generate-mono-glue";
String cs_core_api_option = "--generate-cs-core-api";
@@ -2087,33 +2097,35 @@ void BindingsGenerator::handle_cmdline_args(const List<String> &p_cmdline_args)
const List<String>::Element *elem = p_cmdline_args.front();
- while (elem && options_count) {
+ while (elem && options_left) {
if (elem->get() == mono_glue_option) {
const List<String>::Element *path_elem = elem->next();
if (path_elem) {
- get_singleton().generate_glue(path_elem->get());
+ if (get_singleton().generate_glue(path_elem->get()) != OK)
+ ERR_PRINT("Mono glue generation failed");
elem = elem->next();
} else {
ERR_PRINTS("--generate-mono-glue: No output directory specified");
}
- --options_count;
+ --options_left;
} else if (elem->get() == cs_core_api_option) {
const List<String>::Element *path_elem = elem->next();
if (path_elem) {
- get_singleton().generate_cs_core_project(path_elem->get());
+ if (get_singleton().generate_cs_core_project(path_elem->get()) != OK)
+ ERR_PRINT("Generation of solution and C# project for the Core API failed");
elem = elem->next();
} else {
ERR_PRINTS(cs_core_api_option + ": No output directory specified");
}
- --options_count;
+ --options_left;
} else if (elem->get() == cs_editor_api_option) {
@@ -2121,7 +2133,8 @@ void BindingsGenerator::handle_cmdline_args(const List<String> &p_cmdline_args)
if (path_elem) {
if (path_elem->next()) {
- get_singleton().generate_cs_editor_project(path_elem->get(), path_elem->next()->get());
+ if (get_singleton().generate_cs_editor_project(path_elem->get(), path_elem->next()->get()) != OK)
+ ERR_PRINT("Generation of solution and C# project for the Editor API failed");
elem = path_elem->next();
} else {
ERR_PRINTS(cs_editor_api_option + ": No hint path for the Core API dll specified");
@@ -2130,13 +2143,16 @@ void BindingsGenerator::handle_cmdline_args(const List<String> &p_cmdline_args)
ERR_PRINTS(cs_editor_api_option + ": No output directory specified");
}
- --options_count;
+ --options_left;
}
elem = elem->next();
}
verbose_output = false;
+
+ if (options_left != NUM_OPTIONS)
+ exit(0);
}
#endif
diff --git a/modules/mono/editor/bindings_generator.h b/modules/mono/editor/bindings_generator.h
index 437a566556..dfa3aa9911 100644
--- a/modules/mono/editor/bindings_generator.h
+++ b/modules/mono/editor/bindings_generator.h
@@ -368,6 +368,8 @@ class BindingsGenerator {
List<InternalCall> method_icalls;
Map<const MethodInterface *, const InternalCall *> method_icalls_map;
+ List<const InternalCall *> generated_icall_funcs;
+
List<InternalCall> core_custom_icalls;
List<InternalCall> editor_custom_icalls;
@@ -404,6 +406,11 @@ class BindingsGenerator {
Error _generate_cs_type(const TypeInterface &itype, const String &p_output_file);
+ Error _generate_cs_property(const TypeInterface &p_itype, const DocData::PropertyDoc &p_prop_doc, List<String> &p_output);
+ Error _generate_cs_method(const TypeInterface &p_itype, const MethodInterface &p_imethod, int &p_method_bind_count, List<String> &p_output);
+
+ Error _generate_glue_method(const TypeInterface &p_itype, const MethodInterface &p_imethod, List<String> &p_output);
+
Error _save_file(const String &path, const List<String> &content);
BindingsGenerator();
diff --git a/modules/mono/editor/godotsharp_builds.cpp b/modules/mono/editor/godotsharp_builds.cpp
index 1bad8a3f85..dbe0cc294c 100644
--- a/modules/mono/editor/godotsharp_builds.cpp
+++ b/modules/mono/editor/godotsharp_builds.cpp
@@ -32,6 +32,7 @@
#include "main/main.h"
#include "../godotsharp_dirs.h"
+#include "../mono_gd/gd_mono.h"
#include "../mono_gd/gd_mono_class.h"
#include "../mono_gd/gd_mono_marshal.h"
#include "../utils/path_utils.h"
@@ -60,10 +61,10 @@ String _find_build_engine_on_unix(const String &p_name) {
};
for (int i = 0; i < sizeof(locations) / sizeof(const char *); i++) {
- String location = locations[i];
+ String hint_path = locations[i] + p_name;
- if (FileAccess::exists(location + p_name)) {
- return location;
+ if (FileAccess::exists(hint_path)) {
+ return hint_path;
}
}
@@ -71,7 +72,7 @@ String _find_build_engine_on_unix(const String &p_name) {
}
#endif
-MonoString *godot_icall_BuildInstance_get_MSBuildPath() {
+void godot_icall_BuildInstance_get_MSBuildInfo(MonoString **r_msbuild_path, MonoString **r_framework_path) {
GodotSharpBuilds::BuildTool build_tool = GodotSharpBuilds::BuildTool(int(EditorSettings::get_singleton()->get("mono/builds/build_tool")));
@@ -84,11 +85,23 @@ MonoString *godot_icall_BuildInstance_get_MSBuildPath() {
if (!msbuild_tools_path.ends_with("\\"))
msbuild_tools_path += "\\";
- return GDMonoMarshal::mono_string_from_godot(msbuild_tools_path + "MSBuild.exe");
+ // FrameworkPathOverride
+ const MonoRegInfo &mono_reg_info = GDMono::get_singleton()->get_mono_reg_info();
+ if (mono_reg_info.assembly_dir.length()) {
+ *r_msbuild_path = GDMonoMarshal::mono_string_from_godot(msbuild_tools_path + "MSBuild.exe");
+
+ String framework_path = path_join(mono_reg_info.assembly_dir, "mono", "4.5");
+ *r_framework_path = GDMonoMarshal::mono_string_from_godot(framework_path);
+ } else {
+ ERR_PRINT("Cannot find Mono's assemblies directory in the registry");
+ }
+
+ return;
}
- OS::get_singleton()->print("Cannot find System's MSBuild. Trying with Mono's...\n");
- }
+ if (OS::get_singleton()->is_stdout_verbose())
+ OS::get_singleton()->print("Cannot find System's MSBuild. Trying with Mono's...\n");
+ } // fall through
case GodotSharpBuilds::MSBUILD_MONO: {
String msbuild_path = GDMono::get_singleton()->get_mono_reg_info().bin_dir.plus_file("msbuild.bat");
@@ -96,17 +109,10 @@ MonoString *godot_icall_BuildInstance_get_MSBuildPath() {
WARN_PRINTS("Cannot find msbuild ('mono/builds/build_tool'). Tried with path: " + msbuild_path);
}
- return GDMonoMarshal::mono_string_from_godot(msbuild_path);
- }
- case GodotSharpBuilds::XBUILD: {
- String xbuild_path = GDMono::get_singleton()->get_mono_reg_info().bin_dir.plus_file("xbuild.bat");
+ *r_msbuild_path = GDMonoMarshal::mono_string_from_godot(msbuild_path);
- if (!FileAccess::exists(xbuild_path)) {
- WARN_PRINTS("Cannot find xbuild ('mono/builds/build_tool'). Tried with path: " + xbuild_path);
- }
-
- return GDMonoMarshal::mono_string_from_godot(xbuild_path);
- }
+ return;
+ } break;
default:
ERR_EXPLAIN("You don't deserve to live");
CRASH_NOW();
@@ -118,25 +124,28 @@ MonoString *godot_icall_BuildInstance_get_MSBuildPath() {
if (build_tool != GodotSharpBuilds::XBUILD) {
if (msbuild_path.empty()) {
WARN_PRINT("Cannot find msbuild ('mono/builds/build_tool').");
- return NULL;
+ return;
}
} else {
if (xbuild_path.empty()) {
WARN_PRINT("Cannot find xbuild ('mono/builds/build_tool').");
- return NULL;
+ return;
}
}
- return GDMonoMarshal::mono_string_from_godot(build_tool != GodotSharpBuilds::XBUILD ? msbuild_path : xbuild_path);
+ *r_msbuild_path = GDMonoMarshal::mono_string_from_godot(build_tool != GodotSharpBuilds::XBUILD ? msbuild_path : xbuild_path);
+
+ return;
#else
- return NULL;
+ ERR_PRINT("Not implemented on this platform");
+ return;
#endif
}
void GodotSharpBuilds::_register_internal_calls() {
mono_add_internal_call("GodotSharpTools.Build.BuildSystem::godot_icall_BuildInstance_ExitCallback", (void *)godot_icall_BuildInstance_ExitCallback);
- mono_add_internal_call("GodotSharpTools.Build.BuildInstance::godot_icall_BuildInstance_get_MSBuildPath", (void *)godot_icall_BuildInstance_get_MSBuildPath);
+ mono_add_internal_call("GodotSharpTools.Build.BuildInstance::godot_icall_BuildInstance_get_MSBuildInfo", (void *)godot_icall_BuildInstance_get_MSBuildInfo);
}
void GodotSharpBuilds::show_build_error_dialog(const String &p_message) {
@@ -269,7 +278,7 @@ bool GodotSharpBuilds::make_api_sln(GodotSharpBuilds::APIType p_api_type) {
return true;
}
-bool godotsharp_build_callback() {
+bool GodotSharpBuilds::build_project_blocking() {
if (!FileAccess::exists(GodotSharpDirs::get_project_sln_path()))
return true; // No solution to build
@@ -348,14 +357,27 @@ GodotSharpBuilds::GodotSharpBuilds() {
singleton = this;
- EditorNode::get_singleton()->add_build_callback(&godotsharp_build_callback);
+ EditorNode::get_singleton()->add_build_callback(&GodotSharpBuilds::build_project_blocking);
// Build tool settings
EditorSettings *ed_settings = EditorSettings::get_singleton();
if (!ed_settings->has_setting("mono/builds/build_tool")) {
- ed_settings->set_setting("mono/builds/build_tool", MSBUILD);
+ ed_settings->set_setting("mono/builds/build_tool",
+#ifdef WINDOWS_ENABLED
+ // TODO: Default to MSBUILD_MONO if its csc.exe issue is fixed in the installed mono version
+ MSBUILD
+#else
+ MSBUILD_MONO
+#endif
+ );
}
- ed_settings->add_property_hint(PropertyInfo(Variant::INT, "mono/builds/build_tool", PROPERTY_HINT_ENUM, "MSBuild (System),MSBuild (Mono),xbuild"));
+ ed_settings->add_property_hint(PropertyInfo(Variant::INT, "mono/builds/build_tool", PROPERTY_HINT_ENUM,
+#ifdef WINDOWS_ENABLED
+ "MSBuild (Mono),MSBuild (System)"
+#else
+ "MSBuild (Mono),xbuild (Deprecated)"
+#endif
+ ));
}
GodotSharpBuilds::~GodotSharpBuilds() {
@@ -395,10 +417,11 @@ void GodotSharpBuilds::BuildProcess::start(bool p_blocking) {
}
if (!exited) {
- ERR_PRINT("BuildProcess::start called, but process still running");
exited = true;
- build_tab->on_build_exec_failed("!exited");
- return;
+ String message = "Tried to start build process, but it is already running";
+ build_tab->on_build_exec_failed(message);
+ ERR_EXPLAIN(message);
+ ERR_FAIL();
}
exited = false;
@@ -410,10 +433,12 @@ void GodotSharpBuilds::BuildProcess::start(bool p_blocking) {
if (d->file_exists(issues_file)) {
Error err = d->remove(issues_file);
if (err != OK) {
- ERR_PRINTS("Cannot remove file: " + logs_dir.plus_file(issues_file));
exited = true;
- build_tab->on_build_exec_failed("Cannot remove file: " + issues_file);
- return;
+ String file_path = ProjectSettings::get_singleton()->localize_path(logs_dir).plus_file(issues_file);
+ String message = "Cannot remove issues file: " + file_path;
+ build_tab->on_build_exec_failed(message);
+ ERR_EXPLAIN(message);
+ ERR_FAIL();
}
}
@@ -434,7 +459,9 @@ void GodotSharpBuilds::BuildProcess::start(bool p_blocking) {
if (ex) {
exited = true;
- build_tab->on_build_exec_failed("The build constructor threw an exception.\n" + GDMonoUtils::get_exception_name_and_message(ex));
+ String message = "The build constructor threw an exception.\n" + GDMonoUtils::get_exception_name_and_message(ex);
+ build_tab->on_build_exec_failed(message);
+ ERR_EXPLAIN(message);
ERR_FAIL();
}
@@ -452,7 +479,9 @@ void GodotSharpBuilds::BuildProcess::start(bool p_blocking) {
if (ex) {
exited = true;
- build_tab->on_build_exec_failed("The build method threw an exception.\n" + GDMonoUtils::get_exception_name_and_message(ex));
+ String message = "The build method threw an exception.\n" + GDMonoUtils::get_exception_name_and_message(ex);
+ build_tab->on_build_exec_failed(message);
+ ERR_EXPLAIN(message);
ERR_FAIL();
}
diff --git a/modules/mono/editor/godotsharp_builds.h b/modules/mono/editor/godotsharp_builds.h
index 6d5fa3b44a..7d2f38a774 100644
--- a/modules/mono/editor/godotsharp_builds.h
+++ b/modules/mono/editor/godotsharp_builds.h
@@ -67,9 +67,12 @@ public:
};
enum BuildTool {
- MSBUILD,
MSBUILD_MONO,
- XBUILD
+#ifdef WINDOWS_ENABLED
+ MSBUILD
+#else
+ XBUILD // Deprecated
+#endif
};
_FORCE_INLINE_ static GodotSharpBuilds *get_singleton() { return singleton; }
@@ -89,6 +92,8 @@ public:
static bool make_api_sln(APIType p_api_type);
+ static bool build_project_blocking();
+
GodotSharpBuilds();
~GodotSharpBuilds();
};
diff --git a/modules/mono/editor/godotsharp_editor.cpp b/modules/mono/editor/godotsharp_editor.cpp
index 30e7653256..837dbfde66 100644
--- a/modules/mono/editor/godotsharp_editor.cpp
+++ b/modules/mono/editor/godotsharp_editor.cpp
@@ -46,21 +46,6 @@
#include "../utils/mono_reg_utils.h"
#endif
-class MonoReloadNode : public Node {
- GDCLASS(MonoReloadNode, Node)
-
-protected:
- void _notification(int p_what) {
- switch (p_what) {
- case MainLoop::NOTIFICATION_WM_FOCUS_IN: {
- CSharpLanguage::get_singleton()->reload_assemblies_if_needed(true);
- } break;
- default: {
- } break;
- };
- }
-};
-
GodotSharpEditor *GodotSharpEditor::singleton = NULL;
bool GodotSharpEditor::_create_project_solution() {
@@ -71,6 +56,10 @@ bool GodotSharpEditor::_create_project_solution() {
String path = OS::get_singleton()->get_resource_dir();
String name = ProjectSettings::get_singleton()->get("application/config/name");
+ if (name.empty()) {
+ name = "UnnamedProject";
+ }
+
String guid = CSharpProject::generate_game_project(path, name);
if (guid.length()) {
@@ -182,11 +171,6 @@ Error GodotSharpEditor::open_in_external_editor(const Ref<Script> &p_script, int
String script_path = ProjectSettings::get_singleton()->globalize_path(p_script->get_path());
monodevel_instance->execute(script_path);
} break;
- case EDITOR_VISUAL_STUDIO:
- // TODO
- // devenv <PathToSolutionFolder>
- // devenv /edit <PathToCsFile> /command "edit.goto <Line>"
- // HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\SxS\VS7
default:
return ERR_UNAVAILABLE;
}
@@ -240,7 +224,7 @@ GodotSharpEditor::GodotSharpEditor(EditorNode *p_editor) {
if (!ed_settings->has_setting("mono/editor/external_editor")) {
ed_settings->set_setting("mono/editor/external_editor", EDITOR_NONE);
}
- ed_settings->add_property_hint(PropertyInfo(Variant::INT, "mono/editor/external_editor", PROPERTY_HINT_ENUM, "None,MonoDevelop,Visual Studio,Visual Studio Code"));
+ ed_settings->add_property_hint(PropertyInfo(Variant::INT, "mono/editor/external_editor", PROPERTY_HINT_ENUM, "None,MonoDevelop,Visual Studio Code"));
}
GodotSharpEditor::~GodotSharpEditor() {
@@ -254,3 +238,49 @@ GodotSharpEditor::~GodotSharpEditor() {
monodevel_instance = NULL;
}
}
+
+MonoReloadNode *MonoReloadNode::singleton = NULL;
+
+void MonoReloadNode::_reload_timer_timeout() {
+
+ CSharpLanguage::get_singleton()->reload_assemblies_if_needed(false);
+}
+
+void MonoReloadNode::restart_reload_timer() {
+
+ reload_timer->stop();
+ reload_timer->start();
+}
+
+void MonoReloadNode::_bind_methods() {
+
+ ClassDB::bind_method(D_METHOD("_reload_timer_timeout"), &MonoReloadNode::_reload_timer_timeout);
+}
+
+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);
+ } break;
+ default: {
+ } break;
+ };
+}
+
+MonoReloadNode::MonoReloadNode() {
+
+ singleton = this;
+
+ reload_timer = memnew(Timer);
+ add_child(reload_timer);
+ reload_timer->set_one_shot(false);
+ reload_timer->set_wait_time(EDITOR_DEF("mono/assembly_watch_interval_sec", 0.5));
+ reload_timer->connect("timeout", this, "_reload_timer_timeout");
+ reload_timer->start();
+}
+
+MonoReloadNode::~MonoReloadNode() {
+
+ singleton = NULL;
+}
diff --git a/modules/mono/editor/godotsharp_editor.h b/modules/mono/editor/godotsharp_editor.h
index 1ecb8c7a94..0f2c163582 100644
--- a/modules/mono/editor/godotsharp_editor.h
+++ b/modules/mono/editor/godotsharp_editor.h
@@ -69,7 +69,6 @@ public:
enum ExternalEditor {
EDITOR_NONE,
EDITOR_MONODEVELOP,
- EDITOR_VISUAL_STUDIO,
EDITOR_CODE,
};
@@ -84,4 +83,27 @@ public:
~GodotSharpEditor();
};
+class MonoReloadNode : public Node {
+ GDCLASS(MonoReloadNode, Node)
+
+ Timer *reload_timer;
+
+ void _reload_timer_timeout();
+
+ static MonoReloadNode *singleton;
+
+protected:
+ static void _bind_methods();
+
+ void _notification(int p_what);
+
+public:
+ _FORCE_INLINE_ static MonoReloadNode *get_singleton() { return singleton; }
+
+ void restart_reload_timer();
+
+ MonoReloadNode();
+ ~MonoReloadNode();
+};
+
#endif // GODOTSHARP_EDITOR_H
diff --git a/modules/mono/editor/mono_bottom_panel.cpp b/modules/mono/editor/mono_bottom_panel.cpp
index 07109eaac7..31dc09856a 100644
--- a/modules/mono/editor/mono_bottom_panel.cpp
+++ b/modules/mono/editor/mono_bottom_panel.cpp
@@ -139,6 +139,14 @@ void MonoBottomPanel::_errors_toggled(bool p_pressed) {
build_tab->_update_issues_list();
}
+void MonoBottomPanel::_build_project_pressed() {
+
+ GodotSharpBuilds::get_singleton()->build_project_blocking();
+
+ MonoReloadNode::get_singleton()->restart_reload_timer();
+ CSharpLanguage::get_singleton()->reload_assemblies_if_needed(true);
+}
+
void MonoBottomPanel::_notification(int p_what) {
switch (p_what) {
@@ -153,6 +161,7 @@ void MonoBottomPanel::_notification(int p_what) {
void MonoBottomPanel::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("_build_project_pressed"), &MonoBottomPanel::_build_project_pressed);
ClassDB::bind_method(D_METHOD("_warnings_toggled", "pressed"), &MonoBottomPanel::_warnings_toggled);
ClassDB::bind_method(D_METHOD("_errors_toggled", "pressed"), &MonoBottomPanel::_errors_toggled);
ClassDB::bind_method(D_METHOD("_build_tab_item_selected", "idx"), &MonoBottomPanel::_build_tab_item_selected);
@@ -187,6 +196,12 @@ MonoBottomPanel::MonoBottomPanel(EditorNode *p_editor) {
toolbar_hbc->set_h_size_flags(SIZE_EXPAND_FILL);
panel_builds_tab->add_child(toolbar_hbc);
+ ToolButton *build_project_btn = memnew(ToolButton);
+ build_project_btn->set_text("Build Project");
+ build_project_btn->set_focus_mode(FOCUS_NONE);
+ build_project_btn->connect("pressed", this, "_build_project_pressed");
+ toolbar_hbc->add_child(build_project_btn);
+
toolbar_hbc->add_spacer();
warnings_btn = memnew(ToolButton);
@@ -280,7 +295,11 @@ void MonoBuildTab::_update_issues_list() {
String tooltip;
tooltip += String("Message: ") + issue.message;
- tooltip += String("\nCode: ") + issue.code;
+
+ if (issue.code.length()) {
+ tooltip += String("\nCode: ") + issue.code;
+ }
+
tooltip += String("\nType: ") + (issue.warning ? "warning" : "error");
String text;
@@ -356,23 +375,21 @@ void MonoBuildTab::on_build_exit(BuildResult result) {
MonoBottomPanel::get_singleton()->raise_build_tab(this);
}
-void MonoBuildTab::on_build_exec_failed(const String &p_cause, const String &p_detailed) {
+void MonoBuildTab::on_build_exec_failed(const String &p_cause) {
build_exited = true;
build_result = RESULT_ERROR;
issues_list->clear();
- String tooltip;
+ BuildIssue issue;
+ issue.message = p_cause;
+ issue.warning = false;
- tooltip += "Message: " + (p_detailed.length() ? p_detailed : p_cause);
- tooltip += "\nType: error";
+ error_count += 1;
+ issues.push_back(issue);
- int line_break_idx = p_cause.find("\n");
- issues_list->add_item(line_break_idx == -1 ? p_cause : p_cause.substr(0, line_break_idx),
- get_icon("Error", "EditorIcons"));
- int index = issues_list->get_item_count() - 1;
- issues_list->set_item_tooltip(index, tooltip);
+ _update_issues_list();
MonoBottomPanel::get_singleton()->raise_build_tab(this);
}
diff --git a/modules/mono/editor/mono_bottom_panel.h b/modules/mono/editor/mono_bottom_panel.h
index 909fa4b385..5cc4aa3240 100644
--- a/modules/mono/editor/mono_bottom_panel.h
+++ b/modules/mono/editor/mono_bottom_panel.h
@@ -61,6 +61,8 @@ class MonoBottomPanel : public VBoxContainer {
void _warnings_toggled(bool p_pressed);
void _errors_toggled(bool p_pressed);
+ void _build_project_pressed();
+
static MonoBottomPanel *singleton;
protected:
@@ -134,7 +136,7 @@ public:
void on_build_start();
void on_build_exit(BuildResult result);
- void on_build_exec_failed(const String &p_cause, const String &p_detailed = String());
+ void on_build_exec_failed(const String &p_cause);
void restart_build();
void stop_build();
diff --git a/modules/mono/glue/cs_files/ExportAttribute.cs b/modules/mono/glue/cs_files/ExportAttribute.cs
index af3f603d6d..a4e7d447dd 100644
--- a/modules/mono/glue/cs_files/ExportAttribute.cs
+++ b/modules/mono/glue/cs_files/ExportAttribute.cs
@@ -7,13 +7,11 @@ namespace Godot
{
private int hint;
private string hint_string;
- private int usage;
- public ExportAttribute(int hint = GD.PROPERTY_HINT_NONE, string hint_string = "", int usage = GD.PROPERTY_USAGE_DEFAULT)
+ public ExportAttribute(int hint = GD.PROPERTY_HINT_NONE, string hint_string = "")
{
this.hint = hint;
this.hint_string = hint_string;
- this.usage = usage;
}
}
}
diff --git a/modules/mono/godotsharp_dirs.cpp b/modules/mono/godotsharp_dirs.cpp
index 0a2010e99d..7cc2168b70 100644
--- a/modules/mono/godotsharp_dirs.cpp
+++ b/modules/mono/godotsharp_dirs.cpp
@@ -33,6 +33,7 @@
#ifdef TOOLS_ENABLED
#include "editor/editor_settings.h"
+#include "os/dir_access.h"
#include "project_settings.h"
#include "version.h"
#endif
@@ -60,12 +61,20 @@ String _get_mono_user_dir() {
} else {
String settings_path;
- if (OS::get_singleton()->has_environment("APPDATA")) {
- String app_data = OS::get_singleton()->get_environment("APPDATA").replace("\\", "/");
- settings_path = app_data.plus_file(String(_MKSTR(VERSION_SHORT_NAME)).capitalize());
- } else if (OS::get_singleton()->has_environment("HOME")) {
- String home = OS::get_singleton()->get_environment("HOME");
- settings_path = home.plus_file("." + String(_MKSTR(VERSION_SHORT_NAME)).to_lower());
+ String exe_dir = OS::get_singleton()->get_executable_path().get_base_dir();
+ DirAccessRef d = DirAccess::create_for_path(exe_dir);
+
+ if (d->file_exists("._sc_") || d->file_exists("_sc_")) {
+ // contain yourself
+ settings_path = exe_dir.plus_file("editor_data");
+ } else {
+ if (OS::get_singleton()->has_environment("APPDATA")) {
+ String app_data = OS::get_singleton()->get_environment("APPDATA").replace("\\", "/");
+ settings_path = app_data.plus_file(String(_MKSTR(VERSION_SHORT_NAME)).capitalize());
+ } else if (OS::get_singleton()->has_environment("HOME")) {
+ String home = OS::get_singleton()->get_environment("HOME");
+ settings_path = home.plus_file("." + String(_MKSTR(VERSION_SHORT_NAME)).to_lower());
+ }
}
return settings_path.plus_file("mono");
@@ -113,7 +122,14 @@ private:
#ifdef TOOLS_ENABLED
mono_solutions_dir = mono_user_dir.plus_file("solutions");
build_logs_dir = mono_user_dir.plus_file("build_logs");
- String base_path = String("res://") + ProjectSettings::get_singleton()->get("application/config/name");
+
+ String name = ProjectSettings::get_singleton()->get("application/config/name");
+ if (name.empty()) {
+ name = "UnnamedProject";
+ }
+
+ String base_path = String("res://") + name;
+
sln_filepath = ProjectSettings::get_singleton()->globalize_path(base_path + ".sln");
csproj_filepath = ProjectSettings::get_singleton()->globalize_path(base_path + ".csproj");
#endif
diff --git a/modules/mono/mono_gd/gd_mono.cpp b/modules/mono/mono_gd/gd_mono.cpp
index 98b57adc50..904a8ae2c7 100644
--- a/modules/mono/mono_gd/gd_mono.cpp
+++ b/modules/mono/mono_gd/gd_mono.cpp
@@ -29,6 +29,7 @@
/*************************************************************************/
#include "gd_mono.h"
+#include <mono/metadata/exception.h>
#include <mono/metadata/mono-config.h>
#include <mono/metadata/mono-debug.h>
#include <mono/metadata/mono-gc.h>
@@ -47,6 +48,15 @@
#include "../editor/godotsharp_editor.h"
#endif
+void gdmono_unhandled_exception_hook(MonoObject *exc, void *user_data) {
+
+ (void)user_data; // UNUSED
+
+ ERR_PRINT(GDMonoUtils::get_exception_name_and_message(exc).utf8());
+ mono_print_unhandled_exception(exc);
+ abort();
+}
+
#ifdef MONO_PRINT_HANDLER_ENABLED
void gdmono_MonoPrintCallback(const char *string, mono_bool is_stdout) {
@@ -132,7 +142,7 @@ void GDMono::initialize() {
ERR_FAIL_NULL(Engine::get_singleton());
- OS::get_singleton()->print("Initializing mono...\n");
+ OS::get_singleton()->print("Mono: Initializing module...\n");
#ifdef DEBUG_METHODS_ENABLED
_initialize_and_check_api_hashes();
@@ -214,7 +224,9 @@ void GDMono::initialize() {
// The following assemblies are not required at initialization
_load_all_script_assemblies();
- OS::get_singleton()->print("Mono: EVERYTHING OK\n");
+ mono_install_unhandled_exception_hook(gdmono_unhandled_exception_hook, NULL);
+
+ OS::get_singleton()->print("Mono: ALL IS GOOD\n");
}
#ifndef MONO_GLUE_DISABLED
@@ -357,9 +369,12 @@ bool GDMono::_load_project_assembly() {
if (project_assembly)
return true;
- String project_assembly_name = ProjectSettings::get_singleton()->get("application/config/name");
+ String name = ProjectSettings::get_singleton()->get("application/config/name");
+ if (name.empty()) {
+ name = "UnnamedProject";
+ }
- bool success = _load_assembly(project_assembly_name, &project_assembly);
+ bool success = _load_assembly(name, &project_assembly);
if (success)
mono_assembly_set_main(project_assembly->get_assembly());
@@ -610,6 +625,8 @@ GDMono::~GDMono() {
if (gdmono_log)
memdelete(gdmono_log);
+
+ singleton = NULL;
}
_GodotSharp *_GodotSharp::singleton = NULL;
diff --git a/modules/mono/mono_gd/gd_mono_assembly.cpp b/modules/mono/mono_gd/gd_mono_assembly.cpp
index 4b370295f3..7dc7043eec 100644
--- a/modules/mono/mono_gd/gd_mono_assembly.cpp
+++ b/modules/mono/mono_gd/gd_mono_assembly.cpp
@@ -95,7 +95,9 @@ MonoAssembly *GDMonoAssembly::_preload_hook(MonoAssemblyName *aname, char **asse
(void)user_data; // UNUSED
if (search_dirs.empty()) {
+#ifdef TOOLS_DOMAIN
search_dirs.push_back(GodotSharpDirs::get_res_temp_assemblies_dir());
+#endif
search_dirs.push_back(GodotSharpDirs::get_res_assemblies_dir());
search_dirs.push_back(OS::get_singleton()->get_resource_dir());
search_dirs.push_back(OS::get_singleton()->get_executable_path().get_base_dir());
@@ -105,10 +107,11 @@ MonoAssembly *GDMonoAssembly::_preload_hook(MonoAssemblyName *aname, char **asse
search_dirs.push_back(String(rootdir).plus_file("mono").plus_file("4.5"));
}
- while (assemblies_path) {
- if (*assemblies_path)
+ if (assemblies_path) {
+ while (*assemblies_path) {
search_dirs.push_back(*assemblies_path);
- ++assemblies_path;
+ ++assemblies_path;
+ }
}
}
diff --git a/modules/mono/mono_gd/gd_mono_class.cpp b/modules/mono/mono_gd/gd_mono_class.cpp
index 0134ace5d7..77ba0ee90e 100644
--- a/modules/mono/mono_gd/gd_mono_class.cpp
+++ b/modules/mono/mono_gd/gd_mono_class.cpp
@@ -43,6 +43,14 @@ bool GDMonoClass::is_assignable_from(GDMonoClass *p_from) const {
return mono_class_is_assignable_from(mono_class, p_from->mono_class);
}
+String GDMonoClass::get_full_name() const {
+
+ String res = namespace_name;
+ if (res.length())
+ res += ".";
+ return res + class_name;
+}
+
GDMonoClass *GDMonoClass::get_parent_class() {
if (assembly) {
@@ -56,6 +64,30 @@ GDMonoClass *GDMonoClass::get_parent_class() {
return NULL;
}
+#ifdef TOOLS_ENABLED
+Vector<MonoClassField *> GDMonoClass::get_enum_fields() {
+
+ bool class_is_enum = mono_class_is_enum(mono_class);
+ ERR_FAIL_COND_V(!class_is_enum, Vector<MonoClassField *>());
+
+ Vector<MonoClassField *> enum_fields;
+
+ void *iter = NULL;
+ MonoClassField *raw_field = NULL;
+ while ((raw_field = mono_class_get_fields(get_raw(), &iter)) != NULL) {
+ uint32_t field_flags = mono_field_get_flags(raw_field);
+
+ // Enums have an instance field named value__ which holds the value of the enum.
+ // Enum constants are static, so we will use this to ignore the value__ field.
+ if (field_flags & MONO_FIELD_ATTR_PUBLIC && field_flags & MONO_FIELD_ATTR_STATIC) {
+ enum_fields.push_back(raw_field);
+ }
+ }
+
+ return enum_fields;
+}
+#endif
+
bool GDMonoClass::has_method(const StringName &p_name) {
return get_method(p_name) != NULL;
diff --git a/modules/mono/mono_gd/gd_mono_class.h b/modules/mono/mono_gd/gd_mono_class.h
index 1e72553879..ef1ca425a7 100644
--- a/modules/mono/mono_gd/gd_mono_class.h
+++ b/modules/mono/mono_gd/gd_mono_class.h
@@ -98,8 +98,14 @@ public:
_FORCE_INLINE_ MonoClass *get_raw() const { return mono_class; }
_FORCE_INLINE_ const GDMonoAssembly *get_assembly() const { return assembly; }
+ String get_full_name() const;
+
GDMonoClass *get_parent_class();
+#ifdef TOOLS_ENABLED
+ Vector<MonoClassField *> get_enum_fields();
+#endif
+
bool has_method(const StringName &p_name);
bool has_attribute(GDMonoClass *p_attr_class);
diff --git a/modules/mono/mono_gd/gd_mono_field.cpp b/modules/mono/mono_gd/gd_mono_field.cpp
index c2d8eeaa32..1643f8cfc5 100644
--- a/modules/mono/mono_gd/gd_mono_field.cpp
+++ b/modules/mono/mono_gd/gd_mono_field.cpp
@@ -51,6 +51,7 @@ void GDMonoField::set_value(MonoObject *p_object, const Variant &p_value) {
{ \
m_type val = p_value.operator m_type(); \
mono_field_set_value(p_object, mono_field, &val); \
+ break; \
}
#define SET_FROM_ARRAY_AND_BREAK(m_type) \
@@ -137,6 +138,9 @@ void GDMonoField::set_value(MonoObject *p_object, const Variant &p_value) {
if (tclass == CACHED_CLASS(Plane))
SET_FROM_STRUCT_AND_BREAK(Plane);
+ if (mono_class_is_enum(tclass->get_raw()))
+ SET_FROM_PRIMITIVE(signed int);
+
ERR_EXPLAIN(String() + "Attempted to set the value of a field of unmarshallable type: " + tclass->get_name());
ERR_FAIL();
} break;
@@ -179,19 +183,19 @@ void GDMonoField::set_value(MonoObject *p_object, const Variant &p_value) {
// GodotObject
if (CACHED_CLASS(GodotObject)->is_assignable_from(type_class)) {
MonoObject *managed = GDMonoUtils::unmanaged_get_managed(p_value.operator Object *());
- mono_field_set_value(p_object, mono_field, &managed);
+ mono_field_set_value(p_object, mono_field, managed);
break;
}
if (CACHED_CLASS(NodePath) == type_class) {
MonoObject *managed = GDMonoUtils::create_managed_from(p_value.operator NodePath());
- mono_field_set_value(p_object, mono_field, &managed);
+ mono_field_set_value(p_object, mono_field, managed);
break;
}
if (CACHED_CLASS(RID) == type_class) {
MonoObject *managed = GDMonoUtils::create_managed_from(p_value.operator RID());
- mono_field_set_value(p_object, mono_field, &managed);
+ mono_field_set_value(p_object, mono_field, managed);
break;
}
@@ -200,8 +204,6 @@ void GDMonoField::set_value(MonoObject *p_object, const Variant &p_value) {
} break;
case MONO_TYPE_OBJECT: {
- GDMonoClass *type_class = type.type_class;
-
// Variant
switch (p_value.get_type()) {
case Variant::BOOL: {
@@ -233,11 +235,11 @@ void GDMonoField::set_value(MonoObject *p_object, const Variant &p_value) {
case Variant::COLOR: SET_FROM_STRUCT_AND_BREAK(Color);
case Variant::NODE_PATH: {
MonoObject *managed = GDMonoUtils::create_managed_from(p_value.operator NodePath());
- mono_field_set_value(p_object, mono_field, &managed);
+ mono_field_set_value(p_object, mono_field, managed);
} break;
case Variant::_RID: {
MonoObject *managed = GDMonoUtils::create_managed_from(p_value.operator RID());
- mono_field_set_value(p_object, mono_field, &managed);
+ mono_field_set_value(p_object, mono_field, managed);
} break;
case Variant::OBJECT: {
MonoObject *managed = GDMonoUtils::unmanaged_get_managed(p_value.operator Object *());
@@ -246,7 +248,7 @@ void GDMonoField::set_value(MonoObject *p_object, const Variant &p_value) {
}
case Variant::DICTIONARY: {
MonoObject *managed = GDMonoMarshal::Dictionary_to_mono_object(p_value.operator Dictionary());
- mono_field_set_value(p_object, mono_field, &managed);
+ mono_field_set_value(p_object, mono_field, managed);
} break;
case Variant::ARRAY: SET_FROM_ARRAY_AND_BREAK(Array);
case Variant::POOL_BYTE_ARRAY: SET_FROM_ARRAY_AND_BREAK(PoolByteArray);
@@ -264,7 +266,7 @@ void GDMonoField::set_value(MonoObject *p_object, const Variant &p_value) {
case MONO_TYPE_GENERICINST: {
if (CACHED_RAW_MONO_CLASS(Dictionary) == type.type_class->get_raw()) {
MonoObject *managed = GDMonoMarshal::Dictionary_to_mono_object(p_value.operator Dictionary());
- mono_field_set_value(p_object, mono_field, &managed);
+ mono_field_set_value(p_object, mono_field, managed);
break;
}
} break;
diff --git a/modules/mono/mono_gd/gd_mono_marshal.cpp b/modules/mono/mono_gd/gd_mono_marshal.cpp
index 9a6c8f0cd6..77a1ef3cb0 100644
--- a/modules/mono/mono_gd/gd_mono_marshal.cpp
+++ b/modules/mono/mono_gd/gd_mono_marshal.cpp
@@ -112,6 +112,9 @@ Variant::Type managed_to_variant_type(const ManagedType &p_type) {
if (tclass == CACHED_CLASS(Plane))
return Variant::PLANE;
+
+ if (mono_class_is_enum(tclass->get_raw()))
+ return Variant::INT;
} break;
case MONO_TYPE_ARRAY:
@@ -165,9 +168,12 @@ Variant::Type managed_to_variant_type(const ManagedType &p_type) {
return Variant::DICTIONARY;
}
} break;
+
+ default: {
+ } break;
}
- // No error, the caller will decide what to do in this case
+ // Unknown
return Variant::NIL;
}
@@ -299,6 +305,11 @@ MonoObject *variant_to_mono_object(const Variant *p_var, const ManagedType &p_ty
if (tclass == CACHED_CLASS(Plane))
RETURN_BOXED_STRUCT(Plane, p_var);
+
+ if (mono_class_is_enum(tclass->get_raw())) {
+ int val = p_var->operator signed int();
+ return BOX_ENUM(tclass->get_raw(), val);
+ }
} break;
case MONO_TYPE_ARRAY:
@@ -515,6 +526,9 @@ Variant mono_object_to_variant(MonoObject *p_obj, const ManagedType &p_type) {
if (tclass == CACHED_CLASS(Plane))
RETURN_UNBOXED_STRUCT(Plane, p_obj);
+
+ if (mono_class_is_enum(tclass->get_raw()))
+ return unbox<int32_t>(p_obj);
} break;
case MONO_TYPE_ARRAY:
diff --git a/modules/mono/mono_gd/gd_mono_marshal.h b/modules/mono/mono_gd/gd_mono_marshal.h
index 38dd22357d..9f403b787f 100644
--- a/modules/mono/mono_gd/gd_mono_marshal.h
+++ b/modules/mono/mono_gd/gd_mono_marshal.h
@@ -53,6 +53,7 @@ T unbox(MonoObject *p_obj) {
#define BOX_UINT8(x) mono_value_box(mono_domain_get(), CACHED_CLASS_RAW(uint8_t), &x)
#define BOX_BOOLEAN(x) mono_value_box(mono_domain_get(), CACHED_CLASS_RAW(bool), &x)
#define BOX_PTR(x) mono_value_box(mono_domain_get(), CACHED_CLASS_RAW(IntPtr), x)
+#define BOX_ENUM(m_enum_class, x) mono_value_box(mono_domain_get(), m_enum_class, &x)
Variant::Type managed_to_variant_type(const ManagedType &p_type);
diff --git a/modules/mono/mono_gd/gd_mono_method.cpp b/modules/mono/mono_gd/gd_mono_method.cpp
index 6468e0d3d9..eb97d62900 100644
--- a/modules/mono/mono_gd/gd_mono_method.cpp
+++ b/modules/mono/mono_gd/gd_mono_method.cpp
@@ -83,9 +83,32 @@ MonoObject *GDMonoMethod::invoke(MonoObject *p_object, const Variant **p_params,
mono_array_set(params, MonoObject *, i, boxed_param);
}
- return mono_runtime_invoke_array(mono_method, p_object, params, r_exc);
+ MonoObject *exc = NULL;
+ MonoObject *ret = mono_runtime_invoke_array(mono_method, p_object, params, &exc);
+
+ if (exc) {
+ if (r_exc) {
+ *r_exc = exc;
+ } else {
+ ERR_PRINT(GDMonoUtils::get_exception_name_and_message(exc).utf8());
+ mono_print_unhandled_exception(exc);
+ }
+ }
+
+ return ret;
} else {
- mono_runtime_invoke(mono_method, p_object, NULL, r_exc);
+ MonoObject *exc = NULL;
+ mono_runtime_invoke(mono_method, p_object, NULL, &exc);
+
+ if (exc) {
+ if (r_exc) {
+ *r_exc = exc;
+ } else {
+ ERR_PRINT(GDMonoUtils::get_exception_name_and_message(exc).utf8());
+ mono_print_unhandled_exception(exc);
+ }
+ }
+
return NULL;
}
}
@@ -96,7 +119,19 @@ MonoObject *GDMonoMethod::invoke(MonoObject *p_object, MonoObject **r_exc) {
}
MonoObject *GDMonoMethod::invoke_raw(MonoObject *p_object, void **p_params, MonoObject **r_exc) {
- return mono_runtime_invoke(mono_method, p_object, p_params, r_exc);
+ MonoObject *exc = NULL;
+ MonoObject *ret = mono_runtime_invoke(mono_method, p_object, p_params, &exc);
+
+ if (exc) {
+ if (r_exc) {
+ *r_exc = exc;
+ } else {
+ ERR_PRINT(GDMonoUtils::get_exception_name_and_message(exc).utf8());
+ mono_print_unhandled_exception(exc);
+ }
+ }
+
+ return ret;
}
bool GDMonoMethod::has_attribute(GDMonoClass *p_attr_class) {
diff --git a/modules/mono/mono_gd/gd_mono_utils.cpp b/modules/mono/mono_gd/gd_mono_utils.cpp
index 5deca8e64d..53e45002c4 100644
--- a/modules/mono/mono_gd/gd_mono_utils.cpp
+++ b/modules/mono/mono_gd/gd_mono_utils.cpp
@@ -86,6 +86,7 @@ void MonoCache::clear_members() {
class_NodePath = NULL;
class_RID = NULL;
class_GodotObject = NULL;
+ class_GodotReference = NULL;
class_Node = NULL;
class_Control = NULL;
class_Spatial = NULL;
@@ -95,7 +96,6 @@ void MonoCache::clear_members() {
class_ExportAttribute = NULL;
field_ExportAttribute_hint = NULL;
field_ExportAttribute_hint_string = NULL;
- field_ExportAttribute_usage = NULL;
class_ToolAttribute = NULL;
class_RemoteAttribute = NULL;
class_SyncAttribute = NULL;
@@ -111,7 +111,7 @@ void MonoCache::clear_members() {
methodthunk_MarshalUtils_DictionaryToArrays = NULL;
methodthunk_MarshalUtils_ArraysToDictionary = NULL;
- methodthunk_GodotObject__AwaitedSignalCallback = NULL;
+ methodthunk_SignalAwaiter_SignalCallback = NULL;
methodthunk_SignalAwaiter_FailureCallback = NULL;
methodthunk_GodotTaskScheduler_Activate = NULL;
@@ -153,6 +153,7 @@ void update_godot_api_cache() {
CACHE_CLASS_AND_CHECK(NodePath, GODOT_API_CLASS(NodePath));
CACHE_CLASS_AND_CHECK(RID, GODOT_API_CLASS(NodePath));
CACHE_CLASS_AND_CHECK(GodotObject, GODOT_API_CLASS(Object));
+ CACHE_CLASS_AND_CHECK(GodotReference, GODOT_API_CLASS(Reference));
CACHE_CLASS_AND_CHECK(Node, GODOT_API_CLASS(Node));
CACHE_CLASS_AND_CHECK(Control, GODOT_API_CLASS(Control));
CACHE_CLASS_AND_CHECK(Spatial, GODOT_API_CLASS(Spatial));
@@ -163,7 +164,6 @@ void update_godot_api_cache() {
CACHE_CLASS_AND_CHECK(ExportAttribute, GODOT_API_CLASS(ExportAttribute));
CACHE_FIELD_AND_CHECK(ExportAttribute, hint, CACHED_CLASS(ExportAttribute)->get_field("hint"));
CACHE_FIELD_AND_CHECK(ExportAttribute, hint_string, CACHED_CLASS(ExportAttribute)->get_field("hint_string"));
- CACHE_FIELD_AND_CHECK(ExportAttribute, usage, CACHED_CLASS(ExportAttribute)->get_field("usage"));
CACHE_CLASS_AND_CHECK(ToolAttribute, GODOT_API_CLASS(ToolAttribute));
CACHE_CLASS_AND_CHECK(RemoteAttribute, GODOT_API_CLASS(RemoteAttribute));
CACHE_CLASS_AND_CHECK(SyncAttribute, GODOT_API_CLASS(SyncAttribute));
@@ -178,7 +178,7 @@ void update_godot_api_cache() {
CACHE_METHOD_THUNK_AND_CHECK(MarshalUtils, DictionaryToArrays, (MarshalUtils_DictToArrays)CACHED_CLASS(MarshalUtils)->get_method("DictionaryToArrays", 3)->get_thunk());
CACHE_METHOD_THUNK_AND_CHECK(MarshalUtils, ArraysToDictionary, (MarshalUtils_ArraysToDict)CACHED_CLASS(MarshalUtils)->get_method("ArraysToDictionary", 2)->get_thunk());
- CACHE_METHOD_THUNK_AND_CHECK(GodotObject, _AwaitedSignalCallback, (GodotObject__AwaitedSignalCallback)CACHED_CLASS(GodotObject)->get_method("_AwaitedSignalCallback", 2)->get_thunk());
+ CACHE_METHOD_THUNK_AND_CHECK(SignalAwaiter, SignalCallback, (SignalAwaiter_SignalCallback)GODOT_API_CLASS(SignalAwaiter)->get_method("SignalCallback", 1)->get_thunk());
CACHE_METHOD_THUNK_AND_CHECK(SignalAwaiter, FailureCallback, (SignalAwaiter_FailureCallback)GODOT_API_CLASS(SignalAwaiter)->get_method("FailureCallback", 0)->get_thunk());
CACHE_METHOD_THUNK_AND_CHECK(GodotTaskScheduler, Activate, (GodotTaskScheduler_Activate)GODOT_API_CLASS(GodotTaskScheduler)->get_method("Activate", 0)->get_thunk());
diff --git a/modules/mono/mono_gd/gd_mono_utils.h b/modules/mono/mono_gd/gd_mono_utils.h
index f97f048aa9..e3af57e78a 100644
--- a/modules/mono/mono_gd/gd_mono_utils.h
+++ b/modules/mono/mono_gd/gd_mono_utils.h
@@ -42,7 +42,7 @@ namespace GDMonoUtils {
typedef MonoObject *(*MarshalUtils_DictToArrays)(MonoObject *, MonoArray **, MonoArray **, MonoObject **);
typedef MonoObject *(*MarshalUtils_ArraysToDict)(MonoArray *, MonoArray *, MonoObject **);
-typedef MonoObject *(*GodotObject__AwaitedSignalCallback)(MonoObject *, MonoArray **, MonoObject *, MonoObject **);
+typedef MonoObject *(*SignalAwaiter_SignalCallback)(MonoObject *, MonoArray **, MonoObject **);
typedef MonoObject *(*SignalAwaiter_FailureCallback)(MonoObject *, MonoObject **);
typedef MonoObject *(*GodotTaskScheduler_Activate)(MonoObject *, MonoObject **);
@@ -88,6 +88,7 @@ struct MonoCache {
GDMonoClass *class_NodePath;
GDMonoClass *class_RID;
GDMonoClass *class_GodotObject;
+ GDMonoClass *class_GodotReference;
GDMonoClass *class_Node;
GDMonoClass *class_Control;
GDMonoClass *class_Spatial;
@@ -97,7 +98,6 @@ struct MonoCache {
GDMonoClass *class_ExportAttribute;
GDMonoField *field_ExportAttribute_hint;
GDMonoField *field_ExportAttribute_hint_string;
- GDMonoField *field_ExportAttribute_usage;
GDMonoClass *class_ToolAttribute;
GDMonoClass *class_RemoteAttribute;
GDMonoClass *class_SyncAttribute;
@@ -113,7 +113,7 @@ struct MonoCache {
MarshalUtils_DictToArrays methodthunk_MarshalUtils_DictionaryToArrays;
MarshalUtils_ArraysToDict methodthunk_MarshalUtils_ArraysToDictionary;
- GodotObject__AwaitedSignalCallback methodthunk_GodotObject__AwaitedSignalCallback;
+ SignalAwaiter_SignalCallback methodthunk_SignalAwaiter_SignalCallback;
SignalAwaiter_FailureCallback methodthunk_SignalAwaiter_FailureCallback;
GodotTaskScheduler_Activate methodthunk_GodotTaskScheduler_Activate;
@@ -164,7 +164,7 @@ String get_exception_name_and_message(MonoObject *p_ex);
} // GDMonoUtils
-#define NATIVE_GDMONOCLASS_NAME(m_class) (GDMonoMarshal::mono_string_to_godot((MonoString *)m_class->get_field("nativeName")->get_value(NULL)))
+#define NATIVE_GDMONOCLASS_NAME(m_class) (GDMonoMarshal::mono_string_to_godot((MonoString *)m_class->get_field(BINDINGS_NATIVE_NAME_FIELD)->get_value(NULL)))
#define CACHED_CLASS(m_class) (GDMonoUtils::mono_cache.class_##m_class)
#define CACHED_CLASS_RAW(m_class) (GDMonoUtils::mono_cache.class_##m_class->get_raw())
diff --git a/modules/mono/mono_reg_utils.py b/modules/mono/mono_reg_utils.py
index e9988625f5..8ddddb3a24 100644
--- a/modules/mono/mono_reg_utils.py
+++ b/modules/mono/mono_reg_utils.py
@@ -1,4 +1,7 @@
import os
+import platform
+
+from compat import decode_utf8
if os.name == 'nt':
import sys
@@ -11,8 +14,7 @@ if os.name == 'nt':
def _reg_open_key(key, subkey):
try:
return winreg.OpenKey(key, subkey)
- except (WindowsError, EnvironmentError) as e:
- import platform
+ except (WindowsError, OSError):
if platform.architecture()[0] == '32bit':
bitness_sam = winreg.KEY_WOW64_64KEY
else:
@@ -20,39 +22,93 @@ def _reg_open_key(key, subkey):
return winreg.OpenKey(key, subkey, 0, winreg.KEY_READ | bitness_sam)
-def _find_mono_in_reg(subkey):
+def _reg_open_key_bits(key, subkey, bits):
+ sam = winreg.KEY_READ
+
+ if platform.architecture()[0] == '32bit':
+ if bits == '64':
+ # Force 32bit process to search in 64bit registry
+ sam |= winreg.KEY_WOW64_64KEY
+ else:
+ if bits == '32':
+ # Force 64bit process to search in 32bit registry
+ sam |= winreg.KEY_WOW64_32KEY
+
+ return winreg.OpenKey(key, subkey, 0, sam)
+
+
+def _find_mono_in_reg(subkey, bits):
try:
- with _reg_open_key(winreg.HKEY_LOCAL_MACHINE, subkey) as hKey:
+ with _reg_open_key_bits(winreg.HKEY_LOCAL_MACHINE, subkey, bits) as hKey:
value, regtype = winreg.QueryValueEx(hKey, 'SdkInstallRoot')
return value
- except (WindowsError, EnvironmentError) as e:
+ except (WindowsError, OSError):
return None
-def _find_mono_in_reg_old(subkey):
+
+def _find_mono_in_reg_old(subkey, bits):
try:
- with _reg_open_key(winreg.HKEY_LOCAL_MACHINE, subkey) as hKey:
+ with _reg_open_key_bits(winreg.HKEY_LOCAL_MACHINE, subkey, bits) as hKey:
default_clr, regtype = winreg.QueryValueEx(hKey, 'DefaultCLR')
if default_clr:
- return _find_mono_in_reg(subkey + '\\' + default_clr)
+ return _find_mono_in_reg(subkey + '\\' + default_clr, bits)
return None
except (WindowsError, EnvironmentError):
return None
-def find_mono_root_dir():
- dir = _find_mono_in_reg(r'SOFTWARE\Mono')
- if dir:
- return dir
- dir = _find_mono_in_reg_old(r'SOFTWARE\Novell\Mono')
- if dir:
- return dir
- return None
+def find_mono_root_dir(bits):
+ root_dir = _find_mono_in_reg(r'SOFTWARE\Mono', bits)
+ if root_dir is not None:
+ return root_dir
+ root_dir = _find_mono_in_reg_old(r'SOFTWARE\Novell\Mono', bits)
+ if root_dir is not None:
+ return root_dir
+ return ''
def find_msbuild_tools_path_reg():
+ import subprocess
+
+ vswhere = os.getenv('PROGRAMFILES(X86)')
+ if not vswhere:
+ vswhere = os.getenv('PROGRAMFILES')
+ vswhere += r'\Microsoft Visual Studio\Installer\vswhere.exe'
+
+ vswhere_args = ['-latest', '-requires', 'Microsoft.Component.MSBuild']
+
try:
- with _reg_open_key(winreg.HKEY_LOCAL_MACHINE, r'SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0') as hKey:
+ lines = subprocess.check_output([vswhere] + vswhere_args).splitlines()
+
+ for line in lines:
+ parts = decode_utf8(line).split(':', 1)
+
+ if len(parts) < 2 or parts[0] != 'installationPath':
+ continue
+
+ val = parts[1].strip()
+
+ if not val:
+ raise ValueError('Value of `installationPath` entry is empty')
+
+ return os.path.join(val, "MSBuild\\15.0\\Bin")
+
+ raise ValueError('Cannot find `installationPath` entry')
+ except ValueError as e:
+ print('Error reading output from vswhere: ' + e.message)
+ except WindowsError:
+ pass # Fine, vswhere not found
+ except (subprocess.CalledProcessError, OSError):
+ pass
+
+ # Try to find 14.0 in the Registry
+
+ try:
+ subkey = r'SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0'
+ with _reg_open_key(winreg.HKEY_LOCAL_MACHINE, subkey) as hKey:
value, regtype = winreg.QueryValueEx(hKey, 'MSBuildToolsPath')
return value
- except (WindowsError, EnvironmentError) as e:
- return None
+ except (WindowsError, OSError):
+ return ''
+
+ return ''
diff --git a/modules/mono/signal_awaiter_utils.cpp b/modules/mono/signal_awaiter_utils.cpp
index 012dd119b1..7e99df29a1 100644
--- a/modules/mono/signal_awaiter_utils.cpp
+++ b/modules/mono/signal_awaiter_utils.cpp
@@ -29,6 +29,9 @@
/*************************************************************************/
#include "signal_awaiter_utils.h"
+#include "csharp_script.h"
+#include "mono_gd/gd_mono_class.h"
+#include "mono_gd/gd_mono_marshal.h"
#include "mono_gd/gd_mono_utils.h"
namespace SignalAwaiterUtils {
@@ -40,13 +43,20 @@ Error connect_signal_awaiter(Object *p_source, const String &p_signal, Object *p
uint32_t awaiter_handle = MonoGCHandle::make_strong_handle(p_awaiter);
Ref<SignalAwaiterHandle> sa_con = memnew(SignalAwaiterHandle(awaiter_handle));
+#ifdef DEBUG_ENABLED
+ sa_con->set_connection_target(p_target);
+#endif
+
Vector<Variant> binds;
binds.push_back(sa_con);
- Error err = p_source->connect(p_signal, p_target, "_AwaitedSignalCallback", binds, Object::CONNECT_ONESHOT);
+
+ Error err = p_source->connect(p_signal, sa_con.ptr(),
+ CSharpLanguage::get_singleton()->get_string_names()._signal_callback,
+ binds, Object::CONNECT_ONESHOT);
if (err != OK) {
- // set it as completed to prevent it from calling the failure callback when deleted
- // the awaiter will be aware of the failure by checking the returned error
+ // Set it as completed to prevent it from calling the failure callback when released.
+ // The awaiter will be aware of the failure by checking the returned error.
sa_con->set_completed(true);
}
@@ -54,11 +64,68 @@ Error connect_signal_awaiter(Object *p_source, const String &p_signal, Object *p
}
}
-SignalAwaiterHandle::SignalAwaiterHandle(uint32_t p_handle)
- : MonoGCHandle(p_handle) {
+Variant SignalAwaiterHandle::_signal_callback(const Variant **p_args, int p_argcount, Variant::CallError &r_error) {
+
+#ifdef DEBUG_ENABLED
+ if (conn_target_id && !ObjectDB::get_instance(conn_target_id)) {
+ ERR_EXPLAIN("Resumed after await, but class instance is gone");
+ ERR_FAIL_V(Variant());
+ }
+#endif
+
+ if (p_argcount < 1) {
+ r_error.error = Variant::CallError::CALL_ERROR_TOO_FEW_ARGUMENTS;
+ r_error.argument = 1;
+ return Variant();
+ }
+
+ Ref<SignalAwaiterHandle> self = *p_args[p_argcount - 1];
+
+ if (self.is_null()) {
+ r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;
+ r_error.argument = p_argcount - 1;
+ r_error.expected = Variant::OBJECT;
+ return Variant();
+ }
+
+ set_completed(true);
+
+ int signal_argc = p_argcount - 1;
+ MonoArray *signal_args = mono_array_new(SCRIPTS_DOMAIN, CACHED_CLASS_RAW(MonoObject), signal_argc);
+
+ for (int i = 0; i < signal_argc; i++) {
+ MonoObject *boxed = GDMonoMarshal::variant_to_mono_object(*p_args[i]);
+ mono_array_set(signal_args, MonoObject *, i, boxed);
+ }
+
+ GDMonoUtils::SignalAwaiter_SignalCallback thunk = CACHED_METHOD_THUNK(SignalAwaiter, SignalCallback);
+
+ MonoObject *ex = NULL;
+ thunk(get_target(), &signal_args, &ex);
+
+ if (ex) {
+ mono_print_unhandled_exception(ex);
+ ERR_FAIL_V(Variant());
+ }
+
+ return Variant();
+}
+
+void SignalAwaiterHandle::_bind_methods() {
+
+ ClassDB::bind_vararg_method(METHOD_FLAGS_DEFAULT, "_signal_callback", &SignalAwaiterHandle::_signal_callback, MethodInfo("_signal_callback"));
+}
+
+SignalAwaiterHandle::SignalAwaiterHandle(uint32_t p_managed_handle)
+ : MonoGCHandle(p_managed_handle) {
+
+#ifdef DEBUG_ENABLED
+ conn_target_id = 0;
+#endif
}
SignalAwaiterHandle::~SignalAwaiterHandle() {
+
if (!completed) {
GDMonoUtils::SignalAwaiter_FailureCallback thunk = CACHED_METHOD_THUNK(SignalAwaiter, FailureCallback);
diff --git a/modules/mono/signal_awaiter_utils.h b/modules/mono/signal_awaiter_utils.h
index 422ed4754f..0d615b5826 100644
--- a/modules/mono/signal_awaiter_utils.h
+++ b/modules/mono/signal_awaiter_utils.h
@@ -40,13 +40,30 @@ Error connect_signal_awaiter(Object *p_source, const String &p_signal, Object *p
class SignalAwaiterHandle : public MonoGCHandle {
+ GDCLASS(SignalAwaiterHandle, MonoGCHandle)
+
bool completed;
+#ifdef DEBUG_ENABLED
+ ObjectID conn_target_id;
+#endif
+
+ Variant _signal_callback(const Variant **p_args, int p_argcount, Variant::CallError &r_error);
+
+protected:
+ static void _bind_methods();
+
public:
_FORCE_INLINE_ bool is_completed() { return completed; }
_FORCE_INLINE_ void set_completed(bool p_completed) { completed = p_completed; }
- SignalAwaiterHandle(uint32_t p_handle);
+#ifdef DEBUG_ENABLED
+ _FORCE_INLINE_ void set_connection_target(Object *p_target) {
+ conn_target_id = p_target->get_instance_id();
+ }
+#endif
+
+ SignalAwaiterHandle(uint32_t p_managed_handle);
~SignalAwaiterHandle();
};
diff --git a/modules/mono/utils/path_utils.cpp b/modules/mono/utils/path_utils.cpp
index c8581f6122..105c2c981e 100644
--- a/modules/mono/utils/path_utils.cpp
+++ b/modules/mono/utils/path_utils.cpp
@@ -56,9 +56,6 @@ String path_which(const String &p_name) {
for (int i = 0; i < env_path.size(); i++) {
String p = path_join(env_path[i], p_name);
- if (FileAccess::exists(p))
- return p;
-
#ifdef WINDOWS_ENABLED
for (int j = 0; j < exts.size(); j++) {
String p2 = p + exts[j];
@@ -66,6 +63,9 @@ String path_which(const String &p_name) {
if (FileAccess::exists(p2))
return p2;
}
+#else
+ if (FileAccess::exists(p))
+ return p;
#endif
}
diff --git a/modules/mono/utils/string_utils.cpp b/modules/mono/utils/string_utils.cpp
index de1a60dbd1..f26663ea11 100644
--- a/modules/mono/utils/string_utils.cpp
+++ b/modules/mono/utils/string_utils.cpp
@@ -126,3 +126,32 @@ String sformat(const String &p_text, const Variant &p1, const Variant &p2, const
return new_string;
}
+
+bool is_csharp_keyword(const String &p_name) {
+
+ // Reserved keywords
+
+ return p_name == "abstract" || p_name == "as" || p_name == "base" || p_name == "bool" ||
+ p_name == "break" || p_name == "byte" || p_name == "case" || p_name == "catch" ||
+ p_name == "char" || p_name == "checked" || p_name == "class" || p_name == "const" ||
+ p_name == "continue" || p_name == "decimal" || p_name == "default" || p_name == "delegate" ||
+ p_name == "do" || p_name == "double" || p_name == "else" || p_name == "enum" ||
+ p_name == "event" || p_name == "explicit" || p_name == "extern" || p_name == "false" ||
+ p_name == "finally" || p_name == "fixed" || p_name == "float" || p_name == "for" ||
+ p_name == "forech" || p_name == "goto" || p_name == "if" || p_name == "implicit" ||
+ p_name == "in" || p_name == "int" || p_name == "interface" || p_name == "internal" ||
+ p_name == "is" || p_name == "lock" || p_name == "long" || p_name == "namespace" ||
+ p_name == "new" || p_name == "null" || p_name == "object" || p_name == "operator" ||
+ p_name == "out" || p_name == "override" || p_name == "params" || p_name == "private" ||
+ p_name == "protected" || p_name == "public" || p_name == "readonly" || p_name == "ref" ||
+ p_name == "return" || p_name == "sbyte" || p_name == "sealed" || p_name == "short" ||
+ p_name == "sizeof" || p_name == "stackalloc" || p_name == "static" || p_name == "string" ||
+ p_name == "struct" || p_name == "switch" || p_name == "this" || p_name == "throw" ||
+ p_name == "true" || p_name == "try" || p_name == "typeof" || p_name == "uint" || p_name == "ulong" ||
+ p_name == "unchecked" || p_name == "unsafe" || p_name == "ushort" || p_name == "using" ||
+ p_name == "virtual" || p_name == "volatile" || p_name == "void" || p_name == "while";
+}
+
+String escape_csharp_keyword(const String &p_name) {
+ return is_csharp_keyword(p_name) ? "@" + p_name : p_name;
+}
diff --git a/modules/mono/utils/string_utils.h b/modules/mono/utils/string_utils.h
index 2f2c3c2d89..a0d66ebdc3 100644
--- a/modules/mono/utils/string_utils.h
+++ b/modules/mono/utils/string_utils.h
@@ -35,4 +35,10 @@
String sformat(const String &p_text, const Variant &p1 = Variant(), const Variant &p2 = Variant(), const Variant &p3 = Variant(), const Variant &p4 = Variant(), const Variant &p5 = Variant());
+#ifdef TOOLS_ENABLED
+bool is_csharp_keyword(const String &p_name);
+
+String escape_csharp_keyword(const String &p_name);
+#endif
+
#endif // STRING_FORMAT_H
diff --git a/modules/openssl/stream_peer_openssl.cpp b/modules/openssl/stream_peer_openssl.cpp
index c19bdc4214..6d1d5485f3 100644
--- a/modules/openssl/stream_peer_openssl.cpp
+++ b/modules/openssl/stream_peer_openssl.cpp
@@ -30,7 +30,7 @@
#include "stream_peer_openssl.h"
// Compatibility with OpenSSL 1.1.0.
-#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
#define BIO_set_num(b, n)
#else
#define BIO_set_num(b, n) ((b)->num = (n))
@@ -269,7 +269,7 @@ int StreamPeerOpenSSL::_bio_puts(BIO *b, const char *str) {
return _bio_write(b, str, strlen(str));
}
-#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
BIO_METHOD *StreamPeerOpenSSL::_bio_method = NULL;
BIO_METHOD *StreamPeerOpenSSL::_get_bio_method() {
@@ -568,7 +568,7 @@ void StreamPeerOpenSSL::initialize_ssl() {
load_certs_func = _load_certs;
_create = _create_func;
-#if OPENSSL_VERSION_NUMBER < 0x10100000L
+#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
CRYPTO_malloc_init(); // Initialize malloc, free, etc for OpenSSL's use
#endif
SSL_library_init(); // Initialize OpenSSL's SSL libraries
diff --git a/modules/openssl/stream_peer_openssl.h b/modules/openssl/stream_peer_openssl.h
index 535114058d..ad09564447 100644
--- a/modules/openssl/stream_peer_openssl.h
+++ b/modules/openssl/stream_peer_openssl.h
@@ -53,7 +53,7 @@ private:
static int _bio_gets(BIO *b, char *buf, int len);
static int _bio_puts(BIO *b, const char *str);
-#if OPENSSL_VERSION_NUMBER >= 0x10100000L
+#if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)
static BIO_METHOD *_bio_method;
#else
static BIO_METHOD _bio_method;
diff --git a/modules/opus/audio_stream_opus.cpp b/modules/opus/audio_stream_opus.cpp
index c7748b9b21..06eab4c94d 100644
--- a/modules/opus/audio_stream_opus.cpp
+++ b/modules/opus/audio_stream_opus.cpp
@@ -267,7 +267,7 @@ void AudioStreamPlaybackOpus::seek(float p_time) {
frames_mixed = osrate * p_time;
}
-int AudioStreamPlaybackOpus::mix(int16_t *p_bufer, int p_frames) {
+int AudioStreamPlaybackOpus::mix(int16_t *p_buffer, int p_frames) {
if (!playing)
return 0;
@@ -281,7 +281,7 @@ int AudioStreamPlaybackOpus::mix(int16_t *p_bufer, int p_frames) {
break;
}
- int ret = op_read(opus_file, (opus_int16 *)p_bufer, todo * stream_channels, &current_section);
+ int ret = op_read(opus_file, (opus_int16 *)p_buffer, todo * stream_channels, &current_section);
if (ret < 0) {
playing = false;
ERR_EXPLAIN("Error reading Opus File: " + file);
@@ -325,7 +325,7 @@ int AudioStreamPlaybackOpus::mix(int16_t *p_bufer, int p_frames) {
frames_mixed += ret;
- p_bufer += ret * stream_channels;
+ p_buffer += ret * stream_channels;
p_frames -= ret;
}
diff --git a/modules/opus/audio_stream_opus.h b/modules/opus/audio_stream_opus.h
index 7b7740a804..f8d8f585cf 100644
--- a/modules/opus/audio_stream_opus.h
+++ b/modules/opus/audio_stream_opus.h
@@ -107,7 +107,7 @@ public:
virtual int get_minimum_buffer_size() const;
- virtual int mix(int16_t *p_bufer, int p_frames);
+ virtual int mix(int16_t *p_buffer, int p_frames);
AudioStreamPlaybackOpus();
~AudioStreamPlaybackOpus();
diff --git a/modules/regex/SCsub b/modules/regex/SCsub
index 2bab144a28..18b4051afe 100644
--- a/modules/regex/SCsub
+++ b/modules/regex/SCsub
@@ -8,7 +8,7 @@ env_regex.Append(CPPFLAGS=["-DPCRE2_CODE_UNIT_WIDTH=0"])
env_regex.add_source_files(env.modules_sources, "*.cpp")
if env['builtin_pcre2']:
- jit_blacklist = ['javascript']
+ jit_blacklist = ['javascript', 'uwp']
thirdparty_dir = '#thirdparty/pcre2/src/'
thirdparty_flags = ['-DPCRE2_STATIC', '-DHAVE_CONFIG_H']
if 'platform' in env and env['platform'] not in jit_blacklist:
diff --git a/modules/stb_vorbis/audio_stream_ogg_vorbis.cpp b/modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
index 27ea310780..5c252bda86 100644
--- a/modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
+++ b/modules/stb_vorbis/audio_stream_ogg_vorbis.cpp
@@ -129,7 +129,6 @@ AudioStreamPlaybackOGGVorbis::~AudioStreamPlaybackOGGVorbis() {
Ref<AudioStreamPlayback> AudioStreamOGGVorbis::instance_playback() {
Ref<AudioStreamPlaybackOGGVorbis> ovs;
- printf("instance at %p, data %p\n", this, data);
ERR_FAIL_COND_V(data == NULL, ovs);
@@ -208,8 +207,6 @@ void AudioStreamOGGVorbis::set_data(const PoolVector<uint8_t> &p_data) {
break;
}
}
-
- printf("create at %p, data %p\n", this, data);
}
PoolVector<uint8_t> AudioStreamOGGVorbis::get_data() const {
diff --git a/modules/visual_script/visual_script.cpp b/modules/visual_script/visual_script.cpp
index 48145495e4..765fe4c2f2 100644
--- a/modules/visual_script/visual_script.cpp
+++ b/modules/visual_script/visual_script.cpp
@@ -974,11 +974,6 @@ bool VisualScript::is_tool() const {
return false;
}
-String VisualScript::get_node_type() const {
-
- return String();
-}
-
ScriptLanguage *VisualScript::get_language() const {
return VisualScriptLanguage::singleton;
@@ -2412,6 +2407,10 @@ bool VisualScriptLanguage::has_named_classes() const {
return false;
}
+bool VisualScriptLanguage::supports_builtin_mode() const {
+
+ return true;
+}
int VisualScriptLanguage::find_function(const String &p_function, const String &p_code) const {
return -1;
diff --git a/modules/visual_script/visual_script.h b/modules/visual_script/visual_script.h
index 4ae50ee829..0f60b103c9 100644
--- a/modules/visual_script/visual_script.h
+++ b/modules/visual_script/visual_script.h
@@ -339,8 +339,6 @@ public:
virtual bool is_tool() const;
- virtual String get_node_type() const;
-
virtual ScriptLanguage *get_language() const;
virtual bool has_script_signal(const StringName &p_signal) const;
@@ -569,6 +567,7 @@ public:
virtual bool validate(const String &p_script, int &r_line_error, int &r_col_error, String &r_test_error, const String &p_path = "", List<String> *r_functions = NULL) const;
virtual Script *create_script() const;
virtual bool has_named_classes() const;
+ virtual bool supports_builtin_mode() const;
virtual int find_function(const String &p_function, const String &p_code) const;
virtual String make_function(const String &p_class, const String &p_name, const PoolStringArray &p_args) const;
virtual void auto_indent_code(String &p_code, int p_from_line, int p_to_line) const;
diff --git a/modules/visual_script/visual_script_builtin_funcs.cpp b/modules/visual_script/visual_script_builtin_funcs.cpp
index 90219e29f8..7c9d306831 100644
--- a/modules/visual_script/visual_script_builtin_funcs.cpp
+++ b/modules/visual_script/visual_script_builtin_funcs.cpp
@@ -65,6 +65,8 @@ const char *VisualScriptBuiltinFunc::func_name[VisualScriptBuiltinFunc::FUNC_MAX
"decimals",
"stepify",
"lerp",
+ "inverse_lerp",
+ "range_lerp",
"dectime",
"randomize",
"randi",
@@ -196,11 +198,14 @@ int VisualScriptBuiltinFunc::get_func_argument_count(BuiltinFunc p_func) {
case COLORN:
return 2;
case MATH_LERP:
+ case MATH_INVERSE_LERP:
case MATH_DECTIME:
case MATH_WRAP:
case MATH_WRAPF:
case LOGIC_CLAMP:
return 3;
+ case MATH_RANGE_LERP:
+ return 5;
case FUNC_MAX: {
}
}
@@ -301,7 +306,26 @@ PropertyInfo VisualScriptBuiltinFunc::get_input_value_port_info(int p_idx) const
return PropertyInfo(Variant::REAL, "to");
else
return PropertyInfo(Variant::REAL, "weight");
-
+ } break;
+ case MATH_INVERSE_LERP: {
+ if (p_idx == 0)
+ return PropertyInfo(Variant::REAL, "from");
+ else if (p_idx == 1)
+ return PropertyInfo(Variant::REAL, "to");
+ else
+ return PropertyInfo(Variant::REAL, "value");
+ } break;
+ case MATH_RANGE_LERP: {
+ if (p_idx == 0)
+ return PropertyInfo(Variant::REAL, "value");
+ else if (p_idx == 1)
+ return PropertyInfo(Variant::REAL, "istart");
+ else if (p_idx == 2)
+ return PropertyInfo(Variant::REAL, "istop");
+ else if (p_idx == 3)
+ return PropertyInfo(Variant::REAL, "ostart");
+ else
+ return PropertyInfo(Variant::REAL, "ostop");
} break;
case MATH_DECTIME: {
if (p_idx == 0)
@@ -515,6 +539,8 @@ PropertyInfo VisualScriptBuiltinFunc::get_output_value_port_info(int p_idx) cons
} break;
case MATH_STEPIFY:
case MATH_LERP:
+ case MATH_INVERSE_LERP:
+ case MATH_RANGE_LERP:
case MATH_DECTIME: {
t = Variant::REAL;
@@ -819,6 +845,22 @@ void VisualScriptBuiltinFunc::exec_func(BuiltinFunc p_func, const Variant **p_in
VALIDATE_ARG_NUM(2);
*r_return = Math::lerp((double)*p_inputs[0], (double)*p_inputs[1], (double)*p_inputs[2]);
} break;
+ case VisualScriptBuiltinFunc::MATH_INVERSE_LERP: {
+
+ VALIDATE_ARG_NUM(0);
+ VALIDATE_ARG_NUM(1);
+ VALIDATE_ARG_NUM(2);
+ *r_return = Math::inverse_lerp((double)*p_inputs[0], (double)*p_inputs[1], (double)*p_inputs[2]);
+ } break;
+ case VisualScriptBuiltinFunc::MATH_RANGE_LERP: {
+
+ VALIDATE_ARG_NUM(0);
+ VALIDATE_ARG_NUM(1);
+ VALIDATE_ARG_NUM(2);
+ VALIDATE_ARG_NUM(3);
+ VALIDATE_ARG_NUM(4);
+ *r_return = Math::range_lerp((double)*p_inputs[0], (double)*p_inputs[1], (double)*p_inputs[2], (double)*p_inputs[3], (double)*p_inputs[4]);
+ } break;
case VisualScriptBuiltinFunc::MATH_DECTIME: {
VALIDATE_ARG_NUM(0);
@@ -1239,6 +1281,8 @@ void VisualScriptBuiltinFunc::_bind_methods() {
BIND_ENUM_CONSTANT(MATH_DECIMALS);
BIND_ENUM_CONSTANT(MATH_STEPIFY);
BIND_ENUM_CONSTANT(MATH_LERP);
+ BIND_ENUM_CONSTANT(MATH_INVERSE_LERP);
+ BIND_ENUM_CONSTANT(MATH_RANGE_LERP);
BIND_ENUM_CONSTANT(MATH_DECTIME);
BIND_ENUM_CONSTANT(MATH_RANDOMIZE);
BIND_ENUM_CONSTANT(MATH_RAND);
@@ -1274,6 +1318,11 @@ void VisualScriptBuiltinFunc::_bind_methods() {
BIND_ENUM_CONSTANT(FUNC_MAX);
}
+VisualScriptBuiltinFunc::VisualScriptBuiltinFunc(VisualScriptBuiltinFunc::BuiltinFunc func) {
+
+ this->func = func;
+}
+
VisualScriptBuiltinFunc::VisualScriptBuiltinFunc() {
func = MATH_SIN;
@@ -1282,9 +1331,7 @@ VisualScriptBuiltinFunc::VisualScriptBuiltinFunc() {
template <VisualScriptBuiltinFunc::BuiltinFunc func>
static Ref<VisualScriptNode> create_builtin_func_node(const String &p_name) {
- Ref<VisualScriptBuiltinFunc> node;
- node.instance();
- node->set_func(func);
+ Ref<VisualScriptBuiltinFunc> node = memnew(VisualScriptBuiltinFunc(func));
return node;
}
@@ -1320,6 +1367,8 @@ void register_visual_script_builtin_func_node() {
VisualScriptLanguage::singleton->add_register_func("functions/built_in/decimals", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_DECIMALS>);
VisualScriptLanguage::singleton->add_register_func("functions/built_in/stepify", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_STEPIFY>);
VisualScriptLanguage::singleton->add_register_func("functions/built_in/lerp", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_LERP>);
+ VisualScriptLanguage::singleton->add_register_func("functions/built_in/inverse_lerp", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_INVERSE_LERP>);
+ VisualScriptLanguage::singleton->add_register_func("functions/built_in/range_lerp", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_RANGE_LERP>);
VisualScriptLanguage::singleton->add_register_func("functions/built_in/dectime", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_DECTIME>);
VisualScriptLanguage::singleton->add_register_func("functions/built_in/randomize", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_RANDOMIZE>);
VisualScriptLanguage::singleton->add_register_func("functions/built_in/rand", create_builtin_func_node<VisualScriptBuiltinFunc::MATH_RAND>);
diff --git a/modules/visual_script/visual_script_builtin_funcs.h b/modules/visual_script/visual_script_builtin_funcs.h
index c530d6d2d1..34a2825938 100644
--- a/modules/visual_script/visual_script_builtin_funcs.h
+++ b/modules/visual_script/visual_script_builtin_funcs.h
@@ -64,6 +64,8 @@ public:
MATH_DECIMALS,
MATH_STEPIFY,
MATH_LERP,
+ MATH_INVERSE_LERP,
+ MATH_RANGE_LERP,
MATH_DECTIME,
MATH_RANDOMIZE,
MATH_RAND,
@@ -132,6 +134,7 @@ public:
virtual VisualScriptNodeInstance *instance(VisualScriptInstance *p_instance);
+ VisualScriptBuiltinFunc(VisualScriptBuiltinFunc::BuiltinFunc func);
VisualScriptBuiltinFunc();
};
diff --git a/modules/visual_script/visual_script_editor.cpp b/modules/visual_script/visual_script_editor.cpp
index 47ef0182dc..03015df844 100644
--- a/modules/visual_script/visual_script_editor.cpp
+++ b/modules/visual_script/visual_script_editor.cpp
@@ -809,7 +809,7 @@ void VisualScriptEditor::_update_members() {
ti->set_text(0, E->get());
Variant var = script->get_variable_default_value(E->get());
- ti->set_suffix(0, "=" + String(var));
+ ti->set_suffix(0, "= " + String(var));
ti->set_icon(0, type_icons[script->get_variable_info(E->get()).type]);
ti->set_selectable(0, true);
diff --git a/modules/visual_script/visual_script_nodes.cpp b/modules/visual_script/visual_script_nodes.cpp
index 5a34fc3cd9..d3cd839cf3 100644
--- a/modules/visual_script/visual_script_nodes.cpp
+++ b/modules/visual_script/visual_script_nodes.cpp
@@ -532,6 +532,7 @@ String VisualScriptOperator::get_text() const {
L"A or B", //OP_OR,
L"A xor B", //OP_XOR,
L"not A", //OP_NOT,
+ L"A in B", //OP_IN,
};
return op_names[op];
diff --git a/modules/visual_script/visual_script_yield_nodes.cpp b/modules/visual_script/visual_script_yield_nodes.cpp
index bc033418ba..3c9076246d 100644
--- a/modules/visual_script/visual_script_yield_nodes.cpp
+++ b/modules/visual_script/visual_script_yield_nodes.cpp
@@ -82,7 +82,7 @@ String VisualScriptYield::get_text() const {
switch (yield_mode) {
case YIELD_RETURN: return ""; break;
case YIELD_FRAME: return "Next Frame"; break;
- case YIELD_PHYSICS_FRAME: return "Next Fixed Frame"; break;
+ case YIELD_PHYSICS_FRAME: return "Next Physics Frame"; break;
case YIELD_WAIT: return rtos(wait_time) + " sec(s)"; break;
}
@@ -186,7 +186,7 @@ void VisualScriptYield::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_wait_time", "sec"), &VisualScriptYield::set_wait_time);
ClassDB::bind_method(D_METHOD("get_wait_time"), &VisualScriptYield::get_wait_time);
- ADD_PROPERTY(PropertyInfo(Variant::INT, "mode", PROPERTY_HINT_ENUM, "Frame,FixedFrame,Time", PROPERTY_USAGE_NOEDITOR), "set_yield_mode", "get_yield_mode");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "mode", PROPERTY_HINT_ENUM, "Frame,Physics Frame,Time", PROPERTY_USAGE_NOEDITOR), "set_yield_mode", "get_yield_mode");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "wait_time"), "set_wait_time", "get_wait_time");
BIND_ENUM_CONSTANT(YIELD_FRAME);
diff --git a/modules/vorbis/audio_stream_ogg_vorbis.cpp b/modules/vorbis/audio_stream_ogg_vorbis.cpp
index 0afb889199..6235799fc2 100644
--- a/modules/vorbis/audio_stream_ogg_vorbis.cpp
+++ b/modules/vorbis/audio_stream_ogg_vorbis.cpp
@@ -92,7 +92,7 @@ long AudioStreamPlaybackOGGVorbis::_ov_tell_func(void *_f) {
return fa->get_position();
}
-int AudioStreamPlaybackOGGVorbis::mix(int16_t *p_bufer, int p_frames) {
+int AudioStreamPlaybackOGGVorbis::mix(int16_t *p_buffer, int p_frames) {
if (!playing)
return 0;
@@ -109,9 +109,9 @@ int AudioStreamPlaybackOGGVorbis::mix(int16_t *p_bufer, int p_frames) {
//printf("to mix %i - mix me %i bytes\n",to_mix,to_mix*stream_channels*sizeof(int16_t));
#ifdef BIG_ENDIAN_ENABLED
- long ret = ov_read(&vf, (char *)p_bufer, todo * stream_channels * sizeof(int16_t), 1, 2, 1, &current_section);
+ long ret = ov_read(&vf, (char *)p_buffer, todo * stream_channels * sizeof(int16_t), 1, 2, 1, &current_section);
#else
- long ret = ov_read(&vf, (char *)p_bufer, todo * stream_channels * sizeof(int16_t), 0, 2, 1, &current_section);
+ long ret = ov_read(&vf, (char *)p_buffer, todo * stream_channels * sizeof(int16_t), 0, 2, 1, &current_section);
#endif
if (ret < 0) {
@@ -162,7 +162,7 @@ int AudioStreamPlaybackOGGVorbis::mix(int16_t *p_bufer, int p_frames) {
frames_mixed += ret;
- p_bufer += ret * stream_channels;
+ p_buffer += ret * stream_channels;
p_frames -= ret;
}
diff --git a/modules/vorbis/audio_stream_ogg_vorbis.h b/modules/vorbis/audio_stream_ogg_vorbis.h
index 929b2651e9..79eadec56e 100644
--- a/modules/vorbis/audio_stream_ogg_vorbis.h
+++ b/modules/vorbis/audio_stream_ogg_vorbis.h
@@ -103,7 +103,7 @@ public:
virtual int get_mix_rate() const { return stream_srate; }
virtual int get_minimum_buffer_size() const { return 0; }
- virtual int mix(int16_t *p_bufer, int p_frames);
+ virtual int mix(int16_t *p_buffer, int p_frames);
AudioStreamPlaybackOGGVorbis();
~AudioStreamPlaybackOGGVorbis();
diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp
index 9fe1f291d6..79be1501a7 100644
--- a/platform/android/export/export.cpp
+++ b/platform/android/export/export.cpp
@@ -267,7 +267,6 @@ class EditorExportAndroid : public EditorExportPlatform {
if (different) {
- print_line("DIFFERENT!");
Vector<Device> ndevices;
for (int i = 0; i < ldevices.size(); i++) {
diff --git a/platform/android/java/src/org/godotengine/godot/Godot.java b/platform/android/java/src/org/godotengine/godot/Godot.java
index 053dfa631a..59fefc498f 100644
--- a/platform/android/java/src/org/godotengine/godot/Godot.java
+++ b/platform/android/java/src/org/godotengine/godot/Godot.java
@@ -191,6 +191,7 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC
protected void onMainPause() {}
protected void onMainResume() {}
protected void onMainDestroy() {}
+ protected boolean onMainBackPressed() { return false; }
protected void onGLDrawFrame(GL10 gl) {}
protected void onGLSurfaceChanged(GL10 gl, int width, int height) {} // singletons will always miss first onGLSurfaceChanged call
@@ -767,9 +768,16 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC
*/
@Override public void onBackPressed() {
+ boolean shouldQuit = true;
+
+ for(int i=0;i<singleton_count;i++) {
+ if (singletons[i].onMainBackPressed()) {
+ shouldQuit = false;
+ }
+ }
System.out.printf("** BACK REQUEST!\n");
- if (mView != null) {
+ if (shouldQuit && mView != null) {
mView.queueEvent(new Runnable() {
@Override
public void run() {
diff --git a/platform/android/java/src/org/godotengine/godot/GodotView.java b/platform/android/java/src/org/godotengine/godot/GodotView.java
index 3c2ad7cc59..b807b952d4 100644
--- a/platform/android/java/src/org/godotengine/godot/GodotView.java
+++ b/platform/android/java/src/org/godotengine/godot/GodotView.java
@@ -285,13 +285,7 @@ public class GodotView extends GLSurfaceView implements InputDeviceListener {
@Override public boolean onKeyDown(final int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
- queueEvent(new Runnable() {
- @Override
- public void run() {
- GodotLib.back();
- }
- });
-
+ activity.onBackPressed();
// press 'back' button should not terminate program
//normal handle 'back' event in game logic
return true;
diff --git a/platform/android/os_android.cpp b/platform/android/os_android.cpp
index 473a093077..45df312cae 100644
--- a/platform/android/os_android.cpp
+++ b/platform/android/os_android.cpp
@@ -123,7 +123,9 @@ void OS_Android::initialize_core() {
void OS_Android::initialize_logger() {
Vector<Logger *> loggers;
loggers.push_back(memnew(AndroidLogger));
- loggers.push_back(memnew(RotatedFileLogger("user://logs/log.txt")));
+ // FIXME: Reenable once we figure out how to get this properly in user://
+ // instead of littering the user's working dirs (res:// + pwd) with log files (GH-12277)
+ //loggers.push_back(memnew(RotatedFileLogger("user://logs/log.txt")));
_set_logger(memnew(CompositeLogger(loggers)));
}
diff --git a/platform/haiku/context_gl_haiku.cpp b/platform/haiku/context_gl_haiku.cpp
index 2b943df5ba..80d0bd78d5 100644
--- a/platform/haiku/context_gl_haiku.cpp
+++ b/platform/haiku/context_gl_haiku.cpp
@@ -29,7 +29,7 @@
/*************************************************************************/
#include "context_gl_haiku.h"
-#if defined(OPENGL_ENABLED) || defined(LEGACYGL_ENABLED)
+#if defined(OPENGL_ENABLED)
ContextGL_Haiku::ContextGL_Haiku(HaikuDirectWindow *p_window) {
window = p_window;
diff --git a/platform/haiku/context_gl_haiku.h b/platform/haiku/context_gl_haiku.h
index 40daf43ab9..a9a13a2b7f 100644
--- a/platform/haiku/context_gl_haiku.h
+++ b/platform/haiku/context_gl_haiku.h
@@ -30,7 +30,7 @@
#ifndef CONTEXT_GL_HAIKU_H
#define CONTEXT_GL_HAIKU_H
-#if defined(OPENGL_ENABLED) || defined(LEGACYGL_ENABLED)
+#if defined(OPENGL_ENABLED)
#include "drivers/gl_context/context_gl.h"
diff --git a/platform/haiku/os_haiku.cpp b/platform/haiku/os_haiku.cpp
index 9f2f88bb4e..1d52752f21 100644
--- a/platform/haiku/os_haiku.cpp
+++ b/platform/haiku/os_haiku.cpp
@@ -105,7 +105,7 @@ void OS_Haiku::initialize(const VideoMode &p_desired, int p_video_driver, int p_
window->SetFlags(flags);
}
-#if defined(OPENGL_ENABLED) || defined(LEGACYGL_ENABLED)
+#if defined(OPENGL_ENABLED)
context_gl = memnew(ContextGL_Haiku(window));
context_gl->initialize();
context_gl->make_current();
@@ -161,7 +161,7 @@ void OS_Haiku::finalize() {
memdelete(input);
-#if defined(OPENGL_ENABLED) || defined(LEGACYGL_ENABLED)
+#if defined(OPENGL_ENABLED)
memdelete(context_gl);
#endif
}
diff --git a/platform/haiku/os_haiku.h b/platform/haiku/os_haiku.h
index d2fafb9129..d929f7e43b 100644
--- a/platform/haiku/os_haiku.h
+++ b/platform/haiku/os_haiku.h
@@ -60,7 +60,7 @@ private:
AudioDriverMediaKit driver_media_kit;
#endif
-#if defined(OPENGL_ENABLED) || defined(LEGACYGL_ENABLED)
+#if defined(OPENGL_ENABLED)
ContextGL_Haiku *context_gl;
#endif
diff --git a/platform/iphone/export/export.cpp b/platform/iphone/export/export.cpp
index c91781ce1d..0507ef19d6 100644
--- a/platform/iphone/export/export.cpp
+++ b/platform/iphone/export/export.cpp
@@ -397,7 +397,7 @@ Error EditorExportPlatformIOS::_codesign(String p_file, void *p_userdata) {
codesign_args.push_back("-s");
codesign_args.push_back(data->preset->get(data->debug ? "application/code_sign_identity_debug" : "application/code_sign_identity_release"));
codesign_args.push_back(p_file);
- return OS::get_singleton()->execute("/usr/bin/codesign", codesign_args, true);
+ return OS::get_singleton()->execute("codesign", codesign_args, true);
}
return OK;
}
@@ -592,7 +592,15 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
return err;
#ifdef OSX_ENABLED
- ep.step("Making .xcarchive", 2);
+ ep.step("Code-signing dylibs", 2);
+ DirAccess *dylibs_dir = DirAccess::open(dest_dir + "dylibs");
+ ERR_FAIL_COND_V(!dylibs_dir, ERR_CANT_OPEN);
+ CodesignData codesign_data(p_preset, p_debug);
+ err = _walk_dir_recursive(dylibs_dir, _codesign, &codesign_data);
+ memdelete(dylibs_dir);
+ ERR_FAIL_COND_V(err, err);
+
+ ep.step("Making .xcarchive", 3);
String archive_path = p_path.get_basename() + ".xcarchive";
List<String> archive_args;
archive_args.push_back("-project");
@@ -608,15 +616,7 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
archive_args.push_back("archive");
archive_args.push_back("-archivePath");
archive_args.push_back(archive_path);
- err = OS::get_singleton()->execute("/usr/bin/xcodebuild", archive_args, true);
- ERR_FAIL_COND_V(err, err);
-
- ep.step("Code-signing dylibs", 3);
- DirAccess *dylibs_dir = DirAccess::open(archive_path + "/Products/Applications/" + binary_name + ".app/dylibs");
- ERR_FAIL_COND_V(!dylibs_dir, ERR_CANT_OPEN);
- CodesignData codesign_data(p_preset, p_debug);
- err = _walk_dir_recursive(dylibs_dir, _codesign, &codesign_data);
- memdelete(dylibs_dir);
+ err = OS::get_singleton()->execute("xcodebuild", archive_args, true);
ERR_FAIL_COND_V(err, err);
ep.step("Making .ipa", 4);
@@ -628,7 +628,7 @@ Error EditorExportPlatformIOS::export_project(const Ref<EditorExportPreset> &p_p
export_args.push_back(dest_dir + "export_options.plist");
export_args.push_back("-exportPath");
export_args.push_back(dest_dir);
- err = OS::get_singleton()->execute("/usr/bin/xcodebuild", export_args, true);
+ err = OS::get_singleton()->execute("xcodebuild", export_args, true);
ERR_FAIL_COND_V(err, err);
#else
print_line(".ipa can only be built on macOS. Leaving XCode project without building the package.");
diff --git a/platform/iphone/game_center.h b/platform/iphone/game_center.h
index c0a7830fe9..21f40fa362 100644
--- a/platform/iphone/game_center.h
+++ b/platform/iphone/game_center.h
@@ -43,11 +43,13 @@ class GameCenter : public Object {
List<Variant> pending_events;
- bool connected;
+ bool authenticated;
+
+ void return_connect_error(const char *p_error_description);
public:
- Error connect();
- bool is_connected();
+ void connect();
+ bool is_authenticated();
Error post_score(Variant p_score);
Error award_achievement(Variant p_params);
@@ -55,6 +57,7 @@ public:
void request_achievements();
void request_achievement_descriptions();
Error show_game_center(Variant p_params);
+ Error request_identity_verification_signature();
void game_center_closed();
diff --git a/platform/iphone/game_center.mm b/platform/iphone/game_center.mm
index 3955b9f0aa..531b80eee3 100644
--- a/platform/iphone/game_center.mm
+++ b/platform/iphone/game_center.mm
@@ -49,8 +49,7 @@ extern "C" {
GameCenter *GameCenter::instance = NULL;
void GameCenter::_bind_methods() {
- ClassDB::bind_method(D_METHOD("connect"), &GameCenter::connect);
- ClassDB::bind_method(D_METHOD("is_connected"), &GameCenter::is_connected);
+ ClassDB::bind_method(D_METHOD("is_authenticated"), &GameCenter::is_authenticated);
ClassDB::bind_method(D_METHOD("post_score"), &GameCenter::post_score);
ClassDB::bind_method(D_METHOD("award_achievement"), &GameCenter::award_achievement);
@@ -58,24 +57,41 @@ void GameCenter::_bind_methods() {
ClassDB::bind_method(D_METHOD("request_achievements"), &GameCenter::request_achievements);
ClassDB::bind_method(D_METHOD("request_achievement_descriptions"), &GameCenter::request_achievement_descriptions);
ClassDB::bind_method(D_METHOD("show_game_center"), &GameCenter::show_game_center);
+ ClassDB::bind_method(D_METHOD("request_identity_verification_signature"), &GameCenter::request_identity_verification_signature);
ClassDB::bind_method(D_METHOD("get_pending_event_count"), &GameCenter::get_pending_event_count);
ClassDB::bind_method(D_METHOD("pop_pending_event"), &GameCenter::pop_pending_event);
};
-Error GameCenter::connect() {
+void GameCenter::return_connect_error(const char *p_error_description) {
+ authenticated = false;
+ Dictionary ret;
+ ret["type"] = "authentication";
+ ret["result"] = "error";
+ ret["error_code"] = 0;
+ ret["error_description"] = p_error_description;
+ pending_events.push_back(ret);
+}
+
+void GameCenter::connect() {
//if this class isn't available, game center isn't implemented
if ((NSClassFromString(@"GKLocalPlayer")) == nil) {
- GameCenter::get_singleton()->connected = false;
- return ERR_UNAVAILABLE;
+ return_connect_error("GameCenter not available");
+ return;
}
GKLocalPlayer *player = [GKLocalPlayer localPlayer];
- ERR_FAIL_COND_V(![player respondsToSelector:@selector(authenticateHandler)], ERR_UNAVAILABLE);
+ if (![player respondsToSelector:@selector(authenticateHandler)]) {
+ return_connect_error("GameCenter doesn't respond to 'authenticateHandler'");
+ return;
+ }
ViewController *root_controller = (ViewController *)((AppDelegate *)[[UIApplication sharedApplication] delegate]).window.rootViewController;
- ERR_FAIL_COND_V(!root_controller, FAILED);
+ if (!root_controller) {
+ return_connect_error("Window doesn't have root ViewController");
+ return;
+ }
// This handler is called several times. First when the view needs to be shown, then again
// after the view is cancelled or the user logs in. Or if the user's already logged in, it's
@@ -90,23 +106,21 @@ Error GameCenter::connect() {
if (player.isAuthenticated) {
ret["result"] = "ok";
ret["player_id"] = [player.playerID UTF8String];
- GameCenter::get_singleton()->connected = true;
+ GameCenter::get_singleton()->authenticated = true;
} else {
ret["result"] = "error";
ret["error_code"] = error.code;
ret["error_description"] = [error.localizedDescription UTF8String];
- GameCenter::get_singleton()->connected = false;
+ GameCenter::get_singleton()->authenticated = false;
};
pending_events.push_back(ret);
};
});
-
- return OK;
};
-bool GameCenter::is_connected() {
- return connected;
+bool GameCenter::is_authenticated() {
+ return authenticated;
};
Error GameCenter::post_score(Variant p_score) {
@@ -117,7 +131,7 @@ Error GameCenter::post_score(Variant p_score) {
String category = params["category"];
NSString *cat_str = [[[NSString alloc] initWithUTF8String:category.utf8().get_data()] autorelease];
- GKScore *reporter = [[[GKScore alloc] initWithCategory:cat_str] autorelease];
+ GKScore *reporter = [[[GKScore alloc] initWithLeaderboardIdentifier:cat_str] autorelease];
reporter.value = score;
ERR_FAIL_COND_V([GKScore respondsToSelector:@selector(reportScores)], ERR_UNAVAILABLE);
@@ -326,6 +340,34 @@ Error GameCenter::show_game_center(Variant p_params) {
return OK;
};
+Error GameCenter::request_identity_verification_signature() {
+
+ ERR_FAIL_COND_V(!is_authenticated(), ERR_UNAUTHORIZED);
+
+ GKLocalPlayer *player = [GKLocalPlayer localPlayer];
+ [player generateIdentityVerificationSignatureWithCompletionHandler:^(NSURL *publicKeyUrl, NSData *signature, NSData *salt, uint64_t timestamp, NSError *error) {
+
+ Dictionary ret;
+ ret["type"] = "identity_verification_signature";
+ if (error == nil) {
+ ret["result"] = "ok";
+ ret["public_key_url"] = [publicKeyUrl.absoluteString UTF8String];
+ ret["signature"] = [[signature base64EncodedStringWithOptions:0] UTF8String];
+ ret["salt"] = [[salt base64EncodedStringWithOptions:0] UTF8String];
+ ret["timestamp"] = timestamp;
+ ret["player_id"] = [player.playerID UTF8String];
+ } else {
+ ret["result"] = "error";
+ ret["error_code"] = error.code;
+ ret["error_description"] = [error.localizedDescription UTF8String];
+ };
+
+ pending_events.push_back(ret);
+ }];
+
+ return OK;
+};
+
void GameCenter::game_center_closed() {
Dictionary ret;
@@ -354,7 +396,7 @@ GameCenter *GameCenter::get_singleton() {
GameCenter::GameCenter() {
ERR_FAIL_COND(instance != NULL);
instance = this;
- connected = false;
+ authenticated = false;
};
GameCenter::~GameCenter(){};
diff --git a/platform/iphone/os_iphone.cpp b/platform/iphone/os_iphone.cpp
index 08792b8631..0efe22c1af 100644
--- a/platform/iphone/os_iphone.cpp
+++ b/platform/iphone/os_iphone.cpp
@@ -104,7 +104,9 @@ void OSIPhone::initialize_core() {
void OSIPhone::initialize_logger() {
Vector<Logger *> loggers;
loggers.push_back(memnew(SyslogLogger));
- loggers.push_back(memnew(RotatedFileLogger("user://logs/log.txt")));
+ // FIXME: Reenable once we figure out how to get this properly in user://
+ // instead of littering the user's working dirs (res:// + pwd) with log files (GH-12277)
+ //loggers.push_back(memnew(RotatedFileLogger("user://logs/log.txt")));
_set_logger(memnew(CompositeLogger(loggers)));
}
diff --git a/platform/javascript/audio_driver_javascript.cpp b/platform/javascript/audio_driver_javascript.cpp
index 4c0e5fd966..cd3974669f 100644
--- a/platform/javascript/audio_driver_javascript.cpp
+++ b/platform/javascript/audio_driver_javascript.cpp
@@ -29,6 +29,7 @@
/*************************************************************************/
#include "audio_driver_javascript.h"
+#include <emscripten.h>
#include <string.h>
#define MAX_NUMBER_INTERFACES 3
@@ -38,22 +39,91 @@
//AudioDriverJavaScript* AudioDriverJavaScript::s_ad=NULL;
+AudioDriverJavaScript *AudioDriverJavaScript::singleton_js = NULL;
const char *AudioDriverJavaScript::get_name() const {
return "JavaScript";
}
+extern "C" {
+
+void js_audio_driver_mix_function(int p_frames) {
+
+ //print_line("MIXI! "+itos(p_frames));
+ AudioDriverJavaScript::singleton_js->mix_to_js(p_frames);
+}
+}
+
+void AudioDriverJavaScript::mix_to_js(int p_frames) {
+
+ int todo = p_frames;
+ int offset = 0;
+
+ while (todo) {
+
+ int tomix = MIN(todo, INTERNAL_BUFFER_SIZE);
+
+ audio_server_process(p_frames, stream_buffer);
+ for (int i = 0; i < tomix * internal_buffer_channels; i++) {
+ internal_buffer[i] = float(stream_buffer[i] >> 16) * 32768.0;
+ }
+
+ /* clang-format off */
+ EM_ASM_({
+ var data = HEAPF32.subarray($0 / 4, $0 / 4 + $2 * 2);
+
+ for (var channel = 0; channel < _as_output_buffer.numberOfChannels; channel++) {
+ var outputData = _as_output_buffer.getChannelData(channel);
+ // Loop through samples
+ for (var sample = 0; sample < $2; sample++) {
+ // make output equal to the same as the input
+ outputData[sample + $1] = data[sample * 2 + channel];
+ }
+ }
+ }, internal_buffer, offset, tomix);
+ /* clang-format on */
+
+ todo -= tomix;
+ offset += tomix;
+ }
+}
+
Error AudioDriverJavaScript::init() {
return OK;
}
void AudioDriverJavaScript::start() {
+
+ internal_buffer_channels = 2;
+ internal_buffer = memnew_arr(float, INTERNAL_BUFFER_SIZE *internal_buffer_channels);
+ stream_buffer = memnew_arr(int32_t, INTERNAL_BUFFER_SIZE * 4); //max 4 channels
+
+ /* clang-format off */
+ EM_ASM(
+ _as_audioctx = new (window.AudioContext || window.webkitAudioContext)();
+
+ audio_server_mix_function = Module.cwrap('js_audio_driver_mix_function', 'void', ['number']);
+ );
+
+ int buffer_latency = 16384;
+ EM_ASM_( {
+ _as_script_node = _as_audioctx.createScriptProcessor($0, 0, 2);
+ _as_script_node.connect(_as_audioctx.destination);
+ console.log(_as_script_node.bufferSize);
+
+ _as_script_node.onaudioprocess = function(audioProcessingEvent) {
+ // The output buffer contains the samples that will be modified and played
+ _as_output_buffer = audioProcessingEvent.outputBuffer;
+ audio_server_mix_function(_as_output_buffer.getChannelData(0).length);
+ }
+ }, buffer_latency);
+ /* clang-format on */
}
int AudioDriverJavaScript::get_mix_rate() const {
- return 44100;
+ return mix_rate;
}
AudioDriver::SpeakerMode AudioDriverJavaScript::get_speaker_mode() const {
@@ -63,7 +133,7 @@ AudioDriver::SpeakerMode AudioDriverJavaScript::get_speaker_mode() const {
void AudioDriverJavaScript::lock() {
- /*
+ /*no locking, as threads are not supported
if (active && mutex)
mutex->lock();
*/
@@ -71,7 +141,7 @@ void AudioDriverJavaScript::lock() {
void AudioDriverJavaScript::unlock() {
- /*
+ /*no locking, as threads are not supported
if (active && mutex)
mutex->unlock();
*/
@@ -81,4 +151,7 @@ void AudioDriverJavaScript::finish() {
}
AudioDriverJavaScript::AudioDriverJavaScript() {
+
+ mix_rate = 44100;
+ singleton_js = this;
}
diff --git a/platform/javascript/audio_driver_javascript.h b/platform/javascript/audio_driver_javascript.h
index c5cebe800f..c3adeca07b 100644
--- a/platform/javascript/audio_driver_javascript.h
+++ b/platform/javascript/audio_driver_javascript.h
@@ -35,7 +35,23 @@
#include "os/mutex.h"
class AudioDriverJavaScript : public AudioDriver {
+
+ enum {
+ INTERNAL_BUFFER_SIZE = 4096,
+ STREAM_SCALE_BITS = 12
+
+ };
+
+ int mix_rate;
+ float *internal_buffer;
+ int internal_buffer_channels;
+ int internal_buffer_size;
+ int32_t *stream_buffer;
+
public:
+ void mix_to_js(int p_frames);
+ static AudioDriverJavaScript *singleton_js;
+
virtual const char *get_name() const;
virtual Error init();
diff --git a/platform/javascript/detect.py b/platform/javascript/detect.py
index cc29ad8956..a2988d9c60 100644
--- a/platform/javascript/detect.py
+++ b/platform/javascript/detect.py
@@ -13,7 +13,7 @@ def get_name():
def can_build():
- return ("EMSCRIPTEN_ROOT" in os.environ)
+ return ("EMSCRIPTEN_ROOT" in os.environ or "EMSCRIPTEN" in os.environ)
def get_opts():
@@ -66,7 +66,10 @@ def configure(env):
## Compiler configuration
env['ENV'] = os.environ
- env.PrependENVPath('PATH', os.environ['EMSCRIPTEN_ROOT'])
+ if ("EMSCRIPTEN_ROOT" in os.environ):
+ env.PrependENVPath('PATH', os.environ['EMSCRIPTEN_ROOT'])
+ elif ("EMSCRIPTEN" in os.environ):
+ env.PrependENVPath('PATH', os.environ['EMSCRIPTEN'])
env['CC'] = 'emcc'
env['CXX'] = 'em++'
env['LINK'] = 'emcc'
diff --git a/platform/javascript/javascript_eval.cpp b/platform/javascript/javascript_eval.cpp
index 74f8d80a76..1d737879f6 100644
--- a/platform/javascript/javascript_eval.cpp
+++ b/platform/javascript/javascript_eval.cpp
@@ -39,24 +39,41 @@ JavaScript *JavaScript::get_singleton() {
return singleton;
}
+extern "C" EMSCRIPTEN_KEEPALIVE uint8_t *resize_poolbytearray_and_open_write(PoolByteArray *p_arr, PoolByteArray::Write *r_write, int p_len) {
+
+ p_arr->resize(p_len);
+ *r_write = p_arr->write();
+ return r_write->ptr();
+}
+
Variant JavaScript::eval(const String &p_code, bool p_use_global_exec_context) {
union {
- int i;
+ bool b;
double d;
char *s;
} js_data[4];
+
+ PoolByteArray arr;
+ PoolByteArray::Write arr_write;
+
/* clang-format off */
Variant::Type return_type = static_cast<Variant::Type>(EM_ASM_INT({
+ const CODE = $0;
+ const USE_GLOBAL_EXEC_CONTEXT = $1;
+ const PTR = $2;
+ const ELEM_LEN = $3;
+ const BYTEARRAY_PTR = $4;
+ const BYTEARRAY_WRITE_PTR = $5;
var eval_ret;
try {
- if ($3) { // p_use_global_exec_context
+ if (USE_GLOBAL_EXEC_CONTEXT) {
// indirect eval call grants global execution context
var global_eval = eval;
- eval_ret = global_eval(UTF8ToString($2));
+ eval_ret = global_eval(UTF8ToString(CODE));
} else {
- eval_ret = eval(UTF8ToString($2));
+ eval_ret = eval(UTF8ToString(CODE));
}
} catch (e) {
Module.printErr(e);
@@ -66,16 +83,11 @@ Variant JavaScript::eval(const String &p_code, bool p_use_global_exec_context) {
switch (typeof eval_ret) {
case 'boolean':
- // bitwise op yields 32-bit int
- setValue($0, eval_ret|0, 'i32');
+ setValue(PTR, eval_ret, 'i32');
return 1; // BOOL
case 'number':
- if ((eval_ret|0)===eval_ret) {
- setValue($0, eval_ret|0, 'i32');
- return 2; // INT
- }
- setValue($0, eval_ret, 'double');
+ setValue(PTR, eval_ret, 'double');
return 3; // REAL
case 'string':
@@ -85,7 +97,7 @@ Variant JavaScript::eval(const String &p_code, bool p_use_global_exec_context) {
if (array_ptr===0) {
throw new Error('String allocation failed (probably out of memory)');
}
- setValue($0, array_ptr|0 , '*');
+ setValue(PTR, array_ptr , '*');
stringToUTF8(eval_ret, array_ptr, array_len);
return 4; // STRING
} catch (e) {
@@ -102,41 +114,50 @@ Variant JavaScript::eval(const String &p_code, bool p_use_global_exec_context) {
break;
}
- else if (typeof eval_ret.x==='number' && typeof eval_ret.y==='number') {
- setValue($0, eval_ret.x, 'double');
- setValue($0+$1, eval_ret.y, 'double');
+ if (ArrayBuffer.isView(eval_ret) && !(eval_ret instanceof Uint8Array)) {
+ eval_ret = new Uint8Array(eval_ret.buffer);
+ }
+ else if (eval_ret instanceof ArrayBuffer) {
+ eval_ret = new Uint8Array(eval_ret);
+ }
+ if (eval_ret instanceof Uint8Array) {
+ var bytes_ptr = ccall('resize_poolbytearray_and_open_write', 'number', ['number', 'number' ,'number'], [BYTEARRAY_PTR, BYTEARRAY_WRITE_PTR, eval_ret.length]);
+ HEAPU8.set(eval_ret, bytes_ptr);
+ return 20; // POOL_BYTE_ARRAY
+ }
+
+ if (typeof eval_ret.x==='number' && typeof eval_ret.y==='number') {
+ setValue(PTR, eval_ret.x, 'double');
+ setValue(PTR + ELEM_LEN, eval_ret.y, 'double');
if (typeof eval_ret.z==='number') {
- setValue($0+$1*2, eval_ret.z, 'double');
+ setValue(PTR + ELEM_LEN*2, eval_ret.z, 'double');
return 7; // VECTOR3
}
else if (typeof eval_ret.width==='number' && typeof eval_ret.height==='number') {
- setValue($0+$1*2, eval_ret.width, 'double');
- setValue($0+$1*3, eval_ret.height, 'double');
+ setValue(PTR + ELEM_LEN*2, eval_ret.width, 'double');
+ setValue(PTR + ELEM_LEN*3, eval_ret.height, 'double');
return 6; // RECT2
}
return 5; // VECTOR2
}
- else if (typeof eval_ret.r==='number' && typeof eval_ret.g==='number' && typeof eval_ret.b==='number') {
- // assume 8-bit rgb components since we're on the web
- setValue($0, eval_ret.r, 'double');
- setValue($0+$1, eval_ret.g, 'double');
- setValue($0+$1*2, eval_ret.b, 'double');
- setValue($0+$1*3, typeof eval_ret.a==='number' ? eval_ret.a : 1, 'double');
+ if (typeof eval_ret.r === 'number' && typeof eval_ret.g === 'number' && typeof eval_ret.b === 'number') {
+ setValue(PTR, eval_ret.r, 'double');
+ setValue(PTR + ELEM_LEN, eval_ret.g, 'double');
+ setValue(PTR + ELEM_LEN*2, eval_ret.b, 'double');
+ setValue(PTR + ELEM_LEN*3, typeof eval_ret.a === 'number' ? eval_ret.a : 1, 'double');
return 14; // COLOR
}
break;
}
return 0; // NIL
- }, js_data, sizeof *js_data, p_code.utf8().get_data(), p_use_global_exec_context));
+ }, p_code.utf8().get_data(), p_use_global_exec_context, js_data, sizeof *js_data, &arr, &arr_write));
/* clang-format on */
switch (return_type) {
case Variant::BOOL:
- return !!js_data->i;
- case Variant::INT:
- return js_data->i;
+ return js_data->b;
case Variant::REAL:
return js_data->d;
case Variant::STRING: {
@@ -153,7 +174,10 @@ Variant JavaScript::eval(const String &p_code, bool p_use_global_exec_context) {
case Variant::RECT2:
return Rect2(js_data[0].d, js_data[1].d, js_data[2].d, js_data[3].d);
case Variant::COLOR:
- return Color(js_data[0].d / 255., js_data[1].d / 255., js_data[2].d / 255., js_data[3].d);
+ return Color(js_data[0].d, js_data[1].d, js_data[2].d, js_data[3].d);
+ case Variant::POOL_BYTE_ARRAY:
+ arr_write = PoolByteArray::Write();
+ return arr;
}
return Variant();
}
diff --git a/platform/osx/export/export.cpp b/platform/osx/export/export.cpp
index 0ba0ddec7d..8a6f1dc04c 100644
--- a/platform/osx/export/export.cpp
+++ b/platform/osx/export/export.cpp
@@ -244,7 +244,7 @@ Error EditorExportPlatformOSX::_code_sign(const Ref<EditorExportPreset> &p_prese
args.push_back(p_path);
String str;
- Error err = OS::get_singleton()->execute("/usr/bin/codesign", args, true, NULL, &str, NULL, true);
+ Error err = OS::get_singleton()->execute("codesign", args, true, NULL, &str, NULL, true);
ERR_FAIL_COND_V(err != OK, err);
print_line("codesign: " + str);
@@ -271,7 +271,7 @@ Error EditorExportPlatformOSX::_create_dmg(const String &p_dmg_path, const Strin
args.push_back(p_app_path_name);
String str;
- Error err = OS::get_singleton()->execute("/usr/bin/hdiutil", args, true, NULL, &str, NULL, true);
+ Error err = OS::get_singleton()->execute("hdiutil", args, true, NULL, &str, NULL, true);
ERR_FAIL_COND_V(err != OK, err);
print_line("hdiutil returned: " + str);
diff --git a/platform/osx/os_osx.h b/platform/osx/os_osx.h
index 05adfeb0f5..420bb50af9 100644
--- a/platform/osx/os_osx.h
+++ b/platform/osx/os_osx.h
@@ -219,6 +219,9 @@ public:
virtual bool _check_internal_feature_support(const String &p_feature);
+ virtual void set_use_vsync(bool p_enable);
+ virtual bool is_vsync_enabled() const;
+
void run();
void set_mouse_mode(MouseMode p_mode);
diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm
index 2c81a02014..33586086dc 100644
--- a/platform/osx/os_osx.mm
+++ b/platform/osx/os_osx.mm
@@ -1206,7 +1206,9 @@ typedef UnixTerminalLogger OSXTerminalLogger;
void OS_OSX::initialize_logger() {
Vector<Logger *> loggers;
loggers.push_back(memnew(OSXTerminalLogger));
- loggers.push_back(memnew(RotatedFileLogger("user://logs/log.txt")));
+ // FIXME: Reenable once we figure out how to get this properly in user://
+ // instead of littering the user's working dirs (res:// + pwd) with log files (GH-12277)
+ //loggers.push_back(memnew(RotatedFileLogger("user://logs/log.txt")));
_set_logger(memnew(CompositeLogger(loggers)));
}
@@ -1832,6 +1834,8 @@ OS::LatinKeyboardVariant OS_OSX::get_latin_keyboard_variant() const {
layout = LATIN_KEYBOARD_DVORAK;
} else if ([test isEqualToString:@"xvlcwk"]) {
layout = LATIN_KEYBOARD_NEO;
+ } else if ([test isEqualToString:@"qwfpgj"]) {
+ layout = LATIN_KEYBOARD_COLEMAK;
}
[test release];
@@ -1954,6 +1958,23 @@ Error OS_OSX::move_to_trash(const String &p_path) {
return OK;
}
+void OS_OSX::set_use_vsync(bool p_enable) {
+ CGLContextObj ctx = CGLGetCurrentContext();
+ if (ctx) {
+ GLint swapInterval = p_enable ? 1 : 0;
+ CGLSetParameter(ctx, kCGLCPSwapInterval, &swapInterval);
+ }
+}
+
+bool OS_OSX::is_vsync_enabled() const {
+ GLint swapInterval = 0;
+ CGLContextObj ctx = CGLGetCurrentContext();
+ if (ctx) {
+ CGLGetParameter(ctx, kCGLCPSwapInterval, &swapInterval);
+ }
+ return swapInterval ? true : false;
+}
+
OS_OSX *OS_OSX::singleton = NULL;
OS_OSX::OS_OSX() {
diff --git a/platform/server/detect.py b/platform/server/detect.py
index 04b38f280d..ffec2af933 100644
--- a/platform/server/detect.py
+++ b/platform/server/detect.py
@@ -12,6 +12,9 @@ def get_name():
def can_build():
+ # Doesn't build against Godot 3.0 for now, disable to avoid confusing users
+ return False
+
if (os.name != "posix" or sys.platform == "darwin"):
return False
diff --git a/platform/uwp/SCsub b/platform/uwp/SCsub
index 7ee5aa2ac3..bbd329a7e5 100644
--- a/platform/uwp/SCsub
+++ b/platform/uwp/SCsub
@@ -8,6 +8,7 @@ files = [
'#platform/windows/packet_peer_udp_winsock.cpp',
'#platform/windows/stream_peer_winsock.cpp',
'#platform/windows/key_mapping_win.cpp',
+ '#platform/windows/windows_terminal_logger.cpp',
'joypad_uwp.cpp',
'power_uwp.cpp',
'gl_context_egl.cpp',
diff --git a/platform/uwp/os_uwp.cpp b/platform/uwp/os_uwp.cpp
index ff5a935229..c67e5bae05 100644
--- a/platform/uwp/os_uwp.cpp
+++ b/platform/uwp/os_uwp.cpp
@@ -186,7 +186,9 @@ void OSUWP::initialize_core() {
void OSUWP::initialize_logger() {
Vector<Logger *> loggers;
loggers.push_back(memnew(WindowsTerminalLogger));
- loggers.push_back(memnew(RotatedFileLogger("user://logs/log.txt")));
+ // FIXME: Reenable once we figure out how to get this properly in user://
+ // instead of littering the user's working dirs (res:// + pwd) with log files (GH-12277)
+ //loggers.push_back(memnew(RotatedFileLogger("user://logs/log.txt")));
_set_logger(memnew(CompositeLogger(loggers)));
}
diff --git a/platform/windows/context_gl_win.cpp b/platform/windows/context_gl_win.cpp
index 8640f27699..64b6d202a1 100644
--- a/platform/windows/context_gl_win.cpp
+++ b/platform/windows/context_gl_win.cpp
@@ -27,7 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#if defined(OPENGL_ENABLED) || defined(LEGACYGL_ENABLED) || defined(GLES2_ENABLED)
+#if defined(OPENGL_ENABLED) || defined(GLES2_ENABLED)
//
// C++ Implementation: context_gl_x11
diff --git a/platform/windows/context_gl_win.h b/platform/windows/context_gl_win.h
index 912d4d0133..0059cbc311 100644
--- a/platform/windows/context_gl_win.h
+++ b/platform/windows/context_gl_win.h
@@ -27,7 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#if defined(OPENGL_ENABLED) || defined(LEGACYGL_ENABLED) || defined(GLES2_ENABLED)
+#if defined(OPENGL_ENABLED) || defined(GLES2_ENABLED)
//
// C++ Interface: context_gl_x11
//
diff --git a/platform/windows/detect.py b/platform/windows/detect.py
index 031b397988..bac5df5668 100644
--- a/platform/windows/detect.py
+++ b/platform/windows/detect.py
@@ -44,7 +44,6 @@ def can_build():
if (os.system(mingw64 + test) == 0 or os.system(mingw32 + test) == 0):
return True
- print("Could not detect MinGW. Ensure its binaries are in your PATH or that MINGW32_PREFIX or MINGW64_PREFIX are properly defined.")
return False
@@ -265,10 +264,7 @@ def configure(env):
if env['use_lto']:
env.Append(CCFLAGS=['-flto'])
- if not env['use_llvm'] and env.GetOption("num_jobs") > 1:
- env.Append(LINKFLAGS=['-flto=' + str(env.GetOption("num_jobs"))])
- else:
- env.Append(LINKFLAGS=['-flto'])
+ env.Append(LINKFLAGS=['-flto=' + str(env.GetOption("num_jobs"))])
## Compile flags
diff --git a/platform/windows/key_mapping_win.cpp b/platform/windows/key_mapping_win.cpp
index 57f8e965de..76bb5d5723 100644
--- a/platform/windows/key_mapping_win.cpp
+++ b/platform/windows/key_mapping_win.cpp
@@ -50,7 +50,7 @@ static _WinTranslatePair _vk_to_keycode[] = {
{ KEY_CONTROL, VK_CONTROL }, //(0x11)
- { KEY_MENU, VK_MENU }, //(0x12)
+ { KEY_ALT, VK_MENU }, //(0x12)
{ KEY_PAUSE, VK_PAUSE }, //(0x13)
diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp
index c27e7c0d2b..ac78dddf0c 100644
--- a/platform/windows/os_windows.cpp
+++ b/platform/windows/os_windows.cpp
@@ -209,7 +209,9 @@ void OS_Windows::initialize_core() {
void OS_Windows::initialize_logger() {
Vector<Logger *> loggers;
loggers.push_back(memnew(WindowsTerminalLogger));
- loggers.push_back(memnew(RotatedFileLogger("user://logs/log.txt")));
+ // FIXME: Reenable once we figure out how to get this properly in user://
+ // instead of littering the user's working dirs (res:// + pwd) with log files (GH-12277)
+ //loggers.push_back(memnew(RotatedFileLogger("user://logs/log.txt")));
_set_logger(memnew(CompositeLogger(loggers)));
}
diff --git a/platform/x11/context_gl_x11.cpp b/platform/x11/context_gl_x11.cpp
index 0cc9734119..4f9d4a84b9 100644
--- a/platform/x11/context_gl_x11.cpp
+++ b/platform/x11/context_gl_x11.cpp
@@ -30,7 +30,7 @@
#include "context_gl_x11.h"
#ifdef X11_ENABLED
-#if defined(OPENGL_ENABLED) || defined(LEGACYGL_ENABLED)
+#if defined(OPENGL_ENABLED)
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
diff --git a/platform/x11/context_gl_x11.h b/platform/x11/context_gl_x11.h
index ba01b51d59..c37bac5e9b 100644
--- a/platform/x11/context_gl_x11.h
+++ b/platform/x11/context_gl_x11.h
@@ -35,7 +35,7 @@
*/
#ifdef X11_ENABLED
-#if defined(OPENGL_ENABLED) || defined(LEGACYGL_ENABLED)
+#if defined(OPENGL_ENABLED)
#include "drivers/gl_context/context_gl.h"
#include "os/os.h"
diff --git a/platform/x11/detect.py b/platform/x11/detect.py
index 1f7f67fe10..56bc1d4c59 100644
--- a/platform/x11/detect.py
+++ b/platform/x11/detect.py
@@ -101,6 +101,10 @@ def configure(env):
## Compiler configuration
+ if 'CXX' in env and 'clang' in env['CXX']:
+ # Convenience check to enforce the use_llvm overrides when CXX is clang(++)
+ env['use_llvm'] = True
+
if env['use_llvm']:
if ('clang++' not in env['CXX']):
env["CC"] = "clang"
@@ -239,6 +243,9 @@ def configure(env):
if (platform.system() == "Linux"):
env.Append(LIBS=['dl'])
+ if (platform.system().find("BSD") >= 0):
+ env.Append(LIBS=['execinfo'])
+
## Cross-compilation
if (is64 and env["bits"] == "32"):
diff --git a/platform/x11/os_x11.cpp b/platform/x11/os_x11.cpp
index 041666a594..09193e0a2b 100644
--- a/platform/x11/os_x11.cpp
+++ b/platform/x11/os_x11.cpp
@@ -35,7 +35,11 @@
#include "servers/physics/physics_server_sw.h"
#include "servers/visual/visual_server_raster.h"
#include "servers/visual/visual_server_wrap_mt.h"
+
+#ifdef HAVE_MNTENT
#include <mntent.h>
+#endif
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -235,7 +239,7 @@ void OS_X11::initialize(const VideoMode &p_desired, int p_video_driver, int p_au
// maybe contextgl wants to be in charge of creating the window
//print_line("def videomode "+itos(current_videomode.width)+","+itos(current_videomode.height));
-#if defined(OPENGL_ENABLED) || defined(LEGACYGL_ENABLED)
+#if defined(OPENGL_ENABLED)
context_gl = memnew(ContextGL_X11(x11_display, x11_window, current_videomode, true));
context_gl->initialize();
@@ -533,7 +537,7 @@ void OS_X11::finalize() {
XUnmapWindow(x11_display, x11_window);
XDestroyWindow(x11_display, x11_window);
-#if defined(OPENGL_ENABLED) || defined(LEGACYGL_ENABLED)
+#if defined(OPENGL_ENABLED)
memdelete(context_gl);
#endif
for (int i = 0; i < CURSOR_MAX; i++) {
@@ -1939,7 +1943,7 @@ Error OS_X11::shell_open(String p_uri) {
Error ok;
List<String> args;
args.push_back(p_uri);
- ok = execute("/usr/bin/xdg-open", args, false);
+ ok = execute("xdg-open", args, false);
if (ok == OK)
return OK;
ok = execute("gnome-open", args, false);
@@ -2003,7 +2007,7 @@ String OS_X11::get_system_dir(SystemDir p_dir) const {
String pipe;
List<String> arg;
arg.push_back(xdgparam);
- Error err = const_cast<OS_X11 *>(this)->execute("/usr/bin/xdg-user-dir", arg, true, NULL, &pipe);
+ Error err = const_cast<OS_X11 *>(this)->execute("xdg-user-dir", arg, true, NULL, &pipe);
if (err != OK)
return ".";
return pipe.strip_edges();
@@ -2053,7 +2057,7 @@ void OS_X11::alert(const String &p_alert, const String &p_title) {
args.push_back(p_title);
args.push_back(p_alert);
- execute("/usr/bin/xmessage", args, true);
+ execute("xmessage", args, true);
}
void OS_X11::set_icon(const Ref<Image> &p_icon) {
@@ -2182,6 +2186,7 @@ static String get_mountpoint(const String &p_path) {
return "";
}
+#ifdef HAVE_MNTENT
dev_t dev = s.st_dev;
FILE *fd = setmntent("/proc/mounts", "r");
if (!fd) {
@@ -2199,6 +2204,7 @@ static String get_mountpoint(const String &p_path) {
}
endmntent(fd);
+#endif
return "";
}
@@ -2236,17 +2242,49 @@ Error OS_X11::move_to_trash(const String &p_path) {
List<String> args;
args.push_back("-p");
args.push_back(trashcan);
- Error err = execute("/bin/mkdir", args, true);
+ Error err = execute("mkdir", args, true);
if (err == OK) {
List<String> args2;
args2.push_back(p_path);
args2.push_back(trashcan);
- err = execute("/bin/mv", args2, true);
+ err = execute("mv", args2, true);
}
return err;
}
+OS::LatinKeyboardVariant OS_X11::get_latin_keyboard_variant() const {
+
+ XkbDescRec *xkbdesc = XkbAllocKeyboard();
+ ERR_FAIL_COND_V(!xkbdesc, LATIN_KEYBOARD_QWERTY);
+
+ XkbGetNames(x11_display, XkbSymbolsNameMask, xkbdesc);
+ ERR_FAIL_COND_V(!xkbdesc->names, LATIN_KEYBOARD_QWERTY);
+ ERR_FAIL_COND_V(!xkbdesc->names->symbols, LATIN_KEYBOARD_QWERTY);
+
+ char *layout = XGetAtomName(x11_display, xkbdesc->names->symbols);
+ ERR_FAIL_COND_V(!layout, LATIN_KEYBOARD_QWERTY);
+
+ Vector<String> info = String(layout).split("+");
+ ERR_FAIL_INDEX_V(1, info.size(), LATIN_KEYBOARD_QWERTY);
+
+ if (info[1].find("colemak") != -1) {
+ return LATIN_KEYBOARD_COLEMAK;
+ } else if (info[1].find("qwertz") != -1) {
+ return LATIN_KEYBOARD_QWERTZ;
+ } else if (info[1].find("azerty") != -1) {
+ return LATIN_KEYBOARD_AZERTY;
+ } else if (info[1].find("qzerty") != -1) {
+ return LATIN_KEYBOARD_QZERTY;
+ } else if (info[1].find("dvorak") != -1) {
+ return LATIN_KEYBOARD_DVORAK;
+ } else if (info[1].find("neo") != -1) {
+ return LATIN_KEYBOARD_NEO;
+ }
+
+ return LATIN_KEYBOARD_QWERTY;
+}
+
OS_X11::OS_X11() {
#ifdef PULSEAUDIO_ENABLED
diff --git a/platform/x11/os_x11.h b/platform/x11/os_x11.h
index 0d5c272ed4..b71b456d49 100644
--- a/platform/x11/os_x11.h
+++ b/platform/x11/os_x11.h
@@ -94,7 +94,7 @@ class OS_X11 : public OS_Unix {
int xdnd_version;
-#if defined(OPENGL_ENABLED) || defined(LEGACYGL_ENABLED)
+#if defined(OPENGL_ENABLED)
ContextGL_X11 *context_gl;
#endif
//Rasterizer *rasterizer;
@@ -275,6 +275,8 @@ public:
virtual Error move_to_trash(const String &p_path);
+ virtual LatinKeyboardVariant get_latin_keyboard_variant() const;
+
OS_X11();
};
diff --git a/scene/2d/camera_2d.cpp b/scene/2d/camera_2d.cpp
index 4fcd6893b8..d65a3bfe80 100644
--- a/scene/2d/camera_2d.cpp
+++ b/scene/2d/camera_2d.cpp
@@ -735,8 +735,8 @@ void Camera2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "editor_draw_limits"), "set_limit_drawing_enabled", "is_limit_drawing_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "editor_draw_drag_margin"), "set_margin_drawing_enabled", "is_margin_drawing_enabled");
- BIND_ENUM_CONSTANT(ANCHOR_MODE_DRAG_CENTER);
BIND_ENUM_CONSTANT(ANCHOR_MODE_FIXED_TOP_LEFT);
+ BIND_ENUM_CONSTANT(ANCHOR_MODE_DRAG_CENTER);
}
Camera2D::Camera2D() {
diff --git a/scene/2d/canvas_item.cpp b/scene/2d/canvas_item.cpp
index d9bb6576d9..b41ba7f590 100644
--- a/scene/2d/canvas_item.cpp
+++ b/scene/2d/canvas_item.cpp
@@ -1045,11 +1045,11 @@ void CanvasItem::_bind_methods() {
BIND_ENUM_CONSTANT(BLEND_MODE_MUL);
BIND_ENUM_CONSTANT(BLEND_MODE_PREMULT_ALPHA);
+ BIND_CONSTANT(NOTIFICATION_TRANSFORM_CHANGED);
BIND_CONSTANT(NOTIFICATION_DRAW);
BIND_CONSTANT(NOTIFICATION_VISIBILITY_CHANGED);
BIND_CONSTANT(NOTIFICATION_ENTER_CANVAS);
BIND_CONSTANT(NOTIFICATION_EXIT_CANVAS);
- BIND_CONSTANT(NOTIFICATION_TRANSFORM_CHANGED);
}
Transform2D CanvasItem::get_canvas_transform() const {
diff --git a/scene/2d/joints_2d.cpp b/scene/2d/joints_2d.cpp
index 69bad1623f..b98cdcc365 100644
--- a/scene/2d/joints_2d.cpp
+++ b/scene/2d/joints_2d.cpp
@@ -33,19 +33,49 @@
#include "physics_body_2d.h"
#include "servers/physics_2d_server.h"
-void Joint2D::_update_joint() {
-
- if (!is_inside_tree())
- return;
+void Joint2D::_update_joint(bool p_only_free) {
if (joint.is_valid()) {
+ if (ba.is_valid() && bb.is_valid())
+ Physics2DServer::get_singleton()->body_remove_collision_exception(ba, bb);
+
Physics2DServer::get_singleton()->free(joint);
+ joint = RID();
+ ba = RID();
+ bb = RID();
}
- joint = RID();
+ if (p_only_free || !is_inside_tree())
+ return;
+
+ Node *node_a = has_node(get_node_a()) ? get_node(get_node_a()) : (Node *)NULL;
+ Node *node_b = has_node(get_node_b()) ? get_node(get_node_b()) : (Node *)NULL;
+
+ if (!node_a || !node_b)
+ return;
+
+ PhysicsBody2D *body_a = Object::cast_to<PhysicsBody2D>(node_a);
+ PhysicsBody2D *body_b = Object::cast_to<PhysicsBody2D>(node_b);
+
+ if (!body_a || !body_b)
+ return;
+
+ if (!body_a) {
+ SWAP(body_a, body_b);
+ }
+
+ joint = _configure_joint(body_a, body_b);
+
+ if (!joint.is_valid())
+ return;
- joint = _configure_joint();
Physics2DServer::get_singleton()->get_singleton()->joint_set_param(joint, Physics2DServer::JOINT_PARAM_BIAS, bias);
+
+ ba = body_a->get_rid();
+ bb = body_b->get_rid();
+
+ if (exclude_from_collision)
+ Physics2DServer::get_singleton()->body_add_collision_exception(body_a->get_rid(), body_b->get_rid());
}
void Joint2D::set_node_a(const NodePath &p_node_a) {
@@ -83,9 +113,7 @@ void Joint2D::_notification(int p_what) {
} break;
case NOTIFICATION_EXIT_TREE: {
if (joint.is_valid()) {
-
- Physics2DServer::get_singleton()->free(joint);
- joint = RID();
+ _update_joint(true);
}
} break;
}
@@ -164,29 +192,8 @@ void PinJoint2D::_notification(int p_what) {
}
}
-RID PinJoint2D::_configure_joint() {
-
- Node *node_a = has_node(get_node_a()) ? get_node(get_node_a()) : (Node *)NULL;
- Node *node_b = has_node(get_node_b()) ? get_node(get_node_b()) : (Node *)NULL;
-
- if (!node_a && !node_b)
- return RID();
+RID PinJoint2D::_configure_joint(PhysicsBody2D *body_a, PhysicsBody2D *body_b) {
- PhysicsBody2D *body_a = Object::cast_to<PhysicsBody2D>(node_a);
- PhysicsBody2D *body_b = Object::cast_to<PhysicsBody2D>(node_b);
-
- if (!body_a && !body_b)
- return RID();
-
- if (!body_a) {
- SWAP(body_a, body_b);
- } else if (body_b) {
- //add a collision exception between both
- if (get_exclude_nodes_from_collision())
- Physics2DServer::get_singleton()->body_add_collision_exception(body_a->get_rid(), body_b->get_rid());
- else
- Physics2DServer::get_singleton()->body_remove_collision_exception(body_a->get_rid(), body_b->get_rid());
- }
RID pj = Physics2DServer::get_singleton()->pin_joint_create(get_global_transform().get_origin(), body_a->get_rid(), body_b ? body_b->get_rid() : RID());
Physics2DServer::get_singleton()->pin_joint_set_param(pj, Physics2DServer::PIN_JOINT_SOFTNESS, softness);
return pj;
@@ -241,24 +248,7 @@ void GrooveJoint2D::_notification(int p_what) {
}
}
-RID GrooveJoint2D::_configure_joint() {
-
- Node *node_a = has_node(get_node_a()) ? get_node(get_node_a()) : (Node *)NULL;
- Node *node_b = has_node(get_node_b()) ? get_node(get_node_b()) : (Node *)NULL;
-
- if (!node_a || !node_b)
- return RID();
-
- PhysicsBody2D *body_a = Object::cast_to<PhysicsBody2D>(node_a);
- PhysicsBody2D *body_b = Object::cast_to<PhysicsBody2D>(node_b);
-
- if (!body_a || !body_b)
- return RID();
-
- if (get_exclude_nodes_from_collision())
- Physics2DServer::get_singleton()->body_add_collision_exception(body_a->get_rid(), body_b->get_rid());
- else
- Physics2DServer::get_singleton()->body_remove_collision_exception(body_a->get_rid(), body_b->get_rid());
+RID GrooveJoint2D::_configure_joint(PhysicsBody2D *body_a, PhysicsBody2D *body_b) {
Transform2D gt = get_global_transform();
Vector2 groove_A1 = gt.get_origin();
@@ -330,24 +320,7 @@ void DampedSpringJoint2D::_notification(int p_what) {
}
}
-RID DampedSpringJoint2D::_configure_joint() {
-
- Node *node_a = has_node(get_node_a()) ? get_node(get_node_a()) : (Node *)NULL;
- Node *node_b = has_node(get_node_b()) ? get_node(get_node_b()) : (Node *)NULL;
-
- if (!node_a || !node_b)
- return RID();
-
- PhysicsBody2D *body_a = Object::cast_to<PhysicsBody2D>(node_a);
- PhysicsBody2D *body_b = Object::cast_to<PhysicsBody2D>(node_b);
-
- if (!body_a || !body_b)
- return RID();
-
- if (get_exclude_nodes_from_collision())
- Physics2DServer::get_singleton()->body_add_collision_exception(body_a->get_rid(), body_b->get_rid());
- else
- Physics2DServer::get_singleton()->body_remove_collision_exception(body_a->get_rid(), body_b->get_rid());
+RID DampedSpringJoint2D::_configure_joint(PhysicsBody2D *body_a, PhysicsBody2D *body_b) {
Transform2D gt = get_global_transform();
Vector2 anchor_A = gt.get_origin();
diff --git a/scene/2d/joints_2d.h b/scene/2d/joints_2d.h
index 685299abc6..a6292be51c 100644
--- a/scene/2d/joints_2d.h
+++ b/scene/2d/joints_2d.h
@@ -32,11 +32,14 @@
#include "node_2d.h"
+class PhysicsBody2D;
+
class Joint2D : public Node2D {
GDCLASS(Joint2D, Node2D);
RID joint;
+ RID ba, bb;
NodePath a;
NodePath b;
@@ -45,10 +48,10 @@ class Joint2D : public Node2D {
bool exclude_from_collision;
protected:
- void _update_joint();
+ void _update_joint(bool p_only_free = false);
void _notification(int p_what);
- virtual RID _configure_joint() = 0;
+ virtual RID _configure_joint(PhysicsBody2D *body_a, PhysicsBody2D *body_b) = 0;
static void _bind_methods();
@@ -77,7 +80,7 @@ class PinJoint2D : public Joint2D {
protected:
void _notification(int p_what);
- virtual RID _configure_joint();
+ virtual RID _configure_joint(PhysicsBody2D *body_a, PhysicsBody2D *body_b);
static void _bind_methods();
public:
@@ -96,7 +99,7 @@ class GrooveJoint2D : public Joint2D {
protected:
void _notification(int p_what);
- virtual RID _configure_joint();
+ virtual RID _configure_joint(PhysicsBody2D *body_a, PhysicsBody2D *body_b);
static void _bind_methods();
public:
@@ -120,7 +123,7 @@ class DampedSpringJoint2D : public Joint2D {
protected:
void _notification(int p_what);
- virtual RID _configure_joint();
+ virtual RID _configure_joint(PhysicsBody2D *body_a, PhysicsBody2D *body_b);
static void _bind_methods();
public:
diff --git a/scene/2d/navigation_polygon.cpp b/scene/2d/navigation_polygon.cpp
index 352ec3b300..c53241e985 100644
--- a/scene/2d/navigation_polygon.cpp
+++ b/scene/2d/navigation_polygon.cpp
@@ -329,7 +329,7 @@ void NavigationPolygonInstance::_notification(int p_what) {
break;
}
- c = Object::cast_to<Node2D>(get_parent());
+ c = Object::cast_to<Node2D>(c->get_parent());
}
} break;
@@ -452,7 +452,7 @@ String NavigationPolygonInstance::get_configuration_warning() const {
return String();
}
- c = Object::cast_to<Node2D>(get_parent());
+ c = Object::cast_to<Node2D>(c->get_parent());
}
return TTR("NavigationPolygonInstance must be a child or grandchild to a Navigation2D node. It only provides navigation data.");
diff --git a/scene/2d/parallax_background.cpp b/scene/2d/parallax_background.cpp
index 0ddcb7b51b..a13ce6278e 100644
--- a/scene/2d/parallax_background.cpp
+++ b/scene/2d/parallax_background.cpp
@@ -49,8 +49,8 @@ void ParallaxBackground::_notification(int p_what) {
void ParallaxBackground::_camera_moved(const Transform2D &p_transform) {
- set_scroll_offset(p_transform.get_origin());
set_scroll_scale(p_transform.get_scale().dot(Vector2(0.5, 0.5)));
+ set_scroll_offset(p_transform.get_origin() / p_transform.get_scale());
}
void ParallaxBackground::set_scroll_scale(float p_scale) {
diff --git a/scene/2d/physics_body_2d.cpp b/scene/2d/physics_body_2d.cpp
index d3b37ae903..f0ee64a53f 100644
--- a/scene/2d/physics_body_2d.cpp
+++ b/scene/2d/physics_body_2d.cpp
@@ -910,10 +910,10 @@ void RigidBody2D::_bind_methods() {
ADD_SIGNAL(MethodInfo("body_exited", PropertyInfo(Variant::OBJECT, "body")));
ADD_SIGNAL(MethodInfo("sleeping_state_changed"));
- BIND_ENUM_CONSTANT(MODE_STATIC);
- BIND_ENUM_CONSTANT(MODE_KINEMATIC);
BIND_ENUM_CONSTANT(MODE_RIGID);
+ BIND_ENUM_CONSTANT(MODE_STATIC);
BIND_ENUM_CONSTANT(MODE_CHARACTER);
+ BIND_ENUM_CONSTANT(MODE_KINEMATIC);
BIND_ENUM_CONSTANT(CCD_MODE_DISABLED);
BIND_ENUM_CONSTANT(CCD_MODE_CAST_RAY);
diff --git a/scene/2d/ray_cast_2d.cpp b/scene/2d/ray_cast_2d.cpp
index b272da46f8..ff23b3183b 100644
--- a/scene/2d/ray_cast_2d.cpp
+++ b/scene/2d/ray_cast_2d.cpp
@@ -46,14 +46,14 @@ Vector2 RayCast2D::get_cast_to() const {
return cast_to;
}
-void RayCast2D::set_collision_layer(uint32_t p_layer) {
+void RayCast2D::set_collision_mask(uint32_t p_mask) {
- collision_layer = p_layer;
+ collision_mask = p_mask;
}
-uint32_t RayCast2D::get_collision_layer() const {
+uint32_t RayCast2D::get_collision_mask() const {
- return collision_layer;
+ return collision_mask;
}
void RayCast2D::set_type_mask(uint32_t p_mask) {
@@ -61,6 +61,21 @@ void RayCast2D::set_type_mask(uint32_t p_mask) {
type_mask = p_mask;
}
+void RayCast2D::set_collision_mask_bit(int p_bit, bool p_value) {
+
+ uint32_t mask = get_collision_mask();
+ if (p_value)
+ mask |= 1 << p_bit;
+ else
+ mask &= ~(1 << p_bit);
+ set_collision_mask(mask);
+}
+
+bool RayCast2D::get_collision_mask_bit(int p_bit) const {
+
+ return get_collision_mask() & (1 << p_bit);
+}
+
uint32_t RayCast2D::get_type_mask() const {
return type_mask;
@@ -203,7 +218,7 @@ void RayCast2D::_update_raycast_state() {
Physics2DDirectSpaceState::RayResult rr;
- if (dss->intersect_ray(gt.get_origin(), gt.xform(to), rr, exclude, collision_layer, type_mask)) {
+ if (dss->intersect_ray(gt.get_origin(), gt.xform(to), rr, exclude, collision_mask, type_mask)) {
collided = true;
against = rr.collider_id;
@@ -276,8 +291,11 @@ void RayCast2D::_bind_methods() {
ClassDB::bind_method(D_METHOD("clear_exceptions"), &RayCast2D::clear_exceptions);
- ClassDB::bind_method(D_METHOD("set_collision_layer", "layer"), &RayCast2D::set_collision_layer);
- ClassDB::bind_method(D_METHOD("get_collision_layer"), &RayCast2D::get_collision_layer);
+ ClassDB::bind_method(D_METHOD("set_collision_mask", "mask"), &RayCast2D::set_collision_mask);
+ ClassDB::bind_method(D_METHOD("get_collision_mask"), &RayCast2D::get_collision_mask);
+
+ ClassDB::bind_method(D_METHOD("set_collision_mask_bit", "bit", "value"), &RayCast2D::set_collision_mask_bit);
+ ClassDB::bind_method(D_METHOD("get_collision_mask_bit", "bit"), &RayCast2D::get_collision_mask_bit);
ClassDB::bind_method(D_METHOD("set_type_mask", "mask"), &RayCast2D::set_type_mask);
ClassDB::bind_method(D_METHOD("get_type_mask"), &RayCast2D::get_type_mask);
@@ -288,7 +306,7 @@ void RayCast2D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "enabled"), "set_enabled", "is_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "exclude_parent"), "set_exclude_parent_body", "get_exclude_parent_body");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR2, "cast_to"), "set_cast_to", "get_cast_to");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "collision_layer", PROPERTY_HINT_LAYERS_2D_PHYSICS), "set_collision_layer", "get_collision_layer");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "collision_mask", PROPERTY_HINT_LAYERS_2D_PHYSICS), "set_collision_mask", "get_collision_mask");
ADD_PROPERTY(PropertyInfo(Variant::INT, "type_mask", PROPERTY_HINT_FLAGS, "Static,Kinematic,Rigid,Character,Area"), "set_type_mask", "get_type_mask");
}
@@ -298,7 +316,7 @@ RayCast2D::RayCast2D() {
against = 0;
collided = false;
against_shape = 0;
- collision_layer = 1;
+ collision_mask = 1;
type_mask = Physics2DDirectSpaceState::TYPE_MASK_COLLISION;
cast_to = Vector2(0, 50);
exclude_parent_body = true;
diff --git a/scene/2d/ray_cast_2d.h b/scene/2d/ray_cast_2d.h
index 338de814d2..c13ddfdc58 100644
--- a/scene/2d/ray_cast_2d.h
+++ b/scene/2d/ray_cast_2d.h
@@ -43,7 +43,7 @@ class RayCast2D : public Node2D {
Vector2 collision_point;
Vector2 collision_normal;
Set<RID> exclude;
- uint32_t collision_layer;
+ uint32_t collision_mask;
uint32_t type_mask;
bool exclude_parent_body;
@@ -61,8 +61,11 @@ public:
void set_cast_to(const Vector2 &p_point);
Vector2 get_cast_to() const;
- void set_collision_layer(uint32_t p_layer);
- uint32_t get_collision_layer() const;
+ void set_collision_mask(uint32_t p_mask);
+ uint32_t get_collision_mask() const;
+
+ void set_collision_mask_bit(int p_bit, bool p_value);
+ bool get_collision_mask_bit(int p_bit) const;
void set_type_mask(uint32_t p_mask);
uint32_t get_type_mask() const;
diff --git a/scene/2d/visibility_notifier_2d.cpp b/scene/2d/visibility_notifier_2d.cpp
index ca7b6aa0e4..b0fd57baf5 100644
--- a/scene/2d/visibility_notifier_2d.cpp
+++ b/scene/2d/visibility_notifier_2d.cpp
@@ -341,12 +341,12 @@ void VisibilityEnabler2D::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "process_parent"), "set_enabler", "is_enabler_enabled", ENABLER_PARENT_PROCESS);
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "physics_process_parent"), "set_enabler", "is_enabler_enabled", ENABLER_PARENT_PHYSICS_PROCESS);
- BIND_ENUM_CONSTANT(ENABLER_FREEZE_BODIES);
BIND_ENUM_CONSTANT(ENABLER_PAUSE_ANIMATIONS);
+ BIND_ENUM_CONSTANT(ENABLER_FREEZE_BODIES);
BIND_ENUM_CONSTANT(ENABLER_PAUSE_PARTICLES);
- BIND_ENUM_CONSTANT(ENABLER_PAUSE_ANIMATED_SPRITES);
BIND_ENUM_CONSTANT(ENABLER_PARENT_PROCESS);
BIND_ENUM_CONSTANT(ENABLER_PARENT_PHYSICS_PROCESS);
+ BIND_ENUM_CONSTANT(ENABLER_PAUSE_ANIMATED_SPRITES);
BIND_ENUM_CONSTANT(ENABLER_MAX);
}
diff --git a/scene/3d/SCsub b/scene/3d/SCsub
index 72739b527e..4008f4f196 100644
--- a/scene/3d/SCsub
+++ b/scene/3d/SCsub
@@ -7,6 +7,9 @@ if env['disable_3d']:
env.scene_sources.append("3d/spatial.cpp")
env.scene_sources.append("3d/skeleton.cpp")
+ env.scene_sources.append("3d/particles.cpp")
+ env.scene_sources.append("3d/visual_instance.cpp")
+ env.scene_sources.append("3d/scenario_fx.cpp")
else:
env.add_source_files(env.scene_sources, "*.cpp")
diff --git a/scene/3d/arvr_nodes.cpp b/scene/3d/arvr_nodes.cpp
index c6b6c02129..064a249190 100644
--- a/scene/3d/arvr_nodes.cpp
+++ b/scene/3d/arvr_nodes.cpp
@@ -204,7 +204,7 @@ void ARVRController::_notification(int p_what) {
int mask = 1;
// check button states
for (int i = 0; i < 16; i++) {
- bool was_pressed = (button_states && mask) == mask;
+ bool was_pressed = (button_states & mask) == mask;
bool is_pressed = Input::get_singleton()->is_joy_button_pressed(joy_id, i);
if (!was_pressed && is_pressed) {
@@ -336,6 +336,7 @@ String ARVRController::get_configuration_warning() const {
ARVRController::ARVRController() {
controller_id = 0;
is_active = true;
+ button_states = 0;
};
ARVRController::~ARVRController(){
diff --git a/scene/3d/audio_stream_player_3d.cpp b/scene/3d/audio_stream_player_3d.cpp
index 3c92814c87..ad1a15f363 100644
--- a/scene/3d/audio_stream_player_3d.cpp
+++ b/scene/3d/audio_stream_player_3d.cpp
@@ -869,7 +869,7 @@ void AudioStreamPlayer3D::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::REAL, "attenuation_filter_cutoff_hz", PROPERTY_HINT_RANGE, "50,50000,1"), "set_attenuation_filter_cutoff_hz", "get_attenuation_filter_cutoff_hz");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "attenuation_filter_db", PROPERTY_HINT_RANGE, "-80,0,0.1"), "set_attenuation_filter_db", "get_attenuation_filter_db");
ADD_GROUP("Doppler", "doppler_");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "doppler_tracking", PROPERTY_HINT_ENUM, "Disabled,Idle,Fixed"), "set_doppler_tracking", "get_doppler_tracking");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "doppler_tracking", PROPERTY_HINT_ENUM, "Disabled,Idle,Physics"), "set_doppler_tracking", "get_doppler_tracking");
BIND_ENUM_CONSTANT(ATTENUATION_INVERSE_DISTANCE);
BIND_ENUM_CONSTANT(ATTENUATION_INVERSE_SQUARE_DISTANCE);
diff --git a/scene/3d/camera.cpp b/scene/3d/camera.cpp
index 7baf9a9deb..8c7d0c23c3 100644
--- a/scene/3d/camera.cpp
+++ b/scene/3d/camera.cpp
@@ -175,7 +175,7 @@ void Camera::_get_property_list(List<PropertyInfo> *p_list) const {
p_list->push_back(PropertyInfo(Variant::OBJECT, "environment", PROPERTY_HINT_RESOURCE_TYPE, "Environment"));
p_list->push_back(PropertyInfo(Variant::REAL, "h_offset"));
p_list->push_back(PropertyInfo(Variant::REAL, "v_offset"));
- p_list->push_back(PropertyInfo(Variant::INT, "doppler/tracking", PROPERTY_HINT_ENUM, "Disabled,Idle,Fixed"));
+ p_list->push_back(PropertyInfo(Variant::INT, "doppler/tracking", PROPERTY_HINT_ENUM, "Disabled,Idle,Physics"));
}
void Camera::_update_camera() {
diff --git a/scene/3d/gi_probe.cpp b/scene/3d/gi_probe.cpp
index 9d55a82824..c0ca358717 100644
--- a/scene/3d/gi_probe.cpp
+++ b/scene/3d/gi_probe.cpp
@@ -1134,6 +1134,10 @@ void GIProbe::_find_meshes(Node *p_at_node, Baker *p_baker) {
}
}
+GIProbe::BakeBeginFunc GIProbe::bake_begin_function = NULL;
+GIProbe::BakeStepFunc GIProbe::bake_step_function = NULL;
+GIProbe::BakeEndFunc GIProbe::bake_end_function = NULL;
+
void GIProbe::bake(Node *p_from_node, bool p_create_visual_debug) {
Baker baker;
@@ -1177,14 +1181,25 @@ void GIProbe::bake(Node *p_from_node, bool p_create_visual_debug) {
_find_meshes(p_from_node ? p_from_node : get_parent(), &baker);
+ if (bake_begin_function) {
+ bake_begin_function(baker.mesh_list.size() + 1);
+ }
+
int pmc = 0;
for (List<Baker::PlotMesh>::Element *E = baker.mesh_list.front(); E; E = E->next()) {
- print_line("plotting mesh " + itos(pmc++) + "/" + itos(baker.mesh_list.size()));
+ if (bake_step_function) {
+ bake_step_function(pmc, RTR("Plotting Meshes") + " " + itos(pmc) + "/" + itos(baker.mesh_list.size()));
+ }
+
+ pmc++;
_plot_mesh(E->get().local_xform, E->get().mesh, &baker, E->get().instance_materials, E->get().override_material);
}
+ if (bake_step_function) {
+ bake_step_function(pmc++, RTR("Finishing Plot"));
+ }
_fixup_plot(0, 0, 0, 0, 0, &baker);
@@ -1282,6 +1297,10 @@ void GIProbe::bake(Node *p_from_node, bool p_create_visual_debug) {
set_probe_data(probe_data);
}
+
+ if (bake_end_function) {
+ bake_end_function();
+ }
}
void GIProbe::_debug_mesh(int p_idx, int p_level, const Rect3 &p_aabb, Ref<MultiMesh> &p_multimesh, int &idx, Baker *p_baker) {
@@ -1478,6 +1497,7 @@ void GIProbe::_bind_methods() {
BIND_ENUM_CONSTANT(SUBDIV_64);
BIND_ENUM_CONSTANT(SUBDIV_128);
BIND_ENUM_CONSTANT(SUBDIV_256);
+ BIND_ENUM_CONSTANT(SUBDIV_512);
BIND_ENUM_CONSTANT(SUBDIV_MAX);
}
diff --git a/scene/3d/gi_probe.h b/scene/3d/gi_probe.h
index 5a06984a47..50d0c33d4f 100644
--- a/scene/3d/gi_probe.h
+++ b/scene/3d/gi_probe.h
@@ -95,6 +95,10 @@ public:
};
+ typedef void (*BakeBeginFunc)(int);
+ typedef void (*BakeStepFunc)(int, const String &);
+ typedef void (*BakeEndFunc)();
+
private:
//stuff used for bake
struct Baker {
@@ -190,6 +194,10 @@ protected:
static void _bind_methods();
public:
+ static BakeBeginFunc bake_begin_function;
+ static BakeStepFunc bake_step_function;
+ static BakeEndFunc bake_end_function;
+
void set_probe_data(const Ref<GIProbeData> &p_data);
Ref<GIProbeData> get_probe_data() const;
diff --git a/scene/3d/light.cpp b/scene/3d/light.cpp
index b7cd9bd2dc..02d10523e7 100644
--- a/scene/3d/light.cpp
+++ b/scene/3d/light.cpp
@@ -248,7 +248,7 @@ void Light::_bind_methods() {
BIND_ENUM_CONSTANT(PARAM_SHADOW_SPLIT_3_OFFSET);
BIND_ENUM_CONSTANT(PARAM_SHADOW_NORMAL_BIAS);
BIND_ENUM_CONSTANT(PARAM_SHADOW_BIAS);
-
+ BIND_ENUM_CONSTANT(PARAM_SHADOW_BIAS_SPLIT_SCALE);
BIND_ENUM_CONSTANT(PARAM_MAX);
}
@@ -369,12 +369,6 @@ DirectionalLight::DirectionalLight()
set_shadow_depth_range(SHADOW_DEPTH_RANGE_STABLE);
blend_splits = false;
-
-#ifdef TOOLS_ENABLED
- if (Engine::get_singleton()->is_editor_hint())
- // Create light with a default natural "sun" orientation in editor, instead of looking horizontally on X
- set_rotation_in_degrees(Vector3(-50, 25, 30));
-#endif
}
void OmniLight::set_shadow_mode(ShadowMode p_mode) {
diff --git a/scene/3d/particles.cpp b/scene/3d/particles.cpp
index 80c706898d..4e19214c59 100644
--- a/scene/3d/particles.cpp
+++ b/scene/3d/particles.cpp
@@ -462,8 +462,6 @@ void ParticlesMaterial::finish_shaders() {
void ParticlesMaterial::_update_shader() {
- print_line("updating shader");
-
dirty_materials.remove(&element);
MaterialKey mk = _compute_key();
@@ -587,298 +585,294 @@ void ParticlesMaterial::_update_shader() {
//need a random function
code += "\n\n";
code += "float rand_from_seed(inout uint seed) {\n";
- code += " int k;\n";
- code += " int s = int(seed);\n";
- code += " if (s == 0)\n";
+ code += " int k;\n";
+ code += " int s = int(seed);\n";
+ code += " if (s == 0)\n";
code += " s = 305420679;\n";
- code += " k = s / 127773;\n";
- code += " s = 16807 * (s - k * 127773) - 2836 * k;\n";
- code += " if (s < 0)\n";
- code += " s += 2147483647;\n";
- code += " seed = uint(s);\n";
- code += " return float(seed % uint(65536))/65535.0;\n";
+ code += " k = s / 127773;\n";
+ code += " s = 16807 * (s - k * 127773) - 2836 * k;\n";
+ code += " if (s < 0)\n";
+ code += " s += 2147483647;\n";
+ code += " seed = uint(s);\n";
+ code += " return float(seed % uint(65536))/65535.0;\n";
code += "}\n";
+ code += "\n";
+
//improve seed quality
code += "uint hash(uint x) {\n";
- code += " x = ((x >> uint(16)) ^ x) * uint(73244475);\n";
- code += " x = ((x >> uint(16)) ^ x) * uint(73244475);\n";
- code += " x = (x >> uint(16)) ^ x;\n";
- code += " return x;\n";
+ code += " x = ((x >> uint(16)) ^ x) * uint(73244475);\n";
+ code += " x = ((x >> uint(16)) ^ x) * uint(73244475);\n";
+ code += " x = (x >> uint(16)) ^ x;\n";
+ code += " return x;\n";
code += "}\n";
- code += "void vertex() {\n\n";
code += "\n";
- code += " uint base_number=NUMBER/uint(trail_divisor);\n";
- code += " uint alt_seed=hash(base_number+uint(1)+RANDOM_SEED);\n";
- code += " float angle_rand=rand_from_seed(alt_seed);\n";
- code += " float scale_rand=rand_from_seed(alt_seed);\n";
- code += " float hue_rot_rand=rand_from_seed(alt_seed);\n";
- code += " float anim_offset_rand=rand_from_seed(alt_seed);\n";
- code += "\n";
- code += "\n";
- code += "\n";
+ code += "void vertex() {\n";
+ code += " uint base_number = NUMBER/uint(trail_divisor);\n";
+ code += " uint alt_seed = hash(base_number+uint(1)+RANDOM_SEED);\n";
+ code += " float angle_rand = rand_from_seed(alt_seed);\n";
+ code += " float scale_rand = rand_from_seed(alt_seed);\n";
+ code += " float hue_rot_rand = rand_from_seed(alt_seed);\n";
+ code += " float anim_offset_rand = rand_from_seed(alt_seed);\n";
code += "\n";
+
if (emission_shape >= EMISSION_SHAPE_POINTS) {
- code += " int point = min(emission_texture_point_count-1,int(rand_from_seed(alt_seed) * float(emission_texture_point_count)));\n";
- code += " ivec2 emission_tex_size = textureSize( emission_texture_points, 0 );\n";
- code += " ivec2 emission_tex_ofs = ivec2( point % emission_tex_size.x, point / emission_tex_size.x );\n";
+ code += " int point = min(emission_texture_point_count-1,int(rand_from_seed(alt_seed) * float(emission_texture_point_count)));\n";
+ code += " ivec2 emission_tex_size = textureSize( emission_texture_points, 0 );\n";
+ code += " ivec2 emission_tex_ofs = ivec2( point % emission_tex_size.x, point / emission_tex_size.x );\n";
}
- code += " if (RESTART) {\n";
+ code += " if (RESTART) {\n";
if (tex_parameters[PARAM_INITIAL_LINEAR_VELOCITY].is_valid())
- code += " float tex_linear_velocity = textureLod(linear_velocity_texture,vec2(0.0,0.0),0.0).r;\n";
+ code += " float tex_linear_velocity = textureLod(linear_velocity_texture,vec2(0.0,0.0),0.0).r;\n";
else
- code += " float tex_linear_velocity = 0.0;\n";
+ code += " float tex_linear_velocity = 0.0;\n";
if (tex_parameters[PARAM_ANGLE].is_valid())
- code += " float tex_angle = textureLod(angle_texture,vec2(0.0,0.0),0.0).r;\n";
+ code += " float tex_angle = textureLod(angle_texture,vec2(0.0,0.0),0.0).r;\n";
else
- code += " float tex_angle = 0.0;\n";
+ code += " float tex_angle = 0.0;\n";
if (tex_parameters[PARAM_ANIM_OFFSET].is_valid())
- code += " float tex_anim_offset = textureLod(anim_offset_texture,vec2(0.0,0.0),0.0).r;\n";
+ code += " float tex_anim_offset = textureLod(anim_offset_texture,vec2(0.0,0.0),0.0).r;\n";
else
- code += " float tex_anim_offset = 0.0;\n";
+ code += " float tex_anim_offset = 0.0;\n";
if (flags[FLAG_DISABLE_Z]) {
- code += " float angle1 = (rand_from_seed(alt_seed)*2.0-1.0)*spread/180.0*3.1416;\n";
- code += " vec3 rot=vec3( cos(angle1), sin(angle1),0.0 );\n";
- code += " VELOCITY=(rot*initial_linear_velocity+rot*initial_linear_velocity_random*rand_from_seed(alt_seed));\n";
+ code += " float angle1 = (rand_from_seed(alt_seed)*2.0-1.0)*spread/180.0*3.1416;\n";
+ code += " vec3 rot = vec3( cos(angle1), sin(angle1),0.0 );\n";
+ code += " VELOCITY = (rot*initial_linear_velocity+rot*initial_linear_velocity_random*rand_from_seed(alt_seed));\n";
} else {
//initiate velocity spread in 3D
- code += " float angle1 = rand_from_seed(alt_seed)*spread*3.1416;\n";
- code += " float angle2 = rand_from_seed(alt_seed)*20.0*3.1416; // make it more random like\n";
- code += " vec3 rot_xz=vec3( sin(angle1), 0.0, cos(angle1) );\n";
- code += " vec3 rot = vec3( cos(angle2)*rot_xz.x,sin(angle2)*rot_xz.x, rot_xz.z);\n";
- code += " VELOCITY=(rot*initial_linear_velocity+rot*initial_linear_velocity_random*rand_from_seed(alt_seed));\n";
+ code += " float angle1 = rand_from_seed(alt_seed)*spread*3.1416;\n";
+ code += " float angle2 = rand_from_seed(alt_seed)*20.0*3.1416; // make it more random like\n";
+ code += " vec3 rot_xz = vec3( sin(angle1), 0.0, cos(angle1) );\n";
+ code += " vec3 rot = vec3( cos(angle2)*rot_xz.x,sin(angle2)*rot_xz.x, rot_xz.z);\n";
+ code += " VELOCITY = (rot*initial_linear_velocity+rot*initial_linear_velocity_random*rand_from_seed(alt_seed));\n";
}
- code += " float base_angle=(initial_angle+tex_angle)*mix(1.0,angle_rand,initial_angle_random);\n";
- code += " CUSTOM.x=base_angle*3.1416/180.0;\n"; //angle
- code += " CUSTOM.y=0.0;\n"; //phase
- code += " CUSTOM.z=(anim_offset+tex_anim_offset)*mix(1.0,anim_offset_rand,anim_offset_random);\n"; //animation offset (0-1)
+ code += " float base_angle = (initial_angle+tex_angle)*mix(1.0,angle_rand,initial_angle_random);\n";
+ code += " CUSTOM.x = base_angle*3.1416/180.0;\n"; //angle
+ code += " CUSTOM.y = 0.0;\n"; //phase
+ code += " CUSTOM.z = (anim_offset+tex_anim_offset)*mix(1.0,anim_offset_rand,anim_offset_random);\n"; //animation offset (0-1)
switch (emission_shape) {
case EMISSION_SHAPE_POINT: {
//do none
} break;
case EMISSION_SHAPE_SPHERE: {
- code += " TRANSFORM[3].xyz = normalize(vec3(rand_from_seed(alt_seed) * 2.0 - 1.0, rand_from_seed(alt_seed) * 2.0-1.0, rand_from_seed(alt_seed) * 2.0-1.0 ))*emission_sphere_radius;\n";
+ code += " TRANSFORM[3].xyz = normalize(vec3(rand_from_seed(alt_seed) * 2.0 - 1.0, rand_from_seed(alt_seed) * 2.0-1.0, rand_from_seed(alt_seed) * 2.0-1.0 ))*emission_sphere_radius;\n";
} break;
case EMISSION_SHAPE_BOX: {
- code += " TRANSFORM[3].xyz = vec3(rand_from_seed(alt_seed) * 2.0 - 1.0, rand_from_seed(alt_seed) * 2.0-1.0, rand_from_seed(alt_seed) * 2.0-1.0)*emission_box_extents;\n";
+ code += " TRANSFORM[3].xyz = vec3(rand_from_seed(alt_seed) * 2.0 - 1.0, rand_from_seed(alt_seed) * 2.0-1.0, rand_from_seed(alt_seed) * 2.0-1.0)*emission_box_extents;\n";
} break;
case EMISSION_SHAPE_POINTS:
case EMISSION_SHAPE_DIRECTED_POINTS: {
- code += " TRANSFORM[3].xyz = texelFetch(emission_texture_points, emission_tex_ofs,0).xyz;\n";
+ code += " TRANSFORM[3].xyz = texelFetch(emission_texture_points, emission_tex_ofs,0).xyz;\n";
if (emission_shape == EMISSION_SHAPE_DIRECTED_POINTS) {
if (flags[FLAG_DISABLE_Z]) {
- code += " mat2 rotm;";
- code += " rotm[0]=texelFetch(emission_texture_normal, emission_tex_ofs,0).xy;\n";
- code += " rotm[1]=rotm[0].yx * vec2(1.0,-1.0);\n";
- code += " VELOCITY.xy = rotm * VELOCITY.xy;\n";
+ code += " mat2 rotm;";
+ code += " rotm[0] = texelFetch(emission_texture_normal, emission_tex_ofs,0).xy;\n";
+ code += " rotm[1] = rotm[0].yx * vec2(1.0,-1.0);\n";
+ code += " VELOCITY.xy = rotm * VELOCITY.xy;\n";
} else {
- code += " vec3 normal = texelFetch(emission_texture_normal, emission_tex_ofs,0).xyz;\n";
- code += " vec3 v0 = abs(normal.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(0, 1.0, 0.0);\n";
- code += " vec3 tangent = normalize(cross(v0, normal));\n";
- code += " vec3 bitangent = normalize(cross(tangent, normal));\n";
- code += " VELOCITY = mat3(tangent,bitangent,normal) * VELOCITY;\n";
+ code += " vec3 normal = texelFetch(emission_texture_normal, emission_tex_ofs,0).xyz;\n";
+ code += " vec3 v0 = abs(normal.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(0, 1.0, 0.0);\n";
+ code += " vec3 tangent = normalize(cross(v0, normal));\n";
+ code += " vec3 bitangent = normalize(cross(tangent, normal));\n";
+ code += " VELOCITY = mat3(tangent,bitangent,normal) * VELOCITY;\n";
}
}
} break;
}
- code += " VELOCITY = (EMISSION_TRANSFORM * vec4(VELOCITY,0.0)).xyz;\n";
- code += " TRANSFORM = EMISSION_TRANSFORM * TRANSFORM;\n";
+ code += " VELOCITY = (EMISSION_TRANSFORM * vec4(VELOCITY,0.0)).xyz;\n";
+ code += " TRANSFORM = EMISSION_TRANSFORM * TRANSFORM;\n";
if (flags[FLAG_DISABLE_Z]) {
- code += " VELOCITY.z=0.0;\n";
- code += " TRANSFORM[3].z=0.0;\n";
+ code += " VELOCITY.z = 0.0;\n";
+ code += " TRANSFORM[3].z = 0.0;\n";
}
- code += " } else {\n";
+ code += " } else {\n";
- code += " CUSTOM.y+=DELTA/LIFETIME;\n";
+ code += " CUSTOM.y += DELTA/LIFETIME;\n";
if (tex_parameters[PARAM_INITIAL_LINEAR_VELOCITY].is_valid())
- code += " float tex_linear_velocity = textureLod(linear_velocity_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
+ code += " float tex_linear_velocity = textureLod(linear_velocity_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
else
- code += " float tex_linear_velocity = 0.0;\n";
+ code += " float tex_linear_velocity = 0.0;\n";
if (tex_parameters[PARAM_ORBIT_VELOCITY].is_valid())
- code += " float tex_orbit_velocity = textureLod(orbit_velocity_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
+ code += " float tex_orbit_velocity = textureLod(orbit_velocity_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
else
- code += " float tex_orbit_velocity = 0.0;\n";
+ code += " float tex_orbit_velocity = 0.0;\n";
if (tex_parameters[PARAM_ANGULAR_VELOCITY].is_valid())
- code += " float tex_angular_velocity = textureLod(angular_velocity_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
+ code += " float tex_angular_velocity = textureLod(angular_velocity_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
else
- code += " float tex_angular_velocity = 0.0;\n";
+ code += " float tex_angular_velocity = 0.0;\n";
if (tex_parameters[PARAM_LINEAR_ACCEL].is_valid())
- code += " float tex_linear_accel = textureLod(linear_accel_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
+ code += " float tex_linear_accel = textureLod(linear_accel_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
else
- code += " float tex_linear_accel = 0.0;\n";
+ code += " float tex_linear_accel = 0.0;\n";
if (tex_parameters[PARAM_RADIAL_ACCEL].is_valid())
- code += " float tex_radial_accel = textureLod(radial_accel_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
+ code += " float tex_radial_accel = textureLod(radial_accel_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
else
- code += " float tex_radial_accel = 0.0;\n";
+ code += " float tex_radial_accel = 0.0;\n";
if (tex_parameters[PARAM_TANGENTIAL_ACCEL].is_valid())
- code += " float tex_tangent_accel = textureLod(tangent_accel_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
+ code += " float tex_tangent_accel = textureLod(tangent_accel_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
else
- code += " float tex_tangent_accel = 0.0;\n";
+ code += " float tex_tangent_accel = 0.0;\n";
if (tex_parameters[PARAM_DAMPING].is_valid())
- code += " float tex_damping = textureLod(damping_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
+ code += " float tex_damping = textureLod(damping_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
else
- code += " float tex_damping = 0.0;\n";
+ code += " float tex_damping = 0.0;\n";
if (tex_parameters[PARAM_ANGLE].is_valid())
- code += " float tex_angle = textureLod(angle_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
+ code += " float tex_angle = textureLod(angle_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
else
- code += " float tex_angle = 0.0;\n";
+ code += " float tex_angle = 0.0;\n";
if (tex_parameters[PARAM_ANIM_SPEED].is_valid())
- code += " float tex_anim_speed = textureLod(anim_speed_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
+ code += " float tex_anim_speed = textureLod(anim_speed_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
else
- code += " float tex_anim_speed = 0.0;\n";
+ code += " float tex_anim_speed = 0.0;\n";
if (tex_parameters[PARAM_ANIM_OFFSET].is_valid())
- code += " float tex_anim_offset = textureLod(anim_offset_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
+ code += " float tex_anim_offset = textureLod(anim_offset_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
else
- code += " float tex_anim_offset = 0.0;\n";
+ code += " float tex_anim_offset = 0.0;\n";
- code += " vec3 force = gravity; \n";
- code += " vec3 pos = TRANSFORM[3].xyz; \n";
+ code += " vec3 force = gravity; \n";
+ code += " vec3 pos = TRANSFORM[3].xyz; \n";
if (flags[FLAG_DISABLE_Z]) {
- code += " pos.z=0.0; \n";
+ code += " pos.z = 0.0; \n";
}
- code += " //apply linear acceleration\n";
- code += " force+= length(VELOCITY) > 0.0 ? normalize(VELOCITY) * (linear_accel+tex_linear_accel)*mix(1.0,rand_from_seed(alt_seed),linear_accel_random) : vec3(0.0);\n";
- code += " //apply radial acceleration\n";
- code += " vec3 org = vec3(0.0);\n";
- code += " // if (!p_system->local_coordinates)\n";
- code += " //org=p_transform.origin;\n";
- code += " vec3 diff = pos-org;\n";
- code += " force+=length(diff) > 0.0 ? normalize(diff) * (radial_accel+tex_radial_accel)*mix(1.0,rand_from_seed(alt_seed),radial_accel_random) : vec3(0.0);\n";
- code += " //apply tangential acceleration;\n";
+ code += " //apply linear acceleration\n";
+ code += " force += length(VELOCITY) > 0.0 ? normalize(VELOCITY) * (linear_accel+tex_linear_accel)*mix(1.0,rand_from_seed(alt_seed),linear_accel_random) : vec3(0.0);\n";
+ code += " //apply radial acceleration\n";
+ code += " vec3 org = vec3(0.0);\n";
+ code += " vec3 diff = pos-org;\n";
+ code += " force += length(diff) > 0.0 ? normalize(diff) * (radial_accel+tex_radial_accel)*mix(1.0,rand_from_seed(alt_seed),radial_accel_random) : vec3(0.0);\n";
+ code += " //apply tangential acceleration;\n";
if (flags[FLAG_DISABLE_Z]) {
- code += " force+=length(diff.yx) > 0.0 ? vec3(normalize(diff.yx * vec2(-1.0,1.0)),0.0) * ((tangent_accel+tex_tangent_accel)*mix(1.0,rand_from_seed(alt_seed),radial_accel_random)) : vec3(0.0);\n";
+ code += " force += length(diff.yx) > 0.0 ? vec3(normalize(diff.yx * vec2(-1.0,1.0)),0.0) * ((tangent_accel+tex_tangent_accel)*mix(1.0,rand_from_seed(alt_seed),radial_accel_random)) : vec3(0.0);\n";
} else {
- code += " vec3 crossDiff = cross(normalize(diff),normalize(gravity));\n";
- code += " force+=length(crossDiff) > 0.0 ? normalize(crossDiff) * ((tangent_accel+tex_tangent_accel)*mix(1.0,rand_from_seed(alt_seed),radial_accel_random)) : vec3(0.0);\n";
+ code += " vec3 crossDiff = cross(normalize(diff),normalize(gravity));\n";
+ code += " force += length(crossDiff) > 0.0 ? normalize(crossDiff) * ((tangent_accel+tex_tangent_accel)*mix(1.0,rand_from_seed(alt_seed),radial_accel_random)) : vec3(0.0);\n";
}
- code += " //apply attractor forces\n";
- code += " VELOCITY+=force * DELTA;\n";
+ code += " //apply attractor forces\n";
+ code += " VELOCITY += force * DELTA;\n";
if (tex_parameters[PARAM_INITIAL_LINEAR_VELOCITY].is_valid()) {
- code += " VELOCITY=normalize(VELOCITY)*tex_linear_velocity;\n";
+ code += " VELOCITY = normalize(VELOCITY)*tex_linear_velocity;\n";
}
- code += " if (damping+tex_damping>0.0) {\n";
- code += " \n";
- code += " float v = length(VELOCITY);\n";
- code += " float damp = (damping+tex_damping)*mix(1.0,rand_from_seed(alt_seed),damping_random);\n";
- code += " v -= damp * DELTA;\n";
- code += " if (v<0.0) {\n";
- code += " VELOCITY=vec3(0.0);\n";
- code += " } else {\n";
- code += " VELOCITY=normalize(VELOCITY) * v;\n";
- code += " }\n";
- code += " }\n";
- code += " float base_angle=(initial_angle+tex_angle)*mix(1.0,angle_rand,initial_angle_random);\n";
- code += " base_angle+=CUSTOM.y*LIFETIME*(angular_velocity+tex_angular_velocity)*mix(1.0,rand_from_seed(alt_seed)*2.0-1.0,angular_velocity_random);\n";
- code += " CUSTOM.x=base_angle*3.1416/180.0;\n"; //angle
- code += " CUSTOM.z=(anim_offset+tex_anim_offset)*mix(1.0,anim_offset_rand,anim_offset_random)+CUSTOM.y*(anim_speed+tex_anim_speed)*mix(1.0,rand_from_seed(alt_seed),anim_speed_random);\n"; //angle
+ code += " if (damping + tex_damping > 0.0) {\n";
+ code += " \n";
+ code += " float v = length(VELOCITY);\n";
+ code += " float damp = (damping+tex_damping)*mix(1.0,rand_from_seed(alt_seed),damping_random);\n";
+ code += " v -= damp * DELTA;\n";
+ code += " if (v < 0.0) {\n";
+ code += " VELOCITY = vec3(0.0);\n";
+ code += " } else {\n";
+ code += " VELOCITY = normalize(VELOCITY) * v;\n";
+ code += " }\n";
+ code += " }\n";
+ code += " float base_angle = (initial_angle+tex_angle)*mix(1.0,angle_rand,initial_angle_random);\n";
+ code += " base_angle += CUSTOM.y*LIFETIME*(angular_velocity+tex_angular_velocity)*mix(1.0,rand_from_seed(alt_seed)*2.0-1.0,angular_velocity_random);\n";
+ code += " CUSTOM.x = base_angle*3.1416/180.0;\n"; //angle
+ code += " CUSTOM.z = (anim_offset+tex_anim_offset)*mix(1.0,anim_offset_rand,anim_offset_random)+CUSTOM.y*(anim_speed+tex_anim_speed)*mix(1.0,rand_from_seed(alt_seed),anim_speed_random);\n"; //angle
if (flags[FLAG_ANIM_LOOP]) {
- code += " CUSTOM.z=mod(CUSTOM.z,1.0);\n"; //loop
+ code += " CUSTOM.z = mod(CUSTOM.z,1.0);\n"; //loop
} else {
- code += " CUSTOM.z=clamp(CUSTOM.z,0.0,1.0);\n"; //0 to 1 only
+ code += " CUSTOM.z = clamp(CUSTOM.z,0.0,1.0);\n"; //0 to 1 only
}
- code += " }\n";
+ code += " }\n";
//apply color
//apply hue rotation
if (tex_parameters[PARAM_SCALE].is_valid())
- code += " float tex_scale = textureLod(scale_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
+ code += " float tex_scale = textureLod(scale_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
else
- code += " float tex_scale = 1.0;\n";
+ code += " float tex_scale = 1.0;\n";
if (tex_parameters[PARAM_HUE_VARIATION].is_valid())
- code += " float tex_hue_variation = textureLod(hue_variation_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
+ code += " float tex_hue_variation = textureLod(hue_variation_texture,vec2(CUSTOM.y,0.0),0.0).r;\n";
else
- code += " float tex_hue_variation = 0.0;\n";
-
- code += " float hue_rot_angle = (hue_variation+tex_hue_variation)*3.1416*2.0*mix(1.0,hue_rot_rand*2.0-1.0,hue_variation_random);\n";
- code += " float hue_rot_c = cos(hue_rot_angle);\n";
- code += " float hue_rot_s = sin(hue_rot_angle);\n";
- code += " mat4 hue_rot_mat = mat4( vec4(0.299, 0.587, 0.114, 0.0),\n";
- code += " vec4(0.299, 0.587, 0.114, 0.0),\n";
- code += " vec4(0.299, 0.587, 0.114, 0.0),\n";
- code += " vec4(0.000, 0.000, 0.000, 1.0)) +\n";
- code += " \n";
- code += " mat4( vec4(0.701, -0.587, -0.114, 0.0),\n";
- code += " vec4(-0.299, 0.413, -0.114, 0.0),\n";
- code += " vec4(-0.300, -0.588, 0.886, 0.0),\n";
- code += " vec4(0.000, 0.000, 0.000, 0.0)) * hue_rot_c +\n";
- code += "\n";
- code += " mat4( vec4(0.168, 0.330, -0.497, 0.0),\n";
- code += " vec4(-0.328, 0.035, 0.292, 0.0),\n";
- code += " vec4(1.250, -1.050, -0.203, 0.0),\n";
- code += " vec4(0.000, 0.000, 0.000, 0.0)) * hue_rot_s;\n";
+ code += " float tex_hue_variation = 0.0;\n";
+
+ code += " float hue_rot_angle = (hue_variation+tex_hue_variation)*3.1416*2.0*mix(1.0,hue_rot_rand*2.0-1.0,hue_variation_random);\n";
+ code += " float hue_rot_c = cos(hue_rot_angle);\n";
+ code += " float hue_rot_s = sin(hue_rot_angle);\n";
+ code += " mat4 hue_rot_mat = mat4( vec4(0.299, 0.587, 0.114, 0.0),\n";
+ code += " vec4(0.299, 0.587, 0.114, 0.0),\n";
+ code += " vec4(0.299, 0.587, 0.114, 0.0),\n";
+ code += " vec4(0.000, 0.000, 0.000, 1.0)) +\n";
+ code += " mat4( vec4(0.701, -0.587, -0.114, 0.0),\n";
+ code += " vec4(-0.299, 0.413, -0.114, 0.0),\n";
+ code += " vec4(-0.300, -0.588, 0.886, 0.0),\n";
+ code += " vec4(0.000, 0.000, 0.000, 0.0)) * hue_rot_c +\n";
+ code += " mat4( vec4(0.168, 0.330, -0.497, 0.0),\n";
+ code += " vec4(-0.328, 0.035, 0.292, 0.0),\n";
+ code += " vec4(1.250, -1.050, -0.203, 0.0),\n";
+ code += " vec4(0.000, 0.000, 0.000, 0.0)) * hue_rot_s;\n";
if (color_ramp.is_valid()) {
- code += " COLOR = textureLod(color_ramp,vec2(CUSTOM.y,0.0),0.0) * hue_rot_mat;\n";
+ code += " COLOR = textureLod(color_ramp,vec2(CUSTOM.y,0.0),0.0) * hue_rot_mat;\n";
} else {
- code += " COLOR = color_value * hue_rot_mat;\n";
+ code += " COLOR = color_value * hue_rot_mat;\n";
}
if (emission_color_texture.is_valid() && emission_shape >= EMISSION_SHAPE_POINTS) {
- code += " COLOR*= texelFetch(emission_texture_color,emission_tex_ofs,0);\n";
+ code += " COLOR*= texelFetch(emission_texture_color,emission_tex_ofs,0);\n";
}
if (trail_color_modifier.is_valid()) {
- code += "if (trail_divisor>1) { COLOR*=textureLod(trail_color_modifier,vec2(float(int(NUMBER)%trail_divisor)/float(trail_divisor-1),0.0),0.0); }\n";
+ code += " if (trail_divisor > 1) { COLOR *= textureLod(trail_color_modifier,vec2(float(int(NUMBER)%trail_divisor)/float(trail_divisor-1),0.0),0.0); }\n";
}
code += "\n";
if (flags[FLAG_DISABLE_Z]) {
- code += " TRANSFORM[0]=vec4(cos(CUSTOM.x),-sin(CUSTOM.x),0.0,0.0);\n";
- code += " TRANSFORM[1]=vec4(sin(CUSTOM.x),cos(CUSTOM.x),0.0,0.0);\n";
- code += " TRANSFORM[2]=vec4(0.0,0.0,1.0,0.0);\n";
+ code += " TRANSFORM[0] = vec4(cos(CUSTOM.x),-sin(CUSTOM.x),0.0,0.0);\n";
+ code += " TRANSFORM[1] = vec4(sin(CUSTOM.x),cos(CUSTOM.x),0.0,0.0);\n";
+ code += " TRANSFORM[2] = vec4(0.0,0.0,1.0,0.0);\n";
} else {
//orient particle Y towards velocity
if (flags[FLAG_ALIGN_Y_TO_VELOCITY]) {
- code += " if (length(VELOCITY)>0.0) {TRANSFORM[1].xyz=normalize(VELOCITY);} else {TRANSFORM[1].xyz=normalize(TRANSFORM[1].xyz);}\n";
- code += " if (TRANSFORM[1].xyz==normalize(TRANSFORM[0].xyz)) {\n";
- code += "\tTRANSFORM[0].xyz=normalize(cross(normalize(TRANSFORM[1].xyz),normalize(TRANSFORM[2].xyz)));\n";
- code += "\tTRANSFORM[2].xyz=normalize(cross(normalize(TRANSFORM[0].xyz),normalize(TRANSFORM[1].xyz)));\n";
- code += " } else {\n";
- code += "\tTRANSFORM[2].xyz=normalize(cross(normalize(TRANSFORM[0].xyz),normalize(TRANSFORM[1].xyz)));\n";
- code += "\tTRANSFORM[0].xyz=normalize(cross(normalize(TRANSFORM[1].xyz),normalize(TRANSFORM[2].xyz)));\n";
- code += " }\n";
+ code += " if (length(VELOCITY) > 0.0) { TRANSFORM[1].xyz = normalize(VELOCITY); } else { TRANSFORM[1].xyz = normalize(TRANSFORM[1].xyz); }\n";
+ code += " if (TRANSFORM[1].xyz == normalize(TRANSFORM[0].xyz)) {\n";
+ code += " TRANSFORM[0].xyz = normalize(cross(normalize(TRANSFORM[1].xyz),normalize(TRANSFORM[2].xyz)));\n";
+ code += " TRANSFORM[2].xyz = normalize(cross(normalize(TRANSFORM[0].xyz),normalize(TRANSFORM[1].xyz)));\n";
+ code += " } else {\n";
+ code += " TRANSFORM[2].xyz = normalize(cross(normalize(TRANSFORM[0].xyz),normalize(TRANSFORM[1].xyz)));\n";
+ code += " TRANSFORM[0].xyz = normalize(cross(normalize(TRANSFORM[1].xyz),normalize(TRANSFORM[2].xyz)));\n";
+ code += " }\n";
} else {
- code += "\tTRANSFORM[0].xyz=normalize(TRANSFORM[0].xyz);\n";
- code += "\tTRANSFORM[1].xyz=normalize(TRANSFORM[1].xyz);\n";
- code += "\tTRANSFORM[2].xyz=normalize(TRANSFORM[2].xyz);\n";
+ code += " TRANSFORM[0].xyz = normalize(TRANSFORM[0].xyz);\n";
+ code += " TRANSFORM[1].xyz = normalize(TRANSFORM[1].xyz);\n";
+ code += " TRANSFORM[2].xyz = normalize(TRANSFORM[2].xyz);\n";
}
//turn particle by rotation in Y
if (flags[FLAG_ROTATE_Y]) {
- code += "\tTRANSFORM = TRANSFORM * mat4( vec4(cos(CUSTOM.x),0.0,-sin(CUSTOM.x),0.0), vec4(0.0,1.0,0.0,0.0),vec4(sin(CUSTOM.x),0.0,cos(CUSTOM.x),0.0),vec4(0.0,0.0,0.0,1.0));\n";
+ code += " TRANSFORM = TRANSFORM * mat4( vec4(cos(CUSTOM.x),0.0,-sin(CUSTOM.x),0.0), vec4(0.0,1.0,0.0,0.0),vec4(sin(CUSTOM.x),0.0,cos(CUSTOM.x),0.0),vec4(0.0,0.0,0.0,1.0));\n";
}
}
//scale by scale
- code += " float base_scale=mix(scale*tex_scale,1.0,scale_random*scale_rand);\n";
+ code += " float base_scale = mix(scale*tex_scale,1.0,scale_random*scale_rand);\n";
if (trail_size_modifier.is_valid()) {
- code += "if (trail_divisor>1) { base_scale*=textureLod(trail_size_modifier,vec2(float(int(NUMBER)%trail_divisor)/float(trail_divisor-1),0.0),0.0).r; } \n";
+ code += " if (trail_divisor > 1) { base_scale *= textureLod(trail_size_modifier,vec2(float(int(NUMBER)%trail_divisor)/float(trail_divisor-1),0.0),0.0).r; } \n";
}
- code += " TRANSFORM[0].xyz*=base_scale;\n";
- code += " TRANSFORM[1].xyz*=base_scale;\n";
- code += " TRANSFORM[2].xyz*=base_scale;\n";
+ code += " TRANSFORM[0].xyz *= base_scale;\n";
+ code += " TRANSFORM[1].xyz *= base_scale;\n";
+ code += " TRANSFORM[2].xyz *= base_scale;\n";
if (flags[FLAG_DISABLE_Z]) {
- code += " VELOCITY.z=0.0;\n";
- code += " TRANSFORM[3].z=0.0;\n";
+ code += " VELOCITY.z = 0.0;\n";
+ code += " TRANSFORM[3].z = 0.0;\n";
}
code += "}\n";
code += "\n";
@@ -913,9 +907,7 @@ void ParticlesMaterial::_queue_shader_change() {
if (material_mutex)
material_mutex->lock();
- print_line("queuing change");
if (!element.in_list()) {
- print_line("not in list, adding");
dirty_materials.add(&element);
}
@@ -1329,6 +1321,12 @@ Vector3 ParticlesMaterial::get_gravity() const {
return gravity;
}
+RID ParticlesMaterial::get_shader_rid() const {
+
+ ERR_FAIL_COND_V(!shader_map.has(current_key), RID());
+ return shader_map[current_key].shader;
+}
+
void ParticlesMaterial::_validate_property(PropertyInfo &property) const {
if (property.name == "color" && color_ramp.is_valid()) {
diff --git a/scene/3d/particles.h b/scene/3d/particles.h
index 2c109d6ec8..e3109f470f 100644
--- a/scene/3d/particles.h
+++ b/scene/3d/particles.h
@@ -388,6 +388,8 @@ public:
static void finish_shaders();
static void flush_changes();
+ RID get_shader_rid() const;
+
ParticlesMaterial();
~ParticlesMaterial();
};
diff --git a/scene/3d/path.cpp b/scene/3d/path.cpp
index 60245fe6ce..65f20210e1 100644
--- a/scene/3d/path.cpp
+++ b/scene/3d/path.cpp
@@ -85,9 +85,15 @@ void PathFollow::_update_transform() {
if (!c.is_valid())
return;
+ if (delta_offset == 0) {
+ return;
+ }
+
float o = offset;
- if (loop)
+
+ if (loop) {
o = Math::fposmod(o, c->get_baked_length());
+ }
Vector3 pos = c->interpolate_baked(o, cubic);
Transform t = get_transform();
@@ -101,14 +107,14 @@ void PathFollow::_update_transform() {
// see C. Dougan, The Parallel Transport Frame, Game Programming Gems 2 for example
// for a discussion about why not Frenet frame.
- Vector3 t_prev = pos - c->interpolate_baked(o - lookahead, cubic);
- Vector3 t_cur = c->interpolate_baked(o + lookahead, cubic) - pos;
+ Vector3 t_prev = (pos - c->interpolate_baked(o - delta_offset, cubic)).normalized();
+ Vector3 t_cur = (c->interpolate_baked(o + delta_offset, cubic) - pos).normalized();
Vector3 axis = t_prev.cross(t_cur);
- float dot = t_prev.normalized().dot(t_cur.normalized());
+ float dot = t_prev.dot(t_cur);
float angle = Math::acos(CLAMP(dot, -1, 1));
- if (axis.length() > CMP_EPSILON && angle > CMP_EPSILON) {
+ if (likely(Math::abs(angle) > CMP_EPSILON)) {
if (rotation_mode == ROTATION_Y) {
// assuming we're referring to global Y-axis. is this correct?
axis.x = 0;
@@ -116,27 +122,31 @@ void PathFollow::_update_transform() {
} else if (rotation_mode == ROTATION_XY) {
axis.z = 0;
} else if (rotation_mode == ROTATION_XYZ) {
- // all components are OK
+ // all components are allowed
}
- t.rotate_basis(axis.normalized(), angle);
+ if (likely(axis.length() > CMP_EPSILON)) {
+ t.rotate_basis(axis.normalized(), angle);
+ }
}
// do the additional tilting
float tilt_angle = c->interpolate_baked_tilt(o);
- Vector3 tilt_axis = t_cur; // is this correct??
+ Vector3 tilt_axis = t_cur; // not sure what tilt is supposed to do, is this correct??
- if (tilt_axis.length() > CMP_EPSILON && tilt_angle > CMP_EPSILON) {
+ if (likely(Math::abs(tilt_angle) > CMP_EPSILON)) {
if (rotation_mode == ROTATION_Y) {
tilt_axis.x = 0;
tilt_axis.z = 0;
} else if (rotation_mode == ROTATION_XY) {
tilt_axis.z = 0;
} else if (rotation_mode == ROTATION_XYZ) {
- // all components are OK
+ // all components are allowed
}
- t.rotate_basis(tilt_axis.normalized(), tilt_angle);
+ if (likely(tilt_axis.length() > CMP_EPSILON)) {
+ t.rotate_basis(tilt_axis.normalized(), tilt_angle);
+ }
}
t.translate(pos_offset);
@@ -195,8 +205,6 @@ bool PathFollow::_set(const StringName &p_name, const Variant &p_value) {
set_cubic_interpolation(p_value);
} else if (String(p_name) == "loop") {
set_loop(p_value);
- } else if (String(p_name) == "lookahead") {
- set_lookahead(p_value);
} else
return false;
@@ -219,8 +227,6 @@ bool PathFollow::_get(const StringName &p_name, Variant &r_ret) const {
r_ret = cubic;
} else if (String(p_name) == "loop") {
r_ret = loop;
- } else if (String(p_name) == "lookahead") {
- r_ret = lookahead;
} else
return false;
@@ -238,7 +244,6 @@ void PathFollow::_get_property_list(List<PropertyInfo> *p_list) const {
p_list->push_back(PropertyInfo(Variant::INT, "rotation_mode", PROPERTY_HINT_ENUM, "None,Y,XY,XYZ"));
p_list->push_back(PropertyInfo(Variant::BOOL, "cubic_interp"));
p_list->push_back(PropertyInfo(Variant::BOOL, "loop"));
- p_list->push_back(PropertyInfo(Variant::REAL, "lookahead", PROPERTY_HINT_RANGE, "0.001,1024.0,0.001"));
}
void PathFollow::_bind_methods() {
@@ -271,8 +276,9 @@ void PathFollow::_bind_methods() {
}
void PathFollow::set_offset(float p_offset) {
-
+ delta_offset = p_offset - offset;
offset = p_offset;
+
if (path)
_update_transform();
_change_notify("offset");
@@ -322,16 +328,6 @@ float PathFollow::get_unit_offset() const {
return 0;
}
-void PathFollow::set_lookahead(float p_lookahead) {
-
- lookahead = p_lookahead;
-}
-
-float PathFollow::get_lookahead() const {
-
- return lookahead;
-}
-
void PathFollow::set_rotation_mode(RotationMode p_rotation_mode) {
rotation_mode = p_rotation_mode;
@@ -356,11 +352,11 @@ bool PathFollow::has_loop() const {
PathFollow::PathFollow() {
offset = 0;
+ delta_offset = 0;
h_offset = 0;
v_offset = 0;
path = NULL;
rotation_mode = ROTATION_XYZ;
cubic = true;
loop = true;
- lookahead = 0.1;
}
diff --git a/scene/3d/path.h b/scene/3d/path.h
index 0f9a169f72..52760e0c75 100644
--- a/scene/3d/path.h
+++ b/scene/3d/path.h
@@ -67,10 +67,10 @@ public:
private:
Path *path;
+ real_t delta_offset; // change in offset since last _update_transform
real_t offset;
real_t h_offset;
real_t v_offset;
- real_t lookahead;
bool cubic;
bool loop;
RotationMode rotation_mode;
@@ -98,9 +98,6 @@ public:
void set_unit_offset(float p_unit_offset);
float get_unit_offset() const;
- void set_lookahead(float p_lookahead);
- float get_lookahead() const;
-
void set_loop(bool p_loop);
bool has_loop() const;
diff --git a/scene/3d/physics_body.cpp b/scene/3d/physics_body.cpp
index d7fdf94d40..4c661e6a88 100644
--- a/scene/3d/physics_body.cpp
+++ b/scene/3d/physics_body.cpp
@@ -870,10 +870,10 @@ void RigidBody::_bind_methods() {
ADD_SIGNAL(MethodInfo("body_exited", PropertyInfo(Variant::OBJECT, "body")));
ADD_SIGNAL(MethodInfo("sleeping_state_changed"));
- BIND_ENUM_CONSTANT(MODE_STATIC);
- BIND_ENUM_CONSTANT(MODE_KINEMATIC);
BIND_ENUM_CONSTANT(MODE_RIGID);
+ BIND_ENUM_CONSTANT(MODE_STATIC);
BIND_ENUM_CONSTANT(MODE_CHARACTER);
+ BIND_ENUM_CONSTANT(MODE_KINEMATIC);
BIND_ENUM_CONSTANT(AXIS_LOCK_DISABLED);
BIND_ENUM_CONSTANT(AXIS_LOCK_X);
diff --git a/scene/3d/physics_joint.cpp b/scene/3d/physics_joint.cpp
index aa127ab79f..1d779d31fe 100644
--- a/scene/3d/physics_joint.cpp
+++ b/scene/3d/physics_joint.cpp
@@ -32,13 +32,8 @@
void Joint::_update_joint(bool p_only_free) {
if (joint.is_valid()) {
- if (ba.is_valid() && bb.is_valid()) {
-
- if (exclude_from_collision)
- PhysicsServer::get_singleton()->body_add_collision_exception(ba, bb);
- else
- PhysicsServer::get_singleton()->body_remove_collision_exception(ba, bb);
- }
+ if (ba.is_valid() && bb.is_valid())
+ PhysicsServer::get_singleton()->body_remove_collision_exception(ba, bb);
PhysicsServer::get_singleton()->free(joint);
joint = RID();
@@ -52,33 +47,31 @@ void Joint::_update_joint(bool p_only_free) {
Node *node_a = has_node(get_node_a()) ? get_node(get_node_a()) : (Node *)NULL;
Node *node_b = has_node(get_node_b()) ? get_node(get_node_b()) : (Node *)NULL;
- if (!node_a && !node_b)
+ if (!node_a || !node_b)
return;
PhysicsBody *body_a = Object::cast_to<PhysicsBody>(node_a);
PhysicsBody *body_b = Object::cast_to<PhysicsBody>(node_b);
- if (!body_a && !body_b)
+ if (!body_a || !body_b)
return;
if (!body_a) {
SWAP(body_a, body_b);
- } else if (body_b) {
- //add a collision exception between both
- PhysicsServer::get_singleton()->body_add_collision_exception(body_a->get_rid(), body_b->get_rid());
}
joint = _configure_joint(body_a, body_b);
- if (joint.is_valid())
- PhysicsServer::get_singleton()->joint_set_solver_priority(joint, solver_priority);
+ if (!joint.is_valid())
+ return;
+
+ PhysicsServer::get_singleton()->joint_set_solver_priority(joint, solver_priority);
- if (body_b && joint.is_valid()) {
+ ba = body_a->get_rid();
+ bb = body_b->get_rid();
- ba = body_a->get_rid();
- bb = body_b->get_rid();
+ if (exclude_from_collision)
PhysicsServer::get_singleton()->body_add_collision_exception(body_a->get_rid(), body_b->get_rid());
- }
}
void Joint::set_node_a(const NodePath &p_node_a) {
@@ -129,8 +122,6 @@ void Joint::_notification(int p_what) {
case NOTIFICATION_EXIT_TREE: {
if (joint.is_valid()) {
_update_joint(true);
- //PhysicsServer::get_singleton()->free(joint);
- joint = RID();
}
} break;
}
diff --git a/scene/3d/ray_cast.cpp b/scene/3d/ray_cast.cpp
index df6764ee1a..9f61cc64ea 100644
--- a/scene/3d/ray_cast.cpp
+++ b/scene/3d/ray_cast.cpp
@@ -48,14 +48,14 @@ Vector3 RayCast::get_cast_to() const {
return cast_to;
}
-void RayCast::set_collision_layer(uint32_t p_layer) {
+void RayCast::set_collision_mask(uint32_t p_mask) {
- collision_layer = p_layer;
+ collision_mask = p_mask;
}
-uint32_t RayCast::get_collision_layer() const {
+uint32_t RayCast::get_collision_mask() const {
- return collision_layer;
+ return collision_mask;
}
void RayCast::set_type_mask(uint32_t p_mask) {
@@ -63,6 +63,21 @@ void RayCast::set_type_mask(uint32_t p_mask) {
type_mask = p_mask;
}
+void RayCast::set_collision_mask_bit(int p_bit, bool p_value) {
+
+ uint32_t mask = get_collision_mask();
+ if (p_value)
+ mask |= 1 << p_bit;
+ else
+ mask &= ~(1 << p_bit);
+ set_collision_mask(mask);
+}
+
+bool RayCast::get_collision_mask_bit(int p_bit) const {
+
+ return get_collision_mask() & (1 << p_bit);
+}
+
uint32_t RayCast::get_type_mask() const {
return type_mask;
@@ -172,7 +187,7 @@ void RayCast::_update_raycast_state() {
PhysicsDirectSpaceState::RayResult rr;
- if (dss->intersect_ray(gt.get_origin(), gt.xform(to), rr, exclude, collision_layer, type_mask)) {
+ if (dss->intersect_ray(gt.get_origin(), gt.xform(to), rr, exclude, collision_mask, type_mask)) {
collided = true;
against = rr.collider_id;
@@ -245,15 +260,18 @@ void RayCast::_bind_methods() {
ClassDB::bind_method(D_METHOD("clear_exceptions"), &RayCast::clear_exceptions);
- ClassDB::bind_method(D_METHOD("set_collision_layer", "layer"), &RayCast::set_collision_layer);
- ClassDB::bind_method(D_METHOD("get_collision_layer"), &RayCast::get_collision_layer);
+ ClassDB::bind_method(D_METHOD("set_collision_mask", "mask"), &RayCast::set_collision_mask);
+ ClassDB::bind_method(D_METHOD("get_collision_mask"), &RayCast::get_collision_mask);
+
+ ClassDB::bind_method(D_METHOD("set_collision_mask_bit", "bit", "value"), &RayCast::set_collision_mask_bit);
+ ClassDB::bind_method(D_METHOD("get_collision_mask_bit", "bit"), &RayCast::get_collision_mask_bit);
ClassDB::bind_method(D_METHOD("set_type_mask", "mask"), &RayCast::set_type_mask);
ClassDB::bind_method(D_METHOD("get_type_mask"), &RayCast::get_type_mask);
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "enabled"), "set_enabled", "is_enabled");
ADD_PROPERTY(PropertyInfo(Variant::VECTOR3, "cast_to"), "set_cast_to", "get_cast_to");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "collision_layer", PROPERTY_HINT_LAYERS_3D_PHYSICS), "set_collision_layer", "get_collision_layer");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "collision_mask", PROPERTY_HINT_LAYERS_3D_PHYSICS), "set_collision_mask", "get_collision_mask");
ADD_PROPERTY(PropertyInfo(Variant::INT, "type_mask", PROPERTY_HINT_FLAGS, "Static,Kinematic,Rigid,Character,Area"), "set_type_mask", "get_type_mask");
}
@@ -325,7 +343,7 @@ RayCast::RayCast() {
against = 0;
collided = false;
against_shape = 0;
- collision_layer = 1;
+ collision_mask = 1;
type_mask = PhysicsDirectSpaceState::TYPE_MASK_COLLISION;
cast_to = Vector3(0, -1, 0);
debug_shape = NULL;
diff --git a/scene/3d/ray_cast.h b/scene/3d/ray_cast.h
index fd566cd343..cac1596264 100644
--- a/scene/3d/ray_cast.h
+++ b/scene/3d/ray_cast.h
@@ -47,7 +47,7 @@ class RayCast : public Spatial {
Set<RID> exclude;
- uint32_t collision_layer;
+ uint32_t collision_mask;
uint32_t type_mask;
Node *debug_shape;
@@ -69,8 +69,11 @@ public:
void set_cast_to(const Vector3 &p_point);
Vector3 get_cast_to() const;
- void set_collision_layer(uint32_t p_layer);
- uint32_t get_collision_layer() const;
+ void set_collision_mask(uint32_t p_mask);
+ uint32_t get_collision_mask() const;
+
+ void set_collision_mask_bit(int p_bit, bool p_value);
+ bool get_collision_mask_bit(int p_bit) const;
void set_type_mask(uint32_t p_mask);
uint32_t get_type_mask() const;
diff --git a/scene/3d/visibility_notifier.cpp b/scene/3d/visibility_notifier.cpp
index d3203bacec..e60b32a92a 100644
--- a/scene/3d/visibility_notifier.cpp
+++ b/scene/3d/visibility_notifier.cpp
@@ -252,8 +252,8 @@ void VisibilityEnabler::_bind_methods() {
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "pause_animations"), "set_enabler", "is_enabler_enabled", ENABLER_PAUSE_ANIMATIONS);
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "freeze_bodies"), "set_enabler", "is_enabler_enabled", ENABLER_FREEZE_BODIES);
- BIND_ENUM_CONSTANT(ENABLER_FREEZE_BODIES);
BIND_ENUM_CONSTANT(ENABLER_PAUSE_ANIMATIONS);
+ BIND_ENUM_CONSTANT(ENABLER_FREEZE_BODIES);
BIND_ENUM_CONSTANT(ENABLER_MAX);
}
diff --git a/scene/animation/animation_player.cpp b/scene/animation/animation_player.cpp
index 05963acf56..0f631c69b6 100644
--- a/scene/animation/animation_player.cpp
+++ b/scene/animation/animation_player.cpp
@@ -405,6 +405,10 @@ void AnimationPlayer::_animation_process_animation(AnimationData *p_anim, float
if (a->value_track_get_update_mode(i) == Animation::UPDATE_CONTINUOUS || (p_delta == 0 && a->value_track_get_update_mode(i) == Animation::UPDATE_DISCRETE)) { //delta == 0 means seek
Variant value = a->value_track_interpolate(i, p_time);
+
+ if (value == Variant())
+ continue;
+
//thanks to trigger mode, this should be solved now..
/*
if (p_delta==0 && value.get_type()==Variant::STRING)
@@ -529,12 +533,12 @@ void AnimationPlayer::_animation_process_data(PlaybackData &cd, float p_delta, f
if (&cd == &playback.current) {
- if (!backwards && cd.pos < len && next_pos == len /*&& playback.blend.empty()*/) {
+ if (!backwards && cd.pos <= len && next_pos == len /*&& playback.blend.empty()*/) {
//playback finished
end_notify = true;
}
- if (backwards && cd.pos > 0 && next_pos == 0 /*&& playback.blend.empty()*/) {
+ if (backwards && cd.pos >= 0 && next_pos == 0 /*&& playback.blend.empty()*/) {
//playback finished
end_notify = true;
}
@@ -1254,7 +1258,7 @@ void AnimationPlayer::_bind_methods() {
ClassDB::bind_method(D_METHOD("advance", "delta"), &AnimationPlayer::advance);
ADD_GROUP("Playback Options", "playback_");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "playback_process_mode", PROPERTY_HINT_ENUM, "Fixed,Idle"), "set_animation_process_mode", "get_animation_process_mode");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "playback_process_mode", PROPERTY_HINT_ENUM, "Physics,Idle"), "set_animation_process_mode", "get_animation_process_mode");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "playback_default_blend_time", PROPERTY_HINT_RANGE, "0,4096,0.01"), "set_default_blend_time", "get_default_blend_time");
ADD_PROPERTY(PropertyInfo(Variant::NODE_PATH, "root_node"), "set_root", "get_root");
diff --git a/scene/animation/animation_tree_player.cpp b/scene/animation/animation_tree_player.cpp
index d564671bcf..ad5329c94b 100644
--- a/scene/animation/animation_tree_player.cpp
+++ b/scene/animation/animation_tree_player.cpp
@@ -1796,7 +1796,7 @@ void AnimationTreePlayer::_bind_methods() {
ClassDB::bind_method(D_METHOD("recompute_caches"), &AnimationTreePlayer::recompute_caches);
ADD_GROUP("Playback", "playback_");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "playback_process_mode", PROPERTY_HINT_ENUM, "Fixed,Idle"), "set_animation_process_mode", "get_animation_process_mode");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "playback_process_mode", PROPERTY_HINT_ENUM, "Physics,Idle"), "set_animation_process_mode", "get_animation_process_mode");
BIND_ENUM_CONSTANT(NODE_OUTPUT);
BIND_ENUM_CONSTANT(NODE_ANIMATION);
diff --git a/scene/animation/tween.cpp b/scene/animation/tween.cpp
index fb327191b9..e0508cf147 100644
--- a/scene/animation/tween.cpp
+++ b/scene/animation/tween.cpp
@@ -222,7 +222,7 @@ void Tween::_bind_methods() {
ADD_SIGNAL(MethodInfo("tween_step", PropertyInfo(Variant::OBJECT, "object"), PropertyInfo(Variant::STRING, "key"), PropertyInfo(Variant::REAL, "elapsed"), PropertyInfo(Variant::OBJECT, "value")));
ADD_SIGNAL(MethodInfo("tween_completed", PropertyInfo(Variant::OBJECT, "object"), PropertyInfo(Variant::STRING, "key")));
- ADD_PROPERTY(PropertyInfo(Variant::INT, "playback_process_mode", PROPERTY_HINT_ENUM, "Fixed,Idle"), "set_tween_process_mode", "get_tween_process_mode");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "playback_process_mode", PROPERTY_HINT_ENUM, "Physics,Idle"), "set_tween_process_mode", "get_tween_process_mode");
BIND_ENUM_CONSTANT(TWEEN_PROCESS_PHYSICS);
BIND_ENUM_CONSTANT(TWEEN_PROCESS_IDLE);
diff --git a/scene/gui/color_picker.cpp b/scene/gui/color_picker.cpp
index e58cbe373b..dbd7c1bbc0 100644
--- a/scene/gui/color_picker.cpp
+++ b/scene/gui/color_picker.cpp
@@ -40,12 +40,15 @@ void ColorPicker::_notification(int p_what) {
switch (p_what) {
case NOTIFICATION_THEME_CHANGED: {
//sample->set_texture(get_icon("color_sample"));
+ btn_pick->set_icon(get_icon("screen_picker", "ColorPicker"));
+ bt_add_preset->set_icon(get_icon("add_preset"));
_update_controls();
} break;
case NOTIFICATION_ENTER_TREE: {
btn_pick->set_icon(get_icon("screen_picker", "ColorPicker"));
+ bt_add_preset->set_icon(get_icon("add_preset"));
_update_color();
} break;
@@ -601,7 +604,6 @@ ColorPicker::ColorPicker()
preset->connect("draw", this, "_update_presets");
bt_add_preset = memnew(Button);
- bt_add_preset->set_icon(get_icon("add_preset"));
bt_add_preset->set_tooltip(TTR("Add current color as a preset"));
bt_add_preset->connect("pressed", this, "_add_preset_pressed");
bbc->add_child(bt_add_preset);
diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp
index 91c5263bf5..54a58159ac 100644
--- a/scene/gui/control.cpp
+++ b/scene/gui/control.cpp
@@ -2811,12 +2811,12 @@ void Control::_bind_methods() {
BIND_ENUM_CONSTANT(PRESET_WIDE);
BIND_ENUM_CONSTANT(PRESET_MODE_MINSIZE);
- BIND_ENUM_CONSTANT(PRESET_MODE_KEEP_HEIGHT);
BIND_ENUM_CONSTANT(PRESET_MODE_KEEP_WIDTH);
+ BIND_ENUM_CONSTANT(PRESET_MODE_KEEP_HEIGHT);
BIND_ENUM_CONSTANT(PRESET_MODE_KEEP_SIZE);
- BIND_ENUM_CONSTANT(SIZE_EXPAND);
BIND_ENUM_CONSTANT(SIZE_FILL);
+ BIND_ENUM_CONSTANT(SIZE_EXPAND);
BIND_ENUM_CONSTANT(SIZE_EXPAND_FILL);
BIND_ENUM_CONSTANT(SIZE_SHRINK_CENTER);
BIND_ENUM_CONSTANT(SIZE_SHRINK_END);
diff --git a/scene/gui/file_dialog.cpp b/scene/gui/file_dialog.cpp
index d8ff048dfb..6ade4fcc38 100644
--- a/scene/gui/file_dialog.cpp
+++ b/scene/gui/file_dialog.cpp
@@ -759,38 +759,42 @@ FileDialog::FileDialog() {
mode = MODE_SAVE_FILE;
set_title(RTR("Save a File"));
+ HBoxContainer *hbc = memnew(HBoxContainer);
+ hbc->add_child(memnew(Label(RTR("Path:"))));
dir = memnew(LineEdit);
- HBoxContainer *pathhb = memnew(HBoxContainer);
- pathhb->add_child(dir);
+ hbc->add_child(dir);
dir->set_h_size_flags(SIZE_EXPAND_FILL);
refresh = memnew(ToolButton);
refresh->connect("pressed", this, "_update_file_list");
- pathhb->add_child(refresh);
+ hbc->add_child(refresh);
drives = memnew(OptionButton);
- pathhb->add_child(drives);
+ hbc->add_child(drives);
drives->connect("item_selected", this, "_select_drive");
makedir = memnew(Button);
makedir->set_text(RTR("Create Folder"));
makedir->connect("pressed", this, "_make_dir");
- pathhb->add_child(makedir);
-
- vbc->add_margin_child(RTR("Path:"), pathhb);
+ hbc->add_child(makedir);
+ vbc->add_child(hbc);
tree = memnew(Tree);
tree->set_hide_root(true);
vbc->add_margin_child(RTR("Directories & Files:"), tree, true);
+ hbc = memnew(HBoxContainer);
+ hbc->add_child(memnew(Label(RTR("File:"))));
file = memnew(LineEdit);
- //add_child(file);
- vbc->add_margin_child(RTR("File:"), file);
-
+ file->set_stretch_ratio(4);
+ file->set_h_size_flags(SIZE_EXPAND_FILL);
+ hbc->add_child(file);
filter = memnew(OptionButton);
- //add_child(filter);
- vbc->add_margin_child(RTR("Filter:"), filter);
+ filter->set_stretch_ratio(3);
+ filter->set_h_size_flags(SIZE_EXPAND_FILL);
filter->set_clip_text(true); //too many extensions overflow it
+ hbc->add_child(filter);
+ vbc->add_child(hbc);
dir_access = DirAccess::create(DirAccess::ACCESS_RESOURCES);
access = ACCESS_RESOURCES;
diff --git a/scene/gui/graph_edit.cpp b/scene/gui/graph_edit.cpp
index 0d3cccc2b5..946a8c47a3 100644
--- a/scene/gui/graph_edit.cpp
+++ b/scene/gui/graph_edit.cpp
@@ -284,7 +284,6 @@ void GraphEdit::_notification(int p_what) {
zoom_reset->set_icon(get_icon("reset"));
zoom_plus->set_icon(get_icon("more"));
snap_button->set_icon(get_icon("snap"));
- //zoom_icon->set_texture( get_icon("Zoom", "EditorIcons"));
}
if (p_what == NOTIFICATION_DRAW) {
diff --git a/scene/gui/item_list.cpp b/scene/gui/item_list.cpp
index a034c7224f..623a110263 100644
--- a/scene/gui/item_list.cpp
+++ b/scene/gui/item_list.cpp
@@ -489,7 +489,7 @@ void ItemList::_gui_input(const Ref<InputEvent> &p_event) {
if (mb->get_button_index() == BUTTON_RIGHT) {
- emit_signal("item_rmb_selected", i, pos);
+ emit_signal("item_rmb_selected", i, get_local_mouse_position());
}
} else {
@@ -500,7 +500,7 @@ void ItemList::_gui_input(const Ref<InputEvent> &p_event) {
if (items[i].selected && mb->get_button_index() == BUTTON_RIGHT) {
- emit_signal("item_rmb_selected", i, pos);
+ emit_signal("item_rmb_selected", i, get_local_mouse_position());
} else {
bool selected = !items[i].selected;
@@ -515,7 +515,7 @@ void ItemList::_gui_input(const Ref<InputEvent> &p_event) {
if (mb->get_button_index() == BUTTON_RIGHT) {
- emit_signal("item_rmb_selected", i, pos);
+ emit_signal("item_rmb_selected", i, get_local_mouse_position());
} else if (/*select_mode==SELECT_SINGLE &&*/ mb->is_doubleclick()) {
emit_signal("item_activated", i);
diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp
index ed8eff436c..40e2dba6c2 100644
--- a/scene/gui/line_edit.cpp
+++ b/scene/gui/line_edit.cpp
@@ -161,13 +161,14 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) {
} break;
- case (KEY_Z): { // Simple One level undo
-
+ case (KEY_Z): { // undo / redo
if (editable) {
-
- undo();
+ if (k->get_shift()) {
+ redo();
+ } else {
+ undo();
+ }
}
-
} break;
case (KEY_U): { // Delete from start to cursor
@@ -175,7 +176,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) {
if (editable) {
selection_clear();
- undo_text = text;
text = text.substr(cursor_pos, text.length() - cursor_pos);
Ref<Font> font = get_font("font");
@@ -205,7 +205,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) {
if (editable) {
selection_clear();
- undo_text = text;
text = text.substr(0, cursor_pos);
_text_changed();
}
@@ -245,7 +244,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) {
break;
if (selection.enabled) {
- undo_text = text;
selection_delete();
break;
}
@@ -276,7 +274,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) {
set_cursor_position(cc);
} else {
- undo_text = text;
delete_char();
}
@@ -382,7 +379,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) {
}
if (selection.enabled) {
- undo_text = text;
selection_delete();
break;
}
@@ -417,7 +413,6 @@ void LineEdit::_gui_input(Ref<InputEvent> p_event) {
delete_text(cursor_pos, cc);
} else {
- undo_text = text;
set_cursor_position(cursor_pos + 1);
delete_char();
}
@@ -778,7 +773,6 @@ void LineEdit::copy_text() {
void LineEdit::cut_text() {
if (selection.enabled) {
- undo_text = text;
OS::get_singleton()->set_clipboard(text.substr(selection.begin, selection.end - selection.begin));
selection_delete();
}
@@ -798,23 +792,33 @@ void LineEdit::paste_text() {
}
void LineEdit::undo() {
-
- int old_cursor_pos = cursor_pos;
- text = undo_text;
-
- Ref<Font> font = get_font("font");
-
- cached_width = 0;
- for (int i = 0; i < text.length(); i++)
- cached_width += font->get_char_size(text[i]).width;
-
- if (old_cursor_pos > text.length()) {
- set_cursor_position(text.length());
- } else {
- set_cursor_position(old_cursor_pos);
+ if (undo_stack_pos == NULL) {
+ if (undo_stack.size() <= 1) {
+ return;
+ }
+ undo_stack_pos = undo_stack.back();
+ } else if (undo_stack_pos == undo_stack.front()) {
+ return;
}
+ undo_stack_pos = undo_stack_pos->prev();
+ TextOperation op = undo_stack_pos->get();
+ text = op.text;
+ set_cursor_position(op.cursor_pos);
+ _emit_text_change();
+}
- _text_changed();
+void LineEdit::redo() {
+ if (undo_stack_pos == NULL) {
+ return;
+ }
+ if (undo_stack_pos == undo_stack.back()) {
+ return;
+ }
+ undo_stack_pos = undo_stack_pos->next();
+ TextOperation op = undo_stack_pos->get();
+ text = op.text;
+ set_cursor_position(op.cursor_pos);
+ _emit_text_change();
}
void LineEdit::shift_selection_check_pre(bool p_shift) {
@@ -947,8 +951,6 @@ void LineEdit::delete_char() {
void LineEdit::delete_text(int p_from_column, int p_to_column) {
- undo_text = text;
-
if (text.size() > 0) {
Ref<Font> font = get_font("font");
if (font != NULL) {
@@ -1036,9 +1038,11 @@ void LineEdit::set_cursor_position(int p_pos) {
Ref<StyleBox> style = get_stylebox("normal");
Ref<Font> font = get_font("font");
- if (cursor_pos < window_pos) {
+ if (cursor_pos <= window_pos) {
/* Adjust window if cursor goes too much to the left */
- set_window_pos(cursor_pos);
+ if (window_pos > 0)
+ set_window_pos(window_pos - 1);
+
} else if (cursor_pos > window_pos) {
/* Adjust window if cursor goes too much to the right */
int window_width = get_size().width - style->get_minimum_size().width;
@@ -1086,8 +1090,6 @@ void LineEdit::append_at_cursor(String p_text) {
if ((max_length <= 0) || (text.length() + p_text.length() <= max_length)) {
- undo_text = text;
-
Ref<Font> font = get_font("font");
if (font != NULL) {
for (int i = 0; i < p_text.length(); i++)
@@ -1105,6 +1107,7 @@ void LineEdit::append_at_cursor(String p_text) {
void LineEdit::clear_internal() {
+ _clear_undo_stack();
cached_width = 0;
cursor_pos = 0;
window_pos = 0;
@@ -1275,6 +1278,11 @@ void LineEdit::menu_option(int p_option) {
undo();
}
} break;
+ case MENU_REDO: {
+ if (editable) {
+ redo();
+ }
+ }
}
}
@@ -1312,10 +1320,43 @@ void LineEdit::_text_changed() {
if (expand_to_text_length)
minimum_size_changed();
+ _emit_text_change();
+ _clear_redo();
+}
+
+void LineEdit::_emit_text_change() {
emit_signal("text_changed", text);
_change_notify("text");
}
+void LineEdit::_clear_redo() {
+ _create_undo_state();
+ if (undo_stack_pos == NULL) {
+ return;
+ }
+
+ undo_stack_pos = undo_stack_pos->next();
+ while (undo_stack_pos) {
+ List<TextOperation>::Element *elem = undo_stack_pos;
+ undo_stack_pos = undo_stack_pos->next();
+ undo_stack.erase(elem);
+ }
+ _create_undo_state();
+}
+
+void LineEdit::_clear_undo_stack() {
+ undo_stack.clear();
+ undo_stack_pos = NULL;
+ _create_undo_state();
+}
+
+void LineEdit::_create_undo_state() {
+ TextOperation op;
+ op.text = text;
+ op.cursor_pos = cursor_pos;
+ undo_stack.push_back(op);
+}
+
void LineEdit::_bind_methods() {
ClassDB::bind_method(D_METHOD("_toggle_draw_caret"), &LineEdit::_toggle_draw_caret);
@@ -1369,6 +1410,7 @@ void LineEdit::_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);
ADD_PROPERTYNZ(PropertyInfo(Variant::STRING, "text"), "set_text", "get_text");
@@ -1388,6 +1430,8 @@ void LineEdit::_bind_methods() {
LineEdit::LineEdit() {
+ undo_stack_pos = NULL;
+ _create_undo_state();
align = ALIGN_LEFT;
cached_width = 0;
cursor_pos = 0;
@@ -1421,6 +1465,7 @@ LineEdit::LineEdit() {
menu->add_item(TTR("Clear"), MENU_CLEAR);
menu->add_separator();
menu->add_item(TTR("Undo"), MENU_UNDO, KEY_MASK_CMD | KEY_Z);
+ menu->add_item(TTR("Redo"), MENU_REDO, KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_Z);
menu->connect("id_pressed", this, "menu_option");
expand_to_text_length = false;
}
diff --git a/scene/gui/line_edit.h b/scene/gui/line_edit.h
index 661f9b60b9..bece29a37d 100644
--- a/scene/gui/line_edit.h
+++ b/scene/gui/line_edit.h
@@ -56,6 +56,7 @@ public:
MENU_CLEAR,
MENU_SELECT_ALL,
MENU_UNDO,
+ MENU_REDO,
MENU_MAX
};
@@ -92,10 +93,22 @@ private:
bool drag_attempt;
} selection;
+ struct TextOperation {
+ int cursor_pos;
+ String text;
+ };
+ List<TextOperation> undo_stack;
+ List<TextOperation>::Element *undo_stack_pos;
+
+ void _clear_undo_stack();
+ void _clear_redo();
+ void _create_undo_state();
+
Timer *caret_blink_timer;
static void _ime_text_callback(void *p_self, String p_text, Point2 p_selection);
void _text_changed();
+ void _emit_text_change();
bool expand_to_text_length;
bool caret_blink_enabled;
@@ -166,6 +179,7 @@ public:
void cut_text();
void paste_text();
void undo();
+ void redo();
void set_editable(bool p_editable);
bool is_editable() const;
diff --git a/scene/gui/patch_9_rect.cpp b/scene/gui/nine_patch_rect.cpp
index 92c34dd3f9..c02d80bba8 100644
--- a/scene/gui/patch_9_rect.cpp
+++ b/scene/gui/nine_patch_rect.cpp
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* patch_9_rect.cpp */
+/* nine_patch_rect.cpp */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -27,7 +27,7 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#include "patch_9_rect.h"
+#include "nine_patch_rect.h"
#include "servers/visual_server.h"
diff --git a/scene/gui/patch_9_rect.h b/scene/gui/nine_patch_rect.h
index 808b7a1f5d..809daf9db3 100644
--- a/scene/gui/patch_9_rect.h
+++ b/scene/gui/nine_patch_rect.h
@@ -1,5 +1,5 @@
/*************************************************************************/
-/* patch_9_rect.h */
+/* nine_patch_rect.h */
/*************************************************************************/
/* This file is part of: */
/* GODOT ENGINE */
@@ -27,8 +27,8 @@
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
/*************************************************************************/
-#ifndef PATCH_9_FRAME_H
-#define PATCH_9_FRAME_H
+#ifndef NINE_PATCH_RECT_H
+#define NINE_PATCH_RECT_H
#include "scene/gui/control.h"
/**
@@ -81,4 +81,4 @@ public:
};
VARIANT_ENUM_CAST(NinePatchRect::AxisStretchMode)
-#endif // PATCH_9_FRAME_H
+#endif // NINE_PATCH_RECT_H
diff --git a/scene/gui/rich_text_label.cpp b/scene/gui/rich_text_label.cpp
index c2ce2a633e..ad519d8d0c 100644
--- a/scene/gui/rich_text_label.cpp
+++ b/scene/gui/rich_text_label.cpp
@@ -354,7 +354,7 @@ int RichTextLabel::_process_line(ItemFrame *p_frame, const Vector2 &p_ofs, int &
cw = font->get_char_size(c[i], c[i + 1]).x;
draw_rect(Rect2(p_ofs.x + pofs, p_ofs.y + y, cw, lh), selection_bg);
if (visible)
- font->draw_char(ci, p_ofs + Point2(align_ofs + pofs, y + lh - (fh - ascent)), c[i], c[i + 1], selection_fg);
+ font->draw_char(ci, p_ofs + Point2(align_ofs + pofs, y + lh - (fh - ascent)), c[i], c[i + 1], override_selected_font_color ? selection_fg : color);
} else {
if (visible)
@@ -1376,6 +1376,16 @@ bool RichTextLabel::is_meta_underlined() const {
return underline_meta;
}
+void RichTextLabel::set_override_selected_font_color(bool p_override_selected_font_color) {
+
+ override_selected_font_color = p_override_selected_font_color;
+}
+
+bool RichTextLabel::is_overriding_selected_font_color() const {
+
+ return override_selected_font_color;
+}
+
void RichTextLabel::set_offset(int p_pixel) {
vscroll->set_value(p_pixel);
@@ -1906,6 +1916,9 @@ void RichTextLabel::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_meta_underline", "enable"), &RichTextLabel::set_meta_underline);
ClassDB::bind_method(D_METHOD("is_meta_underlined"), &RichTextLabel::is_meta_underlined);
+ ClassDB::bind_method(D_METHOD("set_override_selected_font_color", "override"), &RichTextLabel::set_override_selected_font_color);
+ ClassDB::bind_method(D_METHOD("is_overriding_selected_font_color"), &RichTextLabel::is_overriding_selected_font_color);
+
ClassDB::bind_method(D_METHOD("set_scroll_active", "active"), &RichTextLabel::set_scroll_active);
ClassDB::bind_method(D_METHOD("is_scroll_active"), &RichTextLabel::is_scroll_active);
@@ -1948,6 +1961,7 @@ void RichTextLabel::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "visible_characters", PROPERTY_HINT_RANGE, "-1,128000,1"), "set_visible_characters", "get_visible_characters");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "percent_visible", PROPERTY_HINT_RANGE, "0,1,0.001"), "set_percent_visible", "get_percent_visible");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "override_selected_font_color"), "set_override_selected_font_color", "is_overriding_selected_font_color");
ADD_SIGNAL(MethodInfo("meta_clicked", PropertyInfo(Variant::NIL, "meta", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NIL_IS_VARIANT)));
@@ -1970,6 +1984,7 @@ void RichTextLabel::_bind_methods() {
BIND_ENUM_CONSTANT(ITEM_ALIGN);
BIND_ENUM_CONSTANT(ITEM_INDENT);
BIND_ENUM_CONSTANT(ITEM_LIST);
+ BIND_ENUM_CONSTANT(ITEM_TABLE);
BIND_ENUM_CONSTANT(ITEM_META);
}
@@ -2003,6 +2018,7 @@ RichTextLabel::RichTextLabel() {
tab_size = 4;
default_align = ALIGN_LEFT;
underline_meta = true;
+ override_selected_font_color = false;
scroll_visible = false;
scroll_follow = false;
diff --git a/scene/gui/rich_text_label.h b/scene/gui/rich_text_label.h
index 24c1e5eb59..f9e37b1094 100644
--- a/scene/gui/rich_text_label.h
+++ b/scene/gui/rich_text_label.h
@@ -221,6 +221,7 @@ private:
int tab_size;
bool underline_meta;
+ bool override_selected_font_color;
Align default_align;
@@ -313,6 +314,9 @@ public:
void set_meta_underline(bool p_underline);
bool is_meta_underlined() const;
+ void set_override_selected_font_color(bool p_override_selected_font_color);
+ bool is_overriding_selected_font_color() const;
+
void set_scroll_active(bool p_active);
bool is_scroll_active() const;
diff --git a/scene/gui/separator.cpp b/scene/gui/separator.cpp
index 3db234f7cc..55d837458a 100644
--- a/scene/gui/separator.cpp
+++ b/scene/gui/separator.cpp
@@ -32,7 +32,11 @@
Size2 Separator::get_minimum_size() const {
Size2 ms(3, 3);
- ms[orientation] = get_constant("separation");
+ if (orientation == VERTICAL) {
+ ms.x = get_constant("separation");
+ } else { // HORIZONTAL
+ ms.y = get_constant("separation");
+ }
return ms;
}
diff --git a/scene/gui/slider.cpp b/scene/gui/slider.cpp
index 116e0ac354..e88742a3e3 100644
--- a/scene/gui/slider.cpp
+++ b/scene/gui/slider.cpp
@@ -157,6 +157,12 @@ void Slider::_notification(int p_what) {
mouse_inside = false;
update();
} break;
+ case NOTIFICATION_VISIBILITY_CHANGED: // fallthrough
+ case NOTIFICATION_EXIT_TREE: {
+
+ mouse_inside = false;
+ grab.active = false;
+ } break;
case NOTIFICATION_DRAW: {
RID ci = get_canvas_item();
Size2i size = get_size();
diff --git a/scene/gui/tab_container.cpp b/scene/gui/tab_container.cpp
index 6e50614e8f..581034ddee 100644
--- a/scene/gui/tab_container.cpp
+++ b/scene/gui/tab_container.cpp
@@ -90,19 +90,28 @@ void TabContainer::_gui_input(const Ref<InputEvent> &p_event) {
return;
}
+ // Do not activate tabs when tabs is empty
+ if (get_tab_count() == 0)
+ return;
+
Vector<Control *> tabs = _get_tabs();
// Handle navigation buttons.
if (buttons_visible_cache) {
+ int popup_ofs = 0;
+ if (popup) {
+ popup_ofs = menu->get_width();
+ }
+
Ref<Texture> increment = get_icon("increment");
Ref<Texture> decrement = get_icon("decrement");
- if (pos.x > size.width - increment->get_width()) {
+ if (pos.x > size.width - increment->get_width() - popup_ofs) {
if (last_tab_cache < tabs.size() - 1) {
first_tab_cache += 1;
update();
}
return;
- } else if (pos.x > size.width - increment->get_width() - decrement->get_width()) {
+ } else if (pos.x > size.width - increment->get_width() - decrement->get_width() - popup_ofs) {
if (first_tab_cache > 0) {
first_tab_cache -= 1;
update();
@@ -293,6 +302,8 @@ void TabContainer::_notification(int p_what) {
}
int TabContainer::_get_tab_width(int p_index) const {
+
+ ERR_FAIL_INDEX_V(p_index, get_tab_count(), 0);
Control *control = Object::cast_to<Control>(_get_tabs()[p_index]);
if (!control || control->is_set_as_toplevel())
return 0;
@@ -664,6 +675,7 @@ void TabContainer::_bind_methods() {
TabContainer::TabContainer() {
first_tab_cache = 0;
+ last_tab_cache = 0;
buttons_visible_cache = false;
tabs_ofs_cache = 0;
current = 0;
diff --git a/scene/gui/tabs.cpp b/scene/gui/tabs.cpp
index 085f6de6b8..49823e18fc 100644
--- a/scene/gui/tabs.cpp
+++ b/scene/gui/tabs.cpp
@@ -820,9 +820,9 @@ void Tabs::_bind_methods() {
BIND_ENUM_CONSTANT(ALIGN_RIGHT);
BIND_ENUM_CONSTANT(ALIGN_MAX);
+ BIND_ENUM_CONSTANT(CLOSE_BUTTON_SHOW_NEVER);
BIND_ENUM_CONSTANT(CLOSE_BUTTON_SHOW_ACTIVE_ONLY);
BIND_ENUM_CONSTANT(CLOSE_BUTTON_SHOW_ALWAYS);
- BIND_ENUM_CONSTANT(CLOSE_BUTTON_SHOW_NEVER);
BIND_ENUM_CONSTANT(CLOSE_BUTTON_MAX);
}
diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp
index 33c29547be..2d55c077f1 100644
--- a/scene/gui/text_edit.cpp
+++ b/scene/gui/text_edit.cpp
@@ -732,8 +732,17 @@ void TextEdit::_notification(int p_what) {
VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2(xmargin_beg, ofs_y, xmargin_end - xmargin_beg, get_row_height()), cache.mark_color);
}
- if (line == cursor.line) {
- VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2(0, ofs_y, xmargin_end, get_row_height()), cache.current_line_color);
+ if (str.length() == 0) {
+ // draw line background if empty as we won't loop at at all
+ if (line == cursor.line && highlight_current_line) {
+ VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2(0, ofs_y, xmargin_end, get_row_height()), cache.current_line_color);
+ }
+
+ // give visual indication of empty selected line
+ if (selection.active && line >= selection.from_line && line <= selection.to_line) {
+ int char_w = cache.font->get_char_size(' ').width;
+ VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2(xmargin_beg, ofs_y, char_w, get_row_height()), cache.selection_color);
+ }
}
if (text.is_breakpoint(line) && !draw_breakpoint_gutter) {
@@ -764,6 +773,7 @@ void TextEdit::_notification(int p_what) {
cache.font->draw(ci, Point2(cache.style_normal->get_margin(MARGIN_LEFT) + cache.breakpoint_gutter_width, ofs_y + cache.font->get_ascent()), fc, cache.line_number_color);
}
+ //loop through charcters in one line
for (int j = 0; j < str.length(); j++) {
//look for keyword
@@ -952,10 +962,25 @@ void TextEdit::_notification(int p_what) {
}
}
+ //current line highlighting
bool in_selection = (selection.active && line >= selection.from_line && line <= selection.to_line && (line > selection.from_line || j >= selection.from_column) && (line < selection.to_line || j < selection.to_column));
+ if (line == cursor.line && highlight_current_line) {
+ // if its the first char draw behind line numbers
+ if (j == 0) {
+ VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2(0, ofs_y, (char_ofs + char_margin), get_row_height()), cache.current_line_color);
+ }
+ // if its the last char draw to end of the line
+ if (j == str.length() - 1) {
+ VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2(char_ofs + char_margin + char_w, ofs_y, xmargin_end - (char_ofs + char_margin + char_w), get_row_height()), cache.current_line_color);
+ }
+ // actual text
+ if (!in_selection) {
+ VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2(Point2i(char_ofs + char_margin, ofs_y), Size2i(char_w, get_row_height())), cache.current_line_color);
+ }
+ }
+
if (in_selection) {
- //inside selection!
VisualServer::get_singleton()->canvas_item_add_rect(ci, Rect2(Point2i(char_ofs + char_margin, ofs_y), Size2i(char_w, get_row_height())), cache.selection_color);
}
@@ -998,7 +1023,7 @@ void TextEdit::_notification(int p_what) {
if (brace_open_mismatch)
color = cache.brace_mismatch_color;
- cache.font->draw_char(ci, Point2i(char_ofs + char_margin, ofs_y + ascent), '_', str[j + 1], in_selection ? cache.font_selected_color : color);
+ cache.font->draw_char(ci, Point2i(char_ofs + char_margin, ofs_y + ascent), '_', str[j + 1], in_selection && override_selected_font_color ? cache.font_selected_color : color);
}
if (
@@ -1007,7 +1032,7 @@ void TextEdit::_notification(int p_what) {
if (brace_close_mismatch)
color = cache.brace_mismatch_color;
- cache.font->draw_char(ci, Point2i(char_ofs + char_margin, ofs_y + ascent), '_', str[j + 1], in_selection ? cache.font_selected_color : color);
+ cache.font->draw_char(ci, Point2i(char_ofs + char_margin, ofs_y + ascent), '_', str[j + 1], in_selection && override_selected_font_color ? cache.font_selected_color : color);
}
}
@@ -1066,15 +1091,15 @@ void TextEdit::_notification(int p_what) {
}
if (str[j] >= 32) {
- int w = cache.font->draw_char(ci, Point2i(char_ofs + char_margin, ofs_y + ascent), str[j], str[j + 1], in_selection ? cache.font_selected_color : color);
+ int w = cache.font->draw_char(ci, Point2i(char_ofs + char_margin, ofs_y + ascent), str[j], str[j + 1], in_selection && override_selected_font_color ? cache.font_selected_color : color);
if (underlined) {
- draw_rect(Rect2(char_ofs + char_margin, ofs_y + ascent + 2, w, 1), in_selection ? cache.font_selected_color : color);
+ draw_rect(Rect2(char_ofs + char_margin, ofs_y + ascent + 2, w, 1), in_selection && override_selected_font_color ? cache.font_selected_color : color);
}
}
else if (draw_tabs && str[j] == '\t') {
int yofs = (get_row_height() - cache.tab_icon->get_height()) / 2;
- cache.tab_icon->draw(ci, Point2(char_ofs + char_margin, ofs_y + yofs), in_selection ? cache.font_selected_color : color);
+ cache.tab_icon->draw(ci, Point2(char_ofs + char_margin, ofs_y + yofs), in_selection && override_selected_font_color ? cache.font_selected_color : color);
}
char_ofs += char_w;
@@ -4256,6 +4281,13 @@ bool TextEdit::is_drawing_tabs() const {
return draw_tabs;
}
+void TextEdit::set_override_selected_font_color(bool p_override_selected_font_color) {
+ override_selected_font_color = p_override_selected_font_color;
+}
+bool TextEdit::is_overriding_selected_font_color() const {
+ return override_selected_font_color;
+}
+
void TextEdit::set_insert_mode(bool p_enabled) {
insert_mode = p_enabled;
update();
@@ -4457,7 +4489,13 @@ void TextEdit::_update_completion_candidates() {
completion_index = 0;
completion_base = s;
Vector<float> sim_cache;
+ bool single_quote = s.begins_with("'");
+
for (int i = 0; i < completion_strings.size(); i++) {
+ if (single_quote && completion_strings[i].is_quoted()) {
+ completion_strings[i] = completion_strings[i].unquote().quote("'");
+ }
+
if (s == completion_strings[i]) {
// A perfect match, stop completion
_cancel_completion();
@@ -4700,6 +4738,15 @@ int TextEdit::get_breakpoint_gutter_width() const {
return cache.breakpoint_gutter_width;
}
+void TextEdit::set_highlight_current_line(bool p_enabled) {
+ highlight_current_line = p_enabled;
+ update();
+}
+
+bool TextEdit::is_highlight_current_line_enabled() const {
+ return highlight_current_line;
+}
+
bool TextEdit::is_text_field() const {
return true;
@@ -4821,9 +4868,15 @@ void TextEdit::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_highlight_all_occurrences", "enable"), &TextEdit::set_highlight_all_occurrences);
ClassDB::bind_method(D_METHOD("is_highlight_all_occurrences_enabled"), &TextEdit::is_highlight_all_occurrences_enabled);
+ ClassDB::bind_method(D_METHOD("set_override_selected_font_color", "override"), &TextEdit::set_override_selected_font_color);
+ ClassDB::bind_method(D_METHOD("is_overriding_selected_font_color"), &TextEdit::is_overriding_selected_font_color);
+
ClassDB::bind_method(D_METHOD("set_syntax_coloring", "enable"), &TextEdit::set_syntax_coloring);
ClassDB::bind_method(D_METHOD("is_syntax_coloring_enabled"), &TextEdit::is_syntax_coloring_enabled);
+ ClassDB::bind_method(D_METHOD("set_highlight_current_line", "enabled"), &TextEdit::set_highlight_current_line);
+ ClassDB::bind_method(D_METHOD("is_highlight_current_line_enabled"), &TextEdit::is_highlight_current_line_enabled);
+
ClassDB::bind_method(D_METHOD("set_smooth_scroll_enable", "enable"), &TextEdit::set_smooth_scroll_enabled);
ClassDB::bind_method(D_METHOD("is_smooth_scroll_enabled"), &TextEdit::is_smooth_scroll_enabled);
ClassDB::bind_method(D_METHOD("set_v_scroll_speed", "speed"), &TextEdit::set_v_scroll_speed);
@@ -4835,9 +4888,11 @@ void TextEdit::_bind_methods() {
ClassDB::bind_method(D_METHOD("menu_option", "option"), &TextEdit::menu_option);
ClassDB::bind_method(D_METHOD("get_menu"), &TextEdit::get_menu);
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "highlight_current_line"), "set_highlight_current_line", "is_highlight_current_line_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "syntax_highlighting"), "set_syntax_coloring", "is_syntax_coloring_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "show_line_numbers"), "set_show_line_numbers", "is_show_line_numbers_enabled");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "highlight_all_occurrences"), "set_highlight_all_occurrences", "is_highlight_all_occurrences_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::BOOL, "override_selected_font_color"), "set_override_selected_font_color", "is_overriding_selected_font_color");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "smooth_scrolling"), "set_smooth_scroll_enable", "is_smooth_scroll_enabled");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "v_scroll_speed"), "set_v_scroll_speed", "get_v_scroll_speed");
@@ -4868,6 +4923,7 @@ TextEdit::TextEdit() {
readonly = false;
setting_row = false;
draw_tabs = false;
+ override_selected_font_color = false;
draw_caret = true;
max_chars = 0;
clear();
@@ -4954,6 +5010,7 @@ TextEdit::TextEdit() {
auto_brace_completion_enabled = false;
brace_matching_enabled = false;
highlight_all_occurrences = false;
+ highlight_current_line = false;
indent_using_spaces = false;
space_indent = " ";
auto_indent = false;
diff --git a/scene/gui/text_edit.h b/scene/gui/text_edit.h
index 7e61c4e8b1..b4b14d0139 100644
--- a/scene/gui/text_edit.h
+++ b/scene/gui/text_edit.h
@@ -238,6 +238,7 @@ class TextEdit : public Control {
bool setting_row;
bool wrap;
bool draw_tabs;
+ bool override_selected_font_color;
bool cursor_changed_dirty;
bool text_changed_dirty;
bool undo_enabled;
@@ -252,6 +253,7 @@ class TextEdit : public Control {
bool scroll_past_end_of_file_enabled;
bool auto_brace_completion_enabled;
bool brace_matching_enabled;
+ bool highlight_current_line;
bool auto_indent;
bool cut_copy_line;
bool insert_mode;
@@ -482,6 +484,8 @@ public:
void set_indent_size(const int p_size);
void set_draw_tabs(bool p_draw);
bool is_drawing_tabs() const;
+ void set_override_selected_font_color(bool p_override_selected_font_color);
+ bool is_overriding_selected_font_color() const;
void set_insert_mode(bool p_enabled);
bool is_insert_mode() const;
@@ -511,6 +515,9 @@ public:
void set_show_line_numbers(bool p_show);
bool is_show_line_numbers_enabled() const;
+ void set_highlight_current_line(bool p_enabled);
+ bool is_highlight_current_line_enabled() const;
+
void set_line_numbers_zero_padded(bool p_zero_padded);
void set_show_line_length_guideline(bool p_show);
diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp
index 178a1c272b..5c6f2b0d01 100644
--- a/scene/gui/tree.cpp
+++ b/scene/gui/tree.cpp
@@ -47,18 +47,21 @@ void TreeItem::move_to_top() {
}
void TreeItem::move_to_bottom() {
-
if (!parent || !next)
return;
- while (next) {
+ TreeItem *prev = get_prev();
+ TreeItem *last = next;
+ while (last->next)
+ last = last->next;
- if (parent->childs == this)
- parent->childs = next;
- TreeItem *n = next;
- next = n->next;
- n->next = this;
+ if (prev) {
+ prev->next = next;
+ } else {
+ parent->childs = next;
}
+ last->next = this;
+ next = NULL;
}
Size2 TreeItem::Cell::get_icon_size() const {
@@ -1123,7 +1126,7 @@ int Tree::draw_item(const Point2i &p_pos, const Point2 &p_draw_ofs, const Size2
if (p_item->cells[i].selected && select_mode != SELECT_ROW) {
- Rect2i r(item_rect.position, item_rect.size);
+ Rect2i r(cell_rect.position, cell_rect.size);
if (p_item->cells[i].text.size() > 0) {
float icon_width = p_item->cells[i].get_icon_size().width;
r.position.x += icon_width;
diff --git a/scene/gui/viewport_container.cpp b/scene/gui/viewport_container.cpp
index c321b873fd..9244d8de2f 100644
--- a/scene/gui/viewport_container.cpp
+++ b/scene/gui/viewport_container.cpp
@@ -62,6 +62,34 @@ bool ViewportContainer::is_stretch_enabled() const {
return stretch;
}
+void ViewportContainer::set_stretch_shrink(int p_shrink) {
+
+ ERR_FAIL_COND(p_shrink < 1);
+ if (shrink == p_shrink)
+ return;
+
+ shrink = p_shrink;
+
+ if (!stretch)
+ return;
+
+ for (int i = 0; i < get_child_count(); i++) {
+
+ Viewport *c = Object::cast_to<Viewport>(get_child(i));
+ if (!c)
+ continue;
+
+ c->set_size(get_size() / shrink);
+ }
+
+ update();
+}
+
+int ViewportContainer::get_stretch_shrink() const {
+
+ return shrink;
+}
+
void ViewportContainer::_notification(int p_what) {
if (p_what == NOTIFICATION_RESIZED) {
@@ -75,7 +103,7 @@ void ViewportContainer::_notification(int p_what) {
if (!c)
continue;
- c->set_size(get_size());
+ c->set_size(get_size() / shrink);
}
}
@@ -115,10 +143,15 @@ void ViewportContainer::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_stretch", "enable"), &ViewportContainer::set_stretch);
ClassDB::bind_method(D_METHOD("is_stretch_enabled"), &ViewportContainer::is_stretch_enabled);
+ ClassDB::bind_method(D_METHOD("set_stretch_shrink", "amount"), &ViewportContainer::set_stretch_shrink);
+ ClassDB::bind_method(D_METHOD("get_stretch_shrink"), &ViewportContainer::get_stretch_shrink);
+
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "stretch"), "set_stretch", "is_stretch_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "stretch_shrink"), "set_stretch_shrink", "get_stretch_shrink");
}
ViewportContainer::ViewportContainer() {
stretch = false;
+ shrink = 1;
}
diff --git a/scene/gui/viewport_container.h b/scene/gui/viewport_container.h
index 630523b5fb..ebf5869ed9 100644
--- a/scene/gui/viewport_container.h
+++ b/scene/gui/viewport_container.h
@@ -37,6 +37,7 @@ class ViewportContainer : public Container {
GDCLASS(ViewportContainer, Container);
bool stretch;
+ int shrink;
protected:
void _notification(int p_what);
@@ -46,6 +47,9 @@ public:
void set_stretch(bool p_enable);
bool is_stretch_enabled() const;
+ void set_stretch_shrink(int p_shrink);
+ int get_stretch_shrink() const;
+
virtual Size2 get_minimum_size() const;
ViewportContainer();
diff --git a/scene/main/node.cpp b/scene/main/node.cpp
index c2a31b4a8b..e6e11de177 100755
--- a/scene/main/node.cpp
+++ b/scene/main/node.cpp
@@ -212,6 +212,8 @@ void Node::_propagate_enter_tree() {
emit_signal(SceneStringNames::get_singleton()->tree_entered);
+ data.tree->node_added(this);
+
data.blocked++;
//block while adding children
@@ -2801,12 +2803,12 @@ void Node::_bind_methods() {
BIND_CONSTANT(NOTIFICATION_EXIT_TREE);
BIND_CONSTANT(NOTIFICATION_MOVED_IN_PARENT);
BIND_CONSTANT(NOTIFICATION_READY);
+ BIND_CONSTANT(NOTIFICATION_PAUSED);
+ BIND_CONSTANT(NOTIFICATION_UNPAUSED);
BIND_CONSTANT(NOTIFICATION_PHYSICS_PROCESS);
BIND_CONSTANT(NOTIFICATION_PROCESS);
BIND_CONSTANT(NOTIFICATION_PARENTED);
BIND_CONSTANT(NOTIFICATION_UNPARENTED);
- BIND_CONSTANT(NOTIFICATION_PAUSED);
- BIND_CONSTANT(NOTIFICATION_UNPAUSED);
BIND_CONSTANT(NOTIFICATION_INSTANCED);
BIND_CONSTANT(NOTIFICATION_DRAG_BEGIN);
BIND_CONSTANT(NOTIFICATION_DRAG_END);
diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp
index 7a28e2a6f8..d4be683a2b 100644
--- a/scene/main/scene_tree.cpp
+++ b/scene/main/scene_tree.cpp
@@ -85,6 +85,11 @@ void SceneTree::tree_changed() {
emit_signal(tree_changed_name);
}
+void SceneTree::node_added(Node *p_node) {
+
+ emit_signal(node_added_name, p_node);
+}
+
void SceneTree::node_removed(Node *p_node) {
if (current_scene == p_node) {
@@ -1172,7 +1177,7 @@ void SceneTree::_update_root_rect() {
}
}
-void SceneTree::set_screen_stretch(StretchMode p_mode, StretchAspect p_aspect, const Size2 p_minsize, int p_shrink) {
+void SceneTree::set_screen_stretch(StretchMode p_mode, StretchAspect p_aspect, const Size2 p_minsize, real_t p_shrink) {
stretch_mode = p_mode;
stretch_aspect = p_aspect;
@@ -2189,6 +2194,7 @@ void SceneTree::_bind_methods() {
ClassDB::bind_method(D_METHOD("_server_disconnected"), &SceneTree::_server_disconnected);
ADD_SIGNAL(MethodInfo("tree_changed"));
+ ADD_SIGNAL(MethodInfo("node_added", PropertyInfo(Variant::OBJECT, "node")));
ADD_SIGNAL(MethodInfo("node_removed", PropertyInfo(Variant::OBJECT, "node")));
ADD_SIGNAL(MethodInfo("screen_resized"));
ADD_SIGNAL(MethodInfo("node_configuration_warning_changed", PropertyInfo(Variant::OBJECT, "node")));
@@ -2260,6 +2266,7 @@ SceneTree::SceneTree() {
root = NULL;
current_frame = 0;
tree_changed_name = "tree_changed";
+ node_added_name = "node_added";
node_removed_name = "node_removed";
ugc_locked = false;
call_lock = 0;
diff --git a/scene/main/scene_tree.h b/scene/main/scene_tree.h
index f3e689adab..bc3efdc42f 100644
--- a/scene/main/scene_tree.h
+++ b/scene/main/scene_tree.h
@@ -124,6 +124,7 @@ private:
bool input_handled;
Size2 last_screen_size;
StringName tree_changed_name;
+ StringName node_added_name;
StringName node_removed_name;
int64_t current_frame;
@@ -147,7 +148,7 @@ private:
StretchMode stretch_mode;
StretchAspect stretch_aspect;
Size2i stretch_min;
- int stretch_shrink;
+ real_t stretch_shrink;
void _update_root_rect();
@@ -233,6 +234,7 @@ private:
void _rpc(Node *p_from, int p_to, bool p_unreliable, bool p_set, const StringName &p_name, const Variant **p_arg, int p_argcount);
void tree_changed();
+ void node_added(Node *p_node);
void node_removed(Node *p_node);
Group *add_to_group(const StringName &p_group, Node *p_node);
@@ -415,7 +417,7 @@ public:
void get_nodes_in_group(const StringName &p_group, List<Node *> *p_list);
bool has_group(const StringName &p_identifier) const;
- void set_screen_stretch(StretchMode p_mode, StretchAspect p_aspect, const Size2 p_minsize, int p_shrink = 1);
+ void set_screen_stretch(StretchMode p_mode, StretchAspect p_aspect, const Size2 p_minsize, real_t p_shrink = 1);
//void change_scene(const String& p_path);
//Node *get_loaded_scene();
diff --git a/scene/main/timer.cpp b/scene/main/timer.cpp
index 23854b5f59..e0c6f93f25 100755
--- a/scene/main/timer.cpp
+++ b/scene/main/timer.cpp
@@ -199,7 +199,7 @@ void Timer::_bind_methods() {
ADD_SIGNAL(MethodInfo("timeout"));
- ADD_PROPERTY(PropertyInfo(Variant::INT, "process_mode", PROPERTY_HINT_ENUM, "Fixed,Idle"), "set_timer_process_mode", "get_timer_process_mode");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "process_mode", PROPERTY_HINT_ENUM, "Physics,Idle"), "set_timer_process_mode", "get_timer_process_mode");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "wait_time", PROPERTY_HINT_EXP_RANGE, "0.01,4096,0.01"), "set_wait_time", "get_wait_time");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "one_shot"), "set_one_shot", "is_one_shot");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "autostart"), "set_autostart", "has_autostart");
diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp
index 37a393b55b..0a02f471c1 100644
--- a/scene/main/viewport.cpp
+++ b/scene/main/viewport.cpp
@@ -2371,8 +2371,13 @@ void Viewport::input(const Ref<InputEvent> &p_event) {
ERR_FAIL_COND(!is_inside_tree());
- get_tree()->_call_input_pause(input_group, "_input", p_event); //not a bug, must happen before GUI, order is _input -> gui input -> _unhandled input
- _gui_input_event(p_event);
+ if (!get_tree()->is_input_handled()) {
+ get_tree()->_call_input_pause(input_group, "_input", p_event); //not a bug, must happen before GUI, order is _input -> gui input -> _unhandled input
+ }
+
+ if (!get_tree()->is_input_handled()) {
+ _gui_input_event(p_event);
+ }
//get_tree()->call_group(SceneTree::GROUP_CALL_REVERSE|SceneTree::GROUP_CALL_REALTIME|SceneTree::GROUP_CALL_MULIILEVEL,gui_input_group,"_gui_input",p_event); //special one for GUI, as controls use their own process check
}
@@ -2711,7 +2716,7 @@ void Viewport::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::INT, "debug_draw", PROPERTY_HINT_ENUM, "Disabled,Unshaded,Overdraw,Wireframe"), "set_debug_draw", "get_debug_draw");
ADD_GROUP("Render Target", "render_target_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "render_target_v_flip"), "set_vflip", "get_vflip");
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "render_target_clear_mode", PROPERTY_HINT_ENUM, "Always,Never,NextFrame"), "set_clear_mode", "get_clear_mode");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "render_target_clear_mode", PROPERTY_HINT_ENUM, "Always,Never,Next Frame"), "set_clear_mode", "get_clear_mode");
ADD_PROPERTY(PropertyInfo(Variant::INT, "render_target_update_mode", PROPERTY_HINT_ENUM, "Disabled,Once,When Visible,Always"), "set_update_mode", "get_update_mode");
ADD_GROUP("Audio Listener", "audio_listener_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "audio_listener_enable_2d"), "set_as_audio_listener_2d", "is_audio_listener_2d");
diff --git a/scene/register_scene_types.cpp b/scene/register_scene_types.cpp
index 75268aad1f..eaa16069cf 100644
--- a/scene/register_scene_types.cpp
+++ b/scene/register_scene_types.cpp
@@ -86,7 +86,7 @@
#include "scene/gui/option_button.h"
#include "scene/gui/panel.h"
#include "scene/gui/panel_container.h"
-#include "scene/gui/patch_9_rect.h"
+#include "scene/gui/nine_patch_rect.h"
#include "scene/gui/popup_menu.h"
#include "scene/gui/progress_bar.h"
#include "scene/gui/reference_rect.h"
@@ -152,6 +152,10 @@
#include "scene/resources/world_2d.h"
#include "scene/scene_string_names.h"
+#include "scene/3d/particles.h"
+#include "scene/3d/scenario_fx.h"
+#include "scene/3d/spatial.h"
+
#ifndef _3D_DISABLED
#include "scene/3d/area.h"
#include "scene/3d/arvr_nodes.h"
@@ -169,7 +173,6 @@
#include "scene/3d/multimesh_instance.h"
#include "scene/3d/navigation.h"
#include "scene/3d/navigation_mesh.h"
-#include "scene/3d/particles.h"
#include "scene/3d/path.h"
#include "scene/3d/physics_body.h"
#include "scene/3d/physics_joint.h"
@@ -180,9 +183,7 @@
#include "scene/3d/reflection_probe.h"
#include "scene/3d/remote_transform.h"
#include "scene/3d/room_instance.h"
-#include "scene/3d/scenario_fx.h"
#include "scene/3d/skeleton.h"
-#include "scene/3d/spatial.h"
#include "scene/3d/sprite_3d.h"
#include "scene/3d/vehicle_body.h"
#include "scene/3d/visibility_notifier.h"
@@ -541,6 +542,7 @@ void register_scene_types() {
ClassDB::register_class<StyleBoxEmpty>();
ClassDB::register_class<StyleBoxTexture>();
ClassDB::register_class<StyleBoxFlat>();
+ ClassDB::register_class<StyleBoxLine>();
ClassDB::register_class<Theme>();
ClassDB::register_class<PolygonPathFinder>();
@@ -551,7 +553,9 @@ void register_scene_types() {
ClassDB::register_class<AudioStreamPlayer>();
ClassDB::register_class<AudioStreamPlayer2D>();
+#ifndef _3D_DISABLED
ClassDB::register_class<AudioStreamPlayer3D>();
+#endif
ClassDB::register_virtual_class<VideoStream>();
ClassDB::register_class<AudioStreamSample>();
diff --git a/scene/resources/animation.cpp b/scene/resources/animation.cpp
index 8dcc8d4e14..21e4a85cd1 100644
--- a/scene/resources/animation.cpp
+++ b/scene/resources/animation.cpp
@@ -1171,9 +1171,7 @@ T Animation::_interpolate(const Vector<TKey<T> > &p_keys, float p_time, Interpol
ERR_FAIL_COND_V(idx == -2, T());
- if (p_ok)
- *p_ok = true;
-
+ bool result = true;
int next = 0;
float c = 0;
// prepare for all cases of interpolation
@@ -1243,10 +1241,19 @@ T Animation::_interpolate(const Vector<TKey<T> > &p_keys, float p_time, Interpol
} else if (idx < 0) {
- idx = next = 0;
+ // only allow extending first key to anim start if looping
+ if (loop)
+ idx = next = 0;
+ else
+ result = false;
}
}
+ if (p_ok)
+ *p_ok = result;
+ if (!result)
+ return T();
+
float tr = p_keys[idx].transition;
if (tr == 0 || idx == next) {
@@ -1298,7 +1305,7 @@ Error Animation::transform_track_interpolate(int p_track, float p_time, Vector3
TransformKey tk = _interpolate(tt->transforms, p_time, tt->interpolation, tt->loop_wrap, &ok);
- if (!ok) // ??
+ if (!ok)
return ERR_UNAVAILABLE;
if (r_loc)
diff --git a/scene/resources/audio_stream_sample.cpp b/scene/resources/audio_stream_sample.cpp
index 1fd84a860e..fdc3b79db6 100644
--- a/scene/resources/audio_stream_sample.cpp
+++ b/scene/resources/audio_stream_sample.cpp
@@ -486,7 +486,8 @@ PoolVector<uint8_t> AudioStreamSample::get_data() const {
{
PoolVector<uint8_t>::Write w = pv.write();
- copymem(w.ptr(), data, data_bytes);
+ uint8_t *dataptr = (uint8_t *)data;
+ copymem(w.ptr(), dataptr + DATA_PAD, data_bytes);
}
}
diff --git a/scene/resources/default_theme/default_theme.cpp b/scene/resources/default_theme/default_theme.cpp
index 923639bc79..ce439fece6 100644
--- a/scene/resources/default_theme/default_theme.cpp
+++ b/scene/resources/default_theme/default_theme.cpp
@@ -512,6 +512,7 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
// HSlider
theme->set_stylebox("slider", "HSlider", make_stylebox(hslider_bg_png, 4, 4, 4, 4));
+ theme->set_stylebox("grabber_area", "HSlider", make_stylebox(hslider_bg_png, 4, 4, 4, 4));
theme->set_stylebox("grabber_highlight", "HSlider", make_stylebox(hslider_grabber_hl_png, 6, 6, 6, 6));
theme->set_stylebox("grabber_disabled", "HSlider", make_stylebox(hslider_grabber_disabled_png, 6, 6, 6, 6));
theme->set_stylebox("focus", "HSlider", focus);
@@ -524,6 +525,7 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
// VSlider
theme->set_stylebox("slider", "VSlider", make_stylebox(vslider_bg_png, 4, 4, 4, 4));
+ theme->set_stylebox("grabber_area", "VSlider", make_stylebox(vslider_bg_png, 4, 4, 4, 4));
theme->set_stylebox("grabber_highlight", "VSlider", make_stylebox(vslider_grabber_hl_png, 6, 6, 6, 6));
theme->set_stylebox("grabber_disabled", "VSlider", make_stylebox(vslider_grabber_disabled_png, 6, 6, 6, 6));
theme->set_stylebox("focus", "VSlider", focus);
@@ -882,7 +884,7 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
theme->set_icon("minus", "GraphEdit", make_icon(icon_zoom_less_png));
theme->set_icon("reset", "GraphEdit", make_icon(icon_zoom_reset_png));
theme->set_icon("more", "GraphEdit", make_icon(icon_zoom_more_png));
- theme->set_icon("SnapGrid", "GraphEdit", make_icon(icon_snap_grid_png));
+ theme->set_icon("snap", "GraphEdit", make_icon(icon_snap_grid_png));
theme->set_stylebox("bg", "GraphEdit", make_stylebox(tree_bg_png, 4, 4, 4, 5));
theme->set_color("grid_minor", "GraphEdit", Color(1, 1, 1, 0.05));
theme->set_color("grid_major", "GraphEdit", Color(1, 1, 1, 0.2));
diff --git a/scene/resources/environment.cpp b/scene/resources/environment.cpp
index 4c6fa7c8a1..232f690074 100644
--- a/scene/resources/environment.cpp
+++ b/scene/resources/environment.cpp
@@ -377,7 +377,7 @@ bool Environment::is_ssr_rough() const {
void Environment::set_ssao_enabled(bool p_enable) {
ssao_enabled = p_enable;
- VS::get_singleton()->environment_set_ssao(environment, ssao_enabled, ssao_radius, ssao_intensity, ssao_radius2, ssao_intensity2, ssao_bias, ssao_direct_light_affect, ssao_color, ssao_blur);
+ VS::get_singleton()->environment_set_ssao(environment, ssao_enabled, ssao_radius, ssao_intensity, ssao_radius2, ssao_intensity2, ssao_bias, ssao_direct_light_affect, ssao_color, VS::EnvironmentSSAOQuality(ssao_quality), VS::EnvironmentSSAOBlur(ssao_blur), ssao_edge_sharpness);
_change_notify();
}
@@ -389,7 +389,7 @@ bool Environment::is_ssao_enabled() const {
void Environment::set_ssao_radius(float p_radius) {
ssao_radius = p_radius;
- VS::get_singleton()->environment_set_ssao(environment, ssao_enabled, ssao_radius, ssao_intensity, ssao_radius2, ssao_intensity2, ssao_bias, ssao_direct_light_affect, ssao_color, ssao_blur);
+ VS::get_singleton()->environment_set_ssao(environment, ssao_enabled, ssao_radius, ssao_intensity, ssao_radius2, ssao_intensity2, ssao_bias, ssao_direct_light_affect, ssao_color, VS::EnvironmentSSAOQuality(ssao_quality), VS::EnvironmentSSAOBlur(ssao_blur), ssao_edge_sharpness);
}
float Environment::get_ssao_radius() const {
@@ -399,7 +399,7 @@ float Environment::get_ssao_radius() const {
void Environment::set_ssao_intensity(float p_intensity) {
ssao_intensity = p_intensity;
- VS::get_singleton()->environment_set_ssao(environment, ssao_enabled, ssao_radius, ssao_intensity, ssao_radius2, ssao_intensity2, ssao_bias, ssao_direct_light_affect, ssao_color, ssao_blur);
+ VS::get_singleton()->environment_set_ssao(environment, ssao_enabled, ssao_radius, ssao_intensity, ssao_radius2, ssao_intensity2, ssao_bias, ssao_direct_light_affect, ssao_color, VS::EnvironmentSSAOQuality(ssao_quality), VS::EnvironmentSSAOBlur(ssao_blur), ssao_edge_sharpness);
}
float Environment::get_ssao_intensity() const {
@@ -410,7 +410,7 @@ float Environment::get_ssao_intensity() const {
void Environment::set_ssao_radius2(float p_radius) {
ssao_radius2 = p_radius;
- VS::get_singleton()->environment_set_ssao(environment, ssao_enabled, ssao_radius, ssao_intensity, ssao_radius2, ssao_intensity2, ssao_bias, ssao_direct_light_affect, ssao_color, ssao_blur);
+ VS::get_singleton()->environment_set_ssao(environment, ssao_enabled, ssao_radius, ssao_intensity, ssao_radius2, ssao_intensity2, ssao_bias, ssao_direct_light_affect, ssao_color, VS::EnvironmentSSAOQuality(ssao_quality), VS::EnvironmentSSAOBlur(ssao_blur), ssao_edge_sharpness);
}
float Environment::get_ssao_radius2() const {
@@ -420,7 +420,7 @@ float Environment::get_ssao_radius2() const {
void Environment::set_ssao_intensity2(float p_intensity) {
ssao_intensity2 = p_intensity;
- VS::get_singleton()->environment_set_ssao(environment, ssao_enabled, ssao_radius, ssao_intensity, ssao_radius2, ssao_intensity2, ssao_bias, ssao_direct_light_affect, ssao_color, ssao_blur);
+ VS::get_singleton()->environment_set_ssao(environment, ssao_enabled, ssao_radius, ssao_intensity, ssao_radius2, ssao_intensity2, ssao_bias, ssao_direct_light_affect, ssao_color, VS::EnvironmentSSAOQuality(ssao_quality), VS::EnvironmentSSAOBlur(ssao_blur), ssao_edge_sharpness);
}
float Environment::get_ssao_intensity2() const {
@@ -430,7 +430,7 @@ float Environment::get_ssao_intensity2() const {
void Environment::set_ssao_bias(float p_bias) {
ssao_bias = p_bias;
- VS::get_singleton()->environment_set_ssao(environment, ssao_enabled, ssao_radius, ssao_intensity, ssao_radius2, ssao_intensity2, ssao_bias, ssao_direct_light_affect, ssao_color, ssao_blur);
+ VS::get_singleton()->environment_set_ssao(environment, ssao_enabled, ssao_radius, ssao_intensity, ssao_radius2, ssao_intensity2, ssao_bias, ssao_direct_light_affect, ssao_color, VS::EnvironmentSSAOQuality(ssao_quality), VS::EnvironmentSSAOBlur(ssao_blur), ssao_edge_sharpness);
}
float Environment::get_ssao_bias() const {
@@ -440,7 +440,7 @@ float Environment::get_ssao_bias() const {
void Environment::set_ssao_direct_light_affect(float p_direct_light_affect) {
ssao_direct_light_affect = p_direct_light_affect;
- VS::get_singleton()->environment_set_ssao(environment, ssao_enabled, ssao_radius, ssao_intensity, ssao_radius2, ssao_intensity2, ssao_bias, ssao_direct_light_affect, ssao_color, ssao_blur);
+ VS::get_singleton()->environment_set_ssao(environment, ssao_enabled, ssao_radius, ssao_intensity, ssao_radius2, ssao_intensity2, ssao_bias, ssao_direct_light_affect, ssao_color, VS::EnvironmentSSAOQuality(ssao_quality), VS::EnvironmentSSAOBlur(ssao_blur), ssao_edge_sharpness);
}
float Environment::get_ssao_direct_light_affect() const {
@@ -450,7 +450,7 @@ float Environment::get_ssao_direct_light_affect() const {
void Environment::set_ssao_color(const Color &p_color) {
ssao_color = p_color;
- VS::get_singleton()->environment_set_ssao(environment, ssao_enabled, ssao_radius, ssao_intensity, ssao_radius2, ssao_intensity2, ssao_bias, ssao_direct_light_affect, ssao_color, ssao_blur);
+ VS::get_singleton()->environment_set_ssao(environment, ssao_enabled, ssao_radius, ssao_intensity, ssao_radius2, ssao_intensity2, ssao_bias, ssao_direct_light_affect, ssao_color, VS::EnvironmentSSAOQuality(ssao_quality), VS::EnvironmentSSAOBlur(ssao_blur), ssao_edge_sharpness);
}
Color Environment::get_ssao_color() const {
@@ -458,16 +458,38 @@ Color Environment::get_ssao_color() const {
return ssao_color;
}
-void Environment::set_ssao_blur(bool p_enable) {
+void Environment::set_ssao_blur(SSAOBlur p_blur) {
- ssao_blur = p_enable;
- VS::get_singleton()->environment_set_ssao(environment, ssao_enabled, ssao_radius, ssao_intensity, ssao_radius2, ssao_intensity2, ssao_bias, ssao_direct_light_affect, ssao_color, ssao_blur);
+ ssao_blur = p_blur;
+ VS::get_singleton()->environment_set_ssao(environment, ssao_enabled, ssao_radius, ssao_intensity, ssao_radius2, ssao_intensity2, ssao_bias, ssao_direct_light_affect, ssao_color, VS::EnvironmentSSAOQuality(ssao_quality), VS::EnvironmentSSAOBlur(ssao_blur), ssao_edge_sharpness);
}
-bool Environment::is_ssao_blur_enabled() const {
+Environment::SSAOBlur Environment::get_ssao_blur() const {
return ssao_blur;
}
+void Environment::set_ssao_quality(SSAOQuality p_quality) {
+
+ ssao_quality = p_quality;
+ VS::get_singleton()->environment_set_ssao(environment, ssao_enabled, ssao_radius, ssao_intensity, ssao_radius2, ssao_intensity2, ssao_bias, ssao_direct_light_affect, ssao_color, VS::EnvironmentSSAOQuality(ssao_quality), VS::EnvironmentSSAOBlur(ssao_blur), ssao_edge_sharpness);
+}
+
+Environment::SSAOQuality Environment::get_ssao_quality() const {
+
+ return ssao_quality;
+}
+
+void Environment::set_ssao_edge_sharpness(float p_edge_sharpness) {
+
+ ssao_edge_sharpness = p_edge_sharpness;
+ VS::get_singleton()->environment_set_ssao(environment, ssao_enabled, ssao_radius, ssao_intensity, ssao_radius2, ssao_intensity2, ssao_bias, ssao_direct_light_affect, ssao_color, VS::EnvironmentSSAOQuality(ssao_quality), VS::EnvironmentSSAOBlur(ssao_blur), ssao_edge_sharpness);
+}
+
+float Environment::get_ssao_edge_sharpness() const {
+
+ return ssao_edge_sharpness;
+}
+
void Environment::set_glow_enabled(bool p_enabled) {
glow_enabled = p_enabled;
@@ -988,8 +1010,14 @@ void Environment::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_ssao_color", "color"), &Environment::set_ssao_color);
ClassDB::bind_method(D_METHOD("get_ssao_color"), &Environment::get_ssao_color);
- ClassDB::bind_method(D_METHOD("set_ssao_blur", "enabled"), &Environment::set_ssao_blur);
- ClassDB::bind_method(D_METHOD("is_ssao_blur_enabled"), &Environment::is_ssao_blur_enabled);
+ ClassDB::bind_method(D_METHOD("set_ssao_blur", "mode"), &Environment::set_ssao_blur);
+ ClassDB::bind_method(D_METHOD("get_ssao_blur"), &Environment::get_ssao_blur);
+
+ ClassDB::bind_method(D_METHOD("set_ssao_quality", "quality"), &Environment::set_ssao_quality);
+ ClassDB::bind_method(D_METHOD("get_ssao_quality"), &Environment::get_ssao_quality);
+
+ ClassDB::bind_method(D_METHOD("set_ssao_edge_sharpness", "edge_sharpness"), &Environment::set_ssao_edge_sharpness);
+ ClassDB::bind_method(D_METHOD("get_ssao_edge_sharpness"), &Environment::get_ssao_edge_sharpness);
ADD_GROUP("SSAO", "ssao_");
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "ssao_enabled"), "set_ssao_enabled", "is_ssao_enabled");
@@ -1000,7 +1028,9 @@ void Environment::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::REAL, "ssao_bias", PROPERTY_HINT_RANGE, "0.001,8,0.001"), "set_ssao_bias", "get_ssao_bias");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "ssao_light_affect", PROPERTY_HINT_RANGE, "0.00,1,0.01"), "set_ssao_direct_light_affect", "get_ssao_direct_light_affect");
ADD_PROPERTY(PropertyInfo(Variant::COLOR, "ssao_color", PROPERTY_HINT_COLOR_NO_ALPHA), "set_ssao_color", "get_ssao_color");
- ADD_PROPERTY(PropertyInfo(Variant::BOOL, "ssao_blur"), "set_ssao_blur", "is_ssao_blur_enabled");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "ssao_quality", PROPERTY_HINT_ENUM, "Low,Medium,High"), "set_ssao_quality", "get_ssao_quality");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "ssao_blur", PROPERTY_HINT_ENUM, "Disabled,1x1,2x2,3x3"), "set_ssao_blur", "get_ssao_blur");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "ssao_edge_sharpness", PROPERTY_HINT_RANGE, "0,32,0.01"), "set_ssao_edge_sharpness", "get_ssao_edge_sharpness");
ClassDB::bind_method(D_METHOD("set_dof_blur_far_enabled", "enabled"), &Environment::set_dof_blur_far_enabled);
ClassDB::bind_method(D_METHOD("is_dof_blur_far_enabled"), &Environment::is_dof_blur_far_enabled);
@@ -1134,6 +1164,15 @@ void Environment::_bind_methods() {
BIND_ENUM_CONSTANT(DOF_BLUR_QUALITY_LOW);
BIND_ENUM_CONSTANT(DOF_BLUR_QUALITY_MEDIUM);
BIND_ENUM_CONSTANT(DOF_BLUR_QUALITY_HIGH);
+
+ BIND_ENUM_CONSTANT(SSAO_BLUR_DISABLED);
+ BIND_ENUM_CONSTANT(SSAO_BLUR_1x1);
+ BIND_ENUM_CONSTANT(SSAO_BLUR_2x2);
+ BIND_ENUM_CONSTANT(SSAO_BLUR_3x3);
+
+ BIND_ENUM_CONSTANT(SSAO_QUALITY_LOW);
+ BIND_ENUM_CONSTANT(SSAO_QUALITY_MEDIUM);
+ BIND_ENUM_CONSTANT(SSAO_QUALITY_HIGH);
}
Environment::Environment() {
@@ -1179,7 +1218,9 @@ Environment::Environment() {
ssao_intensity2 = 1;
ssao_bias = 0.01;
ssao_direct_light_affect = false;
- ssao_blur = true;
+ ssao_blur = SSAO_BLUR_3x3;
+ set_ssao_edge_sharpness(4);
+ set_ssao_quality(SSAO_QUALITY_LOW);
glow_enabled = false;
glow_levels = (1 << 2) | (1 << 4);
diff --git a/scene/resources/environment.h b/scene/resources/environment.h
index 5909846074..418949a6ad 100644
--- a/scene/resources/environment.h
+++ b/scene/resources/environment.h
@@ -71,6 +71,19 @@ public:
DOF_BLUR_QUALITY_HIGH,
};
+ enum SSAOBlur {
+ SSAO_BLUR_DISABLED,
+ SSAO_BLUR_1x1,
+ SSAO_BLUR_2x2,
+ SSAO_BLUR_3x3
+ };
+
+ enum SSAOQuality {
+ SSAO_QUALITY_LOW,
+ SSAO_QUALITY_MEDIUM,
+ SSAO_QUALITY_HIGH
+ };
+
private:
RID environment;
@@ -114,7 +127,9 @@ private:
float ssao_bias;
float ssao_direct_light_affect;
Color ssao_color;
- bool ssao_blur;
+ SSAOBlur ssao_blur;
+ float ssao_edge_sharpness;
+ SSAOQuality ssao_quality;
bool glow_enabled;
int glow_levels;
@@ -261,8 +276,14 @@ public:
void set_ssao_color(const Color &p_color);
Color get_ssao_color() const;
- void set_ssao_blur(bool p_enable);
- bool is_ssao_blur_enabled() const;
+ void set_ssao_blur(SSAOBlur p_blur);
+ SSAOBlur get_ssao_blur() const;
+
+ void set_ssao_quality(SSAOQuality p_quality);
+ SSAOQuality get_ssao_quality() const;
+
+ void set_ssao_edge_sharpness(float p_edge_sharpness);
+ float get_ssao_edge_sharpness() const;
void set_glow_enabled(bool p_enabled);
bool is_glow_enabled() const;
@@ -370,5 +391,7 @@ VARIANT_ENUM_CAST(Environment::BGMode)
VARIANT_ENUM_CAST(Environment::ToneMapper)
VARIANT_ENUM_CAST(Environment::GlowBlendMode)
VARIANT_ENUM_CAST(Environment::DOFBlurQuality)
+VARIANT_ENUM_CAST(Environment::SSAOQuality)
+VARIANT_ENUM_CAST(Environment::SSAOBlur)
#endif // ENVIRONMENT_H
diff --git a/scene/resources/material.cpp b/scene/resources/material.cpp
index 2936df7a51..12434b39fa 100644
--- a/scene/resources/material.cpp
+++ b/scene/resources/material.cpp
@@ -1242,6 +1242,15 @@ Ref<Texture> SpatialMaterial::get_texture(TextureParam p_param) const {
return textures[p_param];
}
+Ref<Texture> SpatialMaterial::get_texture_by_name(StringName p_name) const {
+ for (int i = 0; i < (int)SpatialMaterial::TEXTURE_MAX; i++) {
+ TextureParam param = TextureParam(i);
+ if (p_name == shader_names->texture_names[param])
+ return textures[param];
+ }
+ return Ref<Texture>();
+}
+
void SpatialMaterial::_validate_feature(const String &text, Feature feature, PropertyInfo &property) const {
if (property.name.begins_with(text) && property.name != text + "_enabled" && !features[feature]) {
property.usage = 0;
@@ -1269,7 +1278,7 @@ void SpatialMaterial::_validate_property(PropertyInfo &property) const {
property.usage = 0;
}
- if (property.name == "proximity_fade_distacne" && !proximity_fade_enabled) {
+ if (property.name == "proximity_fade_distance" && !proximity_fade_enabled) {
property.usage = 0;
}
diff --git a/scene/resources/material.h b/scene/resources/material.h
index c0e007ac5f..2425f1a174 100644
--- a/scene/resources/material.h
+++ b/scene/resources/material.h
@@ -510,6 +510,8 @@ public:
void set_texture(TextureParam p_param, const Ref<Texture> &p_texture);
Ref<Texture> get_texture(TextureParam p_param) const;
+ // Used only for shader material conversion
+ Ref<Texture> get_texture_by_name(StringName p_name) const;
void set_feature(Feature p_feature, bool p_enabled);
bool get_feature(Feature p_feature) const;
diff --git a/scene/resources/shader.cpp b/scene/resources/shader.cpp
index ec41630258..66df7dfda8 100644
--- a/scene/resources/shader.cpp
+++ b/scene/resources/shader.cpp
@@ -43,8 +43,6 @@ void Shader::set_code(const String &p_code) {
String type = ShaderLanguage::get_shader_type(p_code);
- print_line("mode: " + type);
-
if (type == "canvas_item") {
mode = MODE_CANVAS_ITEM;
} else if (type == "particles") {
diff --git a/scene/resources/style_box.cpp b/scene/resources/style_box.cpp
index b8a0a7864e..f4a9abc1ea 100644
--- a/scene/resources/style_box.cpp
+++ b/scene/resources/style_box.cpp
@@ -765,7 +765,7 @@ void StyleBoxFlat::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_border_blend", "blend"), &StyleBoxFlat::set_border_blend);
ClassDB::bind_method(D_METHOD("get_border_blend"), &StyleBoxFlat::get_border_blend);
- ClassDB::bind_method(D_METHOD("set_corner_radius_individual", "radius_top_left", "radius_top_right", "radius_botton_right", "radius_bottom_left"), &StyleBoxFlat::set_corner_radius_individual);
+ ClassDB::bind_method(D_METHOD("set_corner_radius_individual", "radius_top_left", "radius_top_right", "radius_bottom_right", "radius_bottom_left"), &StyleBoxFlat::set_corner_radius_individual);
ClassDB::bind_method(D_METHOD("set_corner_radius_all", "radius"), &StyleBoxFlat::set_corner_radius_all);
ClassDB::bind_method(D_METHOD("set_corner_radius", "corner", "radius"), &StyleBoxFlat::set_corner_radius);
diff --git a/scene/resources/texture.cpp b/scene/resources/texture.cpp
index c202fad1a4..467f059fd3 100644
--- a/scene/resources/texture.cpp
+++ b/scene/resources/texture.cpp
@@ -78,11 +78,11 @@ void Texture::_bind_methods() {
BIND_ENUM_CONSTANT(FLAG_MIPMAPS);
BIND_ENUM_CONSTANT(FLAG_REPEAT);
BIND_ENUM_CONSTANT(FLAG_FILTER);
- BIND_ENUM_CONSTANT(FLAG_VIDEO_SURFACE);
BIND_ENUM_CONSTANT(FLAGS_DEFAULT);
BIND_ENUM_CONSTANT(FLAG_ANISOTROPIC_FILTER);
BIND_ENUM_CONSTANT(FLAG_CONVERT_TO_LINEAR);
BIND_ENUM_CONSTANT(FLAG_MIRRORED_REPEAT);
+ BIND_ENUM_CONSTANT(FLAG_VIDEO_SURFACE);
}
Texture::Texture() {
@@ -1324,10 +1324,8 @@ void CubeMap::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_width"), &CubeMap::get_width);
ClassDB::bind_method(D_METHOD("get_height"), &CubeMap::get_height);
- //ClassDB::bind_method(D_METHOD("get_rid"),&CubeMap::get_rid);
ClassDB::bind_method(D_METHOD("set_flags", "flags"), &CubeMap::set_flags);
ClassDB::bind_method(D_METHOD("get_flags"), &CubeMap::get_flags);
-
ClassDB::bind_method(D_METHOD("set_side", "side", "image"), &CubeMap::set_side);
ClassDB::bind_method(D_METHOD("get_side", "side"), &CubeMap::get_side);
ClassDB::bind_method(D_METHOD("set_storage", "mode"), &CubeMap::set_storage);
@@ -1335,6 +1333,9 @@ void CubeMap::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_lossy_storage_quality", "quality"), &CubeMap::set_lossy_storage_quality);
ClassDB::bind_method(D_METHOD("get_lossy_storage_quality"), &CubeMap::get_lossy_storage_quality);
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "storage_mode", PROPERTY_HINT_ENUM, "Raw,Lossy Compressed,Lossless Compressed"), "set_storage", "get_storage");
+ ADD_PROPERTY(PropertyInfo(Variant::REAL, "lossy_storage_quality"), "set_lossy_storage_quality", "get_lossy_storage_quality");
+
BIND_ENUM_CONSTANT(STORAGE_RAW);
BIND_ENUM_CONSTANT(STORAGE_COMPRESS_LOSSY);
BIND_ENUM_CONSTANT(STORAGE_COMPRESS_LOSSLESS);
diff --git a/scene/resources/video_stream.h b/scene/resources/video_stream.h
index 0f07233185..3f79858056 100644
--- a/scene/resources/video_stream.h
+++ b/scene/resources/video_stream.h
@@ -60,7 +60,7 @@ public:
virtual void set_audio_track(int p_idx) = 0;
- //virtual int mix(int16_t* p_bufer,int p_frames)=0;
+ //virtual int mix(int16_t* p_buffer,int p_frames)=0;
virtual Ref<Texture> get_texture() = 0;
virtual void update(float p_delta) = 0;
diff --git a/servers/arvr/arvr_script_interface.cpp b/servers/arvr/arvr_script_interface.cpp
deleted file mode 100644
index 2755605a14..0000000000
--- a/servers/arvr/arvr_script_interface.cpp
+++ /dev/null
@@ -1,136 +0,0 @@
-#include "arvr_script_interface.h"
-
-ARVRScriptInterface::ARVRScriptInterface() {
- // testing
- printf("Construct script interface");
-}
-
-ARVRScriptInterface::~ARVRScriptInterface() {
- if (is_initialized()) {
- uninitialize();
- };
-
- // testing
- printf("Destruct script interface");
-}
-
-StringName ARVRScriptInterface::get_name() const {
- if (get_script_instance() && get_script_instance()->has_method("get_name")) {
- return get_script_instance()->call("get_name");
- } else {
- // just return something for now
- return "ARVR Script interface";
- }
-}
-
-int ARVRScriptInterface::get_capabilities() const {
- ERR_FAIL_COND_V(!(get_script_instance() && get_script_instance()->has_method("get_capabilities")), ARVRInterface::ARVR_NONE);
- return get_script_instance()->call("get_capabilities");
-};
-
-ARVRInterface::Tracking_status ARVRScriptInterface::get_tracking_status() const {
- ERR_FAIL_COND_V(!(get_script_instance() && get_script_instance()->has_method("get_tracking_status")), ARVRInterface::ARVR_NOT_TRACKING);
- int status = get_script_instance()->call("get_tracking_status");
- return (ARVRInterface::Tracking_status)status;
-}
-
-bool ARVRScriptInterface::get_anchor_detection_is_enabled() const {
- ERR_FAIL_COND_V(!(get_script_instance() && get_script_instance()->has_method("get_anchor_detection_is_enabled")), false);
- return get_script_instance()->call("get_anchor_detection_is_enabled");
-};
-
-void ARVRScriptInterface::set_anchor_detection_is_enabled(bool p_enable) {
- ERR_FAIL_COND(!(get_script_instance() && get_script_instance()->has_method("set_anchor_detection_is_enabled")));
- get_script_instance()->call("set_anchor_detection_is_enabled");
-};
-
-bool ARVRScriptInterface::is_stereo() {
- ERR_FAIL_COND_V(!(get_script_instance() && get_script_instance()->has_method("is_stereo")), false);
- return get_script_instance()->call("is_stereo");
-}
-
-bool ARVRScriptInterface::is_initialized() {
- ERR_FAIL_COND_V(!(get_script_instance() && get_script_instance()->has_method("is_initialized")), false);
- return get_script_instance()->call("is_initialized");
-}
-
-bool ARVRScriptInterface::initialize() {
- ERR_FAIL_COND_V(!(get_script_instance() && get_script_instance()->has_method("initialize")), false);
- return get_script_instance()->call("initialize");
-}
-
-void ARVRScriptInterface::uninitialize() {
- ARVRServer *arvr_server = ARVRServer::get_singleton();
- if (arvr_server != NULL) {
- // Whatever happens, make sure this is no longer our primary interface
- arvr_server->clear_primary_interface_if(this);
- }
-
- ERR_FAIL_COND(!(get_script_instance() && get_script_instance()->has_method("uninitialize")));
- get_script_instance()->call("uninitialize");
-}
-
-Size2 ARVRScriptInterface::get_recommended_render_targetsize() {
- ERR_FAIL_COND_V(!(get_script_instance() && get_script_instance()->has_method("get_recommended_render_targetsize")), Size2());
- return get_script_instance()->call("get_recommended_render_targetsize");
-}
-
-Transform ARVRScriptInterface::get_transform_for_eye(Eyes p_eye, const Transform &p_cam_transform) {
- ERR_FAIL_COND_V(!(get_script_instance() && get_script_instance()->has_method("get_transform_for_eye")), Transform());
- return get_script_instance()->call("get_transform_for_eye", p_eye, p_cam_transform);
-}
-
-// Suggestion from Reduz, as we can't return a CameraMatrix, return a PoolVector with our 16 floats
-PoolVector<float> ARVRScriptInterface::_get_projection_for_eye(Eyes p_eye, real_t p_aspect, real_t p_z_near, real_t p_z_far) {
- ERR_FAIL_COND_V(!(get_script_instance() && get_script_instance()->has_method("_get_projection_for_eye")), PoolVector<float>());
- return get_script_instance()->call("_get_projection_for_eye", p_eye, p_aspect, p_z_near, p_z_far);
-}
-
-CameraMatrix ARVRScriptInterface::get_projection_for_eye(Eyes p_eye, real_t p_aspect, real_t p_z_near, real_t p_z_far) {
- CameraMatrix cm;
- int i = 0;
- int j = 0;
-
- PoolVector<float> cm_as_floats = _get_projection_for_eye(p_eye, p_aspect, p_z_near, p_z_far);
-
- for (int k = 0; k < cm_as_floats.size() && i < 4; k++) {
- cm.matrix[i][j] = cm_as_floats[k];
- j++;
- if (j == 4) {
- j = 0;
- i++;
- };
- };
-
- return cm;
-}
-
-void ARVRScriptInterface::commit_for_eye(ARVRInterface::Eyes p_eye, RID p_render_target, const Rect2 &p_screen_rect) {
- ERR_FAIL_COND(!(get_script_instance() && get_script_instance()->has_method("commit_for_eye")));
- get_script_instance()->call("commit_for_eye");
-}
-
-void ARVRScriptInterface::process() {
- ERR_FAIL_COND(!(get_script_instance() && get_script_instance()->has_method("process")));
- get_script_instance()->call("process");
-}
-
-void ARVRScriptInterface::_bind_methods() {
- ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::INT, "get_capabilities"));
-
- ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::BOOL, "is_initialized"));
- ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::BOOL, "initialize"));
- ClassDB::add_virtual_method(get_class_static(), MethodInfo("uninitialize"));
-
- ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::INT, "get_tracking_status"));
-
- ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::BOOL, "get_anchor_detection_is_enabled"));
- ClassDB::add_virtual_method(get_class_static(), MethodInfo("set_anchor_detection_is_enabled", PropertyInfo(Variant::BOOL, "enabled")));
-
- ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::BOOL, "is_stereo"));
- ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::VECTOR2, "get_recommended_render_targetsize"));
- ClassDB::add_virtual_method(get_class_static(), MethodInfo(Variant::TRANSFORM, "get_transform_for_eye", PropertyInfo(Variant::INT, "eye"), PropertyInfo(Variant::TRANSFORM, "cam_transform")));
- ClassDB::add_virtual_method(get_class_static(), MethodInfo("_get_projection_for_eye"));
- ClassDB::add_virtual_method(get_class_static(), MethodInfo("commit_for_eye", PropertyInfo(Variant::INT, "eye"), PropertyInfo(Variant::_RID, "render_target")));
- ClassDB::add_virtual_method(get_class_static(), MethodInfo("process"));
-}
diff --git a/servers/arvr/arvr_script_interface.h b/servers/arvr/arvr_script_interface.h
deleted file mode 100644
index b1393b4fdb..0000000000
--- a/servers/arvr/arvr_script_interface.h
+++ /dev/null
@@ -1,52 +0,0 @@
-#ifndef SCRIPT_INTERFACE_H
-#define SCRIPT_INTERFACE_H
-
-#include "arvr_interface.h"
-
-/**
- @authors Hinsbart & Karroffel
-
- This subclass of our AR/VR interface forms a bridge to GDNative.
-*/
-
-class ARVRScriptInterface : public ARVRInterface {
- GDCLASS(ARVRScriptInterface, ARVRInterface);
-
-protected:
- static void _bind_methods();
-
-public:
- /** general interface information **/
- ARVRScriptInterface();
- ~ARVRScriptInterface();
-
- virtual StringName get_name() const;
- virtual int get_capabilities() const;
-
- virtual bool is_initialized();
- virtual bool initialize();
- virtual void uninitialize();
-
- ARVRInterface::Tracking_status get_tracking_status() const; /* get the status of our current tracking */
-
- /** specific to AR **/
- virtual bool get_anchor_detection_is_enabled() const;
- virtual void set_anchor_detection_is_enabled(bool p_enable);
-
- /** rendering and internal **/
- virtual Size2 get_recommended_render_targetsize();
- virtual bool is_stereo();
- virtual Transform get_transform_for_eye(ARVRInterface::Eyes p_eye, const Transform &p_cam_transform);
-
- // we expose a PoolVector<float> version of this function to GDNative
- PoolVector<float> _get_projection_for_eye(Eyes p_eye, real_t p_aspect, real_t p_z_near, real_t p_z_far);
-
- // and a CameraMatrix version to ARVRServer
- virtual CameraMatrix get_projection_for_eye(ARVRInterface::Eyes p_eye, real_t p_aspect, real_t p_z_near, real_t p_z_far);
-
- virtual void commit_for_eye(ARVRInterface::Eyes p_eye, RID p_render_target, const Rect2 &p_screen_rect);
-
- virtual void process();
-};
-
-#endif // SCRIPT_INTERFACE_H
diff --git a/servers/arvr_server.cpp b/servers/arvr_server.cpp
index aa879f8aed..ede080b424 100644
--- a/servers/arvr_server.cpp
+++ b/servers/arvr_server.cpp
@@ -53,16 +53,16 @@ void ARVRServer::_bind_methods() {
ClassDB::bind_method(D_METHOD("get_tracker_count"), &ARVRServer::get_tracker_count);
ClassDB::bind_method(D_METHOD("get_tracker", "idx"), &ARVRServer::get_tracker);
- ClassDB::bind_method(D_METHOD("set_primary_interface"), &ARVRServer::set_primary_interface);
+ ClassDB::bind_method(D_METHOD("set_primary_interface", "interface"), &ARVRServer::set_primary_interface);
- ClassDB::bind_method(D_METHOD("add_interface"), &ARVRServer::add_interface);
- ClassDB::bind_method(D_METHOD("remove_interface"), &ARVRServer::remove_interface);
+ ClassDB::bind_method(D_METHOD("add_interface", "interface"), &ARVRServer::add_interface);
+ ClassDB::bind_method(D_METHOD("remove_interface", "interface"), &ARVRServer::remove_interface);
BIND_ENUM_CONSTANT(TRACKER_CONTROLLER);
BIND_ENUM_CONSTANT(TRACKER_BASESTATION);
BIND_ENUM_CONSTANT(TRACKER_ANCHOR);
- BIND_ENUM_CONSTANT(TRACKER_UNKNOWN);
BIND_ENUM_CONSTANT(TRACKER_ANY_KNOWN);
+ BIND_ENUM_CONSTANT(TRACKER_UNKNOWN);
BIND_ENUM_CONSTANT(TRACKER_ANY);
ADD_SIGNAL(MethodInfo("interface_added", PropertyInfo(Variant::STRING, "name")));
@@ -138,7 +138,7 @@ void ARVRServer::add_interface(const Ref<ARVRInterface> &p_interface) {
};
};
- print_line("Registered interface " + p_interface->get_name());
+ print_line("ARVR: Registered interface: " + p_interface->get_name());
interfaces.push_back(p_interface);
emit_signal("interface_added", p_interface->get_name());
diff --git a/servers/audio/audio_stream.cpp b/servers/audio/audio_stream.cpp
index 0e3d5824d9..d7b2c2c5e0 100644
--- a/servers/audio/audio_stream.cpp
+++ b/servers/audio/audio_stream.cpp
@@ -191,12 +191,12 @@ void AudioStreamPlaybackRandomPitch::seek(float p_time) {
}
}
-void AudioStreamPlaybackRandomPitch::mix(AudioFrame *p_bufer, float p_rate_scale, int p_frames) {
+void AudioStreamPlaybackRandomPitch::mix(AudioFrame *p_buffer, float p_rate_scale, int p_frames) {
if (playing.is_valid()) {
- playing->mix(p_bufer, p_rate_scale * pitch_scale, p_frames);
+ playing->mix(p_buffer, p_rate_scale * pitch_scale, p_frames);
} else {
for (int i = 0; i < p_frames; i++) {
- p_bufer[i] = AudioFrame(0, 0);
+ p_buffer[i] = AudioFrame(0, 0);
}
}
}
diff --git a/servers/audio/audio_stream.h b/servers/audio/audio_stream.h
index 3324597b41..dc931502b4 100644
--- a/servers/audio/audio_stream.h
+++ b/servers/audio/audio_stream.h
@@ -48,7 +48,7 @@ public:
virtual float get_playback_position() const = 0;
virtual void seek(float p_time) = 0;
- virtual void mix(AudioFrame *p_bufer, float p_rate_scale, int p_frames) = 0;
+ virtual void mix(AudioFrame *p_buffer, float p_rate_scale, int p_frames) = 0;
virtual float get_length() const = 0; //if supported, otherwise return 0
};
@@ -70,7 +70,7 @@ class AudioStreamPlaybackResampled : public AudioStreamPlayback {
protected:
void _begin_resample();
- virtual void _mix_internal(AudioFrame *p_bufer, int p_frames) = 0;
+ virtual void _mix_internal(AudioFrame *p_buffer, int p_frames) = 0;
virtual float get_stream_sampling_rate() = 0;
public:
@@ -136,7 +136,7 @@ public:
virtual float get_playback_position() const;
virtual void seek(float p_time);
- virtual void mix(AudioFrame *p_bufer, float p_rate_scale, int p_frames);
+ virtual void mix(AudioFrame *p_buffer, float p_rate_scale, int p_frames);
virtual float get_length() const; //if supported, otherwise return 0
diff --git a/servers/audio/effects/audio_effect_filter.cpp b/servers/audio/effects/audio_effect_filter.cpp
index 019494c74a..95354230c6 100644
--- a/servers/audio/effects/audio_effect_filter.cpp
+++ b/servers/audio/effects/audio_effect_filter.cpp
@@ -158,7 +158,7 @@ void AudioEffectFilter::_bind_methods() {
ADD_PROPERTY(PropertyInfo(Variant::REAL, "cutoff_hz", PROPERTY_HINT_RANGE, "1,40000,0.1"), "set_cutoff", "get_cutoff");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "resonance", PROPERTY_HINT_RANGE, "0,1,0.01"), "set_resonance", "get_resonance");
ADD_PROPERTY(PropertyInfo(Variant::REAL, "gain", PROPERTY_HINT_RANGE, "0,4,0.01"), "set_gain", "get_gain");
- ADD_PROPERTY(PropertyInfo(Variant::INT, "dB", PROPERTY_HINT_ENUM, "6db,12db,18db,24db"), "set_db", "get_db");
+ ADD_PROPERTY(PropertyInfo(Variant::INT, "db", PROPERTY_HINT_ENUM, "6 dB,12 dB,18 dB,24 dB"), "set_db", "get_db");
BIND_ENUM_CONSTANT(FILTER_6DB);
BIND_ENUM_CONSTANT(FILTER_12DB);
diff --git a/servers/physics/body_sw.cpp b/servers/physics/body_sw.cpp
index 46a5192e52..6ced004118 100644
--- a/servers/physics/body_sw.cpp
+++ b/servers/physics/body_sw.cpp
@@ -45,8 +45,9 @@ void BodySW::_update_transform_dependant() {
// update inertia tensor
Basis tb = principal_inertia_axes;
Basis tbt = tb.transposed();
- tb.scale(_inv_inertia);
- _inv_inertia_tensor = tb * tbt;
+ Basis diag;
+ diag.scale(_inv_inertia);
+ _inv_inertia_tensor = tb * diag * tbt;
}
void BodySW::update_inertias() {
diff --git a/servers/physics/joints/generic_6dof_joint_sw.cpp b/servers/physics/joints/generic_6dof_joint_sw.cpp
index 70cc549e2d..1e323be36c 100644
--- a/servers/physics/joints/generic_6dof_joint_sw.cpp
+++ b/servers/physics/joints/generic_6dof_joint_sw.cpp
@@ -219,9 +219,9 @@ Generic6DOFJointSW::Generic6DOFJointSW(BodySW *rbA, BodySW *rbB, const Transform
}
void Generic6DOFJointSW::calculateAngleInfo() {
- Basis relative_frame = m_calculatedTransformA.basis.inverse() * m_calculatedTransformB.basis;
+ Basis relative_frame = m_calculatedTransformB.basis.inverse() * m_calculatedTransformA.basis;
- m_calculatedAxisAngleDiff = relative_frame.get_euler();
+ m_calculatedAxisAngleDiff = relative_frame.get_euler_xyz();
// in euler angle mode we do not actually constrain the angular velocity
// along the axes axis[0] and axis[2] (although we do use axis[1]) :
diff --git a/servers/physics/joints/pin_joint_sw.h b/servers/physics/joints/pin_joint_sw.h
index ee9272ce06..f6c11c49b0 100644
--- a/servers/physics/joints/pin_joint_sw.h
+++ b/servers/physics/joints/pin_joint_sw.h
@@ -86,8 +86,8 @@ public:
void set_pos_a(const Vector3 &p_pos) { m_pivotInA = p_pos; }
void set_pos_b(const Vector3 &p_pos) { m_pivotInB = p_pos; }
- Vector3 get_position_a() { return m_pivotInB; }
- Vector3 get_position_b() { return m_pivotInA; }
+ Vector3 get_position_a() { return m_pivotInA; }
+ Vector3 get_position_b() { return m_pivotInB; }
PinJointSW(BodySW *p_body_a, const Vector3 &p_pos_a, BodySW *p_body_b, const Vector3 &p_pos_b);
~PinJointSW();
diff --git a/servers/physics/physics_server_sw.cpp b/servers/physics/physics_server_sw.cpp
index a7c31cf16c..5ba935d47c 100644
--- a/servers/physics/physics_server_sw.cpp
+++ b/servers/physics/physics_server_sw.cpp
@@ -233,14 +233,7 @@ void PhysicsServerSW::area_set_space(RID p_area, RID p_space) {
if (area->get_space() == space)
return; //pointless
- for (Set<ConstraintSW *>::Element *E = area->get_constraints().front(); E; E = E->next()) {
- RID self = E->get()->get_self();
- if (!self.is_valid())
- continue;
- free(self);
- }
area->clear_constraints();
-
area->set_space(space);
};
@@ -494,14 +487,7 @@ void PhysicsServerSW::body_set_space(RID p_body, RID p_space) {
if (body->get_space() == space)
return; //pointless
- for (Map<ConstraintSW *, int>::Element *E = body->get_constraint_map().front(); E; E = E->next()) {
- RID self = E->key()->get_self();
- if (!self.is_valid())
- continue;
- free(self);
- }
body->clear_constraint_map();
-
body->set_space(space);
};
diff --git a/servers/physics/space_sw.cpp b/servers/physics/space_sw.cpp
index 17e2df6c9e..7e68d54bfa 100644
--- a/servers/physics/space_sw.cpp
+++ b/servers/physics/space_sw.cpp
@@ -33,9 +33,9 @@
#include "physics_server_sw.h"
#include "project_settings.h"
-_FORCE_INLINE_ static bool _match_object_type_query(CollisionObjectSW *p_object, uint32_t p_collision_layer, uint32_t p_type_mask) {
+_FORCE_INLINE_ static bool _match_object_type_query(CollisionObjectSW *p_object, uint32_t p_collision_mask, uint32_t p_type_mask) {
- if ((p_object->get_collision_layer() & p_collision_layer) == 0)
+ if ((p_object->get_collision_layer() & p_collision_mask) == 0)
return false;
if (p_object->get_type() == CollisionObjectSW::TYPE_AREA)
@@ -46,7 +46,7 @@ _FORCE_INLINE_ static bool _match_object_type_query(CollisionObjectSW *p_object,
return (1 << body->get_mode()) & p_type_mask;
}
-int PhysicsDirectSpaceStateSW::intersect_point(const Vector3 &p_point, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude, uint32_t p_collision_layer, uint32_t p_object_type_mask) {
+int PhysicsDirectSpaceStateSW::intersect_point(const Vector3 &p_point, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude, uint32_t p_collision_mask, uint32_t p_object_type_mask) {
ERR_FAIL_COND_V(space->locked, false);
int amount = space->broadphase->cull_point(p_point, space->intersection_query_results, SpaceSW::INTERSECTION_QUERY_MAX, space->intersection_query_subindex_results);
@@ -59,7 +59,7 @@ int PhysicsDirectSpaceStateSW::intersect_point(const Vector3 &p_point, ShapeResu
if (cc >= p_result_max)
break;
- if (!_match_object_type_query(space->intersection_query_results[i], p_collision_layer, p_object_type_mask))
+ if (!_match_object_type_query(space->intersection_query_results[i], p_collision_mask, p_object_type_mask))
continue;
//area can't be picked by ray (default)
@@ -90,7 +90,7 @@ int PhysicsDirectSpaceStateSW::intersect_point(const Vector3 &p_point, ShapeResu
return cc;
}
-bool PhysicsDirectSpaceStateSW::intersect_ray(const Vector3 &p_from, const Vector3 &p_to, RayResult &r_result, const Set<RID> &p_exclude, uint32_t p_collision_layer, uint32_t p_object_type_mask, bool p_pick_ray) {
+bool PhysicsDirectSpaceStateSW::intersect_ray(const Vector3 &p_from, const Vector3 &p_to, RayResult &r_result, const Set<RID> &p_exclude, uint32_t p_collision_mask, uint32_t p_object_type_mask, bool p_pick_ray) {
ERR_FAIL_COND_V(space->locked, false);
@@ -112,7 +112,7 @@ bool PhysicsDirectSpaceStateSW::intersect_ray(const Vector3 &p_from, const Vecto
for (int i = 0; i < amount; i++) {
- if (!_match_object_type_query(space->intersection_query_results[i], p_collision_layer, p_object_type_mask))
+ if (!_match_object_type_query(space->intersection_query_results[i], p_collision_mask, p_object_type_mask))
continue;
if (p_pick_ray && !(static_cast<CollisionObjectSW *>(space->intersection_query_results[i])->is_ray_pickable()))
@@ -168,7 +168,7 @@ bool PhysicsDirectSpaceStateSW::intersect_ray(const Vector3 &p_from, const Vecto
return true;
}
-int PhysicsDirectSpaceStateSW::intersect_shape(const RID &p_shape, const Transform &p_xform, real_t p_margin, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude, uint32_t p_collision_layer, uint32_t p_object_type_mask) {
+int PhysicsDirectSpaceStateSW::intersect_shape(const RID &p_shape, const Transform &p_xform, real_t p_margin, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude, uint32_t p_collision_mask, uint32_t p_object_type_mask) {
if (p_result_max <= 0)
return 0;
@@ -189,7 +189,7 @@ int PhysicsDirectSpaceStateSW::intersect_shape(const RID &p_shape, const Transfo
if (cc >= p_result_max)
break;
- if (!_match_object_type_query(space->intersection_query_results[i], p_collision_layer, p_object_type_mask))
+ if (!_match_object_type_query(space->intersection_query_results[i], p_collision_mask, p_object_type_mask))
continue;
//area can't be picked by ray (default)
@@ -219,7 +219,7 @@ int PhysicsDirectSpaceStateSW::intersect_shape(const RID &p_shape, const Transfo
return cc;
}
-bool PhysicsDirectSpaceStateSW::cast_motion(const RID &p_shape, const Transform &p_xform, const Vector3 &p_motion, real_t p_margin, real_t &p_closest_safe, real_t &p_closest_unsafe, const Set<RID> &p_exclude, uint32_t p_collision_layer, uint32_t p_object_type_mask, ShapeRestInfo *r_info) {
+bool PhysicsDirectSpaceStateSW::cast_motion(const RID &p_shape, const Transform &p_xform, const Vector3 &p_motion, real_t p_margin, real_t &p_closest_safe, real_t &p_closest_unsafe, const Set<RID> &p_exclude, uint32_t p_collision_mask, uint32_t p_object_type_mask, ShapeRestInfo *r_info) {
ShapeSW *shape = static_cast<PhysicsServerSW *>(PhysicsServer::get_singleton())->shape_owner.get(p_shape);
ERR_FAIL_COND_V(!shape, false);
@@ -249,7 +249,7 @@ bool PhysicsDirectSpaceStateSW::cast_motion(const RID &p_shape, const Transform
for (int i = 0; i < amount; i++) {
- if (!_match_object_type_query(space->intersection_query_results[i], p_collision_layer, p_object_type_mask))
+ if (!_match_object_type_query(space->intersection_query_results[i], p_collision_mask, p_object_type_mask))
continue;
if (p_exclude.has(space->intersection_query_results[i]->get_self()))
@@ -333,7 +333,7 @@ bool PhysicsDirectSpaceStateSW::cast_motion(const RID &p_shape, const Transform
return true;
}
-bool PhysicsDirectSpaceStateSW::collide_shape(RID p_shape, const Transform &p_shape_xform, real_t p_margin, Vector3 *r_results, int p_result_max, int &r_result_count, const Set<RID> &p_exclude, uint32_t p_collision_layer, uint32_t p_object_type_mask) {
+bool PhysicsDirectSpaceStateSW::collide_shape(RID p_shape, const Transform &p_shape_xform, real_t p_margin, Vector3 *r_results, int p_result_max, int &r_result_count, const Set<RID> &p_exclude, uint32_t p_collision_mask, uint32_t p_object_type_mask) {
if (p_result_max <= 0)
return 0;
@@ -363,7 +363,7 @@ bool PhysicsDirectSpaceStateSW::collide_shape(RID p_shape, const Transform &p_sh
for (int i = 0; i < amount; i++) {
- if (!_match_object_type_query(space->intersection_query_results[i], p_collision_layer, p_object_type_mask))
+ if (!_match_object_type_query(space->intersection_query_results[i], p_collision_mask, p_object_type_mask))
continue;
const CollisionObjectSW *col_obj = space->intersection_query_results[i];
@@ -412,7 +412,7 @@ static void _rest_cbk_result(const Vector3 &p_point_A, const Vector3 &p_point_B,
rd->best_object = rd->object;
rd->best_shape = rd->shape;
}
-bool PhysicsDirectSpaceStateSW::rest_info(RID p_shape, const Transform &p_shape_xform, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude, uint32_t p_collision_layer, uint32_t p_object_type_mask) {
+bool PhysicsDirectSpaceStateSW::rest_info(RID p_shape, const Transform &p_shape_xform, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude, uint32_t p_collision_mask, uint32_t p_object_type_mask) {
ShapeSW *shape = static_cast<PhysicsServerSW *>(PhysicsServer::get_singleton())->shape_owner.get(p_shape);
ERR_FAIL_COND_V(!shape, 0);
@@ -429,7 +429,7 @@ bool PhysicsDirectSpaceStateSW::rest_info(RID p_shape, const Transform &p_shape_
for (int i = 0; i < amount; i++) {
- if (!_match_object_type_query(space->intersection_query_results[i], p_collision_layer, p_object_type_mask))
+ if (!_match_object_type_query(space->intersection_query_results[i], p_collision_mask, p_object_type_mask))
continue;
const CollisionObjectSW *col_obj = space->intersection_query_results[i];
diff --git a/servers/physics/space_sw.h b/servers/physics/space_sw.h
index 56f4d2f10d..270e4ef1bd 100644
--- a/servers/physics/space_sw.h
+++ b/servers/physics/space_sw.h
@@ -47,12 +47,12 @@ class PhysicsDirectSpaceStateSW : public PhysicsDirectSpaceState {
public:
SpaceSW *space;
- virtual int intersect_point(const Vector3 &p_point, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_layer = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION);
- virtual bool intersect_ray(const Vector3 &p_from, const Vector3 &p_to, RayResult &r_result, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_layer = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION, bool p_pick_ray = false);
- virtual int intersect_shape(const RID &p_shape, const Transform &p_xform, real_t p_margin, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_layer = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION);
- virtual bool cast_motion(const RID &p_shape, const Transform &p_xform, const Vector3 &p_motion, real_t p_margin, real_t &p_closest_safe, real_t &p_closest_unsafe, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_layer = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION, ShapeRestInfo *r_info = NULL);
- virtual bool collide_shape(RID p_shape, const Transform &p_shape_xform, real_t p_margin, Vector3 *r_results, int p_result_max, int &r_result_count, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_layer = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION);
- virtual bool rest_info(RID p_shape, const Transform &p_shape_xform, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_layer = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION);
+ virtual int intersect_point(const Vector3 &p_point, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION);
+ virtual bool intersect_ray(const Vector3 &p_from, const Vector3 &p_to, RayResult &r_result, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION, bool p_pick_ray = false);
+ virtual int intersect_shape(const RID &p_shape, const Transform &p_xform, real_t p_margin, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION);
+ virtual bool cast_motion(const RID &p_shape, const Transform &p_xform, const Vector3 &p_motion, real_t p_margin, real_t &p_closest_safe, real_t &p_closest_unsafe, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION, ShapeRestInfo *r_info = NULL);
+ virtual bool collide_shape(RID p_shape, const Transform &p_shape_xform, real_t p_margin, Vector3 *r_results, int p_result_max, int &r_result_count, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION);
+ virtual bool rest_info(RID p_shape, const Transform &p_shape_xform, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION);
virtual Vector3 get_closest_point_to_object_volume(RID p_object, const Vector3 p_point) const;
PhysicsDirectSpaceStateSW();
diff --git a/servers/physics_2d/collision_object_2d_sw.h b/servers/physics_2d/collision_object_2d_sw.h
index db1270633f..627ba8ea15 100644
--- a/servers/physics_2d/collision_object_2d_sw.h
+++ b/servers/physics_2d/collision_object_2d_sw.h
@@ -110,21 +110,48 @@ public:
void set_shape_metadata(int p_index, const Variant &p_metadata);
_FORCE_INLINE_ int get_shape_count() const { return shapes.size(); }
- _FORCE_INLINE_ Shape2DSW *get_shape(int p_index) const { return shapes[p_index].shape; }
- _FORCE_INLINE_ const Transform2D &get_shape_transform(int p_index) const { return shapes[p_index].xform; }
- _FORCE_INLINE_ const Transform2D &get_shape_inv_transform(int p_index) const { return shapes[p_index].xform_inv; }
- _FORCE_INLINE_ const Rect2 &get_shape_aabb(int p_index) const { return shapes[p_index].aabb_cache; }
- _FORCE_INLINE_ const Variant &get_shape_metadata(int p_index) const { return shapes[p_index].metadata; }
+ _FORCE_INLINE_ Shape2DSW *get_shape(int p_index) const {
+ ERR_FAIL_INDEX_V(p_index, shapes.size(), NULL);
+ return shapes[p_index].shape;
+ }
+ _FORCE_INLINE_ const Transform2D &get_shape_transform(int p_index) const {
+ ERR_FAIL_INDEX_V(p_index, shapes.size(), Transform2D());
+ return shapes[p_index].xform;
+ }
+ _FORCE_INLINE_ const Transform2D &get_shape_inv_transform(int p_index) const {
+ ERR_FAIL_INDEX_V(p_index, shapes.size(), Transform2D());
+ return shapes[p_index].xform_inv;
+ }
+ _FORCE_INLINE_ const Rect2 &get_shape_aabb(int p_index) const {
+ ERR_FAIL_INDEX_V(p_index, shapes.size(), Rect2());
+ return shapes[p_index].aabb_cache;
+ }
+ _FORCE_INLINE_ const Variant &get_shape_metadata(int p_index) const {
+ ERR_FAIL_INDEX_V(p_index, shapes.size(), Variant());
+ return shapes[p_index].metadata;
+ }
_FORCE_INLINE_ Transform2D get_transform() const { return transform; }
_FORCE_INLINE_ Transform2D get_inv_transform() const { return inv_transform; }
_FORCE_INLINE_ Space2DSW *get_space() const { return space; }
- _FORCE_INLINE_ void set_shape_as_disabled(int p_idx, bool p_disabled) { shapes[p_idx].disabled = p_disabled; }
- _FORCE_INLINE_ bool is_shape_set_as_disabled(int p_idx) const { return shapes[p_idx].disabled; }
+ _FORCE_INLINE_ void set_shape_as_disabled(int p_idx, bool p_disabled) {
+ ERR_FAIL_INDEX(p_idx, shapes.size());
+ shapes[p_idx].disabled = p_disabled;
+ }
+ _FORCE_INLINE_ bool is_shape_set_as_disabled(int p_idx) const {
+ ERR_FAIL_INDEX_V(p_idx, shapes.size(), false);
+ return shapes[p_idx].disabled;
+ }
- _FORCE_INLINE_ void set_shape_as_one_way_collision(int p_idx, bool p_one_way_collision) { shapes[p_idx].one_way_collision = p_one_way_collision; }
- _FORCE_INLINE_ bool is_shape_set_as_one_way_collision(int p_idx) const { return shapes[p_idx].one_way_collision; }
+ _FORCE_INLINE_ void set_shape_as_one_way_collision(int p_idx, bool p_one_way_collision) {
+ ERR_FAIL_INDEX(p_idx, shapes.size());
+ shapes[p_idx].one_way_collision = p_one_way_collision;
+ }
+ _FORCE_INLINE_ bool is_shape_set_as_one_way_collision(int p_idx) const {
+ ERR_FAIL_INDEX_V(p_idx, shapes.size(), false);
+ return shapes[p_idx].one_way_collision;
+ }
void set_collision_mask(uint32_t p_mask) { collision_mask = p_mask; }
_FORCE_INLINE_ uint32_t get_collision_mask() const { return collision_mask; }
diff --git a/servers/physics_2d/physics_2d_server_sw.cpp b/servers/physics_2d/physics_2d_server_sw.cpp
index df3bf72a31..5d3305c82d 100644
--- a/servers/physics_2d/physics_2d_server_sw.cpp
+++ b/servers/physics_2d/physics_2d_server_sw.cpp
@@ -299,14 +299,7 @@ void Physics2DServerSW::area_set_space(RID p_area, RID p_space) {
if (area->get_space() == space)
return; //pointless
- for (Set<Constraint2DSW *>::Element *E = area->get_constraints().front(); E; E = E->next()) {
- RID self = E->get()->get_self();
- if (!self.is_valid())
- continue;
- free(self);
- }
area->clear_constraints();
-
area->set_space(space);
};
@@ -551,14 +544,7 @@ void Physics2DServerSW::body_set_space(RID p_body, RID p_space) {
if (body->get_space() == space)
return; //pointless
- for (Map<Constraint2DSW *, int>::Element *E = body->get_constraint_map().front(); E; E = E->next()) {
- RID self = E->key()->get_self();
- if (!self.is_valid())
- continue;
- free(self);
- }
body->clear_constraint_map();
-
body->set_space(space);
};
diff --git a/servers/physics_2d/space_2d_sw.cpp b/servers/physics_2d/space_2d_sw.cpp
index 8f22d1cd44..6eaaaa777b 100644
--- a/servers/physics_2d/space_2d_sw.cpp
+++ b/servers/physics_2d/space_2d_sw.cpp
@@ -32,9 +32,9 @@
#include "collision_solver_2d_sw.h"
#include "pair.h"
#include "physics_2d_server_sw.h"
-_FORCE_INLINE_ static bool _match_object_type_query(CollisionObject2DSW *p_object, uint32_t p_collision_layer, uint32_t p_type_mask) {
+_FORCE_INLINE_ static bool _match_object_type_query(CollisionObject2DSW *p_object, uint32_t p_collision_mask, uint32_t p_type_mask) {
- if ((p_object->get_collision_layer() & p_collision_layer) == 0)
+ if ((p_object->get_collision_layer() & p_collision_mask) == 0)
return false;
if (p_object->get_type() == CollisionObject2DSW::TYPE_AREA)
@@ -45,7 +45,7 @@ _FORCE_INLINE_ static bool _match_object_type_query(CollisionObject2DSW *p_objec
return (1 << body->get_mode()) & p_type_mask;
}
-int Physics2DDirectSpaceStateSW::intersect_point(const Vector2 &p_point, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude, uint32_t p_collision_layer, uint32_t p_object_type_mask, bool p_pick_point) {
+int Physics2DDirectSpaceStateSW::intersect_point(const Vector2 &p_point, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude, uint32_t p_collision_mask, uint32_t p_object_type_mask, bool p_pick_point) {
if (p_result_max <= 0)
return 0;
@@ -60,7 +60,7 @@ int Physics2DDirectSpaceStateSW::intersect_point(const Vector2 &p_point, ShapeRe
for (int i = 0; i < amount; i++) {
- if (!_match_object_type_query(space->intersection_query_results[i], p_collision_layer, p_object_type_mask))
+ if (!_match_object_type_query(space->intersection_query_results[i], p_collision_mask, p_object_type_mask))
continue;
if (p_exclude.has(space->intersection_query_results[i]->get_self()))
@@ -96,7 +96,7 @@ int Physics2DDirectSpaceStateSW::intersect_point(const Vector2 &p_point, ShapeRe
return cc;
}
-bool Physics2DDirectSpaceStateSW::intersect_ray(const Vector2 &p_from, const Vector2 &p_to, RayResult &r_result, const Set<RID> &p_exclude, uint32_t p_collision_layer, uint32_t p_object_type_mask) {
+bool Physics2DDirectSpaceStateSW::intersect_ray(const Vector2 &p_from, const Vector2 &p_to, RayResult &r_result, const Set<RID> &p_exclude, uint32_t p_collision_mask, uint32_t p_object_type_mask) {
ERR_FAIL_COND_V(space->locked, false);
@@ -118,7 +118,7 @@ bool Physics2DDirectSpaceStateSW::intersect_ray(const Vector2 &p_from, const Vec
for (int i = 0; i < amount; i++) {
- if (!_match_object_type_query(space->intersection_query_results[i], p_collision_layer, p_object_type_mask))
+ if (!_match_object_type_query(space->intersection_query_results[i], p_collision_mask, p_object_type_mask))
continue;
if (p_exclude.has(space->intersection_query_results[i]->get_self()))
@@ -176,7 +176,7 @@ bool Physics2DDirectSpaceStateSW::intersect_ray(const Vector2 &p_from, const Vec
return true;
}
-int Physics2DDirectSpaceStateSW::intersect_shape(const RID &p_shape, const Transform2D &p_xform, const Vector2 &p_motion, real_t p_margin, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude, uint32_t p_collision_layer, uint32_t p_object_type_mask) {
+int Physics2DDirectSpaceStateSW::intersect_shape(const RID &p_shape, const Transform2D &p_xform, const Vector2 &p_motion, real_t p_margin, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude, uint32_t p_collision_mask, uint32_t p_object_type_mask) {
if (p_result_max <= 0)
return 0;
@@ -193,7 +193,7 @@ int Physics2DDirectSpaceStateSW::intersect_shape(const RID &p_shape, const Trans
for (int i = 0; i < amount; i++) {
- if (!_match_object_type_query(space->intersection_query_results[i], p_collision_layer, p_object_type_mask))
+ if (!_match_object_type_query(space->intersection_query_results[i], p_collision_mask, p_object_type_mask))
continue;
if (p_exclude.has(space->intersection_query_results[i]->get_self()))
@@ -218,7 +218,7 @@ int Physics2DDirectSpaceStateSW::intersect_shape(const RID &p_shape, const Trans
return cc;
}
-bool Physics2DDirectSpaceStateSW::cast_motion(const RID &p_shape, const Transform2D &p_xform, const Vector2 &p_motion, real_t p_margin, real_t &p_closest_safe, real_t &p_closest_unsafe, const Set<RID> &p_exclude, uint32_t p_collision_layer, uint32_t p_object_type_mask) {
+bool Physics2DDirectSpaceStateSW::cast_motion(const RID &p_shape, const Transform2D &p_xform, const Vector2 &p_motion, real_t p_margin, real_t &p_closest_safe, real_t &p_closest_unsafe, const Set<RID> &p_exclude, uint32_t p_collision_mask, uint32_t p_object_type_mask) {
Shape2DSW *shape = Physics2DServerSW::singletonsw->shape_owner.get(p_shape);
ERR_FAIL_COND_V(!shape, false);
@@ -239,7 +239,7 @@ bool Physics2DDirectSpaceStateSW::cast_motion(const RID &p_shape, const Transfor
for (int i = 0; i < amount; i++) {
- if (!_match_object_type_query(space->intersection_query_results[i], p_collision_layer, p_object_type_mask))
+ if (!_match_object_type_query(space->intersection_query_results[i], p_collision_mask, p_object_type_mask))
continue;
if (p_exclude.has(space->intersection_query_results[i]->get_self()))
@@ -302,7 +302,7 @@ bool Physics2DDirectSpaceStateSW::cast_motion(const RID &p_shape, const Transfor
return true;
}
-bool Physics2DDirectSpaceStateSW::collide_shape(RID p_shape, const Transform2D &p_shape_xform, const Vector2 &p_motion, real_t p_margin, Vector2 *r_results, int p_result_max, int &r_result_count, const Set<RID> &p_exclude, uint32_t p_collision_layer, uint32_t p_object_type_mask) {
+bool Physics2DDirectSpaceStateSW::collide_shape(RID p_shape, const Transform2D &p_shape_xform, const Vector2 &p_motion, real_t p_margin, Vector2 *r_results, int p_result_max, int &r_result_count, const Set<RID> &p_exclude, uint32_t p_collision_mask, uint32_t p_object_type_mask) {
if (p_result_max <= 0)
return 0;
@@ -333,7 +333,7 @@ bool Physics2DDirectSpaceStateSW::collide_shape(RID p_shape, const Transform2D &
for (int i = 0; i < amount; i++) {
- if (!_match_object_type_query(space->intersection_query_results[i], p_collision_layer, p_object_type_mask))
+ if (!_match_object_type_query(space->intersection_query_results[i], p_collision_mask, p_object_type_mask))
continue;
const CollisionObject2DSW *col_obj = space->intersection_query_results[i];
@@ -391,7 +391,7 @@ static void _rest_cbk_result(const Vector2 &p_point_A, const Vector2 &p_point_B,
rd->best_shape = rd->shape;
}
-bool Physics2DDirectSpaceStateSW::rest_info(RID p_shape, const Transform2D &p_shape_xform, const Vector2 &p_motion, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude, uint32_t p_collision_layer, uint32_t p_object_type_mask) {
+bool Physics2DDirectSpaceStateSW::rest_info(RID p_shape, const Transform2D &p_shape_xform, const Vector2 &p_motion, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude, uint32_t p_collision_mask, uint32_t p_object_type_mask) {
Shape2DSW *shape = Physics2DServerSW::singletonsw->shape_owner.get(p_shape);
ERR_FAIL_COND_V(!shape, 0);
@@ -409,7 +409,7 @@ bool Physics2DDirectSpaceStateSW::rest_info(RID p_shape, const Transform2D &p_sh
for (int i = 0; i < amount; i++) {
- if (!_match_object_type_query(space->intersection_query_results[i], p_collision_layer, p_object_type_mask))
+ if (!_match_object_type_query(space->intersection_query_results[i], p_collision_mask, p_object_type_mask))
continue;
const CollisionObject2DSW *col_obj = space->intersection_query_results[i];
diff --git a/servers/physics_2d/space_2d_sw.h b/servers/physics_2d/space_2d_sw.h
index c7e7497397..bf0796fb22 100644
--- a/servers/physics_2d/space_2d_sw.h
+++ b/servers/physics_2d/space_2d_sw.h
@@ -47,12 +47,12 @@ class Physics2DDirectSpaceStateSW : public Physics2DDirectSpaceState {
public:
Space2DSW *space;
- virtual int intersect_point(const Vector2 &p_point, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_layer = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION, bool p_pick_point = false);
- virtual bool intersect_ray(const Vector2 &p_from, const Vector2 &p_to, RayResult &r_result, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_layer = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION);
- virtual int intersect_shape(const RID &p_shape, const Transform2D &p_xform, const Vector2 &p_motion, real_t p_margin, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_layer = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION);
- virtual bool cast_motion(const RID &p_shape, const Transform2D &p_xform, const Vector2 &p_motion, real_t p_margin, real_t &p_closest_safe, real_t &p_closest_unsafe, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_layer = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION);
- virtual bool collide_shape(RID p_shape, const Transform2D &p_shape_xform, const Vector2 &p_motion, real_t p_margin, Vector2 *r_results, int p_result_max, int &r_result_count, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_layer = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION);
- virtual bool rest_info(RID p_shape, const Transform2D &p_shape_xform, const Vector2 &p_motion, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_layer = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION);
+ virtual int intersect_point(const Vector2 &p_point, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION, bool p_pick_point = false);
+ virtual bool intersect_ray(const Vector2 &p_from, const Vector2 &p_to, RayResult &r_result, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION);
+ virtual int intersect_shape(const RID &p_shape, const Transform2D &p_xform, const Vector2 &p_motion, real_t p_margin, ShapeResult *r_results, int p_result_max, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION);
+ virtual bool cast_motion(const RID &p_shape, const Transform2D &p_xform, const Vector2 &p_motion, real_t p_margin, real_t &p_closest_safe, real_t &p_closest_unsafe, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION);
+ virtual bool collide_shape(RID p_shape, const Transform2D &p_shape_xform, const Vector2 &p_motion, real_t p_margin, Vector2 *r_results, int p_result_max, int &r_result_count, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION);
+ virtual bool rest_info(RID p_shape, const Transform2D &p_shape_xform, const Vector2 &p_motion, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude = Set<RID>(), uint32_t p_collision_mask = 0xFFFFFFFF, uint32_t p_object_type_mask = TYPE_MASK_COLLISION);
Physics2DDirectSpaceStateSW();
};
diff --git a/servers/physics_2d_server.cpp b/servers/physics_2d_server.cpp
index 671c31e6a3..b2e1d541ab 100644
--- a/servers/physics_2d_server.cpp
+++ b/servers/physics_2d_server.cpp
@@ -358,8 +358,8 @@ void Physics2DDirectSpaceState::_bind_methods() {
BIND_ENUM_CONSTANT(TYPE_MASK_KINEMATIC_BODY);
BIND_ENUM_CONSTANT(TYPE_MASK_RIGID_BODY);
BIND_ENUM_CONSTANT(TYPE_MASK_CHARACTER_BODY);
- BIND_ENUM_CONSTANT(TYPE_MASK_AREA);
BIND_ENUM_CONSTANT(TYPE_MASK_COLLISION);
+ BIND_ENUM_CONSTANT(TYPE_MASK_AREA);
}
int Physics2DShapeQueryResult::get_result_count() const {
@@ -615,6 +615,7 @@ void Physics2DServer::_bind_methods() {
BIND_ENUM_CONSTANT(SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS);
BIND_ENUM_CONSTANT(SHAPE_LINE);
+ BIND_ENUM_CONSTANT(SHAPE_RAY);
BIND_ENUM_CONSTANT(SHAPE_SEGMENT);
BIND_ENUM_CONSTANT(SHAPE_CIRCLE);
BIND_ENUM_CONSTANT(SHAPE_RECTANGLE);
diff --git a/servers/physics_server.cpp b/servers/physics_server.cpp
index 6d192886a5..360808ce8c 100644
--- a/servers/physics_server.cpp
+++ b/servers/physics_server.cpp
@@ -353,8 +353,8 @@ void PhysicsDirectSpaceState::_bind_methods() {
BIND_ENUM_CONSTANT(TYPE_MASK_KINEMATIC_BODY);
BIND_ENUM_CONSTANT(TYPE_MASK_RIGID_BODY);
BIND_ENUM_CONSTANT(TYPE_MASK_CHARACTER_BODY);
- BIND_ENUM_CONSTANT(TYPE_MASK_AREA);
BIND_ENUM_CONSTANT(TYPE_MASK_COLLISION);
+ BIND_ENUM_CONSTANT(TYPE_MASK_AREA);
}
int PhysicsShapeQueryResult::get_result_count() const {
@@ -679,8 +679,8 @@ void PhysicsServer::_bind_methods() {
BIND_ENUM_CONSTANT(BODY_PARAM_FRICTION);
BIND_ENUM_CONSTANT(BODY_PARAM_MASS);
BIND_ENUM_CONSTANT(BODY_PARAM_GRAVITY_SCALE);
- BIND_ENUM_CONSTANT(BODY_PARAM_ANGULAR_DAMP);
BIND_ENUM_CONSTANT(BODY_PARAM_LINEAR_DAMP);
+ BIND_ENUM_CONSTANT(BODY_PARAM_ANGULAR_DAMP);
BIND_ENUM_CONSTANT(BODY_PARAM_MAX);
BIND_ENUM_CONSTANT(BODY_STATE_TRANSFORM);
diff --git a/servers/register_server_types.cpp b/servers/register_server_types.cpp
index 1aee2144aa..7a9328e30f 100644
--- a/servers/register_server_types.cpp
+++ b/servers/register_server_types.cpp
@@ -32,7 +32,6 @@
#include "arvr/arvr_interface.h"
#include "arvr/arvr_positional_tracker.h"
-#include "arvr/arvr_script_interface.h"
#include "arvr_server.h"
#include "audio/audio_effect.h"
#include "audio/audio_stream.h"
@@ -74,10 +73,8 @@ static void _debugger_get_resource_usage(List<ScriptDebuggerRemote::ResourceUsag
}
ShaderTypes *shader_types = NULL;
-ARVRServer *arvr_server = NULL;
void register_server_types() {
- arvr_server = memnew(ARVRServer);
ClassDB::register_virtual_class<VisualServer>();
ClassDB::register_class<AudioServer>();
@@ -95,7 +92,6 @@ void register_server_types() {
ClassDB::register_virtual_class<ARVRInterface>();
ClassDB::register_class<ARVRPositionalTracker>();
- ClassDB::register_class<ARVRScriptInterface>();
ClassDB::register_virtual_class<AudioStream>();
ClassDB::register_virtual_class<AudioStreamPlayback>();
@@ -152,9 +148,5 @@ void register_server_types() {
void unregister_server_types() {
- //@TODO move this into iPhone/Android implementation? just have this here for testing...
- // mobile_interface = NULL;
-
memdelete(shader_types);
- memdelete(arvr_server);
}
diff --git a/servers/server_wrap_mt_common.h b/servers/server_wrap_mt_common.h
index 267e5c63b9..51e7f446ea 100644
--- a/servers/server_wrap_mt_common.h
+++ b/servers/server_wrap_mt_common.h
@@ -775,3 +775,12 @@
server_name->m_type(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); \
} \
}
+
+#define FUNC12(m_type, m_arg1, m_arg2, m_arg3, m_arg4, m_arg5, m_arg6, m_arg7, m_arg8, m_arg9, m_arg10, m_arg11, m_arg12) \
+ virtual void m_type(m_arg1 p1, m_arg2 p2, m_arg3 p3, m_arg4 p4, m_arg5 p5, m_arg6 p6, m_arg7 p7, m_arg8 p8, m_arg9 p9, m_arg10 p10, m_arg11 p11, m_arg12 p12) { \
+ if (Thread::get_caller_id() != server_thread) { \
+ command_queue.push(server_name, &ServerName::m_type, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); \
+ } else { \
+ server_name->m_type(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); \
+ } \
+ }
diff --git a/servers/visual/rasterizer.h b/servers/visual/rasterizer.h
index b3f6b243de..cd4b465d79 100644
--- a/servers/visual/rasterizer.h
+++ b/servers/visual/rasterizer.h
@@ -65,7 +65,7 @@ public:
virtual void environment_set_fog(RID p_env, bool p_enable, float p_begin, float p_end, RID p_gradient_texture) = 0;
virtual void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_int, float p_fade_out, float p_depth_tolerance, bool p_roughness) = 0;
- virtual void environment_set_ssao(RID p_env, bool p_enable, float p_radius, float p_intensity, float p_radius2, float p_intensity2, float p_bias, float p_light_affect, const Color &p_color, bool p_blur) = 0;
+ virtual void environment_set_ssao(RID p_env, bool p_enable, float p_radius, float p_intensity, float p_radius2, float p_intensity2, float p_bias, float p_light_affect, const Color &p_color, VS::EnvironmentSSAOQuality p_quality, VS::EnvironmentSSAOBlur p_blur, float p_bilateral_sharpness) = 0;
virtual void environment_set_tonemap(RID p_env, VS::EnvironmentToneMapper p_tone_mapper, float p_exposure, float p_white, bool p_auto_exposure, float p_min_luminance, float p_max_luminance, float p_auto_exp_speed, float p_auto_exp_scale) = 0;
diff --git a/servers/visual/shader_language.cpp b/servers/visual/shader_language.cpp
index b2a11deea1..8fee6050a0 100644
--- a/servers/visual/shader_language.cpp
+++ b/servers/visual/shader_language.cpp
@@ -2586,6 +2586,8 @@ ShaderLanguage::Node *ShaderLanguage::_parse_expression(BlockNode *p_block, cons
} else if (tk.type == TK_BRACKET_OPEN) {
Node *index = _parse_and_reduce_expression(p_block, p_builtin_types);
+ if (!index)
+ return NULL;
if (index->get_datatype() != TYPE_INT && index->get_datatype() != TYPE_UINT) {
_set_error("Only integer datatypes are allowed for indexing");
diff --git a/servers/visual/visual_server_raster.cpp b/servers/visual/visual_server_raster.cpp
index 68ca586caf..69e2d1c162 100644
--- a/servers/visual/visual_server_raster.cpp
+++ b/servers/visual/visual_server_raster.cpp
@@ -90,17 +90,10 @@ void VisualServerRaster::request_frame_drawn_callback(Object *p_where, const Str
fdc.param = p_userdata;
frame_drawn_callbacks.push_back(fdc);
-
- print_line("added callback to draw");
}
void VisualServerRaster::draw() {
- /*
- if (changes)
- print_line("changes: "+itos(changes));
- */
-
changes = 0;
VSG::rasterizer->begin_frame();
@@ -109,9 +102,8 @@ void VisualServerRaster::draw() {
VSG::viewport->draw_viewports();
VSG::scene->render_probes();
- //_draw_cursors_and_margins();
+ _draw_margins();
VSG::rasterizer->end_frame();
- //draw_extra_frame=VS:rasterizer->needs_to_draw_next_frame();
while (frame_drawn_callbacks.front()) {
@@ -128,8 +120,6 @@ void VisualServerRaster::draw() {
frame_drawn_callbacks.pop_front();
}
-
- _draw_margins();
}
void VisualServerRaster::sync() {
}
diff --git a/servers/visual/visual_server_raster.h b/servers/visual/visual_server_raster.h
index 888fb29f93..425381550e 100644
--- a/servers/visual/visual_server_raster.h
+++ b/servers/visual/visual_server_raster.h
@@ -281,7 +281,7 @@ class VisualServerRaster : public VisualServer {
Set<Instance*> owned_instances;
BakedLightSampler *sampler;
int resolution;
- Vector<Color> light_bufer;
+ Vector<Color> light_buffer;
RID sampled_light;
uint64_t last_pass;
Transform xform; // viewspace normal to lightspace, might not use one.
@@ -652,6 +652,8 @@ public:
void m_name(m_type1 arg1, m_type2 arg2, m_type3 arg3, m_type4 arg4, m_type5 arg5, m_type6 arg6, m_type7 arg7, m_type8 arg8, m_type9 arg9, m_type10 arg10) { DISPLAY_CHANGED BINDBASE->m_name(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10); }
#define BIND11(m_name, m_type1, m_type2, m_type3, m_type4, m_type5, m_type6, m_type7, m_type8, m_type9, m_type10, m_type11) \
void m_name(m_type1 arg1, m_type2 arg2, m_type3 arg3, m_type4 arg4, m_type5 arg5, m_type6 arg6, m_type7 arg7, m_type8 arg8, m_type9 arg9, m_type10 arg10, m_type11 arg11) { DISPLAY_CHANGED BINDBASE->m_name(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11); }
+#define BIND12(m_name, m_type1, m_type2, m_type3, m_type4, m_type5, m_type6, m_type7, m_type8, m_type9, m_type10, m_type11, m_type12) \
+ void m_name(m_type1 arg1, m_type2 arg2, m_type3 arg3, m_type4 arg4, m_type5 arg5, m_type6 arg6, m_type7 arg7, m_type8 arg8, m_type9 arg9, m_type10 arg10, m_type11 arg11, m_type12 arg12) { DISPLAY_CHANGED BINDBASE->m_name(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12); }
//from now on, calls forwarded to this singleton
#define BINDBASE VSG::storage
@@ -974,7 +976,7 @@ public:
BIND2(environment_set_canvas_max_layer, RID, int)
BIND4(environment_set_ambient_light, RID, const Color &, float, float)
BIND7(environment_set_ssr, RID, bool, int, float, float, float, bool)
- BIND10(environment_set_ssao, RID, bool, float, float, float, float, float, float, const Color &, bool)
+ BIND12(environment_set_ssao, RID, bool, float, float, float, float, float, float, const Color &, EnvironmentSSAOQuality, EnvironmentSSAOBlur, float)
BIND6(environment_set_dof_blur_near, RID, bool, float, float, float, EnvironmentDOFBlurQuality)
BIND6(environment_set_dof_blur_far, RID, bool, float, float, float, EnvironmentDOFBlurQuality)
diff --git a/servers/visual/visual_server_viewport.cpp b/servers/visual/visual_server_viewport.cpp
index 0dca09a5bf..92c431e393 100644
--- a/servers/visual/visual_server_viewport.cpp
+++ b/servers/visual/visual_server_viewport.cpp
@@ -54,7 +54,7 @@ void VisualServerViewport::_draw_viewport(Viewport *p_viewport, ARVRInterface::E
bool can_draw_3d = !p_viewport->disable_3d && !p_viewport->disable_3d_by_usage && VSG::scene->camera_owner.owns(p_viewport->camera);
if (p_viewport->clear_mode != VS::VIEWPORT_CLEAR_NEVER) {
- VSG::rasterizer->clear_render_target(clear_color);
+ VSG::rasterizer->clear_render_target(p_viewport->transparent_bg ? Color(0, 0, 0, 0) : clear_color);
if (p_viewport->clear_mode == VS::VIEWPORT_CLEAR_ONLY_NEXT_FRAME) {
p_viewport->clear_mode = VS::VIEWPORT_CLEAR_NEVER;
}
@@ -504,6 +504,7 @@ void VisualServerViewport::viewport_set_transparent_background(RID p_viewport, b
ERR_FAIL_COND(!viewport);
VSG::storage->render_target_set_flag(viewport->render_target, RasterizerStorage::RENDER_TARGET_TRANSPARENT, p_enabled);
+ viewport->transparent_bg = true;
}
void VisualServerViewport::viewport_set_global_canvas_transform(RID p_viewport, const Transform2D &p_transform) {
diff --git a/servers/visual/visual_server_viewport.h b/servers/visual/visual_server_viewport.h
index 8a294a9129..8db6eda133 100644
--- a/servers/visual/visual_server_viewport.h
+++ b/servers/visual/visual_server_viewport.h
@@ -72,6 +72,8 @@ public:
VS::ViewportClearMode clear_mode;
+ bool transparent_bg;
+
struct CanvasKey {
int layer;
@@ -101,6 +103,7 @@ public:
Viewport() {
update_mode = VS::VIEWPORT_UPDATE_WHEN_VISIBLE;
clear_mode = VS::VIEWPORT_CLEAR_ALWAYS;
+ transparent_bg = false;
disable_environment = false;
viewport_to_screen = 0;
shadow_atlas_size = 0;
diff --git a/servers/visual/visual_server_wrap_mt.h b/servers/visual/visual_server_wrap_mt.h
index caec890217..67d503dfca 100644
--- a/servers/visual/visual_server_wrap_mt.h
+++ b/servers/visual/visual_server_wrap_mt.h
@@ -387,7 +387,7 @@ public:
FUNC2(environment_set_canvas_max_layer, RID, int)
FUNC4(environment_set_ambient_light, RID, const Color &, float, float)
FUNC7(environment_set_ssr, RID, bool, int, float, float, float, bool)
- FUNC10(environment_set_ssao, RID, bool, float, float, float, float, float, float, const Color &, bool)
+ FUNC12(environment_set_ssao, RID, bool, float, float, float, float, float, float, const Color &, EnvironmentSSAOQuality, EnvironmentSSAOBlur, float)
FUNC6(environment_set_dof_blur_near, RID, bool, float, float, float, EnvironmentDOFBlurQuality)
FUNC6(environment_set_dof_blur_far, RID, bool, float, float, float, EnvironmentDOFBlurQuality)
diff --git a/servers/visual_server.cpp b/servers/visual_server.cpp
index 47a5f4c7f3..2234ddda0d 100644
--- a/servers/visual_server.cpp
+++ b/servers/visual_server.cpp
@@ -62,6 +62,31 @@ RID VisualServer::texture_create_from_image(const Ref<Image> &p_image, uint32_t
return texture;
}
+Array VisualServer::_texture_debug_usage_bind() {
+
+ List<TextureInfo> list;
+ texture_debug_usage(&list);
+ Array arr;
+ for (const List<TextureInfo>::Element *E = list.front(); E; E = E->next()) {
+
+ Dictionary dict;
+ dict["texture"] = E->get().texture;
+ dict["size"] = E->get().size;
+ dict["format"] = E->get().format;
+ dict["bytes"] = E->get().bytes;
+ dict["path"] = E->get().path;
+ arr.push_back(dict);
+ }
+ return arr;
+}
+
+Array VisualServer::_shader_get_param_list_bind(RID p_shader) const {
+
+ List<PropertyInfo> l;
+ shader_get_param_list(p_shader, &l);
+ return convert_property_list(&l);
+}
+
RID VisualServer::get_test_texture() {
if (test_texture.is_valid()) {
@@ -1443,20 +1468,394 @@ Array VisualServer::mesh_surface_get_blend_shape_arrays(RID p_mesh, int p_surfac
}
}
+Array VisualServer::_mesh_surface_get_skeleton_aabb_bind(RID p_mesh, int p_surface) const {
+
+ Vector<Rect3> vec = VS::get_singleton()->mesh_surface_get_skeleton_aabb(p_mesh, p_surface);
+ Array arr;
+ for (int i = 0; i < vec.size(); i++) {
+ arr[i] = vec[i];
+ }
+ return arr;
+}
+
void VisualServer::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("force_sync"), &VisualServer::sync);
ClassDB::bind_method(D_METHOD("force_draw"), &VisualServer::draw);
+
ClassDB::bind_method(D_METHOD("texture_create"), &VisualServer::texture_create);
ClassDB::bind_method(D_METHOD("texture_create_from_image", "image", "flags"), &VisualServer::texture_create_from_image, DEFVAL(TEXTURE_FLAGS_DEFAULT));
- //ClassDB::bind_method(D_METHOD("texture_allocate"),&VisualServer::texture_allocate,DEFVAL( TEXTURE_FLAGS_DEFAULT ) );
- //ClassDB::bind_method(D_METHOD("texture_set_data"),&VisualServer::texture_blit_rect,DEFVAL( CUBEMAP_LEFT ) );
- //ClassDB::bind_method(D_METHOD("texture_get_rect"),&VisualServer::texture_get_rect );
+ ClassDB::bind_method(D_METHOD("texture_allocate", "texture", "width", "height", "format", "flags"), &VisualServer::texture_allocate, DEFVAL(TEXTURE_FLAGS_DEFAULT));
+ ClassDB::bind_method(D_METHOD("texture_set_data", "texture", "image", "cube_side"), &VisualServer::texture_set_data, DEFVAL(CUBEMAP_LEFT));
+ ClassDB::bind_method(D_METHOD("texture_get_data", "texture", "cube_side"), &VisualServer::texture_get_data, DEFVAL(CUBEMAP_LEFT));
ClassDB::bind_method(D_METHOD("texture_set_flags", "texture", "flags"), &VisualServer::texture_set_flags);
ClassDB::bind_method(D_METHOD("texture_get_flags", "texture"), &VisualServer::texture_get_flags);
+ ClassDB::bind_method(D_METHOD("texture_get_format", "texture"), &VisualServer::texture_get_format);
+ ClassDB::bind_method(D_METHOD("texture_get_texid", "texture"), &VisualServer::texture_get_texid);
ClassDB::bind_method(D_METHOD("texture_get_width", "texture"), &VisualServer::texture_get_width);
ClassDB::bind_method(D_METHOD("texture_get_height", "texture"), &VisualServer::texture_get_height);
-
+ ClassDB::bind_method(D_METHOD("texture_set_size_override", "texture", "width", "height"), &VisualServer::texture_set_size_override);
+ ClassDB::bind_method(D_METHOD("texture_set_path", "texture", "path"), &VisualServer::texture_set_path);
+ ClassDB::bind_method(D_METHOD("texture_get_path", "texture"), &VisualServer::texture_get_path);
ClassDB::bind_method(D_METHOD("texture_set_shrink_all_x2_on_set_data", "shrink"), &VisualServer::texture_set_shrink_all_x2_on_set_data);
+
+ ClassDB::bind_method(D_METHOD("texture_debug_usage"), &VisualServer::_texture_debug_usage_bind);
+ ClassDB::bind_method(D_METHOD("textures_keep_original", "enable"), &VisualServer::textures_keep_original);
+
+ ClassDB::bind_method(D_METHOD("sky_create"), &VisualServer::sky_create);
+ ClassDB::bind_method(D_METHOD("sky_set_texture", "sky", "cube_map", "radiance_size"), &VisualServer::sky_set_texture);
+
+ ClassDB::bind_method(D_METHOD("shader_create"), &VisualServer::shader_create);
+ ClassDB::bind_method(D_METHOD("shader_set_code", "shader", "code"), &VisualServer::shader_set_code);
+ ClassDB::bind_method(D_METHOD("shader_get_code", "shader"), &VisualServer::shader_get_code);
+ ClassDB::bind_method(D_METHOD("shader_get_param_list", "shader"), &VisualServer::_shader_get_param_list_bind);
+ ClassDB::bind_method(D_METHOD("shader_set_default_texture_param", "shader", "name", "texture"), &VisualServer::shader_set_default_texture_param);
+ ClassDB::bind_method(D_METHOD("shader_get_default_texture_param", "shader", "name"), &VisualServer::shader_get_default_texture_param);
+
+ ClassDB::bind_method(D_METHOD("material_create"), &VisualServer::material_create);
+ ClassDB::bind_method(D_METHOD("material_set_shader", "shader_material", "shader"), &VisualServer::material_set_shader);
+ ClassDB::bind_method(D_METHOD("material_get_shader", "shader_material"), &VisualServer::material_get_shader);
+ ClassDB::bind_method(D_METHOD("material_set_param", "material", "parameter", "value"), &VisualServer::material_set_param);
+ ClassDB::bind_method(D_METHOD("material_get_param", "material", "parameter"), &VisualServer::material_get_param);
+ ClassDB::bind_method(D_METHOD("material_set_render_priority", "material", "priority"), &VisualServer::material_set_render_priority);
+ ClassDB::bind_method(D_METHOD("material_set_line_width", "material", "width"), &VisualServer::material_set_line_width);
+ ClassDB::bind_method(D_METHOD("material_set_next_pass", "material", "next_material"), &VisualServer::material_set_next_pass);
+
+ ClassDB::bind_method(D_METHOD("mesh_create"), &VisualServer::mesh_create);
+ ClassDB::bind_method(D_METHOD("mesh_add_surface_from_arrays", "mesh", "primtive", "arrays", "blend_shapes", "compress_format"), &VisualServer::mesh_add_surface_from_arrays, DEFVAL(Array()), DEFVAL(ARRAY_COMPRESS_DEFAULT));
+ ClassDB::bind_method(D_METHOD("mesh_set_blend_shape_count", "mesh", "amount"), &VisualServer::mesh_set_blend_shape_count);
+ ClassDB::bind_method(D_METHOD("mesh_get_blend_shape_count", "mesh"), &VisualServer::mesh_get_blend_shape_count);
+ ClassDB::bind_method(D_METHOD("mesh_set_blend_shape_mode", "mesh", "mode"), &VisualServer::mesh_set_blend_shape_mode);
+ ClassDB::bind_method(D_METHOD("mesh_get_blend_shape_mode", "mesh"), &VisualServer::mesh_get_blend_shape_mode);
+ ClassDB::bind_method(D_METHOD("mesh_surface_set_material", "mesh", "surface", "material"), &VisualServer::mesh_surface_set_material);
+ ClassDB::bind_method(D_METHOD("mesh_surface_get_material", "mesh", "surface"), &VisualServer::mesh_surface_get_material);
+ ClassDB::bind_method(D_METHOD("mesh_surface_get_array_len", "mesh", "surface"), &VisualServer::mesh_surface_get_array_len);
+ ClassDB::bind_method(D_METHOD("mesh_surface_get_array_index_len", "mesh", "surface"), &VisualServer::mesh_surface_get_array_index_len);
+ ClassDB::bind_method(D_METHOD("mesh_surface_get_array", "mesh", "surface"), &VisualServer::mesh_surface_get_array);
+ ClassDB::bind_method(D_METHOD("mesh_surface_get_index_array", "mesh", "surface"), &VisualServer::mesh_surface_get_index_array);
+ ClassDB::bind_method(D_METHOD("mesh_surface_get_arrays", "mesh", "surface"), &VisualServer::mesh_surface_get_arrays);
+ ClassDB::bind_method(D_METHOD("mesh_surface_get_blend_shape_arrays", "mesh", "surface"), &VisualServer::mesh_surface_get_blend_shape_arrays);
+ ClassDB::bind_method(D_METHOD("mesh_surface_get_format", "mesh", "surface"), &VisualServer::mesh_surface_get_format);
+ ClassDB::bind_method(D_METHOD("mesh_surface_get_primitive_type", "mesh", "surface"), &VisualServer::mesh_surface_get_primitive_type);
+ ClassDB::bind_method(D_METHOD("mesh_surface_get_aabb", "mesh", "surface"), &VisualServer::mesh_surface_get_aabb);
+ ClassDB::bind_method(D_METHOD("mesh_surface_get_skeleton_aabb", "mesh", "surface"), &VisualServer::_mesh_surface_get_skeleton_aabb_bind);
+ ClassDB::bind_method(D_METHOD("mesh_remove_surface", "mesh", "index"), &VisualServer::mesh_remove_surface);
+ ClassDB::bind_method(D_METHOD("mesh_get_surface_count", "mesh"), &VisualServer::mesh_get_surface_count);
+ ClassDB::bind_method(D_METHOD("mesh_set_custom_aabb", "mesh", "aabb"), &VisualServer::mesh_set_custom_aabb);
+ ClassDB::bind_method(D_METHOD("mesh_get_custom_aabb", "mesh"), &VisualServer::mesh_get_custom_aabb);
+ ClassDB::bind_method(D_METHOD("mesh_clear", "mesh"), &VisualServer::mesh_clear);
+
+ // TODO: multimesh_*, immediate_*, skeleton_*, light_*, reflection_probe_*, gi_probe_*, particles_*, camera_*
+
+ ClassDB::bind_method(D_METHOD("viewport_create"), &VisualServer::viewport_create);
+ ClassDB::bind_method(D_METHOD("viewport_set_use_arvr", "viewport", "use_arvr"), &VisualServer::viewport_set_use_arvr);
+ ClassDB::bind_method(D_METHOD("viewport_set_size", "viewport", "width", "height"), &VisualServer::viewport_set_size);
+ ClassDB::bind_method(D_METHOD("viewport_set_active", "viewport", "active"), &VisualServer::viewport_set_active);
+ ClassDB::bind_method(D_METHOD("viewport_set_parent_viewport", "viewport", "parent_viewport"), &VisualServer::viewport_set_parent_viewport);
+ ClassDB::bind_method(D_METHOD("viewport_attach_to_screen", "viewport", "rect", "screen"), &VisualServer::viewport_attach_to_screen, DEFVAL(Rect2()), DEFVAL(0));
+ ClassDB::bind_method(D_METHOD("viewport_detach", "viewport"), &VisualServer::viewport_detach);
+ ClassDB::bind_method(D_METHOD("viewport_set_update_mode", "viewport", "update_mode"), &VisualServer::viewport_set_update_mode);
+ ClassDB::bind_method(D_METHOD("viewport_set_vflip", "viewport", "enabled"), &VisualServer::viewport_set_vflip);
+ ClassDB::bind_method(D_METHOD("viewport_set_clear_mode", "viewport", "clear_mode"), &VisualServer::viewport_set_clear_mode);
+ ClassDB::bind_method(D_METHOD("viewport_get_texture", "viewport"), &VisualServer::viewport_get_texture);
+ ClassDB::bind_method(D_METHOD("viewport_set_hide_scenario", "viewport", "hidden"), &VisualServer::viewport_set_hide_scenario);
+ ClassDB::bind_method(D_METHOD("viewport_set_hide_canvas", "viewport", "hidden"), &VisualServer::viewport_set_hide_canvas);
+ ClassDB::bind_method(D_METHOD("viewport_set_disable_environment", "viewport", "disabled"), &VisualServer::viewport_set_disable_environment);
+ ClassDB::bind_method(D_METHOD("viewport_set_disable_3d", "viewport", "disabled"), &VisualServer::viewport_set_disable_3d);
+ ClassDB::bind_method(D_METHOD("viewport_attach_camera", "viewport", "camera"), &VisualServer::viewport_attach_camera);
+ ClassDB::bind_method(D_METHOD("viewport_set_scenario", "viewport", "scenario"), &VisualServer::viewport_set_scenario);
+ ClassDB::bind_method(D_METHOD("viewport_attach_canvas", "viewport", "canvas"), &VisualServer::viewport_attach_canvas);
+ ClassDB::bind_method(D_METHOD("viewport_remove_canvas", "viewport", "canvas"), &VisualServer::viewport_remove_canvas);
+ ClassDB::bind_method(D_METHOD("viewport_set_canvas_transform", "viewport", "canvas", "offset"), &VisualServer::viewport_set_canvas_transform);
+ ClassDB::bind_method(D_METHOD("viewport_set_transparent_background", "viewport", "enabled"), &VisualServer::viewport_set_transparent_background);
+ ClassDB::bind_method(D_METHOD("viewport_set_global_canvas_transform", "viewport", "transform"), &VisualServer::viewport_set_global_canvas_transform);
+ ClassDB::bind_method(D_METHOD("viewport_set_canvas_layer", "viewport", "canvas", "layer"), &VisualServer::viewport_set_canvas_layer);
+ ClassDB::bind_method(D_METHOD("viewport_set_shadow_atlas_size", "viewport", "size"), &VisualServer::viewport_set_shadow_atlas_size);
+ ClassDB::bind_method(D_METHOD("viewport_set_shadow_atlas_quadrant_subdivision", "viewport", "quadrant", "subdivision"), &VisualServer::viewport_set_shadow_atlas_quadrant_subdivision);
+ ClassDB::bind_method(D_METHOD("viewport_set_msaa", "viewport", "msaa"), &VisualServer::viewport_set_msaa);
+ ClassDB::bind_method(D_METHOD("viewport_set_hdr", "viewport", "enabled"), &VisualServer::viewport_set_hdr);
+ ClassDB::bind_method(D_METHOD("viewport_set_usage", "viewport", "usage"), &VisualServer::viewport_set_usage);
+ ClassDB::bind_method(D_METHOD("viewport_get_render_info", "viewport", "info"), &VisualServer::viewport_get_render_info);
+ ClassDB::bind_method(D_METHOD("viewport_set_debug_draw", "viewport", "draw"), &VisualServer::viewport_set_debug_draw);
+
+ // TODO: environment_*, scenario_*, instance_*
+
+ ClassDB::bind_method(D_METHOD("canvas_create"), &VisualServer::canvas_create);
+ ClassDB::bind_method(D_METHOD("canvas_set_item_mirroring", "canvas", "item", "mirroring"), &VisualServer::canvas_set_item_mirroring);
+ ClassDB::bind_method(D_METHOD("canvas_set_modulate", "canvas", "color"), &VisualServer::canvas_set_modulate);
+
+ ClassDB::bind_method(D_METHOD("canvas_item_create"), &VisualServer::canvas_item_create);
+ ClassDB::bind_method(D_METHOD("canvas_item_set_parent", "item", "parent"), &VisualServer::canvas_item_set_parent);
+ ClassDB::bind_method(D_METHOD("canvas_item_set_visible", "item", "visible"), &VisualServer::canvas_item_set_visible);
+ ClassDB::bind_method(D_METHOD("canvas_item_set_light_mask", "item", "mask"), &VisualServer::canvas_item_set_light_mask);
+ ClassDB::bind_method(D_METHOD("canvas_item_set_transform", "item", "transform"), &VisualServer::canvas_item_set_transform);
+ ClassDB::bind_method(D_METHOD("canvas_item_set_clip", "item", "clip"), &VisualServer::canvas_item_set_clip);
+ ClassDB::bind_method(D_METHOD("canvas_item_set_distance_field_mode", "item", "enabled"), &VisualServer::canvas_item_set_distance_field_mode);
+ ClassDB::bind_method(D_METHOD("canvas_item_set_custom_rect", "item", "use_custom_rect", "rect"), &VisualServer::canvas_item_set_custom_rect, DEFVAL(Rect2()));
+ ClassDB::bind_method(D_METHOD("canvas_item_set_modulate", "item", "color"), &VisualServer::canvas_item_set_modulate);
+ ClassDB::bind_method(D_METHOD("canvas_item_set_self_modulate", "item", "color"), &VisualServer::canvas_item_set_self_modulate);
+ ClassDB::bind_method(D_METHOD("canvas_item_set_draw_behind_parent", "item", "enabled"), &VisualServer::canvas_item_set_draw_behind_parent);
+ ClassDB::bind_method(D_METHOD("canvas_item_add_line", "item", "from", "to", "color", "width", "antialiased"), &VisualServer::canvas_item_add_line, DEFVAL(1.0), DEFVAL(false));
+ ClassDB::bind_method(D_METHOD("canvas_item_add_polyline", "item", "points", "colors", "width", "antialiased"), &VisualServer::canvas_item_add_polyline, DEFVAL(1.0), DEFVAL(false));
+ ClassDB::bind_method(D_METHOD("canvas_item_add_rect", "item", "rect", "color"), &VisualServer::canvas_item_add_rect);
+ ClassDB::bind_method(D_METHOD("canvas_item_add_circle", "item", "pos", "radius", "color"), &VisualServer::canvas_item_add_circle);
+ ClassDB::bind_method(D_METHOD("canvas_item_add_texture_rect", "item", "rect", "texture", "tile", "modulate", "transpose", "normal_map"), &VisualServer::canvas_item_add_texture_rect, DEFVAL(false), DEFVAL(Color(1, 1, 1)), DEFVAL(false), DEFVAL(RID()));
+ ClassDB::bind_method(D_METHOD("canvas_item_add_texture_rect_region", "item", "rect", "texture", "src_rect", "modulate", "transpose", "normal_map", "clip_uv"), &VisualServer::canvas_item_add_texture_rect_region, DEFVAL(Color(1, 1, 1)), DEFVAL(false), DEFVAL(RID()), DEFVAL(true));
+ ClassDB::bind_method(D_METHOD("canvas_item_add_nine_patch", "item", "rect", "source", "texture", "topleft", "bottomright", "x_axis_mode", "y_axis_mode", "draw_center", "modulate", "normal_map"), &VisualServer::canvas_item_add_nine_patch, DEFVAL(NINE_PATCH_STRETCH), DEFVAL(NINE_PATCH_STRETCH), DEFVAL(true), DEFVAL(Color(1, 1, 1)), DEFVAL(RID()));
+ ClassDB::bind_method(D_METHOD("canvas_item_add_primitive", "item", "points", "colors", "uvs", "texture", "width", "normal_map"), &VisualServer::canvas_item_add_primitive, DEFVAL(1.0), DEFVAL(RID()));
+ ClassDB::bind_method(D_METHOD("canvas_item_add_polygon", "item", "points", "colors", "uvs", "texture", "normal_map", "antialiased"), &VisualServer::canvas_item_add_polygon, DEFVAL(Vector<Point2>()), DEFVAL(RID()), DEFVAL(RID()), DEFVAL(false));
+ ClassDB::bind_method(D_METHOD("canvas_item_add_triangle_array", "item", "indices", "points", "colors", "uvs", "texture", "count", "normal_map"), &VisualServer::canvas_item_add_triangle_array, DEFVAL(Vector<Point2>()), DEFVAL(RID()), DEFVAL(-1), DEFVAL(RID()));
+ ClassDB::bind_method(D_METHOD("canvas_item_add_mesh", "item", "mesh", "skeleton"), &VisualServer::canvas_item_add_mesh, DEFVAL(RID()));
+ ClassDB::bind_method(D_METHOD("canvas_item_add_multimesh", "item", "mesh", "skeleton"), &VisualServer::canvas_item_add_multimesh, DEFVAL(RID()));
+ ClassDB::bind_method(D_METHOD("canvas_item_add_particles", "item", "particles", "texture", "normal_map", "h_frames", "v_frames"), &VisualServer::canvas_item_add_particles);
+ ClassDB::bind_method(D_METHOD("canvas_item_add_set_transform", "item", "transform"), &VisualServer::canvas_item_add_set_transform);
+ ClassDB::bind_method(D_METHOD("canvas_item_add_clip_ignore", "item", "ignore"), &VisualServer::canvas_item_add_clip_ignore);
+ ClassDB::bind_method(D_METHOD("canvas_item_set_sort_children_by_y", "item", "enabled"), &VisualServer::canvas_item_set_sort_children_by_y);
+ ClassDB::bind_method(D_METHOD("canvas_item_set_z", "item", "z"), &VisualServer::canvas_item_set_z);
+ ClassDB::bind_method(D_METHOD("canvas_item_set_z_as_relative_to_parent", "item", "enabled"), &VisualServer::canvas_item_set_z_as_relative_to_parent);
+ ClassDB::bind_method(D_METHOD("canvas_item_set_copy_to_backbuffer", "item", "enabled", "rect"), &VisualServer::canvas_item_set_copy_to_backbuffer);
+ ClassDB::bind_method(D_METHOD("canvas_item_clear", "item"), &VisualServer::canvas_item_clear);
+ ClassDB::bind_method(D_METHOD("canvas_item_set_draw_index", "item", "index"), &VisualServer::canvas_item_set_draw_index);
+ ClassDB::bind_method(D_METHOD("canvas_item_set_material", "item", "material"), &VisualServer::canvas_item_set_material);
+ ClassDB::bind_method(D_METHOD("canvas_item_set_use_parent_material", "item", "enabled"), &VisualServer::canvas_item_set_use_parent_material);
+ ClassDB::bind_method(D_METHOD("canvas_light_create"), &VisualServer::canvas_light_create);
+ ClassDB::bind_method(D_METHOD("canvas_light_attach_to_canvas", "light", "canvas"), &VisualServer::canvas_light_attach_to_canvas);
+ ClassDB::bind_method(D_METHOD("canvas_light_set_enabled", "light", "enabled"), &VisualServer::canvas_light_set_enabled);
+ ClassDB::bind_method(D_METHOD("canvas_light_set_scale", "light", "scale"), &VisualServer::canvas_light_set_scale);
+ ClassDB::bind_method(D_METHOD("canvas_light_set_transform", "light", "transform"), &VisualServer::canvas_light_set_transform);
+ ClassDB::bind_method(D_METHOD("canvas_light_set_texture", "light", "texture"), &VisualServer::canvas_light_set_texture);
+ ClassDB::bind_method(D_METHOD("canvas_light_set_texture_offset", "light", "offset"), &VisualServer::canvas_light_set_texture_offset);
+ ClassDB::bind_method(D_METHOD("canvas_light_set_color", "light", "color"), &VisualServer::canvas_light_set_color);
+ ClassDB::bind_method(D_METHOD("canvas_light_set_height", "light", "height"), &VisualServer::canvas_light_set_height);
+ ClassDB::bind_method(D_METHOD("canvas_light_set_energy", "light", "energy"), &VisualServer::canvas_light_set_energy);
+ ClassDB::bind_method(D_METHOD("canvas_light_set_z_range", "light", "min_z", "max_z"), &VisualServer::canvas_light_set_z_range);
+ ClassDB::bind_method(D_METHOD("canvas_light_set_layer_range", "light", "min_layer", "max_layer"), &VisualServer::canvas_light_set_layer_range);
+ ClassDB::bind_method(D_METHOD("canvas_light_set_item_cull_mask", "light", "mask"), &VisualServer::canvas_light_set_item_cull_mask);
+ ClassDB::bind_method(D_METHOD("canvas_light_set_item_shadow_cull_mask", "light", "mask"), &VisualServer::canvas_light_set_item_shadow_cull_mask);
+ ClassDB::bind_method(D_METHOD("canvas_light_set_mode", "light", "mode"), &VisualServer::canvas_light_set_mode);
+ ClassDB::bind_method(D_METHOD("canvas_light_set_shadow_enabled", "light", "enabled"), &VisualServer::canvas_light_set_shadow_enabled);
+ ClassDB::bind_method(D_METHOD("canvas_light_set_shadow_buffer_size", "light", "size"), &VisualServer::canvas_light_set_shadow_buffer_size);
+ ClassDB::bind_method(D_METHOD("canvas_light_set_shadow_gradient_length", "light", "length"), &VisualServer::canvas_light_set_shadow_gradient_length);
+ ClassDB::bind_method(D_METHOD("canvas_light_set_shadow_filter", "light", "filter"), &VisualServer::canvas_light_set_shadow_filter);
+ ClassDB::bind_method(D_METHOD("canvas_light_set_shadow_color", "light", "color"), &VisualServer::canvas_light_set_shadow_color);
+ ClassDB::bind_method(D_METHOD("canvas_light_set_shadow_smooth", "light", "smooth"), &VisualServer::canvas_light_set_shadow_smooth);
+
+ ClassDB::bind_method(D_METHOD("canvas_light_occluder_create"), &VisualServer::canvas_light_occluder_create);
+ ClassDB::bind_method(D_METHOD("canvas_light_occluder_attach_to_canvas", "occluder", "canvas"), &VisualServer::canvas_light_occluder_attach_to_canvas);
+ ClassDB::bind_method(D_METHOD("canvas_light_occluder_set_enabled", "occluder", "enabled"), &VisualServer::canvas_light_occluder_set_enabled);
+ ClassDB::bind_method(D_METHOD("canvas_light_occluder_set_polygon", "occluder", "polygon"), &VisualServer::canvas_light_occluder_set_polygon);
+ ClassDB::bind_method(D_METHOD("canvas_light_occluder_set_transform", "occluder", "transform"), &VisualServer::canvas_light_occluder_set_transform);
+ ClassDB::bind_method(D_METHOD("canvas_light_occluder_set_light_mask", "occluder", "mask"), &VisualServer::canvas_light_occluder_set_light_mask);
+
+ ClassDB::bind_method(D_METHOD("canvas_occluder_polygon_create"), &VisualServer::canvas_occluder_polygon_create);
+ ClassDB::bind_method(D_METHOD("canvas_occluder_polygon_set_shape", "occluder_polygon", "shape", "closed"), &VisualServer::canvas_occluder_polygon_set_shape);
+ ClassDB::bind_method(D_METHOD("canvas_occluder_polygon_set_shape_as_lines", "occluder_polygon", "shape"), &VisualServer::canvas_occluder_polygon_set_shape_as_lines);
+ ClassDB::bind_method(D_METHOD("canvas_occluder_polygon_set_cull_mode", "occluder_polygon", "mode"), &VisualServer::canvas_occluder_polygon_set_cull_mode);
+
+ ClassDB::bind_method(D_METHOD("black_bars_set_margins", "left", "top", "right", "bottom"), &VisualServer::black_bars_set_margins);
+ ClassDB::bind_method(D_METHOD("black_bars_set_images", "left", "top", "right", "bottom"), &VisualServer::black_bars_set_images);
+
+ ClassDB::bind_method(D_METHOD("free", "rid"), &VisualServer::free);
+
+ ClassDB::bind_method(D_METHOD("request_frame_drawn_callback", "where", "method", "userdata"), &VisualServer::request_frame_drawn_callback);
+ ClassDB::bind_method(D_METHOD("draw"), &VisualServer::draw);
+ ClassDB::bind_method(D_METHOD("sync"), &VisualServer::sync);
+ ClassDB::bind_method(D_METHOD("has_changed"), &VisualServer::has_changed);
+ ClassDB::bind_method(D_METHOD("init"), &VisualServer::init);
+ ClassDB::bind_method(D_METHOD("finish"), &VisualServer::finish);
+ ClassDB::bind_method(D_METHOD("get_render_info", "info"), &VisualServer::get_render_info);
+
+ ClassDB::bind_method(D_METHOD("get_test_cube"), &VisualServer::get_test_cube);
+ ClassDB::bind_method(D_METHOD("get_test_texture"), &VisualServer::get_test_texture);
+ ClassDB::bind_method(D_METHOD("get_white_texture"), &VisualServer::get_white_texture);
+
+ ClassDB::bind_method(D_METHOD("make_sphere_mesh", "latitudes", "longitudes", "radius"), &VisualServer::make_sphere_mesh);
+
+ ClassDB::bind_method(D_METHOD("set_boot_image", "image", "color", "scale"), &VisualServer::set_boot_image);
+ ClassDB::bind_method(D_METHOD("set_default_clear_color", "color"), &VisualServer::set_default_clear_color);
+
+ ClassDB::bind_method(D_METHOD("has_feature", "feature"), &VisualServer::has_feature);
+ ClassDB::bind_method(D_METHOD("has_os_feature", "feature"), &VisualServer::has_os_feature);
+ ClassDB::bind_method(D_METHOD("set_debug_generate_wireframes", "generate"), &VisualServer::set_debug_generate_wireframes);
+
+ BIND_CONSTANT(NO_INDEX_ARRAY);
+ BIND_CONSTANT(ARRAY_WEIGHTS_SIZE);
+ BIND_CONSTANT(CANVAS_ITEM_Z_MIN);
+ BIND_CONSTANT(CANVAS_ITEM_Z_MAX);
+ BIND_CONSTANT(MAX_GLOW_LEVELS);
+ BIND_CONSTANT(MAX_CURSORS);
+ BIND_CONSTANT(MATERIAL_RENDER_PRIORITY_MIN);
+ BIND_CONSTANT(MATERIAL_RENDER_PRIORITY_MAX);
+
+ BIND_ENUM_CONSTANT(CUBEMAP_LEFT);
+ BIND_ENUM_CONSTANT(CUBEMAP_RIGHT);
+ BIND_ENUM_CONSTANT(CUBEMAP_BOTTOM);
+ BIND_ENUM_CONSTANT(CUBEMAP_TOP);
+ BIND_ENUM_CONSTANT(CUBEMAP_FRONT);
+ BIND_ENUM_CONSTANT(CUBEMAP_BACK);
+
+ BIND_ENUM_CONSTANT(TEXTURE_FLAG_MIPMAPS);
+ BIND_ENUM_CONSTANT(TEXTURE_FLAG_REPEAT);
+ BIND_ENUM_CONSTANT(TEXTURE_FLAG_FILTER);
+ BIND_ENUM_CONSTANT(TEXTURE_FLAG_ANISOTROPIC_FILTER);
+ BIND_ENUM_CONSTANT(TEXTURE_FLAG_CONVERT_TO_LINEAR);
+ BIND_ENUM_CONSTANT(TEXTURE_FLAG_MIRRORED_REPEAT);
+ BIND_ENUM_CONSTANT(TEXTURE_FLAG_CUBEMAP);
+ BIND_ENUM_CONSTANT(TEXTURE_FLAG_USED_FOR_STREAMING);
+ BIND_ENUM_CONSTANT(TEXTURE_FLAGS_DEFAULT);
+
+ BIND_ENUM_CONSTANT(SHADER_SPATIAL);
+ BIND_ENUM_CONSTANT(SHADER_CANVAS_ITEM);
+ BIND_ENUM_CONSTANT(SHADER_PARTICLES);
+ BIND_ENUM_CONSTANT(SHADER_MAX);
+
+ BIND_ENUM_CONSTANT(ARRAY_VERTEX);
+ BIND_ENUM_CONSTANT(ARRAY_NORMAL);
+ BIND_ENUM_CONSTANT(ARRAY_TANGENT);
+ BIND_ENUM_CONSTANT(ARRAY_COLOR);
+ BIND_ENUM_CONSTANT(ARRAY_TEX_UV);
+ BIND_ENUM_CONSTANT(ARRAY_TEX_UV2);
+ BIND_ENUM_CONSTANT(ARRAY_BONES);
+ BIND_ENUM_CONSTANT(ARRAY_WEIGHTS);
+ BIND_ENUM_CONSTANT(ARRAY_INDEX);
+ BIND_ENUM_CONSTANT(ARRAY_MAX);
+
+ BIND_ENUM_CONSTANT(ARRAY_FORMAT_VERTEX);
+ BIND_ENUM_CONSTANT(ARRAY_FORMAT_NORMAL);
+ BIND_ENUM_CONSTANT(ARRAY_FORMAT_TANGENT);
+ BIND_ENUM_CONSTANT(ARRAY_FORMAT_COLOR);
+ BIND_ENUM_CONSTANT(ARRAY_FORMAT_TEX_UV);
+ BIND_ENUM_CONSTANT(ARRAY_FORMAT_TEX_UV2);
+ BIND_ENUM_CONSTANT(ARRAY_FORMAT_BONES);
+ BIND_ENUM_CONSTANT(ARRAY_FORMAT_WEIGHTS);
+ BIND_ENUM_CONSTANT(ARRAY_FORMAT_INDEX);
+ BIND_ENUM_CONSTANT(ARRAY_COMPRESS_VERTEX);
+ BIND_ENUM_CONSTANT(ARRAY_COMPRESS_NORMAL);
+ BIND_ENUM_CONSTANT(ARRAY_COMPRESS_TANGENT);
+ BIND_ENUM_CONSTANT(ARRAY_COMPRESS_COLOR);
+ BIND_ENUM_CONSTANT(ARRAY_COMPRESS_TEX_UV);
+ BIND_ENUM_CONSTANT(ARRAY_COMPRESS_TEX_UV2);
+ BIND_ENUM_CONSTANT(ARRAY_COMPRESS_BONES);
+ BIND_ENUM_CONSTANT(ARRAY_COMPRESS_WEIGHTS);
+ BIND_ENUM_CONSTANT(ARRAY_COMPRESS_INDEX);
+ BIND_ENUM_CONSTANT(ARRAY_FLAG_USE_2D_VERTICES);
+ BIND_ENUM_CONSTANT(ARRAY_FLAG_USE_16_BIT_BONES);
+ BIND_ENUM_CONSTANT(ARRAY_COMPRESS_DEFAULT);
+
+ BIND_ENUM_CONSTANT(PRIMITIVE_POINTS);
+ BIND_ENUM_CONSTANT(PRIMITIVE_LINES);
+ BIND_ENUM_CONSTANT(PRIMITIVE_LINE_STRIP);
+ BIND_ENUM_CONSTANT(PRIMITIVE_LINE_LOOP);
+ BIND_ENUM_CONSTANT(PRIMITIVE_TRIANGLES);
+ BIND_ENUM_CONSTANT(PRIMITIVE_TRIANGLE_STRIP);
+ BIND_ENUM_CONSTANT(PRIMITIVE_TRIANGLE_FAN);
+ BIND_ENUM_CONSTANT(PRIMITIVE_MAX);
+
+ BIND_ENUM_CONSTANT(BLEND_SHAPE_MODE_NORMALIZED);
+ BIND_ENUM_CONSTANT(BLEND_SHAPE_MODE_RELATIVE);
+
+ BIND_ENUM_CONSTANT(LIGHT_DIRECTIONAL);
+ BIND_ENUM_CONSTANT(LIGHT_OMNI);
+ BIND_ENUM_CONSTANT(LIGHT_SPOT);
+
+ BIND_ENUM_CONSTANT(LIGHT_PARAM_ENERGY);
+ BIND_ENUM_CONSTANT(LIGHT_PARAM_SPECULAR);
+ BIND_ENUM_CONSTANT(LIGHT_PARAM_RANGE);
+ BIND_ENUM_CONSTANT(LIGHT_PARAM_ATTENUATION);
+ BIND_ENUM_CONSTANT(LIGHT_PARAM_SPOT_ANGLE);
+ BIND_ENUM_CONSTANT(LIGHT_PARAM_SPOT_ATTENUATION);
+ BIND_ENUM_CONSTANT(LIGHT_PARAM_CONTACT_SHADOW_SIZE);
+ BIND_ENUM_CONSTANT(LIGHT_PARAM_SHADOW_MAX_DISTANCE);
+ BIND_ENUM_CONSTANT(LIGHT_PARAM_SHADOW_SPLIT_1_OFFSET);
+ BIND_ENUM_CONSTANT(LIGHT_PARAM_SHADOW_SPLIT_2_OFFSET);
+ BIND_ENUM_CONSTANT(LIGHT_PARAM_SHADOW_SPLIT_3_OFFSET);
+ BIND_ENUM_CONSTANT(LIGHT_PARAM_SHADOW_NORMAL_BIAS);
+ BIND_ENUM_CONSTANT(LIGHT_PARAM_SHADOW_BIAS);
+ BIND_ENUM_CONSTANT(LIGHT_PARAM_SHADOW_BIAS_SPLIT_SCALE);
+ BIND_ENUM_CONSTANT(LIGHT_PARAM_MAX);
+
+ BIND_ENUM_CONSTANT(VIEWPORT_UPDATE_DISABLED);
+ BIND_ENUM_CONSTANT(VIEWPORT_UPDATE_ONCE);
+ BIND_ENUM_CONSTANT(VIEWPORT_UPDATE_WHEN_VISIBLE);
+ BIND_ENUM_CONSTANT(VIEWPORT_UPDATE_ALWAYS);
+
+ BIND_ENUM_CONSTANT(VIEWPORT_CLEAR_ALWAYS);
+ BIND_ENUM_CONSTANT(VIEWPORT_CLEAR_NEVER);
+ BIND_ENUM_CONSTANT(VIEWPORT_CLEAR_ONLY_NEXT_FRAME);
+
+ BIND_ENUM_CONSTANT(VIEWPORT_MSAA_DISABLED);
+ BIND_ENUM_CONSTANT(VIEWPORT_MSAA_2X);
+ BIND_ENUM_CONSTANT(VIEWPORT_MSAA_4X);
+ BIND_ENUM_CONSTANT(VIEWPORT_MSAA_8X);
+ BIND_ENUM_CONSTANT(VIEWPORT_MSAA_16X);
+
+ BIND_ENUM_CONSTANT(VIEWPORT_USAGE_2D);
+ BIND_ENUM_CONSTANT(VIEWPORT_USAGE_2D_NO_SAMPLING);
+ BIND_ENUM_CONSTANT(VIEWPORT_USAGE_3D);
+ BIND_ENUM_CONSTANT(VIEWPORT_USAGE_3D_NO_EFFECTS);
+
+ BIND_ENUM_CONSTANT(VIEWPORT_RENDER_INFO_OBJECTS_IN_FRAME);
+ BIND_ENUM_CONSTANT(VIEWPORT_RENDER_INFO_VERTICES_IN_FRAME);
+ BIND_ENUM_CONSTANT(VIEWPORT_RENDER_INFO_MATERIAL_CHANGES_IN_FRAME);
+ BIND_ENUM_CONSTANT(VIEWPORT_RENDER_INFO_SHADER_CHANGES_IN_FRAME);
+ BIND_ENUM_CONSTANT(VIEWPORT_RENDER_INFO_SURFACE_CHANGES_IN_FRAME);
+ BIND_ENUM_CONSTANT(VIEWPORT_RENDER_INFO_DRAW_CALLS_IN_FRAME);
+ BIND_ENUM_CONSTANT(VIEWPORT_RENDER_INFO_MAX);
+
+ BIND_ENUM_CONSTANT(VIEWPORT_DEBUG_DRAW_DISABLED);
+ BIND_ENUM_CONSTANT(VIEWPORT_DEBUG_DRAW_UNSHADED);
+ BIND_ENUM_CONSTANT(VIEWPORT_DEBUG_DRAW_OVERDRAW);
+ BIND_ENUM_CONSTANT(VIEWPORT_DEBUG_DRAW_WIREFRAME);
+
+ BIND_ENUM_CONSTANT(SCENARIO_DEBUG_DISABLED);
+ BIND_ENUM_CONSTANT(SCENARIO_DEBUG_WIREFRAME);
+ BIND_ENUM_CONSTANT(SCENARIO_DEBUG_OVERDRAW);
+ BIND_ENUM_CONSTANT(SCENARIO_DEBUG_SHADELESS);
+
+ BIND_ENUM_CONSTANT(INSTANCE_NONE);
+ BIND_ENUM_CONSTANT(INSTANCE_MESH);
+ BIND_ENUM_CONSTANT(INSTANCE_MULTIMESH);
+ BIND_ENUM_CONSTANT(INSTANCE_IMMEDIATE);
+ BIND_ENUM_CONSTANT(INSTANCE_PARTICLES);
+ BIND_ENUM_CONSTANT(INSTANCE_LIGHT);
+ BIND_ENUM_CONSTANT(INSTANCE_REFLECTION_PROBE);
+ BIND_ENUM_CONSTANT(INSTANCE_GI_PROBE);
+ BIND_ENUM_CONSTANT(INSTANCE_MAX);
+ BIND_ENUM_CONSTANT(INSTANCE_GEOMETRY_MASK);
+
+ BIND_ENUM_CONSTANT(NINE_PATCH_STRETCH);
+ BIND_ENUM_CONSTANT(NINE_PATCH_TILE);
+ BIND_ENUM_CONSTANT(NINE_PATCH_TILE_FIT);
+
+ BIND_ENUM_CONSTANT(CANVAS_LIGHT_MODE_ADD);
+ BIND_ENUM_CONSTANT(CANVAS_LIGHT_MODE_SUB);
+ BIND_ENUM_CONSTANT(CANVAS_LIGHT_MODE_MIX);
+ BIND_ENUM_CONSTANT(CANVAS_LIGHT_MODE_MASK);
+
+ BIND_ENUM_CONSTANT(CANVAS_LIGHT_FILTER_NONE);
+ BIND_ENUM_CONSTANT(CANVAS_LIGHT_FILTER_PCF3);
+ BIND_ENUM_CONSTANT(CANVAS_LIGHT_FILTER_PCF5);
+ BIND_ENUM_CONSTANT(CANVAS_LIGHT_FILTER_PCF7);
+ BIND_ENUM_CONSTANT(CANVAS_LIGHT_FILTER_PCF9);
+ BIND_ENUM_CONSTANT(CANVAS_LIGHT_FILTER_PCF13);
+
+ BIND_ENUM_CONSTANT(CANVAS_OCCLUDER_POLYGON_CULL_DISABLED);
+ BIND_ENUM_CONSTANT(CANVAS_OCCLUDER_POLYGON_CULL_CLOCKWISE);
+ BIND_ENUM_CONSTANT(CANVAS_OCCLUDER_POLYGON_CULL_COUNTER_CLOCKWISE);
+
+ BIND_ENUM_CONSTANT(INFO_OBJECTS_IN_FRAME);
+ BIND_ENUM_CONSTANT(INFO_VERTICES_IN_FRAME);
+ BIND_ENUM_CONSTANT(INFO_MATERIAL_CHANGES_IN_FRAME);
+ BIND_ENUM_CONSTANT(INFO_SHADER_CHANGES_IN_FRAME);
+ BIND_ENUM_CONSTANT(INFO_SURFACE_CHANGES_IN_FRAME);
+ BIND_ENUM_CONSTANT(INFO_DRAW_CALLS_IN_FRAME);
+ BIND_ENUM_CONSTANT(INFO_USAGE_VIDEO_MEM_TOTAL);
+ BIND_ENUM_CONSTANT(INFO_VIDEO_MEM_USED);
+ BIND_ENUM_CONSTANT(INFO_TEXTURE_MEM_USED);
+ BIND_ENUM_CONSTANT(INFO_VERTEX_MEM_USED);
+
+ BIND_ENUM_CONSTANT(FEATURE_SHADERS);
+ BIND_ENUM_CONSTANT(FEATURE_MULTITHREADED);
}
void VisualServer::_canvas_item_add_style_box(RID p_item, const Rect2 &p_rect, const Rect2 &p_source, RID p_texture, const Vector<float> &p_margins, const Color &p_modulate) {
diff --git a/servers/visual_server.h b/servers/visual_server.h
index 1cc097f50e..64ed540501 100644
--- a/servers/visual_server.h
+++ b/servers/visual_server.h
@@ -137,6 +137,7 @@ public:
};
virtual void texture_debug_usage(List<TextureInfo> *r_info) = 0;
+ Array _texture_debug_usage_bind();
virtual void textures_keep_original(bool p_enable) = 0;
@@ -160,6 +161,7 @@ public:
virtual void shader_set_code(RID p_shader, const String &p_code) = 0;
virtual String shader_get_code(RID p_shader) const = 0;
virtual void shader_get_param_list(RID p_shader, List<PropertyInfo> *p_param_list) const = 0;
+ Array _shader_get_param_list_bind(RID p_shader) const;
virtual void shader_set_default_texture_param(RID p_shader, const StringName &p_name, RID p_texture) = 0;
virtual RID shader_get_default_texture_param(RID p_shader, const StringName &p_name) const = 0;
@@ -275,6 +277,7 @@ public:
virtual Rect3 mesh_surface_get_aabb(RID p_mesh, int p_surface) const = 0;
virtual Vector<PoolVector<uint8_t> > mesh_surface_get_blend_shapes(RID p_mesh, int p_surface) const = 0;
virtual Vector<Rect3> mesh_surface_get_skeleton_aabb(RID p_mesh, int p_surface) const = 0;
+ Array _mesh_surface_get_skeleton_aabb_bind(RID p_mesh, int p_surface) const;
virtual void mesh_remove_surface(RID p_mesh, int p_index) = 0;
virtual int mesh_get_surface_count(RID p_mesh) const = 0;
@@ -675,7 +678,21 @@ public:
virtual void environment_set_adjustment(RID p_env, bool p_enable, float p_brightness, float p_contrast, float p_saturation, RID p_ramp) = 0;
virtual void environment_set_ssr(RID p_env, bool p_enable, int p_max_steps, float p_fade_in, float p_fade_out, float p_depth_tolerance, bool p_roughness) = 0;
- virtual void environment_set_ssao(RID p_env, bool p_enable, float p_radius, float p_intensity, float p_radius2, float p_intensity2, float p_bias, float p_light_affect, const Color &p_color, bool p_blur) = 0;
+
+ enum EnvironmentSSAOQuality {
+ ENV_SSAO_QUALITY_LOW,
+ ENV_SSAO_QUALITY_MEDIUM,
+ ENV_SSAO_QUALITY_HIGH,
+ };
+
+ enum EnvironmentSSAOBlur {
+ ENV_SSAO_BLUR_DISABLED,
+ ENV_SSAO_BLUR_1x1,
+ ENV_SSAO_BLUR_2x2,
+ ENV_SSAO_BLUR_3x3,
+ };
+
+ virtual void environment_set_ssao(RID p_env, bool p_enable, float p_radius, float p_intensity, float p_radius2, float p_intensity2, float p_bias, float p_light_affect, const Color &p_color, EnvironmentSSAOQuality p_quality, EnvironmentSSAOBlur p_blur, float p_bilateral_sharpness) = 0;
virtual void environment_set_fog(RID p_env, bool p_enable, const Color &p_color, const Color &p_sun_color, float p_sun_amount) = 0;
virtual void environment_set_fog_depth(RID p_env, bool p_enable, float p_depth_begin, float p_depth_curve, bool p_transmit, float p_transmit_curve) = 0;
@@ -941,18 +958,29 @@ public:
};
// make variant understand the enums
-
VARIANT_ENUM_CAST(VisualServer::CubeMapSide);
VARIANT_ENUM_CAST(VisualServer::TextureFlags);
VARIANT_ENUM_CAST(VisualServer::ShaderMode);
VARIANT_ENUM_CAST(VisualServer::ArrayType);
VARIANT_ENUM_CAST(VisualServer::ArrayFormat);
VARIANT_ENUM_CAST(VisualServer::PrimitiveType);
+VARIANT_ENUM_CAST(VisualServer::BlendShapeMode);
VARIANT_ENUM_CAST(VisualServer::LightType);
VARIANT_ENUM_CAST(VisualServer::LightParam);
+VARIANT_ENUM_CAST(VisualServer::ViewportUpdateMode);
+VARIANT_ENUM_CAST(VisualServer::ViewportClearMode);
+VARIANT_ENUM_CAST(VisualServer::ViewportMSAA);
+VARIANT_ENUM_CAST(VisualServer::ViewportUsage);
+VARIANT_ENUM_CAST(VisualServer::ViewportRenderInfo);
+VARIANT_ENUM_CAST(VisualServer::ViewportDebugDraw);
VARIANT_ENUM_CAST(VisualServer::ScenarioDebugMode);
VARIANT_ENUM_CAST(VisualServer::InstanceType);
+VARIANT_ENUM_CAST(VisualServer::NinePatchAxisMode);
+VARIANT_ENUM_CAST(VisualServer::CanvasLightMode);
+VARIANT_ENUM_CAST(VisualServer::CanvasLightShadowFilter);
+VARIANT_ENUM_CAST(VisualServer::CanvasOccluderPolygonCullMode);
VARIANT_ENUM_CAST(VisualServer::RenderInfo);
+VARIANT_ENUM_CAST(VisualServer::Features);
//typedef VisualServer VS; // makes it easier to use
#define VS VisualServer
diff --git a/thirdparty/README.md b/thirdparty/README.md
index 6e1dcb8df4..05aface43b 100644
--- a/thirdparty/README.md
+++ b/thirdparty/README.md
@@ -121,7 +121,7 @@ Files extracted from upstream source:
## libpng
- Upstream: http://libpng.org/pub/png/libpng.html
-- Version: 1.6.32
+- Version: 1.6.34
- License: libpng/zlib
Files extracted from upstream source:
@@ -416,7 +416,7 @@ Files extracted from upstream source:
## zstd
- Upstream: https://github.com/facebook/zstd
-- Version: 1.3.1
+- Version: 1.3.2
- License: BSD-3-Clause
Files extracted from upstream source:
diff --git a/thirdparty/enet/enet/enet.h b/thirdparty/enet/enet/enet.h
index 8c9ad5463e..246cbb0a62 100644
--- a/thirdparty/enet/enet/enet.h
+++ b/thirdparty/enet/enet/enet.h
@@ -10,6 +10,7 @@ extern "C"
{
#endif
+#include <stdint.h>
#include <stdlib.h>
#include "enet/godot.h"
diff --git a/thirdparty/libpng/LICENSE b/thirdparty/libpng/LICENSE
index b7ad4b9eaf..4cda4fa0ad 100644
--- a/thirdparty/libpng/LICENSE
+++ b/thirdparty/libpng/LICENSE
@@ -10,8 +10,8 @@ this sentence.
This code is released under the libpng license.
-libpng versions 1.0.7, July 1, 2000 through 1.6.23, June 9, 2016 are
-Copyright (c) 2000-2002, 2004, 2006-2016 Glenn Randers-Pehrson, are
+libpng versions 1.0.7, July 1, 2000 through 1.6.34, September 29, 2017 are
+Copyright (c) 2000-2002, 2004, 2006-2017 Glenn Randers-Pehrson, are
derived from libpng-1.0.6, and are distributed according to the same
disclaimer and license as libpng-1.0.6 with the following individuals
added to the list of Contributing Authors:
@@ -22,6 +22,9 @@ added to the list of Contributing Authors:
Cosmin Truta
Gilles Vollant
James Yu
+ Mandar Sahastrabuddhe
+ Google Inc.
+ Vadim Barkov
and with the following additions to the disclaimer:
@@ -127,4 +130,4 @@ any encryption software. See the EAR, paragraphs 734.3(b)(3) and
Glenn Randers-Pehrson
glennrp at users.sourceforge.net
-June 9, 2016
+September 29, 2017
diff --git a/thirdparty/libpng/png.c b/thirdparty/libpng/png.c
index 2352df13cb..ff02c56518 100644
--- a/thirdparty/libpng/png.c
+++ b/thirdparty/libpng/png.c
@@ -1,7 +1,7 @@
/* png.c - location for general purpose libpng functions
*
- * Last changed in libpng 1.6.32 [August 24, 2017]
+ * Last changed in libpng 1.6.33 [September 28, 2017]
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
@@ -14,7 +14,7 @@
#include "pngpriv.h"
/* Generate a compiler error if there is an old png.h in the search path. */
-typedef png_libpng_version_1_6_32 Your_png_h_is_not_version_1_6_32;
+typedef png_libpng_version_1_6_34 Your_png_h_is_not_version_1_6_34;
#ifdef __GNUC__
/* The version tests may need to be added to, but the problem warning has
@@ -816,14 +816,14 @@ png_get_copyright(png_const_structrp png_ptr)
#else
# ifdef __STDC__
return PNG_STRING_NEWLINE \
- "libpng version 1.6.32 - August 24, 2017" PNG_STRING_NEWLINE \
+ "libpng version 1.6.34 - September 29, 2017" PNG_STRING_NEWLINE \
"Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson" \
PNG_STRING_NEWLINE \
"Copyright (c) 1996-1997 Andreas Dilger" PNG_STRING_NEWLINE \
"Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc." \
PNG_STRING_NEWLINE;
# else
- return "libpng version 1.6.32 - August 24, 2017\
+ return "libpng version 1.6.34 - September 29, 2017\
Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson\
Copyright (c) 1996-1997 Andreas Dilger\
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.";
@@ -1913,12 +1913,12 @@ png_colorspace_set_sRGB(png_const_structrp png_ptr, png_colorspacerp colorspace,
*/
if (intent < 0 || intent >= PNG_sRGB_INTENT_LAST)
return png_icc_profile_error(png_ptr, colorspace, "sRGB",
- (unsigned)intent, "invalid sRGB rendering intent");
+ (png_alloc_size_t)intent, "invalid sRGB rendering intent");
if ((colorspace->flags & PNG_COLORSPACE_HAVE_INTENT) != 0 &&
colorspace->rendering_intent != intent)
return png_icc_profile_error(png_ptr, colorspace, "sRGB",
- (unsigned)intent, "inconsistent rendering intents");
+ (png_alloc_size_t)intent, "inconsistent rendering intents");
if ((colorspace->flags & PNG_COLORSPACE_FROM_sRGB) != 0)
{
@@ -1979,7 +1979,6 @@ icc_check_length(png_const_structrp png_ptr, png_colorspacerp colorspace,
if (profile_length < 132)
return png_icc_profile_error(png_ptr, colorspace, name, profile_length,
"too short");
-
return 1;
}
@@ -2224,22 +2223,23 @@ png_icc_check_tag_table(png_const_structrp png_ptr, png_colorspacerp colorspace,
* being in range. All defined tag types have an 8 byte header - a 4 byte
* type signature then 0.
*/
+
+ /* This is a hard error; potentially it can cause read outside the
+ * profile.
+ */
+ if (tag_start > profile_length || tag_length > profile_length - tag_start)
+ return png_icc_profile_error(png_ptr, colorspace, name, tag_id,
+ "ICC profile tag outside profile");
+
if ((tag_start & 3) != 0)
{
- /* CNHP730S.icc shipped with Microsoft Windows 64 violates this, it is
+ /* CNHP730S.icc shipped with Microsoft Windows 64 violates this; it is
* only a warning here because libpng does not care about the
* alignment.
*/
(void)png_icc_profile_error(png_ptr, NULL, name, tag_id,
"ICC profile tag start not a multiple of 4");
}
-
- /* This is a hard error; potentially it can cause read outside the
- * profile.
- */
- if (tag_start > profile_length || tag_length > profile_length - tag_start)
- return png_icc_profile_error(png_ptr, colorspace, name, tag_id,
- "ICC profile tag outside profile");
}
return 1; /* success, maybe with warnings */
@@ -3761,7 +3761,7 @@ png_log16bit(png_uint_32 x)
* of getting this accuracy in practice.
*
* To deal with this the following exp() function works out the exponent of the
- * frational part of the logarithm by using an accurate 32-bit value from the
+ * fractional part of the logarithm by using an accurate 32-bit value from the
* top four fractional bits then multiplying in the remaining bits.
*/
static const png_uint_32
diff --git a/thirdparty/libpng/png.h b/thirdparty/libpng/png.h
index 51ac8abe74..4c873f5c22 100644
--- a/thirdparty/libpng/png.h
+++ b/thirdparty/libpng/png.h
@@ -1,7 +1,7 @@
/* png.h - header file for PNG reference library
*
- * libpng version 1.6.32, August 24, 2017
+ * libpng version 1.6.34, September 29, 2017
*
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@@ -12,7 +12,7 @@
* Authors and maintainers:
* libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
* libpng versions 0.89, June 1996, through 0.96, May 1997: Andreas Dilger
- * libpng versions 0.97, January 1998, through 1.6.32, August 24, 2017:
+ * libpng versions 0.97, January 1998, through 1.6.34, September 29, 2017:
* Glenn Randers-Pehrson.
* See also "Contributing Authors", below.
*/
@@ -25,7 +25,7 @@
*
* This code is released under the libpng license.
*
- * libpng versions 1.0.7, July 1, 2000 through 1.6.32, August 24, 2017 are
+ * libpng versions 1.0.7, July 1, 2000 through 1.6.34, September 29, 2017 are
* Copyright (c) 2000-2002, 2004, 2006-2017 Glenn Randers-Pehrson, are
* derived from libpng-1.0.6, and are distributed according to the same
* disclaimer and license as libpng-1.0.6 with the following individuals
@@ -209,11 +209,11 @@
* ...
* 1.0.19 10 10019 10.so.0.19[.0]
* ...
- * 1.2.57 13 10257 12.so.0.57[.0]
+ * 1.2.59 13 10257 12.so.0.59[.0]
* ...
- * 1.5.28 15 10527 15.so.15.28[.0]
+ * 1.5.30 15 10527 15.so.15.30[.0]
* ...
- * 1.6.32 16 10632 16.so.16.32[.0]
+ * 1.6.34 16 10633 16.so.16.34[.0]
*
* Henceforth the source version will match the shared-library major
* and minor numbers; the shared-library major version number will be
@@ -241,13 +241,13 @@
* Y2K compliance in libpng:
* =========================
*
- * August 24, 2017
+ * September 29, 2017
*
* Since the PNG Development group is an ad-hoc body, we can't make
* an official declaration.
*
* This is your unofficial assurance that libpng from version 0.71 and
- * upward through 1.6.32 are Y2K compliant. It is my belief that
+ * upward through 1.6.34 are Y2K compliant. It is my belief that
* earlier versions were also Y2K compliant.
*
* Libpng only has two year fields. One is a 2-byte unsigned integer
@@ -309,8 +309,8 @@
*/
/* Version information for png.h - this should match the version in png.c */
-#define PNG_LIBPNG_VER_STRING "1.6.32"
-#define PNG_HEADER_VERSION_STRING " libpng version 1.6.32 - August 24, 2017\n"
+#define PNG_LIBPNG_VER_STRING "1.6.34"
+#define PNG_HEADER_VERSION_STRING " libpng version 1.6.34 - September 29, 2017\n"
#define PNG_LIBPNG_VER_SONUM 16
#define PNG_LIBPNG_VER_DLLNUM 16
@@ -318,7 +318,7 @@
/* These should match the first 3 components of PNG_LIBPNG_VER_STRING: */
#define PNG_LIBPNG_VER_MAJOR 1
#define PNG_LIBPNG_VER_MINOR 6
-#define PNG_LIBPNG_VER_RELEASE 32
+#define PNG_LIBPNG_VER_RELEASE 34
/* This should match the numeric part of the final component of
* PNG_LIBPNG_VER_STRING, omitting any leading zero:
@@ -349,7 +349,7 @@
* version 1.0.0 was mis-numbered 100 instead of 10000). From
* version 1.0.1 it's xxyyzz, where x=major, y=minor, z=release
*/
-#define PNG_LIBPNG_VER 10632 /* 1.6.32 */
+#define PNG_LIBPNG_VER 10634 /* 1.6.34 */
/* Library configuration: these options cannot be changed after
* the library has been built.
@@ -459,7 +459,7 @@ extern "C" {
/* This triggers a compiler error in png.c, if png.c and png.h
* do not agree upon the version number.
*/
-typedef char* png_libpng_version_1_6_32;
+typedef char* png_libpng_version_1_6_34;
/* Basic control structions. Read libpng-manual.txt or libpng.3 for more info.
*
@@ -2819,6 +2819,8 @@ typedef struct
# define PNG_FORMAT_FLAG_AFIRST 0x20U /* alpha channel comes first */
#endif
+#define PNG_FORMAT_FLAG_ASSOCIATED_ALPHA 0x40U /* alpha channel is associated */
+
/* Commonly used formats have predefined macros.
*
* First the single byte (sRGB) formats:
diff --git a/thirdparty/libpng/pngconf.h b/thirdparty/libpng/pngconf.h
index c0f15547be..d13b13e57a 100644
--- a/thirdparty/libpng/pngconf.h
+++ b/thirdparty/libpng/pngconf.h
@@ -1,7 +1,7 @@
/* pngconf.h - machine configurable file for libpng
*
- * libpng version 1.6.32, August 24, 2017
+ * libpng version 1.6.34, September 29, 2017
*
* Copyright (c) 1998-2002,2004,2006-2016 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/thirdparty/libpng/pnglibconf.h b/thirdparty/libpng/pnglibconf.h
index 9e45f73129..53b5e442c4 100644
--- a/thirdparty/libpng/pnglibconf.h
+++ b/thirdparty/libpng/pnglibconf.h
@@ -1,8 +1,8 @@
-/* libpng 1.6.32 STANDARD API DEFINITION */
+/* libpng 1.6.34 STANDARD API DEFINITION */
/* pnglibconf.h - library build configuration */
-/* Libpng version 1.6.32 - August 24, 2017 */
+/* Libpng version 1.6.34 - September 29, 2017 */
/* Copyright (c) 1998-2017 Glenn Randers-Pehrson */
diff --git a/thirdparty/libpng/pngread.c b/thirdparty/libpng/pngread.c
index e34ddd99a0..da32e9ad9c 100644
--- a/thirdparty/libpng/pngread.c
+++ b/thirdparty/libpng/pngread.c
@@ -1,7 +1,7 @@
/* pngread.c - read a PNG file
*
- * Last changed in libpng 1.6.32 [August 24, 2017]
+ * Last changed in libpng 1.6.33 [September 28, 2017]
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
@@ -3759,7 +3759,13 @@ png_image_read_direct(png_voidp argument)
mode = PNG_ALPHA_PNG;
output_gamma = PNG_DEFAULT_sRGB;
}
-
+
+ if ((change & PNG_FORMAT_FLAG_ASSOCIATED_ALPHA) != 0)
+ {
+ mode = PNG_ALPHA_OPTIMIZED;
+ change &= ~PNG_FORMAT_FLAG_ASSOCIATED_ALPHA;
+ }
+
/* If 'do_local_background' is set check for the presence of gamma
* correction; this is part of the work-round for the libpng bug
* described above.
@@ -3985,6 +3991,10 @@ png_image_read_direct(png_voidp argument)
else if (do_local_compose != 0) /* internal error */
png_error(png_ptr, "png_image_read: alpha channel lost");
+ if ((format & PNG_FORMAT_FLAG_ASSOCIATED_ALPHA) != 0) {
+ info_format |= PNG_FORMAT_FLAG_ASSOCIATED_ALPHA;
+ }
+
if (info_ptr->bit_depth == 16)
info_format |= PNG_FORMAT_FLAG_LINEAR;
diff --git a/thirdparty/libpng/pngrtran.c b/thirdparty/libpng/pngrtran.c
index 9a30ddf22b..c189650313 100644
--- a/thirdparty/libpng/pngrtran.c
+++ b/thirdparty/libpng/pngrtran.c
@@ -1,7 +1,7 @@
/* pngrtran.c - transforms the data in a row for PNG readers
*
- * Last changed in libpng 1.6.31 [July 27, 2017]
+ * Last changed in libpng 1.6.33 [September 28, 2017]
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
@@ -430,7 +430,7 @@ png_set_quantize(png_structrp png_ptr, png_colorp palette,
int i;
png_ptr->quantize_index = (png_bytep)png_malloc(png_ptr,
- (png_uint_32)((png_uint_32)num_palette * (sizeof (png_byte))));
+ (png_alloc_size_t)((png_uint_32)num_palette * (sizeof (png_byte))));
for (i = 0; i < num_palette; i++)
png_ptr->quantize_index[i] = (png_byte)i;
}
@@ -447,7 +447,7 @@ png_set_quantize(png_structrp png_ptr, png_colorp palette,
/* Initialize an array to sort colors */
png_ptr->quantize_sort = (png_bytep)png_malloc(png_ptr,
- (png_uint_32)((png_uint_32)num_palette * (sizeof (png_byte))));
+ (png_alloc_size_t)((png_uint_32)num_palette * (sizeof (png_byte))));
/* Initialize the quantize_sort array */
for (i = 0; i < num_palette; i++)
@@ -581,9 +581,11 @@ png_set_quantize(png_structrp png_ptr, png_colorp palette,
/* Initialize palette index arrays */
png_ptr->index_to_palette = (png_bytep)png_malloc(png_ptr,
- (png_uint_32)((png_uint_32)num_palette * (sizeof (png_byte))));
+ (png_alloc_size_t)((png_uint_32)num_palette *
+ (sizeof (png_byte))));
png_ptr->palette_to_index = (png_bytep)png_malloc(png_ptr,
- (png_uint_32)((png_uint_32)num_palette * (sizeof (png_byte))));
+ (png_alloc_size_t)((png_uint_32)num_palette *
+ (sizeof (png_byte))));
/* Initialize the sort array */
for (i = 0; i < num_palette; i++)
@@ -592,7 +594,7 @@ png_set_quantize(png_structrp png_ptr, png_colorp palette,
png_ptr->palette_to_index[i] = (png_byte)i;
}
- hash = (png_dsortpp)png_calloc(png_ptr, (png_uint_32)(769 *
+ hash = (png_dsortpp)png_calloc(png_ptr, (png_alloc_size_t)(769 *
(sizeof (png_dsortp))));
num_new_palette = num_palette;
@@ -623,7 +625,7 @@ png_set_quantize(png_structrp png_ptr, png_colorp palette,
{
t = (png_dsortp)png_malloc_warn(png_ptr,
- (png_uint_32)(sizeof (png_dsort)));
+ (png_alloc_size_t)(sizeof (png_dsort)));
if (t == NULL)
break;
@@ -748,9 +750,9 @@ png_set_quantize(png_structrp png_ptr, png_colorp palette,
png_size_t num_entries = ((png_size_t)1 << total_bits);
png_ptr->palette_lookup = (png_bytep)png_calloc(png_ptr,
- (png_uint_32)(num_entries * (sizeof (png_byte))));
+ (png_alloc_size_t)(num_entries * (sizeof (png_byte))));
- distance = (png_bytep)png_malloc(png_ptr, (png_uint_32)(num_entries *
+ distance = (png_bytep)png_malloc(png_ptr, (png_alloc_size_t)(num_entries *
(sizeof (png_byte))));
memset(distance, 0xff, num_entries * (sizeof (png_byte)));
@@ -3322,7 +3324,7 @@ png_do_compose(png_row_infop row_info, png_bytep row, png_structrp png_ptr)
== png_ptr->trans_color.gray)
{
unsigned int tmp = *sp & (0x0f0f >> (4 - shift));
- tmp |=
+ tmp |=
(unsigned int)(png_ptr->background.gray << shift);
*sp = (png_byte)(tmp & 0xff);
}
diff --git a/thirdparty/libpng/pngrutil.c b/thirdparty/libpng/pngrutil.c
index a4fa71457b..8692933bd8 100644
--- a/thirdparty/libpng/pngrutil.c
+++ b/thirdparty/libpng/pngrutil.c
@@ -1,7 +1,7 @@
/* pngrutil.c - utilities to read a PNG file
*
- * Last changed in libpng 1.6.32 [August 24, 2017]
+ * Last changed in libpng 1.6.33 [September 28, 2017]
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
@@ -314,6 +314,7 @@ png_read_buffer(png_structrp png_ptr, png_alloc_size_t new_size, int warn)
if (buffer != NULL)
{
+ memset(buffer, 0, new_size); /* just in case */
png_ptr->read_buffer = buffer;
png_ptr->read_buffer_size = new_size;
}
@@ -673,6 +674,8 @@ png_decompress_chunk(png_structrp png_ptr,
if (text != NULL)
{
+ memset(text, 0, buffer_size);
+
ret = png_inflate(png_ptr, png_ptr->chunk_name, 1/*finish*/,
png_ptr->read_buffer + prefix_size, &lzsize,
text + prefix_size, newlength);
@@ -736,9 +739,7 @@ png_decompress_chunk(png_structrp png_ptr,
{
/* inflateReset failed, store the error message */
png_zstream_error(png_ptr, ret);
-
- if (ret == Z_STREAM_END)
- ret = PNG_UNEXPECTED_ZLIB_RETURN;
+ ret = PNG_UNEXPECTED_ZLIB_RETURN;
}
}
@@ -1476,7 +1477,7 @@ png_handle_iCCP(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length)
/* Now read the tag table; a variable size buffer is
* needed at this point, allocate one for the whole
* profile. The header check has already validated
- * that none of these stuff will overflow.
+ * that none of this stuff will overflow.
*/
const png_uint_32 tag_count = png_get_uint_32(
profile_header+128);
@@ -1583,19 +1584,11 @@ png_handle_iCCP(png_structrp png_ptr, png_inforp info_ptr, png_uint_32 length)
return;
}
}
-
- else if (size > 0)
- errmsg = "truncated";
-
-#ifndef __COVERITY__
- else
+ if (errmsg == NULL)
errmsg = png_ptr->zstream.msg;
-#endif
}
-
/* else png_icc_check_tag_table output an error */
}
-
else /* profile truncated */
errmsg = png_ptr->zstream.msg;
}
@@ -3144,28 +3137,28 @@ png_check_chunk_length(png_const_structrp png_ptr, const png_uint_32 length)
{
png_alloc_size_t limit = PNG_UINT_31_MAX;
- if (png_ptr->chunk_name != png_IDAT)
- {
# ifdef PNG_SET_USER_LIMITS_SUPPORTED
- if (png_ptr->user_chunk_malloc_max > 0 &&
- png_ptr->user_chunk_malloc_max < limit)
- limit = png_ptr->user_chunk_malloc_max;
+ if (png_ptr->user_chunk_malloc_max > 0 &&
+ png_ptr->user_chunk_malloc_max < limit)
+ limit = png_ptr->user_chunk_malloc_max;
# elif PNG_USER_CHUNK_MALLOC_MAX > 0
- if (PNG_USER_CHUNK_MALLOC_MAX < limit)
- limit = PNG_USER_CHUNK_MALLOC_MAX;
+ if (PNG_USER_CHUNK_MALLOC_MAX < limit)
+ limit = PNG_USER_CHUNK_MALLOC_MAX;
# endif
- }
- else
+ if (png_ptr->chunk_name == png_IDAT)
{
+ png_alloc_size_t idat_limit = PNG_UINT_31_MAX;
size_t row_factor =
(png_ptr->width * png_ptr->channels * (png_ptr->bit_depth > 8? 2: 1)
+ 1 + (png_ptr->interlaced? 6: 0));
if (png_ptr->height > PNG_UINT_32_MAX/row_factor)
- limit=PNG_UINT_31_MAX;
+ idat_limit=PNG_UINT_31_MAX;
else
- limit = png_ptr->height * row_factor;
- limit += 6 + 5*(limit/32566+1); /* zlib+deflate overhead */
- limit=limit < PNG_UINT_31_MAX? limit : PNG_UINT_31_MAX;
+ idat_limit = png_ptr->height * row_factor;
+ row_factor = row_factor > 32566? 32566 : row_factor;
+ idat_limit += 6 + 5*(idat_limit/row_factor+1); /* zlib+deflate overhead */
+ idat_limit=idat_limit < PNG_UINT_31_MAX? idat_limit : PNG_UINT_31_MAX;
+ limit = limit < idat_limit? idat_limit : limit;
}
if (length > limit)
diff --git a/thirdparty/libpng/pngtrans.c b/thirdparty/libpng/pngtrans.c
index 326ac33f0e..6882f0fd7b 100644
--- a/thirdparty/libpng/pngtrans.c
+++ b/thirdparty/libpng/pngtrans.c
@@ -1,7 +1,7 @@
/* pngtrans.c - transforms the data in a row (used by both readers and writers)
*
- * Last changed in libpng 1.6.30 [June 28, 2017]
+ * Last changed in libpng 1.6.33 [September 28, 2017]
* Copyright (c) 1998-2002,2004,2006-2017 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
@@ -609,7 +609,7 @@ png_do_strip_channel(png_row_infop row_info, png_bytep row, int at_start)
return; /* The filler channel has gone already */
/* Fix the rowbytes value. */
- row_info->rowbytes = (unsigned int)(dp-row);
+ row_info->rowbytes = (png_size_t)(dp-row);
}
#endif
@@ -708,7 +708,7 @@ png_do_check_palette_indexes(png_structrp png_ptr, png_row_infop row_info)
* forms produced on either GCC or MSVC.
*/
int padding = PNG_PADBITS(row_info->pixel_depth, row_info->width);
- png_bytep rp = png_ptr->row_buf + row_info->rowbytes;
+ png_bytep rp = png_ptr->row_buf + row_info->rowbytes - 1;
switch (row_info->bit_depth)
{
diff --git a/thirdparty/libpng/pngwrite.c b/thirdparty/libpng/pngwrite.c
index a7662acb71..a16d77ce00 100644
--- a/thirdparty/libpng/pngwrite.c
+++ b/thirdparty/libpng/pngwrite.c
@@ -1940,7 +1940,7 @@ png_image_write_main(png_voidp argument)
int colormap = (format & PNG_FORMAT_FLAG_COLORMAP);
int linear = !colormap && (format & PNG_FORMAT_FLAG_LINEAR); /* input */
int alpha = !colormap && (format & PNG_FORMAT_FLAG_ALPHA);
- int write_16bit = linear && !colormap && (display->convert_to_8bit == 0);
+ int write_16bit = linear && (display->convert_to_8bit == 0);
# ifdef PNG_BENIGN_ERRORS_SUPPORTED
/* Make sure we error out on any bad situation */
diff --git a/thirdparty/zstd/SCsub b/thirdparty/zstd/SCsub
index e8be1aaf44..899a18e1cf 100644
--- a/thirdparty/zstd/SCsub
+++ b/thirdparty/zstd/SCsub
@@ -14,10 +14,16 @@ thirdparty_zstd_sources = [
"compress/fse_compress.c",
"compress/huf_compress.c",
"compress/zstd_compress.c",
+ "compress/zstd_double_fast.c",
+ "compress/zstd_fast.c",
+ "compress/zstd_lazy.c",
+ "compress/zstd_ldm.c",
"compress/zstdmt_compress.c",
+ "compress/zstd_opt.c",
"decompress/huf_decompress.c",
"decompress/zstd_decompress.c",
]
thirdparty_zstd_sources = [thirdparty_zstd_dir + file for file in thirdparty_zstd_sources]
env.add_source_files(env.core_sources, thirdparty_zstd_sources)
env.Append(CPPPATH=["#thirdparty/zstd", "#thirdparty/zstd/common"])
+env.Append(CCFLAGS="-DZSTD_STATIC_LINKING_ONLY")
diff --git a/thirdparty/zstd/common/bitstream.h b/thirdparty/zstd/common/bitstream.h
index 06121f21c5..2094823fe2 100644
--- a/thirdparty/zstd/common/bitstream.h
+++ b/thirdparty/zstd/common/bitstream.h
@@ -169,33 +169,39 @@ MEM_STATIC size_t BIT_readBitsFast(BIT_DStream_t* bitD, unsigned nbBits);
****************************************************************/
MEM_STATIC unsigned BIT_highbit32 (register U32 val)
{
+ assert(val != 0);
+ {
# if defined(_MSC_VER) /* Visual */
- unsigned long r=0;
- _BitScanReverse ( &r, val );
- return (unsigned) r;
+ unsigned long r=0;
+ _BitScanReverse ( &r, val );
+ return (unsigned) r;
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* Use GCC Intrinsic */
- return 31 - __builtin_clz (val);
+ return 31 - __builtin_clz (val);
# else /* Software version */
- static const unsigned DeBruijnClz[32] = { 0, 9, 1, 10, 13, 21, 2, 29,
- 11, 14, 16, 18, 22, 25, 3, 30,
- 8, 12, 20, 28, 15, 17, 24, 7,
- 19, 27, 23, 6, 26, 5, 4, 31 };
- U32 v = val;
- v |= v >> 1;
- v |= v >> 2;
- v |= v >> 4;
- v |= v >> 8;
- v |= v >> 16;
- return DeBruijnClz[ (U32) (v * 0x07C4ACDDU) >> 27];
+ static const unsigned DeBruijnClz[32] = { 0, 9, 1, 10, 13, 21, 2, 29,
+ 11, 14, 16, 18, 22, 25, 3, 30,
+ 8, 12, 20, 28, 15, 17, 24, 7,
+ 19, 27, 23, 6, 26, 5, 4, 31 };
+ U32 v = val;
+ v |= v >> 1;
+ v |= v >> 2;
+ v |= v >> 4;
+ v |= v >> 8;
+ v |= v >> 16;
+ return DeBruijnClz[ (U32) (v * 0x07C4ACDDU) >> 27];
# endif
+ }
}
/*===== Local Constants =====*/
-static const unsigned BIT_mask[] = { 0, 1, 3, 7, 0xF, 0x1F, 0x3F, 0x7F,
- 0xFF, 0x1FF, 0x3FF, 0x7FF, 0xFFF, 0x1FFF, 0x3FFF, 0x7FFF,
- 0xFFFF, 0x1FFFF, 0x3FFFF, 0x7FFFF, 0xFFFFF, 0x1FFFFF, 0x3FFFFF, 0x7FFFFF,
- 0xFFFFFF, 0x1FFFFFF, 0x3FFFFFF }; /* up to 26 bits */
-
+static const unsigned BIT_mask[] = {
+ 0, 1, 3, 7, 0xF, 0x1F,
+ 0x3F, 0x7F, 0xFF, 0x1FF, 0x3FF, 0x7FF,
+ 0xFFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF, 0x1FFFF,
+ 0x3FFFF, 0x7FFFF, 0xFFFFF, 0x1FFFFF, 0x3FFFFF, 0x7FFFFF,
+ 0xFFFFFF, 0x1FFFFFF, 0x3FFFFFF, 0x7FFFFFF, 0xFFFFFFF, 0x1FFFFFFF,
+ 0x3FFFFFFF, 0x7FFFFFFF}; /* up to 31 bits */
+#define BIT_MASK_SIZE (sizeof(BIT_mask) / sizeof(BIT_mask[0]))
/*-**************************************************************
* bitStream encoding
@@ -217,11 +223,14 @@ MEM_STATIC size_t BIT_initCStream(BIT_CStream_t* bitC,
}
/*! BIT_addBits() :
- * can add up to 26 bits into `bitC`.
+ * can add up to 31 bits into `bitC`.
* Note : does not check for register overflow ! */
MEM_STATIC void BIT_addBits(BIT_CStream_t* bitC,
size_t value, unsigned nbBits)
{
+ MEM_STATIC_ASSERT(BIT_MASK_SIZE == 32);
+ assert(nbBits < BIT_MASK_SIZE);
+ assert(nbBits + bitC->bitPos < sizeof(bitC->bitContainer) * 8);
bitC->bitContainer |= (value & BIT_mask[nbBits]) << bitC->bitPos;
bitC->bitPos += nbBits;
}
@@ -232,6 +241,7 @@ MEM_STATIC void BIT_addBitsFast(BIT_CStream_t* bitC,
size_t value, unsigned nbBits)
{
assert((value>>nbBits) == 0);
+ assert(nbBits + bitC->bitPos < sizeof(bitC->bitContainer) * 8);
bitC->bitContainer |= value << bitC->bitPos;
bitC->bitPos += nbBits;
}
@@ -242,7 +252,7 @@ MEM_STATIC void BIT_addBitsFast(BIT_CStream_t* bitC,
MEM_STATIC void BIT_flushBitsFast(BIT_CStream_t* bitC)
{
size_t const nbBytes = bitC->bitPos >> 3;
- assert( bitC->bitPos <= (sizeof(bitC->bitContainer)*8) );
+ assert(bitC->bitPos < sizeof(bitC->bitContainer) * 8);
MEM_writeLEST(bitC->ptr, bitC->bitContainer);
bitC->ptr += nbBytes;
assert(bitC->ptr <= bitC->endPtr);
@@ -258,7 +268,7 @@ MEM_STATIC void BIT_flushBitsFast(BIT_CStream_t* bitC)
MEM_STATIC void BIT_flushBits(BIT_CStream_t* bitC)
{
size_t const nbBytes = bitC->bitPos >> 3;
- assert( bitC->bitPos <= (sizeof(bitC->bitContainer)*8) );
+ assert(bitC->bitPos < sizeof(bitC->bitContainer) * 8);
MEM_writeLEST(bitC->ptr, bitC->bitContainer);
bitC->ptr += nbBytes;
if (bitC->ptr > bitC->endPtr) bitC->ptr = bitC->endPtr;
@@ -350,12 +360,14 @@ MEM_STATIC size_t BIT_getMiddleBits(size_t bitContainer, U32 const start, U32 co
# endif
return _bextr_u32(bitContainer, start, nbBits);
#else
+ assert(nbBits < BIT_MASK_SIZE);
return (bitContainer >> start) & BIT_mask[nbBits];
#endif
}
MEM_STATIC size_t BIT_getLowerBits(size_t bitContainer, U32 const nbBits)
{
+ assert(nbBits < BIT_MASK_SIZE);
return bitContainer & BIT_mask[nbBits];
}
diff --git a/thirdparty/zstd/common/compiler.h b/thirdparty/zstd/common/compiler.h
index d7225c443e..3a7553c380 100644
--- a/thirdparty/zstd/common/compiler.h
+++ b/thirdparty/zstd/common/compiler.h
@@ -5,6 +5,7 @@
* This source code is licensed under both the BSD-style license (found in the
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
* in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
*/
#ifndef ZSTD_COMPILER_H
diff --git a/thirdparty/zstd/common/error_private.c b/thirdparty/zstd/common/error_private.c
index b5b14b509c..11f7cdab1c 100644
--- a/thirdparty/zstd/common/error_private.c
+++ b/thirdparty/zstd/common/error_private.c
@@ -5,6 +5,7 @@
* This source code is licensed under both the BSD-style license (found in the
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
* in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
*/
/* The purpose of this file is to have a single list of error strings embedded in binary */
@@ -29,14 +30,15 @@ const char* ERR_getErrorString(ERR_enum code)
case PREFIX(init_missing): return "Context should be init first";
case PREFIX(memory_allocation): return "Allocation error : not enough memory";
case PREFIX(stage_wrong): return "Operation not authorized at current processing stage";
- case PREFIX(dstSize_tooSmall): return "Destination buffer is too small";
- case PREFIX(srcSize_wrong): return "Src size is incorrect";
case PREFIX(tableLog_tooLarge): return "tableLog requires too much memory : unsupported";
case PREFIX(maxSymbolValue_tooLarge): return "Unsupported max Symbol Value : too large";
case PREFIX(maxSymbolValue_tooSmall): return "Specified maxSymbolValue is too small";
case PREFIX(dictionary_corrupted): return "Dictionary is corrupted";
case PREFIX(dictionary_wrong): return "Dictionary mismatch";
case PREFIX(dictionaryCreation_failed): return "Cannot create Dictionary from provided samples";
+ case PREFIX(dstSize_tooSmall): return "Destination buffer is too small";
+ case PREFIX(srcSize_wrong): return "Src size is incorrect";
+ /* following error codes are not stable and may be removed or changed in a future version */
case PREFIX(frameIndex_tooLarge): return "Frame index is too large";
case PREFIX(seekableIO): return "An I/O error occurred when reading/seeking";
case PREFIX(maxCode):
diff --git a/thirdparty/zstd/common/error_private.h b/thirdparty/zstd/common/error_private.h
index 9dd9a87cfa..0d2fa7e34b 100644
--- a/thirdparty/zstd/common/error_private.h
+++ b/thirdparty/zstd/common/error_private.h
@@ -5,6 +5,7 @@
* This source code is licensed under both the BSD-style license (found in the
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
* in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
*/
/* Note : this module is expected to remain private, do not expose it */
@@ -48,10 +49,9 @@ typedef ZSTD_ErrorCode ERR_enum;
/*-****************************************
* Error codes handling
******************************************/
-#ifdef ERROR
-# undef ERROR /* reported already defined on VS 2015 (Rich Geldreich) */
-#endif
-#define ERROR(name) ((size_t)-PREFIX(name))
+#undef ERROR /* reported already defined on VS 2015 (Rich Geldreich) */
+#define ERROR(name) ZSTD_ERROR(name)
+#define ZSTD_ERROR(name) ((size_t)-PREFIX(name))
ERR_STATIC unsigned ERR_isError(size_t code) { return (code > ERROR(maxCode)); }
diff --git a/thirdparty/zstd/common/fse.h b/thirdparty/zstd/common/fse.h
index 1c44f83750..afd7801963 100644
--- a/thirdparty/zstd/common/fse.h
+++ b/thirdparty/zstd/common/fse.h
@@ -184,7 +184,7 @@ FSE_PUBLIC_API size_t FSE_writeNCount (void* buffer, size_t bufferSize, const sh
/*! Constructor and Destructor of FSE_CTable.
Note that FSE_CTable size depends on 'tableLog' and 'maxSymbolValue' */
typedef unsigned FSE_CTable; /* don't allocate that. It's only meant to be more restrictive than void* */
-FSE_PUBLIC_API FSE_CTable* FSE_createCTable (unsigned tableLog, unsigned maxSymbolValue);
+FSE_PUBLIC_API FSE_CTable* FSE_createCTable (unsigned maxSymbolValue, unsigned tableLog);
FSE_PUBLIC_API void FSE_freeCTable (FSE_CTable* ct);
/*! FSE_buildCTable():
diff --git a/thirdparty/zstd/common/huf.h b/thirdparty/zstd/common/huf.h
index 2b3015a84c..522bf9b6c0 100644
--- a/thirdparty/zstd/common/huf.h
+++ b/thirdparty/zstd/common/huf.h
@@ -242,7 +242,7 @@ size_t HUF_readStats(BYTE* huffWeight, size_t hwSize, U32* rankStats,
/** HUF_readCTable() :
* Loading a CTable saved with HUF_writeCTable() */
-size_t HUF_readCTable (HUF_CElt* CTable, unsigned maxSymbolValue, const void* src, size_t srcSize);
+size_t HUF_readCTable (HUF_CElt* CTable, unsigned* maxSymbolValuePtr, const void* src, size_t srcSize);
/*
diff --git a/thirdparty/zstd/common/mem.h b/thirdparty/zstd/common/mem.h
index df85404fb8..23335c3146 100644
--- a/thirdparty/zstd/common/mem.h
+++ b/thirdparty/zstd/common/mem.h
@@ -5,6 +5,7 @@
* This source code is licensed under both the BSD-style license (found in the
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
* in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
*/
#ifndef MEM_H_MODULE
diff --git a/thirdparty/zstd/common/pool.c b/thirdparty/zstd/common/pool.c
index a227044f7f..1b0fe1035d 100644
--- a/thirdparty/zstd/common/pool.c
+++ b/thirdparty/zstd/common/pool.c
@@ -5,6 +5,7 @@
* This source code is licensed under both the BSD-style license (found in the
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
* in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
*/
@@ -25,13 +26,14 @@
/* A job is a function and an opaque argument */
typedef struct POOL_job_s {
- POOL_function function;
- void *opaque;
+ POOL_function function;
+ void *opaque;
} POOL_job;
struct POOL_ctx_s {
+ ZSTD_customMem customMem;
/* Keep track of the threads */
- pthread_t *threads;
+ ZSTD_pthread_t *threads;
size_t numThreads;
/* The queue is a circular buffer */
@@ -46,11 +48,11 @@ struct POOL_ctx_s {
int queueEmpty;
/* The mutex protects the queue */
- pthread_mutex_t queueMutex;
+ ZSTD_pthread_mutex_t queueMutex;
/* Condition variable for pushers to wait on when the queue is full */
- pthread_cond_t queuePushCond;
+ ZSTD_pthread_cond_t queuePushCond;
/* Condition variables for poppers to wait on when the queue is empty */
- pthread_cond_t queuePopCond;
+ ZSTD_pthread_cond_t queuePopCond;
/* Indicates if the queue is shutting down */
int shutdown;
};
@@ -65,14 +67,14 @@ static void* POOL_thread(void* opaque) {
if (!ctx) { return NULL; }
for (;;) {
/* Lock the mutex and wait for a non-empty queue or until shutdown */
- pthread_mutex_lock(&ctx->queueMutex);
+ ZSTD_pthread_mutex_lock(&ctx->queueMutex);
while (ctx->queueEmpty && !ctx->shutdown) {
- pthread_cond_wait(&ctx->queuePopCond, &ctx->queueMutex);
+ ZSTD_pthread_cond_wait(&ctx->queuePopCond, &ctx->queueMutex);
}
/* empty => shutting down: so stop */
if (ctx->queueEmpty) {
- pthread_mutex_unlock(&ctx->queueMutex);
+ ZSTD_pthread_mutex_unlock(&ctx->queueMutex);
return opaque;
}
/* Pop a job off the queue */
@@ -81,28 +83,32 @@ static void* POOL_thread(void* opaque) {
ctx->numThreadsBusy++;
ctx->queueEmpty = ctx->queueHead == ctx->queueTail;
/* Unlock the mutex, signal a pusher, and run the job */
- pthread_mutex_unlock(&ctx->queueMutex);
- pthread_cond_signal(&ctx->queuePushCond);
+ ZSTD_pthread_mutex_unlock(&ctx->queueMutex);
+ ZSTD_pthread_cond_signal(&ctx->queuePushCond);
job.function(job.opaque);
/* If the intended queue size was 0, signal after finishing job */
if (ctx->queueSize == 1) {
- pthread_mutex_lock(&ctx->queueMutex);
+ ZSTD_pthread_mutex_lock(&ctx->queueMutex);
ctx->numThreadsBusy--;
- pthread_mutex_unlock(&ctx->queueMutex);
- pthread_cond_signal(&ctx->queuePushCond);
+ ZSTD_pthread_mutex_unlock(&ctx->queueMutex);
+ ZSTD_pthread_cond_signal(&ctx->queuePushCond);
} }
} /* for (;;) */
/* Unreachable */
}
-POOL_ctx *POOL_create(size_t numThreads, size_t queueSize) {
- POOL_ctx *ctx;
+POOL_ctx* POOL_create(size_t numThreads, size_t queueSize) {
+ return POOL_create_advanced(numThreads, queueSize, ZSTD_defaultCMem);
+}
+
+POOL_ctx* POOL_create_advanced(size_t numThreads, size_t queueSize, ZSTD_customMem customMem) {
+ POOL_ctx* ctx;
/* Check the parameters */
if (!numThreads) { return NULL; }
/* Allocate the context and zero initialize */
- ctx = (POOL_ctx *)calloc(1, sizeof(POOL_ctx));
+ ctx = (POOL_ctx*)ZSTD_calloc(sizeof(POOL_ctx), customMem);
if (!ctx) { return NULL; }
/* Initialize the job queue.
* It needs one extra space since one space is wasted to differentiate empty
@@ -114,19 +120,20 @@ POOL_ctx *POOL_create(size_t numThreads, size_t queueSize) {
ctx->queueTail = 0;
ctx->numThreadsBusy = 0;
ctx->queueEmpty = 1;
- (void)pthread_mutex_init(&ctx->queueMutex, NULL);
- (void)pthread_cond_init(&ctx->queuePushCond, NULL);
- (void)pthread_cond_init(&ctx->queuePopCond, NULL);
+ (void)ZSTD_pthread_mutex_init(&ctx->queueMutex, NULL);
+ (void)ZSTD_pthread_cond_init(&ctx->queuePushCond, NULL);
+ (void)ZSTD_pthread_cond_init(&ctx->queuePopCond, NULL);
ctx->shutdown = 0;
/* Allocate space for the thread handles */
- ctx->threads = (pthread_t*)malloc(numThreads * sizeof(pthread_t));
+ ctx->threads = (ZSTD_pthread_t*)ZSTD_malloc(numThreads * sizeof(ZSTD_pthread_t), customMem);
ctx->numThreads = 0;
+ ctx->customMem = customMem;
/* Check for errors */
if (!ctx->threads || !ctx->queue) { POOL_free(ctx); return NULL; }
/* Initialize the threads */
{ size_t i;
for (i = 0; i < numThreads; ++i) {
- if (pthread_create(&ctx->threads[i], NULL, &POOL_thread, ctx)) {
+ if (ZSTD_pthread_create(&ctx->threads[i], NULL, &POOL_thread, ctx)) {
ctx->numThreads = i;
POOL_free(ctx);
return NULL;
@@ -139,37 +146,37 @@ POOL_ctx *POOL_create(size_t numThreads, size_t queueSize) {
/*! POOL_join() :
Shutdown the queue, wake any sleeping threads, and join all of the threads.
*/
-static void POOL_join(POOL_ctx *ctx) {
+static void POOL_join(POOL_ctx* ctx) {
/* Shut down the queue */
- pthread_mutex_lock(&ctx->queueMutex);
+ ZSTD_pthread_mutex_lock(&ctx->queueMutex);
ctx->shutdown = 1;
- pthread_mutex_unlock(&ctx->queueMutex);
+ ZSTD_pthread_mutex_unlock(&ctx->queueMutex);
/* Wake up sleeping threads */
- pthread_cond_broadcast(&ctx->queuePushCond);
- pthread_cond_broadcast(&ctx->queuePopCond);
+ ZSTD_pthread_cond_broadcast(&ctx->queuePushCond);
+ ZSTD_pthread_cond_broadcast(&ctx->queuePopCond);
/* Join all of the threads */
{ size_t i;
for (i = 0; i < ctx->numThreads; ++i) {
- pthread_join(ctx->threads[i], NULL);
+ ZSTD_pthread_join(ctx->threads[i], NULL);
} }
}
void POOL_free(POOL_ctx *ctx) {
if (!ctx) { return; }
POOL_join(ctx);
- pthread_mutex_destroy(&ctx->queueMutex);
- pthread_cond_destroy(&ctx->queuePushCond);
- pthread_cond_destroy(&ctx->queuePopCond);
- if (ctx->queue) free(ctx->queue);
- if (ctx->threads) free(ctx->threads);
- free(ctx);
+ ZSTD_pthread_mutex_destroy(&ctx->queueMutex);
+ ZSTD_pthread_cond_destroy(&ctx->queuePushCond);
+ ZSTD_pthread_cond_destroy(&ctx->queuePopCond);
+ ZSTD_free(ctx->queue, ctx->customMem);
+ ZSTD_free(ctx->threads, ctx->customMem);
+ ZSTD_free(ctx, ctx->customMem);
}
size_t POOL_sizeof(POOL_ctx *ctx) {
if (ctx==NULL) return 0; /* supports sizeof NULL */
return sizeof(*ctx)
+ ctx->queueSize * sizeof(POOL_job)
- + ctx->numThreads * sizeof(pthread_t);
+ + ctx->numThreads * sizeof(ZSTD_pthread_t);
}
/**
@@ -191,12 +198,12 @@ void POOL_add(void* ctxVoid, POOL_function function, void *opaque) {
POOL_ctx* const ctx = (POOL_ctx*)ctxVoid;
if (!ctx) { return; }
- pthread_mutex_lock(&ctx->queueMutex);
+ ZSTD_pthread_mutex_lock(&ctx->queueMutex);
{ POOL_job const job = {function, opaque};
/* Wait until there is space in the queue for the new job */
while (isQueueFull(ctx) && !ctx->shutdown) {
- pthread_cond_wait(&ctx->queuePushCond, &ctx->queueMutex);
+ ZSTD_pthread_cond_wait(&ctx->queuePushCond, &ctx->queueMutex);
}
/* The queue is still going => there is space */
if (!ctx->shutdown) {
@@ -205,8 +212,8 @@ void POOL_add(void* ctxVoid, POOL_function function, void *opaque) {
ctx->queueTail = (ctx->queueTail + 1) % ctx->queueSize;
}
}
- pthread_mutex_unlock(&ctx->queueMutex);
- pthread_cond_signal(&ctx->queuePopCond);
+ ZSTD_pthread_mutex_unlock(&ctx->queueMutex);
+ ZSTD_pthread_cond_signal(&ctx->queuePopCond);
}
#else /* ZSTD_MULTITHREAD not defined */
@@ -214,26 +221,34 @@ void POOL_add(void* ctxVoid, POOL_function function, void *opaque) {
/* We don't need any data, but if it is empty malloc() might return NULL. */
struct POOL_ctx_s {
- int data;
+ int dummy;
};
+static POOL_ctx g_ctx;
POOL_ctx* POOL_create(size_t numThreads, size_t queueSize) {
- (void)numThreads;
- (void)queueSize;
- return (POOL_ctx*)malloc(sizeof(POOL_ctx));
+ return POOL_create_advanced(numThreads, queueSize, ZSTD_defaultCMem);
+}
+
+POOL_ctx* POOL_create_advanced(size_t numThreads, size_t queueSize, ZSTD_customMem customMem) {
+ (void)numThreads;
+ (void)queueSize;
+ (void)customMem;
+ return &g_ctx;
}
void POOL_free(POOL_ctx* ctx) {
- free(ctx);
+ assert(!ctx || ctx == &g_ctx);
+ (void)ctx;
}
void POOL_add(void* ctx, POOL_function function, void* opaque) {
- (void)ctx;
- function(opaque);
+ (void)ctx;
+ function(opaque);
}
size_t POOL_sizeof(POOL_ctx* ctx) {
if (ctx==NULL) return 0; /* supports sizeof NULL */
+ assert(ctx == &g_ctx);
return sizeof(*ctx);
}
diff --git a/thirdparty/zstd/common/pool.h b/thirdparty/zstd/common/pool.h
index 264c5c9ca7..08c63715aa 100644
--- a/thirdparty/zstd/common/pool.h
+++ b/thirdparty/zstd/common/pool.h
@@ -5,6 +5,7 @@
* This source code is licensed under both the BSD-style license (found in the
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
* in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
*/
#ifndef POOL_H
@@ -16,6 +17,7 @@ extern "C" {
#include <stddef.h> /* size_t */
+#include "zstd_internal.h" /* ZSTD_customMem */
typedef struct POOL_ctx_s POOL_ctx;
@@ -27,6 +29,8 @@ typedef struct POOL_ctx_s POOL_ctx;
*/
POOL_ctx *POOL_create(size_t numThreads, size_t queueSize);
+POOL_ctx *POOL_create_advanced(size_t numThreads, size_t queueSize, ZSTD_customMem customMem);
+
/*! POOL_free() :
Free a thread pool returned by POOL_create().
*/
diff --git a/thirdparty/zstd/common/threading.c b/thirdparty/zstd/common/threading.c
index 141376c561..8be8c8da94 100644
--- a/thirdparty/zstd/common/threading.c
+++ b/thirdparty/zstd/common/threading.c
@@ -2,9 +2,9 @@
* Copyright (c) 2016 Tino Reichardt
* All rights reserved.
*
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
*
* You can contact the author at:
* - zstdmt source repository: https://github.com/mcmilk/zstdmt
@@ -14,12 +14,8 @@
* This file will hold wrapper for systems, which do not support pthreads
*/
-/* When ZSTD_MULTITHREAD is not defined, this file would become an empty translation unit.
-* Include some ISO C header code to prevent this and portably avoid related warnings.
-* (Visual C++: C4206 / GCC: -Wpedantic / Clang: -Wempty-translation-unit)
-*/
-#include <stddef.h>
-
+/* create fake symbol to avoid empty trnaslation unit warning */
+int g_ZSTD_threading_useles_symbol;
#if defined(ZSTD_MULTITHREAD) && defined(_WIN32)
@@ -39,12 +35,12 @@
static unsigned __stdcall worker(void *arg)
{
- pthread_t* const thread = (pthread_t*) arg;
+ ZSTD_pthread_t* const thread = (ZSTD_pthread_t*) arg;
thread->arg = thread->start_routine(thread->arg);
return 0;
}
-int pthread_create(pthread_t* thread, const void* unused,
+int ZSTD_pthread_create(ZSTD_pthread_t* thread, const void* unused,
void* (*start_routine) (void*), void* arg)
{
(void)unused;
@@ -58,16 +54,16 @@ int pthread_create(pthread_t* thread, const void* unused,
return 0;
}
-int _pthread_join(pthread_t * thread, void **value_ptr)
+int ZSTD_pthread_join(ZSTD_pthread_t thread, void **value_ptr)
{
DWORD result;
- if (!thread->handle) return 0;
+ if (!thread.handle) return 0;
- result = WaitForSingleObject(thread->handle, INFINITE);
+ result = WaitForSingleObject(thread.handle, INFINITE);
switch (result) {
case WAIT_OBJECT_0:
- if (value_ptr) *value_ptr = thread->arg;
+ if (value_ptr) *value_ptr = thread.arg;
return 0;
case WAIT_ABANDONED:
return EINVAL;
diff --git a/thirdparty/zstd/common/threading.h b/thirdparty/zstd/common/threading.h
index ab09977a86..197770db27 100644
--- a/thirdparty/zstd/common/threading.h
+++ b/thirdparty/zstd/common/threading.h
@@ -2,9 +2,9 @@
* Copyright (c) 2016 Tino Reichardt
* All rights reserved.
*
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree. An additional grant
- * of patent rights can be found in the PATENTS file in the same directory.
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
*
* You can contact the author at:
* - zstdmt source repository: https://github.com/mcmilk/zstdmt
@@ -37,35 +37,38 @@ extern "C" {
# define WIN32_LEAN_AND_MEAN
#endif
+#undef ERROR /* reported already defined on VS 2015 (Rich Geldreich) */
#include <windows.h>
+#undef ERROR
+#define ERROR(name) ZSTD_ERROR(name)
+
/* mutex */
-#define pthread_mutex_t CRITICAL_SECTION
-#define pthread_mutex_init(a,b) (InitializeCriticalSection((a)), 0)
-#define pthread_mutex_destroy(a) DeleteCriticalSection((a))
-#define pthread_mutex_lock(a) EnterCriticalSection((a))
-#define pthread_mutex_unlock(a) LeaveCriticalSection((a))
+#define ZSTD_pthread_mutex_t CRITICAL_SECTION
+#define ZSTD_pthread_mutex_init(a, b) (InitializeCriticalSection((a)), 0)
+#define ZSTD_pthread_mutex_destroy(a) DeleteCriticalSection((a))
+#define ZSTD_pthread_mutex_lock(a) EnterCriticalSection((a))
+#define ZSTD_pthread_mutex_unlock(a) LeaveCriticalSection((a))
/* condition variable */
-#define pthread_cond_t CONDITION_VARIABLE
-#define pthread_cond_init(a, b) (InitializeConditionVariable((a)), 0)
-#define pthread_cond_destroy(a) /* No delete */
-#define pthread_cond_wait(a, b) SleepConditionVariableCS((a), (b), INFINITE)
-#define pthread_cond_signal(a) WakeConditionVariable((a))
-#define pthread_cond_broadcast(a) WakeAllConditionVariable((a))
-
-/* pthread_create() and pthread_join() */
+#define ZSTD_pthread_cond_t CONDITION_VARIABLE
+#define ZSTD_pthread_cond_init(a, b) (InitializeConditionVariable((a)), 0)
+#define ZSTD_pthread_cond_destroy(a) /* No delete */
+#define ZSTD_pthread_cond_wait(a, b) SleepConditionVariableCS((a), (b), INFINITE)
+#define ZSTD_pthread_cond_signal(a) WakeConditionVariable((a))
+#define ZSTD_pthread_cond_broadcast(a) WakeAllConditionVariable((a))
+
+/* ZSTD_pthread_create() and ZSTD_pthread_join() */
typedef struct {
HANDLE handle;
void* (*start_routine)(void*);
void* arg;
-} pthread_t;
+} ZSTD_pthread_t;
-int pthread_create(pthread_t* thread, const void* unused,
+int ZSTD_pthread_create(ZSTD_pthread_t* thread, const void* unused,
void* (*start_routine) (void*), void* arg);
-#define pthread_join(a, b) _pthread_join(&(a), (b))
-int _pthread_join(pthread_t* thread, void** value_ptr);
+int ZSTD_pthread_join(ZSTD_pthread_t thread, void** value_ptr);
/**
* add here more wrappers as required
@@ -76,23 +79,40 @@ int _pthread_join(pthread_t* thread, void** value_ptr);
/* === POSIX Systems === */
# include <pthread.h>
+#define ZSTD_pthread_mutex_t pthread_mutex_t
+#define ZSTD_pthread_mutex_init(a, b) pthread_mutex_init((a), (b))
+#define ZSTD_pthread_mutex_destroy(a) pthread_mutex_destroy((a))
+#define ZSTD_pthread_mutex_lock(a) pthread_mutex_lock((a))
+#define ZSTD_pthread_mutex_unlock(a) pthread_mutex_unlock((a))
+
+#define ZSTD_pthread_cond_t pthread_cond_t
+#define ZSTD_pthread_cond_init(a, b) pthread_cond_init((a), (b))
+#define ZSTD_pthread_cond_destroy(a) pthread_cond_destroy((a))
+#define ZSTD_pthread_cond_wait(a, b) pthread_cond_wait((a), (b))
+#define ZSTD_pthread_cond_signal(a) pthread_cond_signal((a))
+#define ZSTD_pthread_cond_broadcast(a) pthread_cond_broadcast((a))
+
+#define ZSTD_pthread_t pthread_t
+#define ZSTD_pthread_create(a, b, c, d) pthread_create((a), (b), (c), (d))
+#define ZSTD_pthread_join(a, b) pthread_join((a),(b))
+
#else /* ZSTD_MULTITHREAD not defined */
/* No multithreading support */
-#define pthread_mutex_t int /* #define rather than typedef, because sometimes pthread support is implicit, resulting in duplicated symbols */
-#define pthread_mutex_init(a,b) ((void)a, 0)
-#define pthread_mutex_destroy(a)
-#define pthread_mutex_lock(a)
-#define pthread_mutex_unlock(a)
+typedef int ZSTD_pthread_mutex_t;
+#define ZSTD_pthread_mutex_init(a, b) ((void)a, 0)
+#define ZSTD_pthread_mutex_destroy(a)
+#define ZSTD_pthread_mutex_lock(a)
+#define ZSTD_pthread_mutex_unlock(a)
-#define pthread_cond_t int
-#define pthread_cond_init(a,b) ((void)a, 0)
-#define pthread_cond_destroy(a)
-#define pthread_cond_wait(a,b)
-#define pthread_cond_signal(a)
-#define pthread_cond_broadcast(a)
+typedef int ZSTD_pthread_cond_t;
+#define ZSTD_pthread_cond_init(a, b) ((void)a, 0)
+#define ZSTD_pthread_cond_destroy(a)
+#define ZSTD_pthread_cond_wait(a, b)
+#define ZSTD_pthread_cond_signal(a)
+#define ZSTD_pthread_cond_broadcast(a)
-/* do not use pthread_t */
+/* do not use ZSTD_pthread_t */
#endif /* ZSTD_MULTITHREAD */
diff --git a/thirdparty/zstd/common/zstd_common.c b/thirdparty/zstd/common/zstd_common.c
index 08384cabf5..c2041053be 100644
--- a/thirdparty/zstd/common/zstd_common.c
+++ b/thirdparty/zstd/common/zstd_common.c
@@ -5,6 +5,7 @@
* This source code is licensed under both the BSD-style license (found in the
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
* in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
*/
@@ -15,8 +16,7 @@
#include <stdlib.h> /* malloc, calloc, free */
#include <string.h> /* memset */
#include "error_private.h"
-#define ZSTD_STATIC_LINKING_ONLY
-#include "zstd.h"
+#include "zstd_internal.h"
/*-****************************************
diff --git a/thirdparty/zstd/common/zstd_errors.h b/thirdparty/zstd/common/zstd_errors.h
index a69387b714..4bcb7769fe 100644
--- a/thirdparty/zstd/common/zstd_errors.h
+++ b/thirdparty/zstd/common/zstd_errors.h
@@ -5,6 +5,7 @@
* This source code is licensed under both the BSD-style license (found in the
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
* in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
*/
#ifndef ZSTD_ERRORS_H_398273423
@@ -62,9 +63,10 @@ typedef enum {
ZSTD_error_memory_allocation = 64,
ZSTD_error_dstSize_tooSmall = 70,
ZSTD_error_srcSize_wrong = 72,
+ /* following error codes are not stable and may be removed or changed in a future version */
ZSTD_error_frameIndex_tooLarge = 100,
ZSTD_error_seekableIO = 102,
- ZSTD_error_maxCode = 120 /* never EVER use this value directly, it may change in future versions! Use ZSTD_isError() instead */
+ ZSTD_error_maxCode = 120 /* never EVER use this value directly, it can change in future versions! Use ZSTD_isError() instead */
} ZSTD_ErrorCode;
/*! ZSTD_getErrorCode() :
diff --git a/thirdparty/zstd/common/zstd_internal.h b/thirdparty/zstd/common/zstd_internal.h
index 2610528608..e91cd20baa 100644
--- a/thirdparty/zstd/common/zstd_internal.h
+++ b/thirdparty/zstd/common/zstd_internal.h
@@ -5,6 +5,7 @@
* This source code is licensed under both the BSD-style license (found in the
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
* in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
*/
#ifndef ZSTD_CCOMMON_H_MODULE
@@ -29,6 +30,11 @@
#include "xxhash.h" /* XXH_reset, update, digest */
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+
/*-*************************************
* Debug
***************************************/
@@ -96,9 +102,13 @@ static const U32 repStartValue[ZSTD_REP_NUM] = { 1, 4, 8 };
#define BIT0 1
#define ZSTD_WINDOWLOG_ABSOLUTEMIN 10
+#define ZSTD_WINDOWLOG_DEFAULTMAX 27 /* Default maximum allowed window log */
static const size_t ZSTD_fcs_fieldSize[4] = { 0, 2, 4, 8 };
static const size_t ZSTD_did_fieldSize[4] = { 0, 1, 2, 4 };
+#define ZSTD_FRAMEIDSIZE 4
+static const size_t ZSTD_frameIdSize = ZSTD_FRAMEIDSIZE; /* magic number size */
+
#define ZSTD_BLOCKHEADERSIZE 3 /* C standard doesn't allow `static const` variable to be init using another `static const` variable */
static const size_t ZSTD_blockHeaderSize = ZSTD_BLOCKHEADERSIZE;
typedef enum { bt_raw, bt_rle, bt_compressed, bt_reserved } blockType_e;
@@ -117,7 +127,8 @@ typedef enum { set_basic, set_rle, set_compressed, set_repeat } symbolEncodingTy
#define MaxLit ((1<<Litbits) - 1)
#define MaxML 52
#define MaxLL 35
-#define MaxOff 28
+#define DefaultMaxOff 28
+#define MaxOff 31
#define MaxSeq MAX(MaxLL, MaxML) /* Assumption : MaxOff < MaxLL,MaxML */
#define MLFSELog 9
#define LLFSELog 9
@@ -143,8 +154,8 @@ static const S16 ML_defaultNorm[MaxML+1] = { 1, 4, 3, 2, 2, 2, 2, 2, 2, 1, 1, 1,
#define ML_DEFAULTNORMLOG 6 /* for static allocation */
static const U32 ML_defaultNormLog = ML_DEFAULTNORMLOG;
-static const S16 OF_defaultNorm[MaxOff+1] = { 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1,-1,-1,-1,-1,-1 };
+static const S16 OF_defaultNorm[DefaultMaxOff+1] = { 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1,-1,-1,-1,-1,-1 };
#define OF_DEFAULTNORMLOG 5 /* for static allocation */
static const U32 OF_defaultNormLog = OF_DEFAULTNORMLOG;
@@ -244,6 +255,26 @@ typedef struct {
} optState_t;
typedef struct {
+ U32 offset;
+ U32 checksum;
+} ldmEntry_t;
+
+typedef struct {
+ ldmEntry_t* hashTable;
+ BYTE* bucketOffsets; /* Next position in bucket to insert entry */
+ U64 hashPower; /* Used to compute the rolling hash.
+ * Depends on ldmParams.minMatchLength */
+} ldmState_t;
+
+typedef struct {
+ U32 enableLdm; /* 1 if enable long distance matching */
+ U32 hashLog; /* Log size of hashTable */
+ U32 bucketSizeLog; /* Log bucket size for collision resolution, at most 8 */
+ U32 minMatchLength; /* Minimum match length */
+ U32 hashEveryLog; /* Log number of entries to skip */
+} ldmParams_t;
+
+typedef struct {
U32 hufCTable[HUF_CTABLE_SIZE_U32(255)];
FSE_CTable offcodeCTable[FSE_CTABLE_SIZE_U32(OffFSELog, MaxOff)];
FSE_CTable matchlengthCTable[FSE_CTABLE_SIZE_U32(MLFSELog, MaxML)];
@@ -255,6 +286,28 @@ typedef struct {
FSE_repeat litlength_repeatMode;
} ZSTD_entropyCTables_t;
+struct ZSTD_CCtx_params_s {
+ ZSTD_format_e format;
+ ZSTD_compressionParameters cParams;
+ ZSTD_frameParameters fParams;
+
+ int compressionLevel;
+ U32 forceWindow; /* force back-references to respect limit of
+ * 1<<wLog, even for dictionary */
+
+ /* Multithreading: used to pass parameters to mtctx */
+ U32 nbThreads;
+ unsigned jobSize;
+ unsigned overlapSizeLog;
+
+ /* Long distance matching parameters */
+ ldmParams_t ldmParams;
+
+ /* For use with createCCtxParams() and freeCCtxParams() only */
+ ZSTD_customMem customMem;
+
+}; /* typedef'd to ZSTD_CCtx_params within "zstd.h" */
+
const seqStore_t* ZSTD_getSeqStore(const ZSTD_CCtx* ctx);
void ZSTD_seqToCodes(const seqStore_t* seqStorePtr);
@@ -268,24 +321,27 @@ void ZSTD_free(void* ptr, ZSTD_customMem customMem);
MEM_STATIC U32 ZSTD_highbit32(U32 val)
{
+ assert(val != 0);
+ {
# if defined(_MSC_VER) /* Visual */
- unsigned long r=0;
- _BitScanReverse(&r, val);
- return (unsigned)r;
+ unsigned long r=0;
+ _BitScanReverse(&r, val);
+ return (unsigned)r;
# elif defined(__GNUC__) && (__GNUC__ >= 3) /* GCC Intrinsic */
- return 31 - __builtin_clz(val);
+ return 31 - __builtin_clz(val);
# else /* Software version */
- static const int DeBruijnClz[32] = { 0, 9, 1, 10, 13, 21, 2, 29, 11, 14, 16, 18, 22, 25, 3, 30, 8, 12, 20, 28, 15, 17, 24, 7, 19, 27, 23, 6, 26, 5, 4, 31 };
- U32 v = val;
- int r;
- v |= v >> 1;
- v |= v >> 2;
- v |= v >> 4;
- v |= v >> 8;
- v |= v >> 16;
- r = DeBruijnClz[(U32)(v * 0x07C4ACDDU) >> 27];
- return r;
+ static const int DeBruijnClz[32] = { 0, 9, 1, 10, 13, 21, 2, 29, 11, 14, 16, 18, 22, 25, 3, 30, 8, 12, 20, 28, 15, 17, 24, 7, 19, 27, 23, 6, 26, 5, 4, 31 };
+ U32 v = val;
+ int r;
+ v |= v >> 1;
+ v |= v >> 2;
+ v |= v >> 4;
+ v |= v >> 8;
+ v |= v >> 16;
+ r = DeBruijnClz[(U32)(v * 0x07C4ACDDU) >> 27];
+ return r;
# endif
+ }
}
@@ -306,7 +362,7 @@ void ZSTD_invalidateRepCodes(ZSTD_CCtx* cctx);
size_t ZSTD_initCStream_internal(ZSTD_CStream* zcs,
const void* dict, size_t dictSize,
const ZSTD_CDict* cdict,
- ZSTD_parameters params, unsigned long long pledgedSrcSize);
+ ZSTD_CCtx_params params, unsigned long long pledgedSrcSize);
/*! ZSTD_compressStream_generic() :
* Private use only. To be called from zstdmt_compress.c in single-thread mode. */
@@ -315,10 +371,25 @@ size_t ZSTD_compressStream_generic(ZSTD_CStream* zcs,
ZSTD_inBuffer* input,
ZSTD_EndDirective const flushMode);
-/*! ZSTD_getParamsFromCDict() :
+/*! ZSTD_getCParamsFromCDict() :
* as the name implies */
-ZSTD_parameters ZSTD_getParamsFromCDict(const ZSTD_CDict* cdict);
-
+ZSTD_compressionParameters ZSTD_getCParamsFromCDict(const ZSTD_CDict* cdict);
+
+/* ZSTD_compressBegin_advanced_internal() :
+ * Private use only. To be called from zstdmt_compress.c. */
+size_t ZSTD_compressBegin_advanced_internal(ZSTD_CCtx* cctx,
+ const void* dict, size_t dictSize,
+ ZSTD_dictMode_e dictMode,
+ ZSTD_CCtx_params params,
+ unsigned long long pledgedSrcSize);
+
+/* ZSTD_compress_advanced_internal() :
+ * Private use only. To be called from zstdmt_compress.c. */
+size_t ZSTD_compress_advanced_internal(ZSTD_CCtx* cctx,
+ void* dst, size_t dstCapacity,
+ const void* src, size_t srcSize,
+ const void* dict,size_t dictSize,
+ ZSTD_CCtx_params params);
typedef struct {
blockType_e blockType;
@@ -331,5 +402,8 @@ typedef struct {
size_t ZSTD_getcBlockSize(const void* src, size_t srcSize,
blockProperties_t* bpPtr);
+#if defined (__cplusplus)
+}
+#endif
#endif /* ZSTD_CCOMMON_H_MODULE */
diff --git a/thirdparty/zstd/compress/fse_compress.c b/thirdparty/zstd/compress/fse_compress.c
index cc9fa73514..549c115d42 100644
--- a/thirdparty/zstd/compress/fse_compress.c
+++ b/thirdparty/zstd/compress/fse_compress.c
@@ -461,6 +461,7 @@ static unsigned FSE_minTableLog(size_t srcSize, unsigned maxSymbolValue)
U32 minBitsSrc = BIT_highbit32((U32)(srcSize - 1)) + 1;
U32 minBitsSymbols = BIT_highbit32(maxSymbolValue) + 2;
U32 minBits = minBitsSrc < minBitsSymbols ? minBitsSrc : minBitsSymbols;
+ assert(srcSize > 1); /* Not supported, RLE should be used instead */
return minBits;
}
@@ -469,6 +470,7 @@ unsigned FSE_optimalTableLog_internal(unsigned maxTableLog, size_t srcSize, unsi
U32 maxBitsSrc = BIT_highbit32((U32)(srcSize - 1)) - minus;
U32 tableLog = maxTableLog;
U32 minBits = FSE_minTableLog(srcSize, maxSymbolValue);
+ assert(srcSize > 1); /* Not supported, RLE should be used instead */
if (tableLog==0) tableLog = FSE_DEFAULT_TABLELOG;
if (maxBitsSrc < tableLog) tableLog = maxBitsSrc; /* Accuracy can be reduced */
if (minBits > tableLog) tableLog = minBits; /* Need a minimum to safely represent all symbol values */
@@ -580,7 +582,7 @@ size_t FSE_normalizeCount (short* normalizedCounter, unsigned tableLog,
if (tableLog > FSE_MAX_TABLELOG) return ERROR(tableLog_tooLarge); /* Unsupported size */
if (tableLog < FSE_minTableLog(total, maxSymbolValue)) return ERROR(GENERIC); /* Too small tableLog, compression potentially impossible */
- { U32 const rtbTable[] = { 0, 473195, 504333, 520860, 550000, 700000, 750000, 830000 };
+ { static U32 const rtbTable[] = { 0, 473195, 504333, 520860, 550000, 700000, 750000, 830000 };
U64 const scale = 62 - tableLog;
U64 const step = ((U64)1<<62) / total; /* <== here, one division ! */
U64 const vStep = 1ULL<<(scale-20);
diff --git a/thirdparty/zstd/compress/huf_compress.c b/thirdparty/zstd/compress/huf_compress.c
index 2a47c18205..5692d56e00 100644
--- a/thirdparty/zstd/compress/huf_compress.c
+++ b/thirdparty/zstd/compress/huf_compress.c
@@ -167,7 +167,7 @@ size_t HUF_writeCTable (void* dst, size_t maxDstSize,
}
-size_t HUF_readCTable (HUF_CElt* CTable, U32 maxSymbolValue, const void* src, size_t srcSize)
+size_t HUF_readCTable (HUF_CElt* CTable, U32* maxSymbolValuePtr, const void* src, size_t srcSize)
{
BYTE huffWeight[HUF_SYMBOLVALUE_MAX + 1]; /* init not required, even though some static analyzer may complain */
U32 rankVal[HUF_TABLELOG_ABSOLUTEMAX + 1]; /* large enough for values from 0 to 16 */
@@ -179,7 +179,7 @@ size_t HUF_readCTable (HUF_CElt* CTable, U32 maxSymbolValue, const void* src, si
/* check result */
if (tableLog > HUF_TABLELOG_MAX) return ERROR(tableLog_tooLarge);
- if (nbSymbols > maxSymbolValue+1) return ERROR(maxSymbolValue_tooSmall);
+ if (nbSymbols > *maxSymbolValuePtr+1) return ERROR(maxSymbolValue_tooSmall);
/* Prepare base value per rank */
{ U32 n, nextRankStart = 0;
@@ -208,9 +208,10 @@ size_t HUF_readCTable (HUF_CElt* CTable, U32 maxSymbolValue, const void* src, si
min >>= 1;
} }
/* assign value within rank, symbol order */
- { U32 n; for (n=0; n<=maxSymbolValue; n++) CTable[n].val = valPerRank[CTable[n].nbBits]++; }
+ { U32 n; for (n=0; n<nbSymbols; n++) CTable[n].val = valPerRank[CTable[n].nbBits]++; }
}
+ *maxSymbolValuePtr = nbSymbols - 1;
return readSize;
}
diff --git a/thirdparty/zstd/compress/zstd_compress.c b/thirdparty/zstd/compress/zstd_compress.c
index 0322c03eb3..2c46c79f1c 100644
--- a/thirdparty/zstd/compress/zstd_compress.c
+++ b/thirdparty/zstd/compress/zstd_compress.c
@@ -5,6 +5,7 @@
* This source code is licensed under both the BSD-style license (found in the
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
* in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
*/
@@ -25,25 +26,19 @@
#include "fse.h"
#define HUF_STATIC_LINKING_ONLY
#include "huf.h"
-#include "zstd_internal.h" /* includes zstd.h */
-#include "zstdmt_compress.h"
-
-
-/*-*************************************
-* Constants
-***************************************/
-static const U32 g_searchStrength = 8; /* control skip over incompressible data */
-#define HASH_READ_SIZE 8
-typedef enum { ZSTDcs_created=0, ZSTDcs_init, ZSTDcs_ongoing, ZSTDcs_ending } ZSTD_compressionStage_e;
+#include "zstd_compress.h"
+#include "zstd_fast.h"
+#include "zstd_double_fast.h"
+#include "zstd_lazy.h"
+#include "zstd_opt.h"
+#include "zstd_ldm.h"
/*-*************************************
* Helper functions
***************************************/
size_t ZSTD_compressBound(size_t srcSize) {
- size_t const lowLimit = 256 KB;
- size_t const margin = (srcSize < lowLimit) ? (lowLimit-srcSize) >> 12 : 0; /* from 64 to 0 */
- return srcSize + (srcSize >> 8) + margin;
+ return ZSTD_COMPRESSBOUND(srcSize);
}
@@ -61,8 +56,6 @@ static void ZSTD_resetSeqStore(seqStore_t* ssPtr)
/*-*************************************
* Context memory management
***************************************/
-typedef enum { zcss_init=0, zcss_load, zcss_flush } ZSTD_cStreamStage;
-
struct ZSTD_CDict_s {
void* dictBuffer;
const void* dictContent;
@@ -70,65 +63,6 @@ struct ZSTD_CDict_s {
ZSTD_CCtx* refContext;
}; /* typedef'd to ZSTD_CDict within "zstd.h" */
-struct ZSTD_CCtx_s {
- const BYTE* nextSrc; /* next block here to continue on current prefix */
- const BYTE* base; /* All regular indexes relative to this position */
- const BYTE* dictBase; /* extDict indexes relative to this position */
- U32 dictLimit; /* below that point, need extDict */
- U32 lowLimit; /* below that point, no more data */
- U32 nextToUpdate; /* index from which to continue dictionary update */
- U32 nextToUpdate3; /* index from which to continue dictionary update */
- U32 hashLog3; /* dispatch table : larger == faster, more memory */
- U32 loadedDictEnd; /* index of end of dictionary */
- U32 forceWindow; /* force back-references to respect limit of 1<<wLog, even for dictionary */
- ZSTD_compressionStage_e stage;
- U32 dictID;
- int compressionLevel;
- ZSTD_parameters requestedParams;
- ZSTD_parameters appliedParams;
- void* workSpace;
- size_t workSpaceSize;
- size_t blockSize;
- U64 pledgedSrcSizePlusOne; /* this way, 0 (default) == unknown */
- U64 consumedSrcSize;
- XXH64_state_t xxhState;
- ZSTD_customMem customMem;
- size_t staticSize;
-
- seqStore_t seqStore; /* sequences storage ptrs */
- optState_t optState;
- U32* hashTable;
- U32* hashTable3;
- U32* chainTable;
- ZSTD_entropyCTables_t* entropy;
-
- /* streaming */
- char* inBuff;
- size_t inBuffSize;
- size_t inToCompress;
- size_t inBuffPos;
- size_t inBuffTarget;
- char* outBuff;
- size_t outBuffSize;
- size_t outBuffContentSize;
- size_t outBuffFlushedSize;
- ZSTD_cStreamStage streamStage;
- U32 frameEnded;
-
- /* Dictionary */
- ZSTD_dictMode_e dictMode; /* select restricting dictionary to "rawContent" or "fullDict" only */
- U32 dictContentByRef;
- ZSTD_CDict* cdictLocal;
- const ZSTD_CDict* cdict;
- const void* prefix;
- size_t prefixSize;
-
- /* Multi-threading */
- U32 nbThreads;
- ZSTDMT_CCtx* mtctx;
-};
-
-
ZSTD_CCtx* ZSTD_createCCtx(void)
{
return ZSTD_createCCtx_advanced(ZSTD_defaultCMem);
@@ -143,7 +77,7 @@ ZSTD_CCtx* ZSTD_createCCtx_advanced(ZSTD_customMem customMem)
cctx = (ZSTD_CCtx*) ZSTD_calloc(sizeof(ZSTD_CCtx), customMem);
if (!cctx) return NULL;
cctx->customMem = customMem;
- cctx->compressionLevel = ZSTD_CLEVEL_DEFAULT;
+ cctx->requestedParams.compressionLevel = ZSTD_CLEVEL_DEFAULT;
ZSTD_STATIC_ASSERT(zcss_init==0);
ZSTD_STATIC_ASSERT(ZSTD_CONTENTSIZE_UNKNOWN==(0ULL - 1));
return cctx;
@@ -151,7 +85,7 @@ ZSTD_CCtx* ZSTD_createCCtx_advanced(ZSTD_customMem customMem)
ZSTD_CCtx* ZSTD_initStaticCCtx(void *workspace, size_t workspaceSize)
{
- ZSTD_CCtx* cctx = (ZSTD_CCtx*) workspace;
+ ZSTD_CCtx* const cctx = (ZSTD_CCtx*) workspace;
if (workspaceSize <= sizeof(ZSTD_CCtx)) return NULL; /* minimum size */
if ((size_t)workspace & 7) return NULL; /* must be 8-aligned */
memset(workspace, 0, workspaceSize); /* may be a bit generous, could memset be smaller ? */
@@ -161,7 +95,7 @@ ZSTD_CCtx* ZSTD_initStaticCCtx(void *workspace, size_t workspaceSize)
/* entropy space (never moves) */
if (cctx->workSpaceSize < sizeof(ZSTD_entropyCTables_t)) return NULL;
- assert(((size_t)cctx->workSpace & 7) == 0); /* ensure correct alignment */
+ assert(((size_t)cctx->workSpace & (sizeof(void*)-1)) == 0); /* ensure correct alignment */
cctx->entropy = (ZSTD_entropyCTables_t*)cctx->workSpace;
return cctx;
@@ -175,23 +109,36 @@ size_t ZSTD_freeCCtx(ZSTD_CCtx* cctx)
cctx->workSpace = NULL;
ZSTD_freeCDict(cctx->cdictLocal);
cctx->cdictLocal = NULL;
+#ifdef ZSTD_MULTITHREAD
ZSTDMT_freeCCtx(cctx->mtctx);
cctx->mtctx = NULL;
+#endif
ZSTD_free(cctx, cctx->customMem);
return 0; /* reserved as a potential error code in the future */
}
+
+static size_t ZSTD_sizeof_mtctx(const ZSTD_CCtx* cctx)
+{
+#ifdef ZSTD_MULTITHREAD
+ return ZSTDMT_sizeof_CCtx(cctx->mtctx);
+#else
+ (void) cctx;
+ return 0;
+#endif
+}
+
+
size_t ZSTD_sizeof_CCtx(const ZSTD_CCtx* cctx)
{
if (cctx==NULL) return 0; /* support sizeof on NULL */
- DEBUGLOG(5, "sizeof(*cctx) : %u", (U32)sizeof(*cctx));
- DEBUGLOG(5, "workSpaceSize : %u", (U32)cctx->workSpaceSize);
- DEBUGLOG(5, "streaming buffers : %u", (U32)(cctx->outBuffSize + cctx->inBuffSize));
- DEBUGLOG(5, "inner MTCTX : %u", (U32)ZSTDMT_sizeof_CCtx(cctx->mtctx));
+ DEBUGLOG(3, "sizeof(*cctx) : %u", (U32)sizeof(*cctx));
+ DEBUGLOG(3, "workSpaceSize (including streaming buffers): %u", (U32)cctx->workSpaceSize);
+ DEBUGLOG(3, "inner cdict : %u", (U32)ZSTD_sizeof_CDict(cctx->cdictLocal));
+ DEBUGLOG(3, "inner MTCTX : %u", (U32)ZSTD_sizeof_mtctx(cctx));
return sizeof(*cctx) + cctx->workSpaceSize
+ ZSTD_sizeof_CDict(cctx->cdictLocal)
- + cctx->outBuffSize + cctx->inBuffSize
- + ZSTDMT_sizeof_CCtx(cctx->mtctx);
+ + ZSTD_sizeof_mtctx(cctx);
}
size_t ZSTD_sizeof_CStream(const ZSTD_CStream* zcs)
@@ -202,29 +149,99 @@ size_t ZSTD_sizeof_CStream(const ZSTD_CStream* zcs)
/* private API call, for dictBuilder only */
const seqStore_t* ZSTD_getSeqStore(const ZSTD_CCtx* ctx) { return &(ctx->seqStore); }
-static ZSTD_parameters ZSTD_getParamsFromCCtx(const ZSTD_CCtx* cctx) { return cctx->appliedParams; }
+#define ZSTD_CLEVEL_CUSTOM 999
-/* older variant; will be deprecated */
-size_t ZSTD_setCCtxParameter(ZSTD_CCtx* cctx, ZSTD_CCtxParameter param, unsigned value)
+static ZSTD_compressionParameters ZSTD_getCParamsFromCCtxParams(
+ ZSTD_CCtx_params params, U64 srcSizeHint, size_t dictSize)
{
- switch(param)
- {
- case ZSTD_p_forceWindow : cctx->forceWindow = value>0; cctx->loadedDictEnd = 0; return 0;
- ZSTD_STATIC_ASSERT(ZSTD_dm_auto==0);
- ZSTD_STATIC_ASSERT(ZSTD_dm_rawContent==1);
- case ZSTD_p_forceRawDict : cctx->dictMode = (ZSTD_dictMode_e)(value>0); return 0;
- default: return ERROR(parameter_unsupported);
- }
+ return (params.compressionLevel == ZSTD_CLEVEL_CUSTOM ?
+ params.cParams :
+ ZSTD_getCParams(params.compressionLevel, srcSizeHint, dictSize));
}
+static void ZSTD_cLevelToCCtxParams_srcSize(ZSTD_CCtx_params* params, U64 srcSize)
+{
+ params->cParams = ZSTD_getCParamsFromCCtxParams(*params, srcSize, 0);
+ params->compressionLevel = ZSTD_CLEVEL_CUSTOM;
+}
-#define ZSTD_CLEVEL_CUSTOM 999
static void ZSTD_cLevelToCParams(ZSTD_CCtx* cctx)
{
- if (cctx->compressionLevel==ZSTD_CLEVEL_CUSTOM) return;
- cctx->requestedParams.cParams = ZSTD_getCParams(cctx->compressionLevel,
- cctx->pledgedSrcSizePlusOne-1, 0);
- cctx->compressionLevel = ZSTD_CLEVEL_CUSTOM;
+ ZSTD_cLevelToCCtxParams_srcSize(
+ &cctx->requestedParams, cctx->pledgedSrcSizePlusOne-1);
+}
+
+static void ZSTD_cLevelToCCtxParams(ZSTD_CCtx_params* params)
+{
+ ZSTD_cLevelToCCtxParams_srcSize(params, 0);
+}
+
+static ZSTD_CCtx_params ZSTD_makeCCtxParamsFromCParams(
+ ZSTD_compressionParameters cParams)
+{
+ ZSTD_CCtx_params cctxParams;
+ memset(&cctxParams, 0, sizeof(cctxParams));
+ cctxParams.cParams = cParams;
+ cctxParams.compressionLevel = ZSTD_CLEVEL_CUSTOM;
+ return cctxParams;
+}
+
+static ZSTD_CCtx_params* ZSTD_createCCtxParams_advanced(
+ ZSTD_customMem customMem)
+{
+ ZSTD_CCtx_params* params;
+ if (!customMem.customAlloc ^ !customMem.customFree) return NULL;
+ params = (ZSTD_CCtx_params*)ZSTD_calloc(
+ sizeof(ZSTD_CCtx_params), customMem);
+ if (!params) { return NULL; }
+ params->customMem = customMem;
+ params->compressionLevel = ZSTD_CLEVEL_DEFAULT;
+ return params;
+}
+
+ZSTD_CCtx_params* ZSTD_createCCtxParams(void)
+{
+ return ZSTD_createCCtxParams_advanced(ZSTD_defaultCMem);
+}
+
+size_t ZSTD_freeCCtxParams(ZSTD_CCtx_params* params)
+{
+ if (params == NULL) { return 0; }
+ ZSTD_free(params, params->customMem);
+ return 0;
+}
+
+size_t ZSTD_resetCCtxParams(ZSTD_CCtx_params* params)
+{
+ return ZSTD_initCCtxParams(params, ZSTD_CLEVEL_DEFAULT);
+}
+
+size_t ZSTD_initCCtxParams(ZSTD_CCtx_params* cctxParams, int compressionLevel) {
+ if (!cctxParams) { return ERROR(GENERIC); }
+ memset(cctxParams, 0, sizeof(*cctxParams));
+ cctxParams->compressionLevel = compressionLevel;
+ return 0;
+}
+
+size_t ZSTD_initCCtxParams_advanced(ZSTD_CCtx_params* cctxParams, ZSTD_parameters params)
+{
+ if (!cctxParams) { return ERROR(GENERIC); }
+ CHECK_F( ZSTD_checkCParams(params.cParams) );
+ memset(cctxParams, 0, sizeof(*cctxParams));
+ cctxParams->cParams = params.cParams;
+ cctxParams->fParams = params.fParams;
+ cctxParams->compressionLevel = ZSTD_CLEVEL_CUSTOM;
+ return 0;
+}
+
+static ZSTD_CCtx_params ZSTD_assignParamsToCCtxParams(
+ ZSTD_CCtx_params cctxParams, ZSTD_parameters params)
+{
+ ZSTD_CCtx_params ret = cctxParams;
+ ret.cParams = params.cParams;
+ ret.fParams = params.fParams;
+ ret.compressionLevel = ZSTD_CLEVEL_CUSTOM;
+ return ret;
}
#define CLAMPCHECK(val,min,max) { \
@@ -238,167 +255,285 @@ size_t ZSTD_CCtx_setParameter(ZSTD_CCtx* cctx, ZSTD_cParameter param, unsigned v
switch(param)
{
- case ZSTD_p_compressionLevel :
- if ((int)value > ZSTD_maxCLevel()) value = ZSTD_maxCLevel(); /* cap max compression level */
+ case ZSTD_p_format :
+ return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value);
+
+ case ZSTD_p_compressionLevel:
if (value == 0) return 0; /* special value : 0 means "don't change anything" */
if (cctx->cdict) return ERROR(stage_wrong);
- cctx->compressionLevel = value;
- return 0;
+ return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value);
+
+ case ZSTD_p_windowLog:
+ case ZSTD_p_hashLog:
+ case ZSTD_p_chainLog:
+ case ZSTD_p_searchLog:
+ case ZSTD_p_minMatch:
+ case ZSTD_p_targetLength:
+ case ZSTD_p_compressionStrategy:
+ if (value == 0) return 0; /* special value : 0 means "don't change anything" */
+ if (cctx->cdict) return ERROR(stage_wrong);
+ ZSTD_cLevelToCParams(cctx); /* Can optimize if srcSize is known */
+ return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value);
- case ZSTD_p_windowLog :
- DEBUGLOG(5, "setting ZSTD_p_windowLog = %u (cdict:%u)",
- value, (cctx->cdict!=NULL));
+ case ZSTD_p_contentSizeFlag:
+ case ZSTD_p_checksumFlag:
+ case ZSTD_p_dictIDFlag:
+ return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value);
+
+ case ZSTD_p_forceMaxWindow : /* Force back-references to remain < windowSize,
+ * even when referencing into Dictionary content
+ * default : 0 when using a CDict, 1 when using a Prefix */
+ cctx->loadedDictEnd = 0;
+ return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value);
+
+ case ZSTD_p_nbThreads:
+ if (value==0) return 0;
+ DEBUGLOG(5, " setting nbThreads : %u", value);
+ if (value > 1 && cctx->staticSize) {
+ return ERROR(parameter_unsupported); /* MT not compatible with static alloc */
+ }
+ return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value);
+
+ case ZSTD_p_jobSize:
+ return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value);
+
+ case ZSTD_p_overlapSizeLog:
+ DEBUGLOG(5, " setting overlap with nbThreads == %u", cctx->requestedParams.nbThreads);
+ return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value);
+
+ case ZSTD_p_enableLongDistanceMatching:
+ if (cctx->cdict) return ERROR(stage_wrong);
+ if (value != 0) {
+ ZSTD_cLevelToCParams(cctx);
+ }
+ return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value);
+
+ case ZSTD_p_ldmHashLog:
+ case ZSTD_p_ldmMinMatch:
if (value == 0) return 0; /* special value : 0 means "don't change anything" */
if (cctx->cdict) return ERROR(stage_wrong);
+ return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value);
+
+ case ZSTD_p_ldmBucketSizeLog:
+ case ZSTD_p_ldmHashEveryLog:
+ if (cctx->cdict) return ERROR(stage_wrong);
+ return ZSTD_CCtxParam_setParameter(&cctx->requestedParams, param, value);
+
+ default: return ERROR(parameter_unsupported);
+ }
+}
+
+size_t ZSTD_CCtxParam_setParameter(
+ ZSTD_CCtx_params* params, ZSTD_cParameter param, unsigned value)
+{
+ switch(param)
+ {
+ case ZSTD_p_format :
+ if (value > (unsigned)ZSTD_f_zstd1_magicless)
+ return ERROR(parameter_unsupported);
+ params->format = (ZSTD_format_e)value;
+ return 0;
+
+ case ZSTD_p_compressionLevel :
+ if ((int)value > ZSTD_maxCLevel()) value = ZSTD_maxCLevel();
+ if (value == 0) return 0;
+ params->compressionLevel = value;
+ return 0;
+
+ case ZSTD_p_windowLog :
+ if (value == 0) return 0;
CLAMPCHECK(value, ZSTD_WINDOWLOG_MIN, ZSTD_WINDOWLOG_MAX);
- ZSTD_cLevelToCParams(cctx);
- cctx->requestedParams.cParams.windowLog = value;
+ ZSTD_cLevelToCCtxParams(params);
+ params->cParams.windowLog = value;
return 0;
case ZSTD_p_hashLog :
- if (value == 0) return 0; /* special value : 0 means "don't change anything" */
- if (cctx->cdict) return ERROR(stage_wrong);
+ if (value == 0) return 0;
CLAMPCHECK(value, ZSTD_HASHLOG_MIN, ZSTD_HASHLOG_MAX);
- ZSTD_cLevelToCParams(cctx);
- cctx->requestedParams.cParams.hashLog = value;
+ ZSTD_cLevelToCCtxParams(params);
+ params->cParams.hashLog = value;
return 0;
case ZSTD_p_chainLog :
- if (value == 0) return 0; /* special value : 0 means "don't change anything" */
- if (cctx->cdict) return ERROR(stage_wrong);
+ if (value == 0) return 0;
CLAMPCHECK(value, ZSTD_CHAINLOG_MIN, ZSTD_CHAINLOG_MAX);
- ZSTD_cLevelToCParams(cctx);
- cctx->requestedParams.cParams.chainLog = value;
+ ZSTD_cLevelToCCtxParams(params);
+ params->cParams.chainLog = value;
return 0;
case ZSTD_p_searchLog :
- if (value == 0) return 0; /* special value : 0 means "don't change anything" */
- if (cctx->cdict) return ERROR(stage_wrong);
+ if (value == 0) return 0;
CLAMPCHECK(value, ZSTD_SEARCHLOG_MIN, ZSTD_SEARCHLOG_MAX);
- ZSTD_cLevelToCParams(cctx);
- cctx->requestedParams.cParams.searchLog = value;
+ ZSTD_cLevelToCCtxParams(params);
+ params->cParams.searchLog = value;
return 0;
case ZSTD_p_minMatch :
- if (value == 0) return 0; /* special value : 0 means "don't change anything" */
- if (cctx->cdict) return ERROR(stage_wrong);
+ if (value == 0) return 0;
CLAMPCHECK(value, ZSTD_SEARCHLENGTH_MIN, ZSTD_SEARCHLENGTH_MAX);
- ZSTD_cLevelToCParams(cctx);
- cctx->requestedParams.cParams.searchLength = value;
+ ZSTD_cLevelToCCtxParams(params);
+ params->cParams.searchLength = value;
return 0;
case ZSTD_p_targetLength :
- if (value == 0) return 0; /* special value : 0 means "don't change anything" */
- if (cctx->cdict) return ERROR(stage_wrong);
+ if (value == 0) return 0;
CLAMPCHECK(value, ZSTD_TARGETLENGTH_MIN, ZSTD_TARGETLENGTH_MAX);
- ZSTD_cLevelToCParams(cctx);
- cctx->requestedParams.cParams.targetLength = value;
+ ZSTD_cLevelToCCtxParams(params);
+ params->cParams.targetLength = value;
return 0;
case ZSTD_p_compressionStrategy :
- if (value == 0) return 0; /* special value : 0 means "don't change anything" */
- if (cctx->cdict) return ERROR(stage_wrong);
+ if (value == 0) return 0;
CLAMPCHECK(value, (unsigned)ZSTD_fast, (unsigned)ZSTD_btultra);
- ZSTD_cLevelToCParams(cctx);
- cctx->requestedParams.cParams.strategy = (ZSTD_strategy)value;
+ ZSTD_cLevelToCCtxParams(params);
+ params->cParams.strategy = (ZSTD_strategy)value;
return 0;
case ZSTD_p_contentSizeFlag :
- DEBUGLOG(5, "set content size flag = %u", (value>0));
/* Content size written in frame header _when known_ (default:1) */
- cctx->requestedParams.fParams.contentSizeFlag = value>0;
+ DEBUGLOG(5, "set content size flag = %u", (value>0));
+ params->fParams.contentSizeFlag = value > 0;
return 0;
case ZSTD_p_checksumFlag :
/* A 32-bits content checksum will be calculated and written at end of frame (default:0) */
- cctx->requestedParams.fParams.checksumFlag = value>0;
+ params->fParams.checksumFlag = value > 0;
return 0;
case ZSTD_p_dictIDFlag : /* When applicable, dictionary's dictID is provided in frame header (default:1) */
DEBUGLOG(5, "set dictIDFlag = %u", (value>0));
- cctx->requestedParams.fParams.noDictIDFlag = (value==0);
+ params->fParams.noDictIDFlag = (value == 0);
return 0;
- /* Dictionary parameters */
- case ZSTD_p_dictMode :
- if (cctx->cdict) return ERROR(stage_wrong); /* must be set before loading */
- /* restrict dictionary mode, to "rawContent" or "fullDict" only */
- ZSTD_STATIC_ASSERT((U32)ZSTD_dm_fullDict > (U32)ZSTD_dm_rawContent);
- if (value > (unsigned)ZSTD_dm_fullDict)
- return ERROR(parameter_outOfBound);
- cctx->dictMode = (ZSTD_dictMode_e)value;
+ case ZSTD_p_forceMaxWindow :
+ params->forceWindow = value > 0;
return 0;
- case ZSTD_p_refDictContent :
- if (cctx->cdict) return ERROR(stage_wrong); /* must be set before loading */
- /* dictionary content will be referenced, instead of copied */
- cctx->dictContentByRef = value>0;
+ case ZSTD_p_nbThreads :
+ if (value == 0) return 0;
+#ifndef ZSTD_MULTITHREAD
+ if (value > 1) return ERROR(parameter_unsupported);
return 0;
+#else
+ return ZSTDMT_initializeCCtxParameters(params, value);
+#endif
- case ZSTD_p_forceMaxWindow : /* Force back-references to remain < windowSize,
- * even when referencing into Dictionary content
- * default : 0 when using a CDict, 1 when using a Prefix */
- cctx->forceWindow = value>0;
- cctx->loadedDictEnd = 0;
- return 0;
+ case ZSTD_p_jobSize :
+#ifndef ZSTD_MULTITHREAD
+ return ERROR(parameter_unsupported);
+#else
+ if (params->nbThreads <= 1) return ERROR(parameter_unsupported);
+ return ZSTDMT_CCtxParam_setMTCtxParameter(params, ZSTDMT_p_sectionSize, value);
+#endif
- case ZSTD_p_nbThreads:
- if (value==0) return 0;
- DEBUGLOG(5, " setting nbThreads : %u", value);
+ case ZSTD_p_overlapSizeLog :
#ifndef ZSTD_MULTITHREAD
- if (value > 1) return ERROR(parameter_unsupported);
+ return ERROR(parameter_unsupported);
+#else
+ if (params->nbThreads <= 1) return ERROR(parameter_unsupported);
+ return ZSTDMT_CCtxParam_setMTCtxParameter(params, ZSTDMT_p_overlapSectionLog, value);
#endif
- if ((value>1) && (cctx->nbThreads != value)) {
- if (cctx->staticSize) /* MT not compatible with static alloc */
- return ERROR(parameter_unsupported);
- ZSTDMT_freeCCtx(cctx->mtctx);
- cctx->nbThreads = 1;
- cctx->mtctx = ZSTDMT_createCCtx_advanced(value, cctx->customMem);
- if (cctx->mtctx == NULL) return ERROR(memory_allocation);
+
+ case ZSTD_p_enableLongDistanceMatching :
+ if (value != 0) {
+ ZSTD_cLevelToCCtxParams(params);
+ params->cParams.windowLog = ZSTD_LDM_DEFAULT_WINDOW_LOG;
}
- cctx->nbThreads = value;
+ return ZSTD_ldm_initializeParameters(&params->ldmParams, value);
+
+ case ZSTD_p_ldmHashLog :
+ if (value == 0) return 0;
+ CLAMPCHECK(value, ZSTD_HASHLOG_MIN, ZSTD_HASHLOG_MAX);
+ params->ldmParams.hashLog = value;
return 0;
- case ZSTD_p_jobSize:
- if (cctx->nbThreads <= 1) return ERROR(parameter_unsupported);
- assert(cctx->mtctx != NULL);
- return ZSTDMT_setMTCtxParameter(cctx->mtctx, ZSTDMT_p_sectionSize, value);
+ case ZSTD_p_ldmMinMatch :
+ if (value == 0) return 0;
+ CLAMPCHECK(value, ZSTD_LDM_MINMATCH_MIN, ZSTD_LDM_MINMATCH_MAX);
+ params->ldmParams.minMatchLength = value;
+ return 0;
- case ZSTD_p_overlapSizeLog:
- DEBUGLOG(5, " setting overlap with nbThreads == %u", cctx->nbThreads);
- if (cctx->nbThreads <= 1) return ERROR(parameter_unsupported);
- assert(cctx->mtctx != NULL);
- return ZSTDMT_setMTCtxParameter(cctx->mtctx, ZSTDMT_p_overlapSectionLog, value);
+ case ZSTD_p_ldmBucketSizeLog :
+ if (value > ZSTD_LDM_BUCKETSIZELOG_MAX) {
+ return ERROR(parameter_outOfBound);
+ }
+ params->ldmParams.bucketSizeLog = value;
+ return 0;
+
+ case ZSTD_p_ldmHashEveryLog :
+ if (value > ZSTD_WINDOWLOG_MAX - ZSTD_HASHLOG_MIN) {
+ return ERROR(parameter_outOfBound);
+ }
+ params->ldmParams.hashEveryLog = value;
+ return 0;
default: return ERROR(parameter_unsupported);
}
}
+/**
+ * This function should be updated whenever ZSTD_CCtx_params is updated.
+ * Parameters are copied manually before the dictionary is loaded.
+ * The multithreading parameters jobSize and overlapSizeLog are set only if
+ * nbThreads > 1.
+ *
+ * Pledged srcSize is treated as unknown.
+ */
+size_t ZSTD_CCtx_setParametersUsingCCtxParams(
+ ZSTD_CCtx* cctx, const ZSTD_CCtx_params* params)
+{
+ if (cctx->streamStage != zcss_init) return ERROR(stage_wrong);
+ if (cctx->cdict) return ERROR(stage_wrong);
+
+ /* Assume the compression and frame parameters are validated */
+ cctx->requestedParams.cParams = params->cParams;
+ cctx->requestedParams.fParams = params->fParams;
+ cctx->requestedParams.compressionLevel = params->compressionLevel;
+
+ /* Set force window explicitly since it sets cctx->loadedDictEnd */
+ CHECK_F( ZSTD_CCtx_setParameter(
+ cctx, ZSTD_p_forceMaxWindow, params->forceWindow) );
+
+ /* Set multithreading parameters explicitly */
+ CHECK_F( ZSTD_CCtx_setParameter(cctx, ZSTD_p_nbThreads, params->nbThreads) );
+ if (params->nbThreads > 1) {
+ CHECK_F( ZSTD_CCtx_setParameter(cctx, ZSTD_p_jobSize, params->jobSize) );
+ CHECK_F( ZSTD_CCtx_setParameter(
+ cctx, ZSTD_p_overlapSizeLog, params->overlapSizeLog) );
+ }
+
+ /* Copy long distance matching parameters */
+ cctx->requestedParams.ldmParams = params->ldmParams;
+
+ /* customMem is used only for create/free params and can be ignored */
+ return 0;
+}
+
ZSTDLIB_API size_t ZSTD_CCtx_setPledgedSrcSize(ZSTD_CCtx* cctx, unsigned long long pledgedSrcSize)
{
- DEBUGLOG(5, " setting pledgedSrcSize to %u", (U32)pledgedSrcSize);
+ DEBUGLOG(4, " setting pledgedSrcSize to %u", (U32)pledgedSrcSize);
if (cctx->streamStage != zcss_init) return ERROR(stage_wrong);
cctx->pledgedSrcSizePlusOne = pledgedSrcSize+1;
return 0;
}
-ZSTDLIB_API size_t ZSTD_CCtx_loadDictionary(ZSTD_CCtx* cctx, const void* dict, size_t dictSize)
+size_t ZSTD_CCtx_loadDictionary_advanced(
+ ZSTD_CCtx* cctx, const void* dict, size_t dictSize,
+ ZSTD_dictLoadMethod_e dictLoadMethod, ZSTD_dictMode_e dictMode)
{
if (cctx->streamStage != zcss_init) return ERROR(stage_wrong);
if (cctx->staticSize) return ERROR(memory_allocation); /* no malloc for static CCtx */
- DEBUGLOG(5, "load dictionary of size %u", (U32)dictSize);
+ DEBUGLOG(4, "load dictionary of size %u", (U32)dictSize);
ZSTD_freeCDict(cctx->cdictLocal); /* in case one already exists */
if (dict==NULL || dictSize==0) { /* no dictionary mode */
cctx->cdictLocal = NULL;
cctx->cdict = NULL;
} else {
ZSTD_compressionParameters const cParams =
- cctx->compressionLevel == ZSTD_CLEVEL_CUSTOM ?
- cctx->requestedParams.cParams :
- ZSTD_getCParams(cctx->compressionLevel, 0, dictSize);
+ ZSTD_getCParamsFromCCtxParams(cctx->requestedParams, 0, dictSize);
cctx->cdictLocal = ZSTD_createCDict_advanced(
dict, dictSize,
- cctx->dictContentByRef, cctx->dictMode,
+ dictLoadMethod, dictMode,
cParams, cctx->customMem);
cctx->cdict = cctx->cdictLocal;
if (cctx->cdictLocal == NULL)
@@ -407,21 +542,41 @@ ZSTDLIB_API size_t ZSTD_CCtx_loadDictionary(ZSTD_CCtx* cctx, const void* dict, s
return 0;
}
+ZSTDLIB_API size_t ZSTD_CCtx_loadDictionary_byReference(
+ ZSTD_CCtx* cctx, const void* dict, size_t dictSize)
+{
+ return ZSTD_CCtx_loadDictionary_advanced(
+ cctx, dict, dictSize, ZSTD_dlm_byRef, ZSTD_dm_auto);
+}
+
+ZSTDLIB_API size_t ZSTD_CCtx_loadDictionary(ZSTD_CCtx* cctx, const void* dict, size_t dictSize)
+{
+ return ZSTD_CCtx_loadDictionary_advanced(
+ cctx, dict, dictSize, ZSTD_dlm_byCopy, ZSTD_dm_auto);
+}
+
+
size_t ZSTD_CCtx_refCDict(ZSTD_CCtx* cctx, const ZSTD_CDict* cdict)
{
if (cctx->streamStage != zcss_init) return ERROR(stage_wrong);
cctx->cdict = cdict;
- cctx->prefix = NULL; /* exclusive */
- cctx->prefixSize = 0;
+ memset(&cctx->prefixDict, 0, sizeof(cctx->prefixDict)); /* exclusive */
return 0;
}
size_t ZSTD_CCtx_refPrefix(ZSTD_CCtx* cctx, const void* prefix, size_t prefixSize)
{
+ return ZSTD_CCtx_refPrefix_advanced(cctx, prefix, prefixSize, ZSTD_dm_rawContent);
+}
+
+size_t ZSTD_CCtx_refPrefix_advanced(
+ ZSTD_CCtx* cctx, const void* prefix, size_t prefixSize, ZSTD_dictMode_e dictMode)
+{
if (cctx->streamStage != zcss_init) return ERROR(stage_wrong);
cctx->cdict = NULL; /* prefix discards any prior cdict */
- cctx->prefix = prefix;
- cctx->prefixSize = prefixSize;
+ cctx->prefixDict.dict = prefix;
+ cctx->prefixDict.dictSize = prefixSize;
+ cctx->prefixDict.dictMode = dictMode;
return 0;
}
@@ -484,28 +639,37 @@ static U32 ZSTD_cycleLog(U32 hashLog, ZSTD_strategy strat)
/** ZSTD_adjustCParams_internal() :
optimize `cPar` for a given input (`srcSize` and `dictSize`).
- mostly downsizing to reduce memory consumption and initialization.
- Both `srcSize` and `dictSize` are optional (use 0 if unknown),
- but if both are 0, no optimization can be done.
- Note : cPar is considered validated at this stage. Use ZSTD_checkParams() to ensure that. */
+ mostly downsizing to reduce memory consumption and initialization latency.
+ Both `srcSize` and `dictSize` are optional (use 0 if unknown).
+ Note : cPar is considered validated at this stage. Use ZSTD_checkCParams() to ensure that condition. */
ZSTD_compressionParameters ZSTD_adjustCParams_internal(ZSTD_compressionParameters cPar, unsigned long long srcSize, size_t dictSize)
{
+ static const U64 minSrcSize = 513; /* (1<<9) + 1 */
+ static const U64 maxWindowResize = 1ULL << (ZSTD_WINDOWLOG_MAX-1);
assert(ZSTD_checkCParams(cPar)==0);
- if (srcSize+dictSize == 0) return cPar; /* no size information available : no adjustment */
-
- /* resize params, to use less memory when necessary */
- { U32 const minSrcSize = (srcSize==0) ? 500 : 0;
- U64 const rSize = srcSize + dictSize + minSrcSize;
- if (rSize < ((U64)1<<ZSTD_WINDOWLOG_MAX)) {
- U32 const srcLog = MAX(ZSTD_HASHLOG_MIN, ZSTD_highbit32((U32)(rSize)-1) + 1);
- if (cPar.windowLog > srcLog) cPar.windowLog = srcLog;
- } }
+
+ if (dictSize && (srcSize+1<2) /* srcSize unknown */ )
+ srcSize = minSrcSize; /* presumed small when there is a dictionary */
+ else if (srcSize == 0)
+ srcSize = ZSTD_CONTENTSIZE_UNKNOWN; /* 0 == unknown : presumed large */
+
+ /* resize windowLog if input is small enough, to use less memory */
+ if ( (srcSize < maxWindowResize)
+ && (dictSize < maxWindowResize) ) {
+ U32 const tSize = (U32)(srcSize + dictSize);
+ static U32 const hashSizeMin = 1 << ZSTD_HASHLOG_MIN;
+ U32 const srcLog = (tSize < hashSizeMin) ? ZSTD_HASHLOG_MIN :
+ ZSTD_highbit32(tSize-1) + 1;
+ if (cPar.windowLog > srcLog) cPar.windowLog = srcLog;
+ }
if (cPar.hashLog > cPar.windowLog) cPar.hashLog = cPar.windowLog;
{ U32 const cycleLog = ZSTD_cycleLog(cPar.chainLog, cPar.strategy);
- if (cycleLog > cPar.windowLog) cPar.chainLog -= (cycleLog - cPar.windowLog);
+ if (cycleLog > cPar.windowLog)
+ cPar.chainLog -= (cycleLog - cPar.windowLog);
}
- if (cPar.windowLog < ZSTD_WINDOWLOG_ABSOLUTEMIN) cPar.windowLog = ZSTD_WINDOWLOG_ABSOLUTEMIN; /* required for frame header */
+ if (cPar.windowLog < ZSTD_WINDOWLOG_ABSOLUTEMIN)
+ cPar.windowLog = ZSTD_WINDOWLOG_ABSOLUTEMIN; /* required for frame header */
return cPar;
}
@@ -516,56 +680,81 @@ ZSTD_compressionParameters ZSTD_adjustCParams(ZSTD_compressionParameters cPar, u
return ZSTD_adjustCParams_internal(cPar, srcSize, dictSize);
}
-
-size_t ZSTD_estimateCCtxSize_advanced(ZSTD_compressionParameters cParams)
+size_t ZSTD_estimateCCtxSize_usingCCtxParams(const ZSTD_CCtx_params* params)
{
- size_t const blockSize = MIN(ZSTD_BLOCKSIZE_MAX, (size_t)1 << cParams.windowLog);
- U32 const divider = (cParams.searchLength==3) ? 3 : 4;
- size_t const maxNbSeq = blockSize / divider;
- size_t const tokenSpace = blockSize + 11*maxNbSeq;
+ /* Estimate CCtx size is supported for single-threaded compression only. */
+ if (params->nbThreads > 1) { return ERROR(GENERIC); }
+ { ZSTD_compressionParameters const cParams =
+ ZSTD_getCParamsFromCCtxParams(*params, 0, 0);
+ size_t const blockSize = MIN(ZSTD_BLOCKSIZE_MAX, (size_t)1 << cParams.windowLog);
+ U32 const divider = (cParams.searchLength==3) ? 3 : 4;
+ size_t const maxNbSeq = blockSize / divider;
+ size_t const tokenSpace = blockSize + 11*maxNbSeq;
+ size_t const chainSize =
+ (cParams.strategy == ZSTD_fast) ? 0 : ((size_t)1 << cParams.chainLog);
+ size_t const hSize = ((size_t)1) << cParams.hashLog;
+ U32 const hashLog3 = (cParams.searchLength>3) ?
+ 0 : MIN(ZSTD_HASHLOG3_MAX, cParams.windowLog);
+ size_t const h3Size = ((size_t)1) << hashLog3;
+ size_t const entropySpace = sizeof(ZSTD_entropyCTables_t);
+ size_t const tableSpace = (chainSize + hSize + h3Size) * sizeof(U32);
+
+ size_t const optBudget =
+ ((MaxML+1) + (MaxLL+1) + (MaxOff+1) + (1<<Litbits))*sizeof(U32)
+ + (ZSTD_OPT_NUM+1)*(sizeof(ZSTD_match_t) + sizeof(ZSTD_optimal_t));
+ size_t const optSpace = ((cParams.strategy == ZSTD_btopt) || (cParams.strategy == ZSTD_btultra)) ? optBudget : 0;
- size_t const chainSize = (cParams.strategy == ZSTD_fast) ? 0 : (1 << cParams.chainLog);
- size_t const hSize = ((size_t)1) << cParams.hashLog;
- U32 const hashLog3 = (cParams.searchLength>3) ? 0 : MIN(ZSTD_HASHLOG3_MAX, cParams.windowLog);
- size_t const h3Size = ((size_t)1) << hashLog3;
- size_t const entropySpace = sizeof(ZSTD_entropyCTables_t);
- size_t const tableSpace = (chainSize + hSize + h3Size) * sizeof(U32);
+ size_t const ldmSpace = params->ldmParams.enableLdm ?
+ ZSTD_ldm_getTableSize(params->ldmParams.hashLog,
+ params->ldmParams.bucketSizeLog) : 0;
- size_t const optBudget = ((MaxML+1) + (MaxLL+1) + (MaxOff+1) + (1<<Litbits))*sizeof(U32)
- + (ZSTD_OPT_NUM+1)*(sizeof(ZSTD_match_t) + sizeof(ZSTD_optimal_t));
- size_t const optSpace = ((cParams.strategy == ZSTD_btopt) || (cParams.strategy == ZSTD_btultra)) ? optBudget : 0;
- size_t const neededSpace = entropySpace + tableSpace + tokenSpace + optSpace;
+ size_t const neededSpace = entropySpace + tableSpace + tokenSpace +
+ optSpace + ldmSpace;
- DEBUGLOG(5, "sizeof(ZSTD_CCtx) : %u", (U32)sizeof(ZSTD_CCtx));
- DEBUGLOG(5, "estimate workSpace : %u", (U32)neededSpace);
- return sizeof(ZSTD_CCtx) + neededSpace;
+ DEBUGLOG(5, "sizeof(ZSTD_CCtx) : %u", (U32)sizeof(ZSTD_CCtx));
+ DEBUGLOG(5, "estimate workSpace : %u", (U32)neededSpace);
+ return sizeof(ZSTD_CCtx) + neededSpace;
+ }
+}
+
+size_t ZSTD_estimateCCtxSize_usingCParams(ZSTD_compressionParameters cParams)
+{
+ ZSTD_CCtx_params const params = ZSTD_makeCCtxParamsFromCParams(cParams);
+ return ZSTD_estimateCCtxSize_usingCCtxParams(&params);
}
size_t ZSTD_estimateCCtxSize(int compressionLevel)
{
ZSTD_compressionParameters const cParams = ZSTD_getCParams(compressionLevel, 0, 0);
- return ZSTD_estimateCCtxSize_advanced(cParams);
+ return ZSTD_estimateCCtxSize_usingCParams(cParams);
}
-size_t ZSTD_estimateCStreamSize_advanced(ZSTD_compressionParameters cParams)
+size_t ZSTD_estimateCStreamSize_usingCCtxParams(const ZSTD_CCtx_params* params)
{
- size_t const CCtxSize = ZSTD_estimateCCtxSize_advanced(cParams);
- size_t const blockSize = MIN(ZSTD_BLOCKSIZE_MAX, (size_t)1 << cParams.windowLog);
- size_t const inBuffSize = ((size_t)1 << cParams.windowLog) + blockSize;
- size_t const outBuffSize = ZSTD_compressBound(blockSize) + 1;
- size_t const streamingSize = inBuffSize + outBuffSize;
+ if (params->nbThreads > 1) { return ERROR(GENERIC); }
+ { size_t const CCtxSize = ZSTD_estimateCCtxSize_usingCCtxParams(params);
+ size_t const blockSize = MIN(ZSTD_BLOCKSIZE_MAX, (size_t)1 << params->cParams.windowLog);
+ size_t const inBuffSize = ((size_t)1 << params->cParams.windowLog) + blockSize;
+ size_t const outBuffSize = ZSTD_compressBound(blockSize) + 1;
+ size_t const streamingSize = inBuffSize + outBuffSize;
- return CCtxSize + streamingSize;
+ return CCtxSize + streamingSize;
+ }
+}
+
+size_t ZSTD_estimateCStreamSize_usingCParams(ZSTD_compressionParameters cParams)
+{
+ ZSTD_CCtx_params const params = ZSTD_makeCCtxParamsFromCParams(cParams);
+ return ZSTD_estimateCStreamSize_usingCCtxParams(&params);
}
size_t ZSTD_estimateCStreamSize(int compressionLevel) {
ZSTD_compressionParameters const cParams = ZSTD_getCParams(compressionLevel, 0, 0);
- return ZSTD_estimateCStreamSize_advanced(cParams);
+ return ZSTD_estimateCStreamSize_usingCParams(cParams);
}
-
-static U32 ZSTD_equivalentParams(ZSTD_compressionParameters cParams1,
- ZSTD_compressionParameters cParams2)
+static U32 ZSTD_equivalentCParams(ZSTD_compressionParameters cParams1,
+ ZSTD_compressionParameters cParams2)
{
U32 bslog1 = MIN(cParams1.windowLog, ZSTD_BLOCKSIZELOG_MAX);
U32 bslog2 = MIN(cParams2.windowLog, ZSTD_BLOCKSIZELOG_MAX);
@@ -576,18 +765,39 @@ static U32 ZSTD_equivalentParams(ZSTD_compressionParameters cParams1,
& ((cParams1.searchLength==3) == (cParams2.searchLength==3)); /* hashlog3 space */
}
+/** The parameters are equivalent if ldm is not enabled in both sets or
+ * all the parameters are equivalent. */
+static U32 ZSTD_equivalentLdmParams(ldmParams_t ldmParams1,
+ ldmParams_t ldmParams2)
+{
+ return (!ldmParams1.enableLdm && !ldmParams2.enableLdm) ||
+ (ldmParams1.enableLdm == ldmParams2.enableLdm &&
+ ldmParams1.hashLog == ldmParams2.hashLog &&
+ ldmParams1.bucketSizeLog == ldmParams2.bucketSizeLog &&
+ ldmParams1.minMatchLength == ldmParams2.minMatchLength &&
+ ldmParams1.hashEveryLog == ldmParams2.hashEveryLog);
+}
+
+/** Equivalence for resetCCtx purposes */
+static U32 ZSTD_equivalentParams(ZSTD_CCtx_params params1,
+ ZSTD_CCtx_params params2)
+{
+ return ZSTD_equivalentCParams(params1.cParams, params2.cParams) &&
+ ZSTD_equivalentLdmParams(params1.ldmParams, params2.ldmParams);
+}
+
/*! ZSTD_continueCCtx() :
* reuse CCtx without reset (note : requires no dictionary) */
-static size_t ZSTD_continueCCtx(ZSTD_CCtx* cctx, ZSTD_parameters params, U64 pledgedSrcSize)
+static size_t ZSTD_continueCCtx(ZSTD_CCtx* cctx, ZSTD_CCtx_params params, U64 pledgedSrcSize)
{
U32 const end = (U32)(cctx->nextSrc - cctx->base);
- DEBUGLOG(5, "continue mode");
+ DEBUGLOG(4, "continue mode");
cctx->appliedParams = params;
cctx->pledgedSrcSizePlusOne = pledgedSrcSize+1;
cctx->consumedSrcSize = 0;
if (pledgedSrcSize == ZSTD_CONTENTSIZE_UNKNOWN)
cctx->appliedParams.fParams.contentSizeFlag = 0;
- DEBUGLOG(5, "pledged content size : %u ; flag : %u",
+ DEBUGLOG(4, "pledged content size : %u ; flag : %u",
(U32)pledgedSrcSize, cctx->appliedParams.fParams.contentSizeFlag);
cctx->lowLimit = end;
cctx->dictLimit = end;
@@ -607,15 +817,19 @@ typedef enum { ZSTDb_not_buffered, ZSTDb_buffered } ZSTD_buffered_policy_e;
/*! ZSTD_resetCCtx_internal() :
note : `params` are assumed fully validated at this stage */
static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
- ZSTD_parameters params, U64 pledgedSrcSize,
+ ZSTD_CCtx_params params, U64 pledgedSrcSize,
ZSTD_compResetPolicy_e const crp,
ZSTD_buffered_policy_e const zbuff)
{
+ DEBUGLOG(4, "ZSTD_resetCCtx_internal");
assert(!ZSTD_isError(ZSTD_checkCParams(params.cParams)));
+ DEBUGLOG(4, "pledgedSrcSize: %u", (U32)pledgedSrcSize);
if (crp == ZSTDcrp_continue) {
- if (ZSTD_equivalentParams(params.cParams, zc->appliedParams.cParams)) {
- DEBUGLOG(5, "ZSTD_equivalentParams()==1");
+ if (ZSTD_equivalentParams(params, zc->appliedParams)) {
+ DEBUGLOG(4, "ZSTD_equivalentParams()==1");
+ assert(!(params.ldmParams.enableLdm &&
+ params.ldmParams.hashEveryLog == ZSTD_LDM_HASHEVERYLOG_NOTSET));
zc->entropy->hufCTable_repeatMode = HUF_repeat_none;
zc->entropy->offcode_repeatMode = FSE_repeat_none;
zc->entropy->matchlength_repeatMode = FSE_repeat_none;
@@ -623,12 +837,21 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
return ZSTD_continueCCtx(zc, params, pledgedSrcSize);
} }
+ if (params.ldmParams.enableLdm) {
+ /* Adjust long distance matching parameters */
+ ZSTD_ldm_adjustParameters(&params.ldmParams, params.cParams.windowLog);
+ assert(params.ldmParams.hashLog >= params.ldmParams.bucketSizeLog);
+ assert(params.ldmParams.hashEveryLog < 32);
+ zc->ldmState.hashPower =
+ ZSTD_ldm_getHashPower(params.ldmParams.minMatchLength);
+ }
+
{ size_t const blockSize = MIN(ZSTD_BLOCKSIZE_MAX, (size_t)1 << params.cParams.windowLog);
U32 const divider = (params.cParams.searchLength==3) ? 3 : 4;
size_t const maxNbSeq = blockSize / divider;
size_t const tokenSpace = blockSize + 11*maxNbSeq;
size_t const chainSize = (params.cParams.strategy == ZSTD_fast) ?
- 0 : (1 << params.cParams.chainLog);
+ 0 : ((size_t)1 << params.cParams.chainLog);
size_t const hSize = ((size_t)1) << params.cParams.hashLog;
U32 const hashLog3 = (params.cParams.searchLength>3) ?
0 : MIN(ZSTD_HASHLOG3_MAX, params.cParams.windowLog);
@@ -646,10 +869,13 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
|| (params.cParams.strategy == ZSTD_btultra)) ?
optPotentialSpace : 0;
size_t const bufferSpace = buffInSize + buffOutSize;
- size_t const neededSpace = entropySpace + optSpace + tableSpace
- + tokenSpace + bufferSpace;
+ size_t const ldmSpace = params.ldmParams.enableLdm
+ ? ZSTD_ldm_getTableSize(params.ldmParams.hashLog, params.ldmParams.bucketSizeLog)
+ : 0;
+ size_t const neededSpace = entropySpace + optSpace + ldmSpace +
+ tableSpace + tokenSpace + bufferSpace;
- if (zc->workSpaceSize < neededSpace) { /* too small : resize /*/
+ if (zc->workSpaceSize < neededSpace) { /* too small : resize */
DEBUGLOG(5, "Need to update workSpaceSize from %uK to %uK \n",
(unsigned)zc->workSpaceSize>>10,
(unsigned)neededSpace>>10);
@@ -714,6 +940,16 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
ptr = zc->optState.priceTable + ZSTD_OPT_NUM+1;
}
+ /* ldm hash table */
+ /* initialize bucketOffsets table later for pointer alignment */
+ if (params.ldmParams.enableLdm) {
+ size_t const ldmHSize = ((size_t)1) << params.ldmParams.hashLog;
+ memset(ptr, 0, ldmHSize * sizeof(ldmEntry_t));
+ assert(((size_t)ptr & 3) == 0); /* ensure ptr is properly aligned */
+ zc->ldmState.hashTable = (ldmEntry_t*)ptr;
+ ptr = zc->ldmState.hashTable + ldmHSize;
+ }
+
/* table Space */
if (crp!=ZSTDcrp_noMemset) memset(ptr, 0, tableSpace); /* reset tables only */
assert(((size_t)ptr & 3) == 0); /* ensure ptr is properly aligned */
@@ -731,6 +967,16 @@ static size_t ZSTD_resetCCtx_internal(ZSTD_CCtx* zc,
zc->seqStore.litStart = zc->seqStore.ofCode + maxNbSeq;
ptr = zc->seqStore.litStart + blockSize;
+ /* ldm bucketOffsets table */
+ if (params.ldmParams.enableLdm) {
+ size_t const ldmBucketSize =
+ ((size_t)1) << (params.ldmParams.hashLog -
+ params.ldmParams.bucketSizeLog);
+ memset(ptr, 0, ldmBucketSize);
+ zc->ldmState.bucketOffsets = (BYTE*)ptr;
+ ptr = zc->ldmState.bucketOffsets + ldmBucketSize;
+ }
+
/* buffers */
zc->inBuffSize = buffInSize;
zc->inBuff = (char*)ptr;
@@ -753,6 +999,8 @@ void ZSTD_invalidateRepCodes(ZSTD_CCtx* cctx) {
/*! ZSTD_copyCCtx_internal() :
* Duplicate an existing context `srcCCtx` into another one `dstCCtx`.
+ * The "context", in this case, refers to the hash and chain tables, entropy
+ * tables, and dictionary offsets.
* Only works during stage ZSTDcs_init (i.e. after creation, but before first call to ZSTD_compressContinue()).
* pledgedSrcSize=0 means "empty" if fParams.contentSizeFlag=1
* @return : 0, or an error code */
@@ -766,14 +1014,16 @@ static size_t ZSTD_copyCCtx_internal(ZSTD_CCtx* dstCCtx,
if (srcCCtx->stage!=ZSTDcs_init) return ERROR(stage_wrong);
memcpy(&dstCCtx->customMem, &srcCCtx->customMem, sizeof(ZSTD_customMem));
- { ZSTD_parameters params = srcCCtx->appliedParams;
+ { ZSTD_CCtx_params params = dstCCtx->requestedParams;
+ /* Copy only compression parameters related to tables. */
+ params.cParams = srcCCtx->appliedParams.cParams;
params.fParams = fParams;
ZSTD_resetCCtx_internal(dstCCtx, params, pledgedSrcSize,
ZSTDcrp_noMemset, zbuff);
}
/* copy tables */
- { size_t const chainSize = (srcCCtx->appliedParams.cParams.strategy == ZSTD_fast) ? 0 : (1 << srcCCtx->appliedParams.cParams.chainLog);
+ { size_t const chainSize = (srcCCtx->appliedParams.cParams.strategy == ZSTD_fast) ? 0 : ((size_t)1 << srcCCtx->appliedParams.cParams.chainLog);
size_t const hSize = (size_t)1 << srcCCtx->appliedParams.cParams.hashLog;
size_t const h3Size = (size_t)1 << srcCCtx->hashLog3;
size_t const tableSpace = (chainSize + hSize + h3Size) * sizeof(U32);
@@ -826,18 +1076,36 @@ static void ZSTD_reduceTable (U32* const table, U32 const size, U32 const reduce
}
}
+/*! ZSTD_ldm_reduceTable() :
+ * reduce table indexes by `reducerValue` */
+static void ZSTD_ldm_reduceTable(ldmEntry_t* const table, U32 const size,
+ U32 const reducerValue)
+{
+ U32 u;
+ for (u = 0; u < size; u++) {
+ if (table[u].offset < reducerValue) table[u].offset = 0;
+ else table[u].offset -= reducerValue;
+ }
+}
+
/*! ZSTD_reduceIndex() :
* rescale all indexes to avoid future overflow (indexes are U32) */
static void ZSTD_reduceIndex (ZSTD_CCtx* zc, const U32 reducerValue)
{
- { U32 const hSize = 1 << zc->appliedParams.cParams.hashLog;
+ { U32 const hSize = (U32)1 << zc->appliedParams.cParams.hashLog;
ZSTD_reduceTable(zc->hashTable, hSize, reducerValue); }
- { U32 const chainSize = (zc->appliedParams.cParams.strategy == ZSTD_fast) ? 0 : (1 << zc->appliedParams.cParams.chainLog);
+ { U32 const chainSize = (zc->appliedParams.cParams.strategy == ZSTD_fast) ? 0 : ((U32)1 << zc->appliedParams.cParams.chainLog);
ZSTD_reduceTable(zc->chainTable, chainSize, reducerValue); }
- { U32 const h3Size = (zc->hashLog3) ? 1 << zc->hashLog3 : 0;
+ { U32 const h3Size = (zc->hashLog3) ? (U32)1 << zc->hashLog3 : 0;
ZSTD_reduceTable(zc->hashTable3, h3Size, reducerValue); }
+
+ { if (zc->appliedParams.ldmParams.enableLdm) {
+ U32 const ldmHSize = (U32)1 << zc->appliedParams.ldmParams.hashLog;
+ ZSTD_ldm_reduceTable(zc->ldmState.hashTable, ldmHSize, reducerValue);
+ }
+ }
}
@@ -976,24 +1244,6 @@ static size_t ZSTD_compressLiterals (ZSTD_entropyCTables_t * entropy,
return lhSize+cLitSize;
}
-static const BYTE LL_Code[64] = { 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 16, 17, 17, 18, 18, 19, 19,
- 20, 20, 20, 20, 21, 21, 21, 21,
- 22, 22, 22, 22, 22, 22, 22, 22,
- 23, 23, 23, 23, 23, 23, 23, 23,
- 24, 24, 24, 24, 24, 24, 24, 24,
- 24, 24, 24, 24, 24, 24, 24, 24 };
-
-static const BYTE ML_Code[128] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 36, 36, 37, 37, 37, 37,
- 38, 38, 38, 38, 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 39,
- 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
- 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42 };
-
void ZSTD_seqToCodes(const seqStore_t* seqStorePtr)
{
@@ -1018,20 +1268,30 @@ void ZSTD_seqToCodes(const seqStore_t* seqStorePtr)
mlCodeTable[seqStorePtr->longLengthPos] = MaxML;
}
-MEM_STATIC symbolEncodingType_e ZSTD_selectEncodingType(FSE_repeat* repeatMode,
- size_t const mostFrequent, size_t nbSeq, U32 defaultNormLog)
+typedef enum {
+ ZSTD_defaultDisallowed = 0,
+ ZSTD_defaultAllowed = 1
+} ZSTD_defaultPolicy_e;
+
+MEM_STATIC symbolEncodingType_e ZSTD_selectEncodingType(
+ FSE_repeat* repeatMode, size_t const mostFrequent, size_t nbSeq,
+ U32 defaultNormLog, ZSTD_defaultPolicy_e const isDefaultAllowed)
{
#define MIN_SEQ_FOR_DYNAMIC_FSE 64
#define MAX_SEQ_FOR_STATIC_FSE 1000
-
- if ((mostFrequent == nbSeq) && (nbSeq > 2)) {
+ ZSTD_STATIC_ASSERT(ZSTD_defaultDisallowed == 0 && ZSTD_defaultAllowed != 0);
+ if ((mostFrequent == nbSeq) && (!isDefaultAllowed || nbSeq > 2)) {
+ /* Prefer set_basic over set_rle when there are 2 or less symbols,
+ * since RLE uses 1 byte, but set_basic uses 5-6 bits per symbol.
+ * If basic encoding isn't possible, always choose RLE.
+ */
*repeatMode = FSE_repeat_check;
return set_rle;
}
- if ((*repeatMode == FSE_repeat_valid) && (nbSeq < MAX_SEQ_FOR_STATIC_FSE)) {
+ if (isDefaultAllowed && (*repeatMode == FSE_repeat_valid) && (nbSeq < MAX_SEQ_FOR_STATIC_FSE)) {
return set_repeat;
}
- if ((nbSeq < MIN_SEQ_FOR_DYNAMIC_FSE) || (mostFrequent < (nbSeq >> (defaultNormLog-1)))) {
+ if (isDefaultAllowed && ((nbSeq < MIN_SEQ_FOR_DYNAMIC_FSE) || (mostFrequent < (nbSeq >> (defaultNormLog-1))))) {
*repeatMode = FSE_repeat_valid;
return set_basic;
}
@@ -1067,6 +1327,7 @@ MEM_STATIC size_t ZSTD_buildCTable(void* dst, size_t dstCapacity,
count[codeTable[nbSeq-1]]--;
nbSeq_1--;
}
+ assert(nbSeq_1 > 1);
CHECK_F(FSE_normalizeCount(norm, tableLog, count, nbSeq_1, max));
{ size_t const NCountSize = FSE_writeNCount(op, oend - op, norm, max, tableLog); /* overflow protected */
if (FSE_isError(NCountSize)) return NCountSize;
@@ -1131,7 +1392,7 @@ MEM_STATIC size_t ZSTD_encodeSequences(void* dst, size_t dstCapacity,
BIT_addBits(&blockStream, sequences[n].litLength, llBits);
if (MEM_32bits() && ((llBits+mlBits)>24)) BIT_flushBits(&blockStream);
BIT_addBits(&blockStream, sequences[n].matchLength, mlBits);
- if (MEM_32bits()) BIT_flushBits(&blockStream); /* (7)*/
+ if (MEM_32bits() || (ofBits+mlBits+llBits > 56)) BIT_flushBits(&blockStream);
if (longOffsets) {
int const extraBits = ofBits - MIN(ofBits, STREAM_ACCUMULATOR_MIN-1);
if (extraBits) {
@@ -1204,7 +1465,7 @@ MEM_STATIC size_t ZSTD_compressSequences_internal(seqStore_t* seqStorePtr,
/* CTable for Literal Lengths */
{ U32 max = MaxLL;
size_t const mostFrequent = FSE_countFast_wksp(count, &max, llCodeTable, nbSeq, entropy->workspace);
- LLtype = ZSTD_selectEncodingType(&entropy->litlength_repeatMode, mostFrequent, nbSeq, LL_defaultNormLog);
+ LLtype = ZSTD_selectEncodingType(&entropy->litlength_repeatMode, mostFrequent, nbSeq, LL_defaultNormLog, ZSTD_defaultAllowed);
{ size_t const countSize = ZSTD_buildCTable(op, oend - op, CTable_LitLength, LLFSELog, (symbolEncodingType_e)LLtype,
count, max, llCodeTable, nbSeq, LL_defaultNorm, LL_defaultNormLog, MaxLL,
entropy->workspace, sizeof(entropy->workspace));
@@ -1214,9 +1475,11 @@ MEM_STATIC size_t ZSTD_compressSequences_internal(seqStore_t* seqStorePtr,
/* CTable for Offsets */
{ U32 max = MaxOff;
size_t const mostFrequent = FSE_countFast_wksp(count, &max, ofCodeTable, nbSeq, entropy->workspace);
- Offtype = ZSTD_selectEncodingType(&entropy->offcode_repeatMode, mostFrequent, nbSeq, OF_defaultNormLog);
+ /* We can only use the basic table if max <= DefaultMaxOff, otherwise the offsets are too large */
+ ZSTD_defaultPolicy_e const defaultPolicy = max <= DefaultMaxOff ? ZSTD_defaultAllowed : ZSTD_defaultDisallowed;
+ Offtype = ZSTD_selectEncodingType(&entropy->offcode_repeatMode, mostFrequent, nbSeq, OF_defaultNormLog, defaultPolicy);
{ size_t const countSize = ZSTD_buildCTable(op, oend - op, CTable_OffsetBits, OffFSELog, (symbolEncodingType_e)Offtype,
- count, max, ofCodeTable, nbSeq, OF_defaultNorm, OF_defaultNormLog, MaxOff,
+ count, max, ofCodeTable, nbSeq, OF_defaultNorm, OF_defaultNormLog, DefaultMaxOff,
entropy->workspace, sizeof(entropy->workspace));
if (ZSTD_isError(countSize)) return countSize;
op += countSize;
@@ -1224,7 +1487,7 @@ MEM_STATIC size_t ZSTD_compressSequences_internal(seqStore_t* seqStorePtr,
/* CTable for MatchLengths */
{ U32 max = MaxML;
size_t const mostFrequent = FSE_countFast_wksp(count, &max, mlCodeTable, nbSeq, entropy->workspace);
- MLtype = ZSTD_selectEncodingType(&entropy->matchlength_repeatMode, mostFrequent, nbSeq, ML_defaultNormLog);
+ MLtype = ZSTD_selectEncodingType(&entropy->matchlength_repeatMode, mostFrequent, nbSeq, ML_defaultNormLog, ZSTD_defaultAllowed);
{ size_t const countSize = ZSTD_buildCTable(op, oend - op, CTable_MatchLength, MLFSELog, (symbolEncodingType_e)MLtype,
count, max, mlCodeTable, nbSeq, ML_defaultNorm, ML_defaultNormLog, MaxML,
entropy->workspace, sizeof(entropy->workspace));
@@ -1279,1528 +1542,11 @@ MEM_STATIC size_t ZSTD_compressSequences(seqStore_t* seqStorePtr,
return cSize;
}
-
-/*! ZSTD_storeSeq() :
- Store a sequence (literal length, literals, offset code and match length code) into seqStore_t.
- `offsetCode` : distance to match, or 0 == repCode.
- `matchCode` : matchLength - MINMATCH
-*/
-MEM_STATIC void ZSTD_storeSeq(seqStore_t* seqStorePtr, size_t litLength, const void* literals, U32 offsetCode, size_t matchCode)
-{
-#if defined(ZSTD_DEBUG) && (ZSTD_DEBUG >= 6)
- static const BYTE* g_start = NULL;
- U32 const pos = (U32)((const BYTE*)literals - g_start);
- if (g_start==NULL) g_start = (const BYTE*)literals;
- if ((pos > 0) && (pos < 1000000000))
- DEBUGLOG(6, "Cpos %6u :%5u literals & match %3u bytes at distance %6u",
- pos, (U32)litLength, (U32)matchCode+MINMATCH, (U32)offsetCode);
-#endif
- /* copy Literals */
- assert(seqStorePtr->lit + litLength <= seqStorePtr->litStart + 128 KB);
- ZSTD_wildcopy(seqStorePtr->lit, literals, litLength);
- seqStorePtr->lit += litLength;
-
- /* literal Length */
- if (litLength>0xFFFF) {
- seqStorePtr->longLengthID = 1;
- seqStorePtr->longLengthPos = (U32)(seqStorePtr->sequences - seqStorePtr->sequencesStart);
- }
- seqStorePtr->sequences[0].litLength = (U16)litLength;
-
- /* match offset */
- seqStorePtr->sequences[0].offset = offsetCode + 1;
-
- /* match Length */
- if (matchCode>0xFFFF) {
- seqStorePtr->longLengthID = 2;
- seqStorePtr->longLengthPos = (U32)(seqStorePtr->sequences - seqStorePtr->sequencesStart);
- }
- seqStorePtr->sequences[0].matchLength = (U16)matchCode;
-
- seqStorePtr->sequences++;
-}
-
-
-/*-*************************************
-* Match length counter
-***************************************/
-static unsigned ZSTD_NbCommonBytes (register size_t val)
-{
- if (MEM_isLittleEndian()) {
- if (MEM_64bits()) {
-# if defined(_MSC_VER) && defined(_WIN64)
- unsigned long r = 0;
- _BitScanForward64( &r, (U64)val );
- return (unsigned)(r>>3);
-# elif defined(__GNUC__) && (__GNUC__ >= 3)
- return (__builtin_ctzll((U64)val) >> 3);
-# else
- static const int DeBruijnBytePos[64] = { 0, 0, 0, 0, 0, 1, 1, 2,
- 0, 3, 1, 3, 1, 4, 2, 7,
- 0, 2, 3, 6, 1, 5, 3, 5,
- 1, 3, 4, 4, 2, 5, 6, 7,
- 7, 0, 1, 2, 3, 3, 4, 6,
- 2, 6, 5, 5, 3, 4, 5, 6,
- 7, 1, 2, 4, 6, 4, 4, 5,
- 7, 2, 6, 5, 7, 6, 7, 7 };
- return DeBruijnBytePos[((U64)((val & -(long long)val) * 0x0218A392CDABBD3FULL)) >> 58];
-# endif
- } else { /* 32 bits */
-# if defined(_MSC_VER)
- unsigned long r=0;
- _BitScanForward( &r, (U32)val );
- return (unsigned)(r>>3);
-# elif defined(__GNUC__) && (__GNUC__ >= 3)
- return (__builtin_ctz((U32)val) >> 3);
-# else
- static const int DeBruijnBytePos[32] = { 0, 0, 3, 0, 3, 1, 3, 0,
- 3, 2, 2, 1, 3, 2, 0, 1,
- 3, 3, 1, 2, 2, 2, 2, 0,
- 3, 1, 2, 0, 1, 0, 1, 1 };
- return DeBruijnBytePos[((U32)((val & -(S32)val) * 0x077CB531U)) >> 27];
-# endif
- }
- } else { /* Big Endian CPU */
- if (MEM_64bits()) {
-# if defined(_MSC_VER) && defined(_WIN64)
- unsigned long r = 0;
- _BitScanReverse64( &r, val );
- return (unsigned)(r>>3);
-# elif defined(__GNUC__) && (__GNUC__ >= 3)
- return (__builtin_clzll(val) >> 3);
-# else
- unsigned r;
- const unsigned n32 = sizeof(size_t)*4; /* calculate this way due to compiler complaining in 32-bits mode */
- if (!(val>>n32)) { r=4; } else { r=0; val>>=n32; }
- if (!(val>>16)) { r+=2; val>>=8; } else { val>>=24; }
- r += (!val);
- return r;
-# endif
- } else { /* 32 bits */
-# if defined(_MSC_VER)
- unsigned long r = 0;
- _BitScanReverse( &r, (unsigned long)val );
- return (unsigned)(r>>3);
-# elif defined(__GNUC__) && (__GNUC__ >= 3)
- return (__builtin_clz((U32)val) >> 3);
-# else
- unsigned r;
- if (!(val>>16)) { r=2; val>>=8; } else { r=0; val>>=24; }
- r += (!val);
- return r;
-# endif
- } }
-}
-
-
-static size_t ZSTD_count(const BYTE* pIn, const BYTE* pMatch, const BYTE* const pInLimit)
-{
- const BYTE* const pStart = pIn;
- const BYTE* const pInLoopLimit = pInLimit - (sizeof(size_t)-1);
-
- while (pIn < pInLoopLimit) {
- size_t const diff = MEM_readST(pMatch) ^ MEM_readST(pIn);
- if (!diff) { pIn+=sizeof(size_t); pMatch+=sizeof(size_t); continue; }
- pIn += ZSTD_NbCommonBytes(diff);
- return (size_t)(pIn - pStart);
- }
- if (MEM_64bits()) if ((pIn<(pInLimit-3)) && (MEM_read32(pMatch) == MEM_read32(pIn))) { pIn+=4; pMatch+=4; }
- if ((pIn<(pInLimit-1)) && (MEM_read16(pMatch) == MEM_read16(pIn))) { pIn+=2; pMatch+=2; }
- if ((pIn<pInLimit) && (*pMatch == *pIn)) pIn++;
- return (size_t)(pIn - pStart);
-}
-
-/** ZSTD_count_2segments() :
-* can count match length with `ip` & `match` in 2 different segments.
-* convention : on reaching mEnd, match count continue starting from iStart
-*/
-static size_t ZSTD_count_2segments(const BYTE* ip, const BYTE* match, const BYTE* iEnd, const BYTE* mEnd, const BYTE* iStart)
-{
- const BYTE* const vEnd = MIN( ip + (mEnd - match), iEnd);
- size_t const matchLength = ZSTD_count(ip, match, vEnd);
- if (match + matchLength != mEnd) return matchLength;
- return matchLength + ZSTD_count(ip+matchLength, iStart, iEnd);
-}
-
-
-/*-*************************************
-* Hashes
-***************************************/
-static const U32 prime3bytes = 506832829U;
-static U32 ZSTD_hash3(U32 u, U32 h) { return ((u << (32-24)) * prime3bytes) >> (32-h) ; }
-MEM_STATIC size_t ZSTD_hash3Ptr(const void* ptr, U32 h) { return ZSTD_hash3(MEM_readLE32(ptr), h); } /* only in zstd_opt.h */
-
-static const U32 prime4bytes = 2654435761U;
-static U32 ZSTD_hash4(U32 u, U32 h) { return (u * prime4bytes) >> (32-h) ; }
-static size_t ZSTD_hash4Ptr(const void* ptr, U32 h) { return ZSTD_hash4(MEM_read32(ptr), h); }
-
-static const U64 prime5bytes = 889523592379ULL;
-static size_t ZSTD_hash5(U64 u, U32 h) { return (size_t)(((u << (64-40)) * prime5bytes) >> (64-h)) ; }
-static size_t ZSTD_hash5Ptr(const void* p, U32 h) { return ZSTD_hash5(MEM_readLE64(p), h); }
-
-static const U64 prime6bytes = 227718039650203ULL;
-static size_t ZSTD_hash6(U64 u, U32 h) { return (size_t)(((u << (64-48)) * prime6bytes) >> (64-h)) ; }
-static size_t ZSTD_hash6Ptr(const void* p, U32 h) { return ZSTD_hash6(MEM_readLE64(p), h); }
-
-static const U64 prime7bytes = 58295818150454627ULL;
-static size_t ZSTD_hash7(U64 u, U32 h) { return (size_t)(((u << (64-56)) * prime7bytes) >> (64-h)) ; }
-static size_t ZSTD_hash7Ptr(const void* p, U32 h) { return ZSTD_hash7(MEM_readLE64(p), h); }
-
-static const U64 prime8bytes = 0xCF1BBCDCB7A56463ULL;
-static size_t ZSTD_hash8(U64 u, U32 h) { return (size_t)(((u) * prime8bytes) >> (64-h)) ; }
-static size_t ZSTD_hash8Ptr(const void* p, U32 h) { return ZSTD_hash8(MEM_readLE64(p), h); }
-
-static size_t ZSTD_hashPtr(const void* p, U32 hBits, U32 mls)
-{
- switch(mls)
- {
- default:
- case 4: return ZSTD_hash4Ptr(p, hBits);
- case 5: return ZSTD_hash5Ptr(p, hBits);
- case 6: return ZSTD_hash6Ptr(p, hBits);
- case 7: return ZSTD_hash7Ptr(p, hBits);
- case 8: return ZSTD_hash8Ptr(p, hBits);
- }
-}
-
-
-/*-*************************************
-* Fast Scan
-***************************************/
-static void ZSTD_fillHashTable (ZSTD_CCtx* zc, const void* end, const U32 mls)
-{
- U32* const hashTable = zc->hashTable;
- U32 const hBits = zc->appliedParams.cParams.hashLog;
- const BYTE* const base = zc->base;
- const BYTE* ip = base + zc->nextToUpdate;
- const BYTE* const iend = ((const BYTE*)end) - HASH_READ_SIZE;
- const size_t fastHashFillStep = 3;
-
- while(ip <= iend) {
- hashTable[ZSTD_hashPtr(ip, hBits, mls)] = (U32)(ip - base);
- ip += fastHashFillStep;
- }
-}
-
-
-FORCE_INLINE_TEMPLATE
-void ZSTD_compressBlock_fast_generic(ZSTD_CCtx* cctx,
- const void* src, size_t srcSize,
- const U32 mls)
-{
- U32* const hashTable = cctx->hashTable;
- U32 const hBits = cctx->appliedParams.cParams.hashLog;
- seqStore_t* seqStorePtr = &(cctx->seqStore);
- const BYTE* const base = cctx->base;
- const BYTE* const istart = (const BYTE*)src;
- const BYTE* ip = istart;
- const BYTE* anchor = istart;
- const U32 lowestIndex = cctx->dictLimit;
- const BYTE* const lowest = base + lowestIndex;
- const BYTE* const iend = istart + srcSize;
- const BYTE* const ilimit = iend - HASH_READ_SIZE;
- U32 offset_1=seqStorePtr->rep[0], offset_2=seqStorePtr->rep[1];
- U32 offsetSaved = 0;
-
- /* init */
- ip += (ip==lowest);
- { U32 const maxRep = (U32)(ip-lowest);
- if (offset_2 > maxRep) offsetSaved = offset_2, offset_2 = 0;
- if (offset_1 > maxRep) offsetSaved = offset_1, offset_1 = 0;
- }
-
- /* Main Search Loop */
- while (ip < ilimit) { /* < instead of <=, because repcode check at (ip+1) */
- size_t mLength;
- size_t const h = ZSTD_hashPtr(ip, hBits, mls);
- U32 const current = (U32)(ip-base);
- U32 const matchIndex = hashTable[h];
- const BYTE* match = base + matchIndex;
- hashTable[h] = current; /* update hash table */
-
- if ((offset_1 > 0) & (MEM_read32(ip+1-offset_1) == MEM_read32(ip+1))) {
- mLength = ZSTD_count(ip+1+4, ip+1+4-offset_1, iend) + 4;
- ip++;
- ZSTD_storeSeq(seqStorePtr, ip-anchor, anchor, 0, mLength-MINMATCH);
- } else {
- U32 offset;
- if ( (matchIndex <= lowestIndex) || (MEM_read32(match) != MEM_read32(ip)) ) {
- ip += ((ip-anchor) >> g_searchStrength) + 1;
- continue;
- }
- mLength = ZSTD_count(ip+4, match+4, iend) + 4;
- offset = (U32)(ip-match);
- while (((ip>anchor) & (match>lowest)) && (ip[-1] == match[-1])) { ip--; match--; mLength++; } /* catch up */
- offset_2 = offset_1;
- offset_1 = offset;
-
- ZSTD_storeSeq(seqStorePtr, ip-anchor, anchor, offset + ZSTD_REP_MOVE, mLength-MINMATCH);
- }
-
- /* match found */
- ip += mLength;
- anchor = ip;
-
- if (ip <= ilimit) {
- /* Fill Table */
- hashTable[ZSTD_hashPtr(base+current+2, hBits, mls)] = current+2; /* here because current+2 could be > iend-8 */
- hashTable[ZSTD_hashPtr(ip-2, hBits, mls)] = (U32)(ip-2-base);
- /* check immediate repcode */
- while ( (ip <= ilimit)
- && ( (offset_2>0)
- & (MEM_read32(ip) == MEM_read32(ip - offset_2)) )) {
- /* store sequence */
- size_t const rLength = ZSTD_count(ip+4, ip+4-offset_2, iend) + 4;
- { U32 const tmpOff = offset_2; offset_2 = offset_1; offset_1 = tmpOff; } /* swap offset_2 <=> offset_1 */
- hashTable[ZSTD_hashPtr(ip, hBits, mls)] = (U32)(ip-base);
- ZSTD_storeSeq(seqStorePtr, 0, anchor, 0, rLength-MINMATCH);
- ip += rLength;
- anchor = ip;
- continue; /* faster when present ... (?) */
- } } }
-
- /* save reps for next block */
- seqStorePtr->repToConfirm[0] = offset_1 ? offset_1 : offsetSaved;
- seqStorePtr->repToConfirm[1] = offset_2 ? offset_2 : offsetSaved;
-
- /* Last Literals */
- { size_t const lastLLSize = iend - anchor;
- memcpy(seqStorePtr->lit, anchor, lastLLSize);
- seqStorePtr->lit += lastLLSize;
- }
-}
-
-
-static void ZSTD_compressBlock_fast(ZSTD_CCtx* ctx,
- const void* src, size_t srcSize)
-{
- const U32 mls = ctx->appliedParams.cParams.searchLength;
- switch(mls)
- {
- default: /* includes case 3 */
- case 4 :
- ZSTD_compressBlock_fast_generic(ctx, src, srcSize, 4); return;
- case 5 :
- ZSTD_compressBlock_fast_generic(ctx, src, srcSize, 5); return;
- case 6 :
- ZSTD_compressBlock_fast_generic(ctx, src, srcSize, 6); return;
- case 7 :
- ZSTD_compressBlock_fast_generic(ctx, src, srcSize, 7); return;
- }
-}
-
-
-static void ZSTD_compressBlock_fast_extDict_generic(ZSTD_CCtx* ctx,
- const void* src, size_t srcSize,
- const U32 mls)
-{
- U32* hashTable = ctx->hashTable;
- const U32 hBits = ctx->appliedParams.cParams.hashLog;
- seqStore_t* seqStorePtr = &(ctx->seqStore);
- const BYTE* const base = ctx->base;
- const BYTE* const dictBase = ctx->dictBase;
- const BYTE* const istart = (const BYTE*)src;
- const BYTE* ip = istart;
- const BYTE* anchor = istart;
- const U32 lowestIndex = ctx->lowLimit;
- const BYTE* const dictStart = dictBase + lowestIndex;
- const U32 dictLimit = ctx->dictLimit;
- const BYTE* const lowPrefixPtr = base + dictLimit;
- const BYTE* const dictEnd = dictBase + dictLimit;
- const BYTE* const iend = istart + srcSize;
- const BYTE* const ilimit = iend - 8;
- U32 offset_1=seqStorePtr->rep[0], offset_2=seqStorePtr->rep[1];
-
- /* Search Loop */
- while (ip < ilimit) { /* < instead of <=, because (ip+1) */
- const size_t h = ZSTD_hashPtr(ip, hBits, mls);
- const U32 matchIndex = hashTable[h];
- const BYTE* matchBase = matchIndex < dictLimit ? dictBase : base;
- const BYTE* match = matchBase + matchIndex;
- const U32 current = (U32)(ip-base);
- const U32 repIndex = current + 1 - offset_1; /* offset_1 expected <= current +1 */
- const BYTE* repBase = repIndex < dictLimit ? dictBase : base;
- const BYTE* repMatch = repBase + repIndex;
- size_t mLength;
- hashTable[h] = current; /* update hash table */
-
- if ( (((U32)((dictLimit-1) - repIndex) >= 3) /* intentional underflow */ & (repIndex > lowestIndex))
- && (MEM_read32(repMatch) == MEM_read32(ip+1)) ) {
- const BYTE* repMatchEnd = repIndex < dictLimit ? dictEnd : iend;
- mLength = ZSTD_count_2segments(ip+1+4, repMatch+4, iend, repMatchEnd, lowPrefixPtr) + 4;
- ip++;
- ZSTD_storeSeq(seqStorePtr, ip-anchor, anchor, 0, mLength-MINMATCH);
- } else {
- if ( (matchIndex < lowestIndex) ||
- (MEM_read32(match) != MEM_read32(ip)) ) {
- ip += ((ip-anchor) >> g_searchStrength) + 1;
- continue;
- }
- { const BYTE* matchEnd = matchIndex < dictLimit ? dictEnd : iend;
- const BYTE* lowMatchPtr = matchIndex < dictLimit ? dictStart : lowPrefixPtr;
- U32 offset;
- mLength = ZSTD_count_2segments(ip+4, match+4, iend, matchEnd, lowPrefixPtr) + 4;
- while (((ip>anchor) & (match>lowMatchPtr)) && (ip[-1] == match[-1])) { ip--; match--; mLength++; } /* catch up */
- offset = current - matchIndex;
- offset_2 = offset_1;
- offset_1 = offset;
- ZSTD_storeSeq(seqStorePtr, ip-anchor, anchor, offset + ZSTD_REP_MOVE, mLength-MINMATCH);
- } }
-
- /* found a match : store it */
- ip += mLength;
- anchor = ip;
-
- if (ip <= ilimit) {
- /* Fill Table */
- hashTable[ZSTD_hashPtr(base+current+2, hBits, mls)] = current+2;
- hashTable[ZSTD_hashPtr(ip-2, hBits, mls)] = (U32)(ip-2-base);
- /* check immediate repcode */
- while (ip <= ilimit) {
- U32 const current2 = (U32)(ip-base);
- U32 const repIndex2 = current2 - offset_2;
- const BYTE* repMatch2 = repIndex2 < dictLimit ? dictBase + repIndex2 : base + repIndex2;
- if ( (((U32)((dictLimit-1) - repIndex2) >= 3) & (repIndex2 > lowestIndex)) /* intentional overflow */
- && (MEM_read32(repMatch2) == MEM_read32(ip)) ) {
- const BYTE* const repEnd2 = repIndex2 < dictLimit ? dictEnd : iend;
- size_t const repLength2 = ZSTD_count_2segments(ip+4, repMatch2+4, iend, repEnd2, lowPrefixPtr) + 4;
- U32 tmpOffset = offset_2; offset_2 = offset_1; offset_1 = tmpOffset; /* swap offset_2 <=> offset_1 */
- ZSTD_storeSeq(seqStorePtr, 0, anchor, 0, repLength2-MINMATCH);
- hashTable[ZSTD_hashPtr(ip, hBits, mls)] = current2;
- ip += repLength2;
- anchor = ip;
- continue;
- }
- break;
- } } }
-
- /* save reps for next block */
- seqStorePtr->repToConfirm[0] = offset_1; seqStorePtr->repToConfirm[1] = offset_2;
-
- /* Last Literals */
- { size_t const lastLLSize = iend - anchor;
- memcpy(seqStorePtr->lit, anchor, lastLLSize);
- seqStorePtr->lit += lastLLSize;
- }
-}
-
-
-static void ZSTD_compressBlock_fast_extDict(ZSTD_CCtx* ctx,
- const void* src, size_t srcSize)
-{
- U32 const mls = ctx->appliedParams.cParams.searchLength;
- switch(mls)
- {
- default: /* includes case 3 */
- case 4 :
- ZSTD_compressBlock_fast_extDict_generic(ctx, src, srcSize, 4); return;
- case 5 :
- ZSTD_compressBlock_fast_extDict_generic(ctx, src, srcSize, 5); return;
- case 6 :
- ZSTD_compressBlock_fast_extDict_generic(ctx, src, srcSize, 6); return;
- case 7 :
- ZSTD_compressBlock_fast_extDict_generic(ctx, src, srcSize, 7); return;
- }
-}
-
-
-/*-*************************************
-* Double Fast
-***************************************/
-static void ZSTD_fillDoubleHashTable (ZSTD_CCtx* cctx, const void* end, const U32 mls)
-{
- U32* const hashLarge = cctx->hashTable;
- U32 const hBitsL = cctx->appliedParams.cParams.hashLog;
- U32* const hashSmall = cctx->chainTable;
- U32 const hBitsS = cctx->appliedParams.cParams.chainLog;
- const BYTE* const base = cctx->base;
- const BYTE* ip = base + cctx->nextToUpdate;
- const BYTE* const iend = ((const BYTE*)end) - HASH_READ_SIZE;
- const size_t fastHashFillStep = 3;
-
- while(ip <= iend) {
- hashSmall[ZSTD_hashPtr(ip, hBitsS, mls)] = (U32)(ip - base);
- hashLarge[ZSTD_hashPtr(ip, hBitsL, 8)] = (U32)(ip - base);
- ip += fastHashFillStep;
- }
-}
-
-
-FORCE_INLINE_TEMPLATE
-void ZSTD_compressBlock_doubleFast_generic(ZSTD_CCtx* cctx,
- const void* src, size_t srcSize,
- const U32 mls)
-{
- U32* const hashLong = cctx->hashTable;
- const U32 hBitsL = cctx->appliedParams.cParams.hashLog;
- U32* const hashSmall = cctx->chainTable;
- const U32 hBitsS = cctx->appliedParams.cParams.chainLog;
- seqStore_t* seqStorePtr = &(cctx->seqStore);
- const BYTE* const base = cctx->base;
- const BYTE* const istart = (const BYTE*)src;
- const BYTE* ip = istart;
- const BYTE* anchor = istart;
- const U32 lowestIndex = cctx->dictLimit;
- const BYTE* const lowest = base + lowestIndex;
- const BYTE* const iend = istart + srcSize;
- const BYTE* const ilimit = iend - HASH_READ_SIZE;
- U32 offset_1=seqStorePtr->rep[0], offset_2=seqStorePtr->rep[1];
- U32 offsetSaved = 0;
-
- /* init */
- ip += (ip==lowest);
- { U32 const maxRep = (U32)(ip-lowest);
- if (offset_2 > maxRep) offsetSaved = offset_2, offset_2 = 0;
- if (offset_1 > maxRep) offsetSaved = offset_1, offset_1 = 0;
- }
-
- /* Main Search Loop */
- while (ip < ilimit) { /* < instead of <=, because repcode check at (ip+1) */
- size_t mLength;
- size_t const h2 = ZSTD_hashPtr(ip, hBitsL, 8);
- size_t const h = ZSTD_hashPtr(ip, hBitsS, mls);
- U32 const current = (U32)(ip-base);
- U32 const matchIndexL = hashLong[h2];
- U32 const matchIndexS = hashSmall[h];
- const BYTE* matchLong = base + matchIndexL;
- const BYTE* match = base + matchIndexS;
- hashLong[h2] = hashSmall[h] = current; /* update hash tables */
-
- assert(offset_1 <= current); /* supposed guaranteed by construction */
- if ((offset_1 > 0) & (MEM_read32(ip+1-offset_1) == MEM_read32(ip+1))) {
- /* favor repcode */
- mLength = ZSTD_count(ip+1+4, ip+1+4-offset_1, iend) + 4;
- ip++;
- ZSTD_storeSeq(seqStorePtr, ip-anchor, anchor, 0, mLength-MINMATCH);
- } else {
- U32 offset;
- if ( (matchIndexL > lowestIndex) && (MEM_read64(matchLong) == MEM_read64(ip)) ) {
- mLength = ZSTD_count(ip+8, matchLong+8, iend) + 8;
- offset = (U32)(ip-matchLong);
- while (((ip>anchor) & (matchLong>lowest)) && (ip[-1] == matchLong[-1])) { ip--; matchLong--; mLength++; } /* catch up */
- } else if ( (matchIndexS > lowestIndex) && (MEM_read32(match) == MEM_read32(ip)) ) {
- size_t const hl3 = ZSTD_hashPtr(ip+1, hBitsL, 8);
- U32 const matchIndexL3 = hashLong[hl3];
- const BYTE* matchL3 = base + matchIndexL3;
- hashLong[hl3] = current + 1;
- if ( (matchIndexL3 > lowestIndex) && (MEM_read64(matchL3) == MEM_read64(ip+1)) ) {
- mLength = ZSTD_count(ip+9, matchL3+8, iend) + 8;
- ip++;
- offset = (U32)(ip-matchL3);
- while (((ip>anchor) & (matchL3>lowest)) && (ip[-1] == matchL3[-1])) { ip--; matchL3--; mLength++; } /* catch up */
- } else {
- mLength = ZSTD_count(ip+4, match+4, iend) + 4;
- offset = (U32)(ip-match);
- while (((ip>anchor) & (match>lowest)) && (ip[-1] == match[-1])) { ip--; match--; mLength++; } /* catch up */
- }
- } else {
- ip += ((ip-anchor) >> g_searchStrength) + 1;
- continue;
- }
-
- offset_2 = offset_1;
- offset_1 = offset;
-
- ZSTD_storeSeq(seqStorePtr, ip-anchor, anchor, offset + ZSTD_REP_MOVE, mLength-MINMATCH);
- }
-
- /* match found */
- ip += mLength;
- anchor = ip;
-
- if (ip <= ilimit) {
- /* Fill Table */
- hashLong[ZSTD_hashPtr(base+current+2, hBitsL, 8)] =
- hashSmall[ZSTD_hashPtr(base+current+2, hBitsS, mls)] = current+2; /* here because current+2 could be > iend-8 */
- hashLong[ZSTD_hashPtr(ip-2, hBitsL, 8)] =
- hashSmall[ZSTD_hashPtr(ip-2, hBitsS, mls)] = (U32)(ip-2-base);
-
- /* check immediate repcode */
- while ( (ip <= ilimit)
- && ( (offset_2>0)
- & (MEM_read32(ip) == MEM_read32(ip - offset_2)) )) {
- /* store sequence */
- size_t const rLength = ZSTD_count(ip+4, ip+4-offset_2, iend) + 4;
- { U32 const tmpOff = offset_2; offset_2 = offset_1; offset_1 = tmpOff; } /* swap offset_2 <=> offset_1 */
- hashSmall[ZSTD_hashPtr(ip, hBitsS, mls)] = (U32)(ip-base);
- hashLong[ZSTD_hashPtr(ip, hBitsL, 8)] = (U32)(ip-base);
- ZSTD_storeSeq(seqStorePtr, 0, anchor, 0, rLength-MINMATCH);
- ip += rLength;
- anchor = ip;
- continue; /* faster when present ... (?) */
- } } }
-
- /* save reps for next block */
- seqStorePtr->repToConfirm[0] = offset_1 ? offset_1 : offsetSaved;
- seqStorePtr->repToConfirm[1] = offset_2 ? offset_2 : offsetSaved;
-
- /* Last Literals */
- { size_t const lastLLSize = iend - anchor;
- memcpy(seqStorePtr->lit, anchor, lastLLSize);
- seqStorePtr->lit += lastLLSize;
- }
-}
-
-
-static void ZSTD_compressBlock_doubleFast(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
-{
- const U32 mls = ctx->appliedParams.cParams.searchLength;
- switch(mls)
- {
- default: /* includes case 3 */
- case 4 :
- ZSTD_compressBlock_doubleFast_generic(ctx, src, srcSize, 4); return;
- case 5 :
- ZSTD_compressBlock_doubleFast_generic(ctx, src, srcSize, 5); return;
- case 6 :
- ZSTD_compressBlock_doubleFast_generic(ctx, src, srcSize, 6); return;
- case 7 :
- ZSTD_compressBlock_doubleFast_generic(ctx, src, srcSize, 7); return;
- }
-}
-
-
-static void ZSTD_compressBlock_doubleFast_extDict_generic(ZSTD_CCtx* ctx,
- const void* src, size_t srcSize,
- const U32 mls)
-{
- U32* const hashLong = ctx->hashTable;
- U32 const hBitsL = ctx->appliedParams.cParams.hashLog;
- U32* const hashSmall = ctx->chainTable;
- U32 const hBitsS = ctx->appliedParams.cParams.chainLog;
- seqStore_t* seqStorePtr = &(ctx->seqStore);
- const BYTE* const base = ctx->base;
- const BYTE* const dictBase = ctx->dictBase;
- const BYTE* const istart = (const BYTE*)src;
- const BYTE* ip = istart;
- const BYTE* anchor = istart;
- const U32 lowestIndex = ctx->lowLimit;
- const BYTE* const dictStart = dictBase + lowestIndex;
- const U32 dictLimit = ctx->dictLimit;
- const BYTE* const lowPrefixPtr = base + dictLimit;
- const BYTE* const dictEnd = dictBase + dictLimit;
- const BYTE* const iend = istart + srcSize;
- const BYTE* const ilimit = iend - 8;
- U32 offset_1=seqStorePtr->rep[0], offset_2=seqStorePtr->rep[1];
-
- /* Search Loop */
- while (ip < ilimit) { /* < instead of <=, because (ip+1) */
- const size_t hSmall = ZSTD_hashPtr(ip, hBitsS, mls);
- const U32 matchIndex = hashSmall[hSmall];
- const BYTE* matchBase = matchIndex < dictLimit ? dictBase : base;
- const BYTE* match = matchBase + matchIndex;
-
- const size_t hLong = ZSTD_hashPtr(ip, hBitsL, 8);
- const U32 matchLongIndex = hashLong[hLong];
- const BYTE* matchLongBase = matchLongIndex < dictLimit ? dictBase : base;
- const BYTE* matchLong = matchLongBase + matchLongIndex;
-
- const U32 current = (U32)(ip-base);
- const U32 repIndex = current + 1 - offset_1; /* offset_1 expected <= current +1 */
- const BYTE* repBase = repIndex < dictLimit ? dictBase : base;
- const BYTE* repMatch = repBase + repIndex;
- size_t mLength;
- hashSmall[hSmall] = hashLong[hLong] = current; /* update hash table */
-
- if ( (((U32)((dictLimit-1) - repIndex) >= 3) /* intentional underflow */ & (repIndex > lowestIndex))
- && (MEM_read32(repMatch) == MEM_read32(ip+1)) ) {
- const BYTE* repMatchEnd = repIndex < dictLimit ? dictEnd : iend;
- mLength = ZSTD_count_2segments(ip+1+4, repMatch+4, iend, repMatchEnd, lowPrefixPtr) + 4;
- ip++;
- ZSTD_storeSeq(seqStorePtr, ip-anchor, anchor, 0, mLength-MINMATCH);
- } else {
- if ((matchLongIndex > lowestIndex) && (MEM_read64(matchLong) == MEM_read64(ip))) {
- const BYTE* matchEnd = matchLongIndex < dictLimit ? dictEnd : iend;
- const BYTE* lowMatchPtr = matchLongIndex < dictLimit ? dictStart : lowPrefixPtr;
- U32 offset;
- mLength = ZSTD_count_2segments(ip+8, matchLong+8, iend, matchEnd, lowPrefixPtr) + 8;
- offset = current - matchLongIndex;
- while (((ip>anchor) & (matchLong>lowMatchPtr)) && (ip[-1] == matchLong[-1])) { ip--; matchLong--; mLength++; } /* catch up */
- offset_2 = offset_1;
- offset_1 = offset;
- ZSTD_storeSeq(seqStorePtr, ip-anchor, anchor, offset + ZSTD_REP_MOVE, mLength-MINMATCH);
-
- } else if ((matchIndex > lowestIndex) && (MEM_read32(match) == MEM_read32(ip))) {
- size_t const h3 = ZSTD_hashPtr(ip+1, hBitsL, 8);
- U32 const matchIndex3 = hashLong[h3];
- const BYTE* const match3Base = matchIndex3 < dictLimit ? dictBase : base;
- const BYTE* match3 = match3Base + matchIndex3;
- U32 offset;
- hashLong[h3] = current + 1;
- if ( (matchIndex3 > lowestIndex) && (MEM_read64(match3) == MEM_read64(ip+1)) ) {
- const BYTE* matchEnd = matchIndex3 < dictLimit ? dictEnd : iend;
- const BYTE* lowMatchPtr = matchIndex3 < dictLimit ? dictStart : lowPrefixPtr;
- mLength = ZSTD_count_2segments(ip+9, match3+8, iend, matchEnd, lowPrefixPtr) + 8;
- ip++;
- offset = current+1 - matchIndex3;
- while (((ip>anchor) & (match3>lowMatchPtr)) && (ip[-1] == match3[-1])) { ip--; match3--; mLength++; } /* catch up */
- } else {
- const BYTE* matchEnd = matchIndex < dictLimit ? dictEnd : iend;
- const BYTE* lowMatchPtr = matchIndex < dictLimit ? dictStart : lowPrefixPtr;
- mLength = ZSTD_count_2segments(ip+4, match+4, iend, matchEnd, lowPrefixPtr) + 4;
- offset = current - matchIndex;
- while (((ip>anchor) & (match>lowMatchPtr)) && (ip[-1] == match[-1])) { ip--; match--; mLength++; } /* catch up */
- }
- offset_2 = offset_1;
- offset_1 = offset;
- ZSTD_storeSeq(seqStorePtr, ip-anchor, anchor, offset + ZSTD_REP_MOVE, mLength-MINMATCH);
-
- } else {
- ip += ((ip-anchor) >> g_searchStrength) + 1;
- continue;
- } }
-
- /* found a match : store it */
- ip += mLength;
- anchor = ip;
-
- if (ip <= ilimit) {
- /* Fill Table */
- hashSmall[ZSTD_hashPtr(base+current+2, hBitsS, mls)] = current+2;
- hashLong[ZSTD_hashPtr(base+current+2, hBitsL, 8)] = current+2;
- hashSmall[ZSTD_hashPtr(ip-2, hBitsS, mls)] = (U32)(ip-2-base);
- hashLong[ZSTD_hashPtr(ip-2, hBitsL, 8)] = (U32)(ip-2-base);
- /* check immediate repcode */
- while (ip <= ilimit) {
- U32 const current2 = (U32)(ip-base);
- U32 const repIndex2 = current2 - offset_2;
- const BYTE* repMatch2 = repIndex2 < dictLimit ? dictBase + repIndex2 : base + repIndex2;
- if ( (((U32)((dictLimit-1) - repIndex2) >= 3) & (repIndex2 > lowestIndex)) /* intentional overflow */
- && (MEM_read32(repMatch2) == MEM_read32(ip)) ) {
- const BYTE* const repEnd2 = repIndex2 < dictLimit ? dictEnd : iend;
- size_t const repLength2 = ZSTD_count_2segments(ip+4, repMatch2+4, iend, repEnd2, lowPrefixPtr) + 4;
- U32 tmpOffset = offset_2; offset_2 = offset_1; offset_1 = tmpOffset; /* swap offset_2 <=> offset_1 */
- ZSTD_storeSeq(seqStorePtr, 0, anchor, 0, repLength2-MINMATCH);
- hashSmall[ZSTD_hashPtr(ip, hBitsS, mls)] = current2;
- hashLong[ZSTD_hashPtr(ip, hBitsL, 8)] = current2;
- ip += repLength2;
- anchor = ip;
- continue;
- }
- break;
- } } }
-
- /* save reps for next block */
- seqStorePtr->repToConfirm[0] = offset_1; seqStorePtr->repToConfirm[1] = offset_2;
-
- /* Last Literals */
- { size_t const lastLLSize = iend - anchor;
- memcpy(seqStorePtr->lit, anchor, lastLLSize);
- seqStorePtr->lit += lastLLSize;
- }
-}
-
-
-static void ZSTD_compressBlock_doubleFast_extDict(ZSTD_CCtx* ctx,
- const void* src, size_t srcSize)
-{
- U32 const mls = ctx->appliedParams.cParams.searchLength;
- switch(mls)
- {
- default: /* includes case 3 */
- case 4 :
- ZSTD_compressBlock_doubleFast_extDict_generic(ctx, src, srcSize, 4); return;
- case 5 :
- ZSTD_compressBlock_doubleFast_extDict_generic(ctx, src, srcSize, 5); return;
- case 6 :
- ZSTD_compressBlock_doubleFast_extDict_generic(ctx, src, srcSize, 6); return;
- case 7 :
- ZSTD_compressBlock_doubleFast_extDict_generic(ctx, src, srcSize, 7); return;
- }
-}
-
-
-/*-*************************************
-* Binary Tree search
-***************************************/
-/** ZSTD_insertBt1() : add one or multiple positions to tree.
-* ip : assumed <= iend-8 .
-* @return : nb of positions added */
-static U32 ZSTD_insertBt1(ZSTD_CCtx* zc, const BYTE* const ip, const U32 mls, const BYTE* const iend, U32 nbCompares,
- U32 extDict)
-{
- U32* const hashTable = zc->hashTable;
- U32 const hashLog = zc->appliedParams.cParams.hashLog;
- size_t const h = ZSTD_hashPtr(ip, hashLog, mls);
- U32* const bt = zc->chainTable;
- U32 const btLog = zc->appliedParams.cParams.chainLog - 1;
- U32 const btMask = (1 << btLog) - 1;
- U32 matchIndex = hashTable[h];
- size_t commonLengthSmaller=0, commonLengthLarger=0;
- const BYTE* const base = zc->base;
- const BYTE* const dictBase = zc->dictBase;
- const U32 dictLimit = zc->dictLimit;
- const BYTE* const dictEnd = dictBase + dictLimit;
- const BYTE* const prefixStart = base + dictLimit;
- const BYTE* match;
- const U32 current = (U32)(ip-base);
- const U32 btLow = btMask >= current ? 0 : current - btMask;
- U32* smallerPtr = bt + 2*(current&btMask);
- U32* largerPtr = smallerPtr + 1;
- U32 dummy32; /* to be nullified at the end */
- U32 const windowLow = zc->lowLimit;
- U32 matchEndIdx = current+8;
- size_t bestLength = 8;
-#ifdef ZSTD_C_PREDICT
- U32 predictedSmall = *(bt + 2*((current-1)&btMask) + 0);
- U32 predictedLarge = *(bt + 2*((current-1)&btMask) + 1);
- predictedSmall += (predictedSmall>0);
- predictedLarge += (predictedLarge>0);
-#endif /* ZSTD_C_PREDICT */
-
- hashTable[h] = current; /* Update Hash Table */
-
- while (nbCompares-- && (matchIndex > windowLow)) {
- U32* const nextPtr = bt + 2*(matchIndex & btMask);
- size_t matchLength = MIN(commonLengthSmaller, commonLengthLarger); /* guaranteed minimum nb of common bytes */
-
-#ifdef ZSTD_C_PREDICT /* note : can create issues when hlog small <= 11 */
- const U32* predictPtr = bt + 2*((matchIndex-1) & btMask); /* written this way, as bt is a roll buffer */
- if (matchIndex == predictedSmall) {
- /* no need to check length, result known */
- *smallerPtr = matchIndex;
- if (matchIndex <= btLow) { smallerPtr=&dummy32; break; } /* beyond tree size, stop the search */
- smallerPtr = nextPtr+1; /* new "smaller" => larger of match */
- matchIndex = nextPtr[1]; /* new matchIndex larger than previous (closer to current) */
- predictedSmall = predictPtr[1] + (predictPtr[1]>0);
- continue;
- }
- if (matchIndex == predictedLarge) {
- *largerPtr = matchIndex;
- if (matchIndex <= btLow) { largerPtr=&dummy32; break; } /* beyond tree size, stop the search */
- largerPtr = nextPtr;
- matchIndex = nextPtr[0];
- predictedLarge = predictPtr[0] + (predictPtr[0]>0);
- continue;
- }
-#endif
- if ((!extDict) || (matchIndex+matchLength >= dictLimit)) {
- match = base + matchIndex;
- if (match[matchLength] == ip[matchLength])
- matchLength += ZSTD_count(ip+matchLength+1, match+matchLength+1, iend) +1;
- } else {
- match = dictBase + matchIndex;
- matchLength += ZSTD_count_2segments(ip+matchLength, match+matchLength, iend, dictEnd, prefixStart);
- if (matchIndex+matchLength >= dictLimit)
- match = base + matchIndex; /* to prepare for next usage of match[matchLength] */
- }
-
- if (matchLength > bestLength) {
- bestLength = matchLength;
- if (matchLength > matchEndIdx - matchIndex)
- matchEndIdx = matchIndex + (U32)matchLength;
- }
-
- if (ip+matchLength == iend) /* equal : no way to know if inf or sup */
- break; /* drop , to guarantee consistency ; miss a bit of compression, but other solutions can corrupt the tree */
-
- if (match[matchLength] < ip[matchLength]) { /* necessarily within correct buffer */
- /* match is smaller than current */
- *smallerPtr = matchIndex; /* update smaller idx */
- commonLengthSmaller = matchLength; /* all smaller will now have at least this guaranteed common length */
- if (matchIndex <= btLow) { smallerPtr=&dummy32; break; } /* beyond tree size, stop the search */
- smallerPtr = nextPtr+1; /* new "smaller" => larger of match */
- matchIndex = nextPtr[1]; /* new matchIndex larger than previous (closer to current) */
- } else {
- /* match is larger than current */
- *largerPtr = matchIndex;
- commonLengthLarger = matchLength;
- if (matchIndex <= btLow) { largerPtr=&dummy32; break; } /* beyond tree size, stop the search */
- largerPtr = nextPtr;
- matchIndex = nextPtr[0];
- } }
-
- *smallerPtr = *largerPtr = 0;
- if (bestLength > 384) return MIN(192, (U32)(bestLength - 384)); /* speed optimization */
- if (matchEndIdx > current + 8) return matchEndIdx - current - 8;
- return 1;
-}
-
-
-static size_t ZSTD_insertBtAndFindBestMatch (
- ZSTD_CCtx* zc,
- const BYTE* const ip, const BYTE* const iend,
- size_t* offsetPtr,
- U32 nbCompares, const U32 mls,
- U32 extDict)
-{
- U32* const hashTable = zc->hashTable;
- U32 const hashLog = zc->appliedParams.cParams.hashLog;
- size_t const h = ZSTD_hashPtr(ip, hashLog, mls);
- U32* const bt = zc->chainTable;
- U32 const btLog = zc->appliedParams.cParams.chainLog - 1;
- U32 const btMask = (1 << btLog) - 1;
- U32 matchIndex = hashTable[h];
- size_t commonLengthSmaller=0, commonLengthLarger=0;
- const BYTE* const base = zc->base;
- const BYTE* const dictBase = zc->dictBase;
- const U32 dictLimit = zc->dictLimit;
- const BYTE* const dictEnd = dictBase + dictLimit;
- const BYTE* const prefixStart = base + dictLimit;
- const U32 current = (U32)(ip-base);
- const U32 btLow = btMask >= current ? 0 : current - btMask;
- const U32 windowLow = zc->lowLimit;
- U32* smallerPtr = bt + 2*(current&btMask);
- U32* largerPtr = bt + 2*(current&btMask) + 1;
- U32 matchEndIdx = current+8;
- U32 dummy32; /* to be nullified at the end */
- size_t bestLength = 0;
-
- hashTable[h] = current; /* Update Hash Table */
-
- while (nbCompares-- && (matchIndex > windowLow)) {
- U32* const nextPtr = bt + 2*(matchIndex & btMask);
- size_t matchLength = MIN(commonLengthSmaller, commonLengthLarger); /* guaranteed minimum nb of common bytes */
- const BYTE* match;
-
- if ((!extDict) || (matchIndex+matchLength >= dictLimit)) {
- match = base + matchIndex;
- if (match[matchLength] == ip[matchLength])
- matchLength += ZSTD_count(ip+matchLength+1, match+matchLength+1, iend) +1;
- } else {
- match = dictBase + matchIndex;
- matchLength += ZSTD_count_2segments(ip+matchLength, match+matchLength, iend, dictEnd, prefixStart);
- if (matchIndex+matchLength >= dictLimit)
- match = base + matchIndex; /* to prepare for next usage of match[matchLength] */
- }
-
- if (matchLength > bestLength) {
- if (matchLength > matchEndIdx - matchIndex)
- matchEndIdx = matchIndex + (U32)matchLength;
- if ( (4*(int)(matchLength-bestLength)) > (int)(ZSTD_highbit32(current-matchIndex+1) - ZSTD_highbit32((U32)offsetPtr[0]+1)) )
- bestLength = matchLength, *offsetPtr = ZSTD_REP_MOVE + current - matchIndex;
- if (ip+matchLength == iend) /* equal : no way to know if inf or sup */
- break; /* drop, to guarantee consistency (miss a little bit of compression) */
- }
-
- if (match[matchLength] < ip[matchLength]) {
- /* match is smaller than current */
- *smallerPtr = matchIndex; /* update smaller idx */
- commonLengthSmaller = matchLength; /* all smaller will now have at least this guaranteed common length */
- if (matchIndex <= btLow) { smallerPtr=&dummy32; break; } /* beyond tree size, stop the search */
- smallerPtr = nextPtr+1; /* new "smaller" => larger of match */
- matchIndex = nextPtr[1]; /* new matchIndex larger than previous (closer to current) */
- } else {
- /* match is larger than current */
- *largerPtr = matchIndex;
- commonLengthLarger = matchLength;
- if (matchIndex <= btLow) { largerPtr=&dummy32; break; } /* beyond tree size, stop the search */
- largerPtr = nextPtr;
- matchIndex = nextPtr[0];
- } }
-
- *smallerPtr = *largerPtr = 0;
-
- zc->nextToUpdate = (matchEndIdx > current + 8) ? matchEndIdx - 8 : current+1;
- return bestLength;
-}
-
-
-static void ZSTD_updateTree(ZSTD_CCtx* zc, const BYTE* const ip, const BYTE* const iend, const U32 nbCompares, const U32 mls)
-{
- const BYTE* const base = zc->base;
- const U32 target = (U32)(ip - base);
- U32 idx = zc->nextToUpdate;
-
- while(idx < target)
- idx += ZSTD_insertBt1(zc, base+idx, mls, iend, nbCompares, 0);
-}
-
-/** ZSTD_BtFindBestMatch() : Tree updater, providing best match */
-static size_t ZSTD_BtFindBestMatch (
- ZSTD_CCtx* zc,
- const BYTE* const ip, const BYTE* const iLimit,
- size_t* offsetPtr,
- const U32 maxNbAttempts, const U32 mls)
-{
- if (ip < zc->base + zc->nextToUpdate) return 0; /* skipped area */
- ZSTD_updateTree(zc, ip, iLimit, maxNbAttempts, mls);
- return ZSTD_insertBtAndFindBestMatch(zc, ip, iLimit, offsetPtr, maxNbAttempts, mls, 0);
-}
-
-
-static size_t ZSTD_BtFindBestMatch_selectMLS (
- ZSTD_CCtx* zc, /* Index table will be updated */
- const BYTE* ip, const BYTE* const iLimit,
- size_t* offsetPtr,
- const U32 maxNbAttempts, const U32 matchLengthSearch)
-{
- switch(matchLengthSearch)
- {
- default : /* includes case 3 */
- case 4 : return ZSTD_BtFindBestMatch(zc, ip, iLimit, offsetPtr, maxNbAttempts, 4);
- case 5 : return ZSTD_BtFindBestMatch(zc, ip, iLimit, offsetPtr, maxNbAttempts, 5);
- case 7 :
- case 6 : return ZSTD_BtFindBestMatch(zc, ip, iLimit, offsetPtr, maxNbAttempts, 6);
- }
-}
-
-
-static void ZSTD_updateTree_extDict(ZSTD_CCtx* zc, const BYTE* const ip, const BYTE* const iend, const U32 nbCompares, const U32 mls)
-{
- const BYTE* const base = zc->base;
- const U32 target = (U32)(ip - base);
- U32 idx = zc->nextToUpdate;
-
- while (idx < target) idx += ZSTD_insertBt1(zc, base+idx, mls, iend, nbCompares, 1);
-}
-
-
-/** Tree updater, providing best match */
-static size_t ZSTD_BtFindBestMatch_extDict (
- ZSTD_CCtx* zc,
- const BYTE* const ip, const BYTE* const iLimit,
- size_t* offsetPtr,
- const U32 maxNbAttempts, const U32 mls)
-{
- if (ip < zc->base + zc->nextToUpdate) return 0; /* skipped area */
- ZSTD_updateTree_extDict(zc, ip, iLimit, maxNbAttempts, mls);
- return ZSTD_insertBtAndFindBestMatch(zc, ip, iLimit, offsetPtr, maxNbAttempts, mls, 1);
-}
-
-
-static size_t ZSTD_BtFindBestMatch_selectMLS_extDict (
- ZSTD_CCtx* zc, /* Index table will be updated */
- const BYTE* ip, const BYTE* const iLimit,
- size_t* offsetPtr,
- const U32 maxNbAttempts, const U32 matchLengthSearch)
-{
- switch(matchLengthSearch)
- {
- default : /* includes case 3 */
- case 4 : return ZSTD_BtFindBestMatch_extDict(zc, ip, iLimit, offsetPtr, maxNbAttempts, 4);
- case 5 : return ZSTD_BtFindBestMatch_extDict(zc, ip, iLimit, offsetPtr, maxNbAttempts, 5);
- case 7 :
- case 6 : return ZSTD_BtFindBestMatch_extDict(zc, ip, iLimit, offsetPtr, maxNbAttempts, 6);
- }
-}
-
-
-
-/* *********************************
-* Hash Chain
-***********************************/
-#define NEXT_IN_CHAIN(d, mask) chainTable[(d) & mask]
-
-/* Update chains up to ip (excluded)
- Assumption : always within prefix (i.e. not within extDict) */
-FORCE_INLINE_TEMPLATE
-U32 ZSTD_insertAndFindFirstIndex (ZSTD_CCtx* zc, const BYTE* ip, U32 mls)
-{
- U32* const hashTable = zc->hashTable;
- const U32 hashLog = zc->appliedParams.cParams.hashLog;
- U32* const chainTable = zc->chainTable;
- const U32 chainMask = (1 << zc->appliedParams.cParams.chainLog) - 1;
- const BYTE* const base = zc->base;
- const U32 target = (U32)(ip - base);
- U32 idx = zc->nextToUpdate;
-
- while(idx < target) { /* catch up */
- size_t const h = ZSTD_hashPtr(base+idx, hashLog, mls);
- NEXT_IN_CHAIN(idx, chainMask) = hashTable[h];
- hashTable[h] = idx;
- idx++;
- }
-
- zc->nextToUpdate = target;
- return hashTable[ZSTD_hashPtr(ip, hashLog, mls)];
-}
-
-
-/* inlining is important to hardwire a hot branch (template emulation) */
-FORCE_INLINE_TEMPLATE
-size_t ZSTD_HcFindBestMatch_generic (
- ZSTD_CCtx* zc, /* Index table will be updated */
- const BYTE* const ip, const BYTE* const iLimit,
- size_t* offsetPtr,
- const U32 maxNbAttempts, const U32 mls, const U32 extDict)
-{
- U32* const chainTable = zc->chainTable;
- const U32 chainSize = (1 << zc->appliedParams.cParams.chainLog);
- const U32 chainMask = chainSize-1;
- const BYTE* const base = zc->base;
- const BYTE* const dictBase = zc->dictBase;
- const U32 dictLimit = zc->dictLimit;
- const BYTE* const prefixStart = base + dictLimit;
- const BYTE* const dictEnd = dictBase + dictLimit;
- const U32 lowLimit = zc->lowLimit;
- const U32 current = (U32)(ip-base);
- const U32 minChain = current > chainSize ? current - chainSize : 0;
- int nbAttempts=maxNbAttempts;
- size_t ml=4-1;
-
- /* HC4 match finder */
- U32 matchIndex = ZSTD_insertAndFindFirstIndex (zc, ip, mls);
-
- for ( ; (matchIndex>lowLimit) & (nbAttempts>0) ; nbAttempts--) {
- const BYTE* match;
- size_t currentMl=0;
- if ((!extDict) || matchIndex >= dictLimit) {
- match = base + matchIndex;
- if (match[ml] == ip[ml]) /* potentially better */
- currentMl = ZSTD_count(ip, match, iLimit);
- } else {
- match = dictBase + matchIndex;
- if (MEM_read32(match) == MEM_read32(ip)) /* assumption : matchIndex <= dictLimit-4 (by table construction) */
- currentMl = ZSTD_count_2segments(ip+4, match+4, iLimit, dictEnd, prefixStart) + 4;
- }
-
- /* save best solution */
- if (currentMl > ml) {
- ml = currentMl;
- *offsetPtr = current - matchIndex + ZSTD_REP_MOVE;
- if (ip+currentMl == iLimit) break; /* best possible, avoids read overflow on next attempt */
- }
-
- if (matchIndex <= minChain) break;
- matchIndex = NEXT_IN_CHAIN(matchIndex, chainMask);
- }
-
- return ml;
-}
-
-
-FORCE_INLINE_TEMPLATE size_t ZSTD_HcFindBestMatch_selectMLS (
- ZSTD_CCtx* zc,
- const BYTE* ip, const BYTE* const iLimit,
- size_t* offsetPtr,
- const U32 maxNbAttempts, const U32 matchLengthSearch)
-{
- switch(matchLengthSearch)
- {
- default : /* includes case 3 */
- case 4 : return ZSTD_HcFindBestMatch_generic(zc, ip, iLimit, offsetPtr, maxNbAttempts, 4, 0);
- case 5 : return ZSTD_HcFindBestMatch_generic(zc, ip, iLimit, offsetPtr, maxNbAttempts, 5, 0);
- case 7 :
- case 6 : return ZSTD_HcFindBestMatch_generic(zc, ip, iLimit, offsetPtr, maxNbAttempts, 6, 0);
- }
-}
-
-
-FORCE_INLINE_TEMPLATE size_t ZSTD_HcFindBestMatch_extDict_selectMLS (
- ZSTD_CCtx* zc,
- const BYTE* ip, const BYTE* const iLimit,
- size_t* offsetPtr,
- const U32 maxNbAttempts, const U32 matchLengthSearch)
-{
- switch(matchLengthSearch)
- {
- default : /* includes case 3 */
- case 4 : return ZSTD_HcFindBestMatch_generic(zc, ip, iLimit, offsetPtr, maxNbAttempts, 4, 1);
- case 5 : return ZSTD_HcFindBestMatch_generic(zc, ip, iLimit, offsetPtr, maxNbAttempts, 5, 1);
- case 7 :
- case 6 : return ZSTD_HcFindBestMatch_generic(zc, ip, iLimit, offsetPtr, maxNbAttempts, 6, 1);
- }
-}
-
-
-/* *******************************
-* Common parser - lazy strategy
-*********************************/
-FORCE_INLINE_TEMPLATE
-void ZSTD_compressBlock_lazy_generic(ZSTD_CCtx* ctx,
- const void* src, size_t srcSize,
- const U32 searchMethod, const U32 depth)
-{
- seqStore_t* seqStorePtr = &(ctx->seqStore);
- const BYTE* const istart = (const BYTE*)src;
- const BYTE* ip = istart;
- const BYTE* anchor = istart;
- const BYTE* const iend = istart + srcSize;
- const BYTE* const ilimit = iend - 8;
- const BYTE* const base = ctx->base + ctx->dictLimit;
-
- U32 const maxSearches = 1 << ctx->appliedParams.cParams.searchLog;
- U32 const mls = ctx->appliedParams.cParams.searchLength;
-
- typedef size_t (*searchMax_f)(ZSTD_CCtx* zc, const BYTE* ip, const BYTE* iLimit,
- size_t* offsetPtr,
- U32 maxNbAttempts, U32 matchLengthSearch);
- searchMax_f const searchMax = searchMethod ? ZSTD_BtFindBestMatch_selectMLS : ZSTD_HcFindBestMatch_selectMLS;
- U32 offset_1 = seqStorePtr->rep[0], offset_2 = seqStorePtr->rep[1], savedOffset=0;
-
- /* init */
- ip += (ip==base);
- ctx->nextToUpdate3 = ctx->nextToUpdate;
- { U32 const maxRep = (U32)(ip-base);
- if (offset_2 > maxRep) savedOffset = offset_2, offset_2 = 0;
- if (offset_1 > maxRep) savedOffset = offset_1, offset_1 = 0;
- }
-
- /* Match Loop */
- while (ip < ilimit) {
- size_t matchLength=0;
- size_t offset=0;
- const BYTE* start=ip+1;
-
- /* check repCode */
- if ((offset_1>0) & (MEM_read32(ip+1) == MEM_read32(ip+1 - offset_1))) {
- /* repcode : we take it */
- matchLength = ZSTD_count(ip+1+4, ip+1+4-offset_1, iend) + 4;
- if (depth==0) goto _storeSequence;
- }
-
- /* first search (depth 0) */
- { size_t offsetFound = 99999999;
- size_t const ml2 = searchMax(ctx, ip, iend, &offsetFound, maxSearches, mls);
- if (ml2 > matchLength)
- matchLength = ml2, start = ip, offset=offsetFound;
- }
-
- if (matchLength < 4) {
- ip += ((ip-anchor) >> g_searchStrength) + 1; /* jump faster over incompressible sections */
- continue;
- }
-
- /* let's try to find a better solution */
- if (depth>=1)
- while (ip<ilimit) {
- ip ++;
- if ((offset) && ((offset_1>0) & (MEM_read32(ip) == MEM_read32(ip - offset_1)))) {
- size_t const mlRep = ZSTD_count(ip+4, ip+4-offset_1, iend) + 4;
- int const gain2 = (int)(mlRep * 3);
- int const gain1 = (int)(matchLength*3 - ZSTD_highbit32((U32)offset+1) + 1);
- if ((mlRep >= 4) && (gain2 > gain1))
- matchLength = mlRep, offset = 0, start = ip;
- }
- { size_t offset2=99999999;
- size_t const ml2 = searchMax(ctx, ip, iend, &offset2, maxSearches, mls);
- int const gain2 = (int)(ml2*4 - ZSTD_highbit32((U32)offset2+1)); /* raw approx */
- int const gain1 = (int)(matchLength*4 - ZSTD_highbit32((U32)offset+1) + 4);
- if ((ml2 >= 4) && (gain2 > gain1)) {
- matchLength = ml2, offset = offset2, start = ip;
- continue; /* search a better one */
- } }
-
- /* let's find an even better one */
- if ((depth==2) && (ip<ilimit)) {
- ip ++;
- if ((offset) && ((offset_1>0) & (MEM_read32(ip) == MEM_read32(ip - offset_1)))) {
- size_t const ml2 = ZSTD_count(ip+4, ip+4-offset_1, iend) + 4;
- int const gain2 = (int)(ml2 * 4);
- int const gain1 = (int)(matchLength*4 - ZSTD_highbit32((U32)offset+1) + 1);
- if ((ml2 >= 4) && (gain2 > gain1))
- matchLength = ml2, offset = 0, start = ip;
- }
- { size_t offset2=99999999;
- size_t const ml2 = searchMax(ctx, ip, iend, &offset2, maxSearches, mls);
- int const gain2 = (int)(ml2*4 - ZSTD_highbit32((U32)offset2+1)); /* raw approx */
- int const gain1 = (int)(matchLength*4 - ZSTD_highbit32((U32)offset+1) + 7);
- if ((ml2 >= 4) && (gain2 > gain1)) {
- matchLength = ml2, offset = offset2, start = ip;
- continue;
- } } }
- break; /* nothing found : store previous solution */
- }
-
- /* NOTE:
- * start[-offset+ZSTD_REP_MOVE-1] is undefined behavior.
- * (-offset+ZSTD_REP_MOVE-1) is unsigned, and is added to start, which
- * overflows the pointer, which is undefined behavior.
- */
- /* catch up */
- if (offset) {
- while ( (start > anchor)
- && (start > base+offset-ZSTD_REP_MOVE)
- && (start[-1] == (start-offset+ZSTD_REP_MOVE)[-1]) ) /* only search for offset within prefix */
- { start--; matchLength++; }
- offset_2 = offset_1; offset_1 = (U32)(offset - ZSTD_REP_MOVE);
- }
- /* store sequence */
-_storeSequence:
- { size_t const litLength = start - anchor;
- ZSTD_storeSeq(seqStorePtr, litLength, anchor, (U32)offset, matchLength-MINMATCH);
- anchor = ip = start + matchLength;
- }
-
- /* check immediate repcode */
- while ( (ip <= ilimit)
- && ((offset_2>0)
- & (MEM_read32(ip) == MEM_read32(ip - offset_2)) )) {
- /* store sequence */
- matchLength = ZSTD_count(ip+4, ip+4-offset_2, iend) + 4;
- offset = offset_2; offset_2 = offset_1; offset_1 = (U32)offset; /* swap repcodes */
- ZSTD_storeSeq(seqStorePtr, 0, anchor, 0, matchLength-MINMATCH);
- ip += matchLength;
- anchor = ip;
- continue; /* faster when present ... (?) */
- } }
-
- /* Save reps for next block */
- seqStorePtr->repToConfirm[0] = offset_1 ? offset_1 : savedOffset;
- seqStorePtr->repToConfirm[1] = offset_2 ? offset_2 : savedOffset;
-
- /* Last Literals */
- { size_t const lastLLSize = iend - anchor;
- memcpy(seqStorePtr->lit, anchor, lastLLSize);
- seqStorePtr->lit += lastLLSize;
- }
-}
-
-
-static void ZSTD_compressBlock_btlazy2(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
-{
- ZSTD_compressBlock_lazy_generic(ctx, src, srcSize, 1, 2);
-}
-
-static void ZSTD_compressBlock_lazy2(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
-{
- ZSTD_compressBlock_lazy_generic(ctx, src, srcSize, 0, 2);
-}
-
-static void ZSTD_compressBlock_lazy(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
-{
- ZSTD_compressBlock_lazy_generic(ctx, src, srcSize, 0, 1);
-}
-
-static void ZSTD_compressBlock_greedy(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
-{
- ZSTD_compressBlock_lazy_generic(ctx, src, srcSize, 0, 0);
-}
-
-
-FORCE_INLINE_TEMPLATE
-void ZSTD_compressBlock_lazy_extDict_generic(ZSTD_CCtx* ctx,
- const void* src, size_t srcSize,
- const U32 searchMethod, const U32 depth)
-{
- seqStore_t* seqStorePtr = &(ctx->seqStore);
- const BYTE* const istart = (const BYTE*)src;
- const BYTE* ip = istart;
- const BYTE* anchor = istart;
- const BYTE* const iend = istart + srcSize;
- const BYTE* const ilimit = iend - 8;
- const BYTE* const base = ctx->base;
- const U32 dictLimit = ctx->dictLimit;
- const U32 lowestIndex = ctx->lowLimit;
- const BYTE* const prefixStart = base + dictLimit;
- const BYTE* const dictBase = ctx->dictBase;
- const BYTE* const dictEnd = dictBase + dictLimit;
- const BYTE* const dictStart = dictBase + ctx->lowLimit;
-
- const U32 maxSearches = 1 << ctx->appliedParams.cParams.searchLog;
- const U32 mls = ctx->appliedParams.cParams.searchLength;
-
- typedef size_t (*searchMax_f)(ZSTD_CCtx* zc, const BYTE* ip, const BYTE* iLimit,
- size_t* offsetPtr,
- U32 maxNbAttempts, U32 matchLengthSearch);
- searchMax_f searchMax = searchMethod ? ZSTD_BtFindBestMatch_selectMLS_extDict : ZSTD_HcFindBestMatch_extDict_selectMLS;
-
- U32 offset_1 = seqStorePtr->rep[0], offset_2 = seqStorePtr->rep[1];
-
- /* init */
- ctx->nextToUpdate3 = ctx->nextToUpdate;
- ip += (ip == prefixStart);
-
- /* Match Loop */
- while (ip < ilimit) {
- size_t matchLength=0;
- size_t offset=0;
- const BYTE* start=ip+1;
- U32 current = (U32)(ip-base);
-
- /* check repCode */
- { const U32 repIndex = (U32)(current+1 - offset_1);
- const BYTE* const repBase = repIndex < dictLimit ? dictBase : base;
- const BYTE* const repMatch = repBase + repIndex;
- if (((U32)((dictLimit-1) - repIndex) >= 3) & (repIndex > lowestIndex)) /* intentional overflow */
- if (MEM_read32(ip+1) == MEM_read32(repMatch)) {
- /* repcode detected we should take it */
- const BYTE* const repEnd = repIndex < dictLimit ? dictEnd : iend;
- matchLength = ZSTD_count_2segments(ip+1+4, repMatch+4, iend, repEnd, prefixStart) + 4;
- if (depth==0) goto _storeSequence;
- } }
-
- /* first search (depth 0) */
- { size_t offsetFound = 99999999;
- size_t const ml2 = searchMax(ctx, ip, iend, &offsetFound, maxSearches, mls);
- if (ml2 > matchLength)
- matchLength = ml2, start = ip, offset=offsetFound;
- }
-
- if (matchLength < 4) {
- ip += ((ip-anchor) >> g_searchStrength) + 1; /* jump faster over incompressible sections */
- continue;
- }
-
- /* let's try to find a better solution */
- if (depth>=1)
- while (ip<ilimit) {
- ip ++;
- current++;
- /* check repCode */
- if (offset) {
- const U32 repIndex = (U32)(current - offset_1);
- const BYTE* const repBase = repIndex < dictLimit ? dictBase : base;
- const BYTE* const repMatch = repBase + repIndex;
- if (((U32)((dictLimit-1) - repIndex) >= 3) & (repIndex > lowestIndex)) /* intentional overflow */
- if (MEM_read32(ip) == MEM_read32(repMatch)) {
- /* repcode detected */
- const BYTE* const repEnd = repIndex < dictLimit ? dictEnd : iend;
- size_t const repLength = ZSTD_count_2segments(ip+4, repMatch+4, iend, repEnd, prefixStart) + 4;
- int const gain2 = (int)(repLength * 3);
- int const gain1 = (int)(matchLength*3 - ZSTD_highbit32((U32)offset+1) + 1);
- if ((repLength >= 4) && (gain2 > gain1))
- matchLength = repLength, offset = 0, start = ip;
- } }
-
- /* search match, depth 1 */
- { size_t offset2=99999999;
- size_t const ml2 = searchMax(ctx, ip, iend, &offset2, maxSearches, mls);
- int const gain2 = (int)(ml2*4 - ZSTD_highbit32((U32)offset2+1)); /* raw approx */
- int const gain1 = (int)(matchLength*4 - ZSTD_highbit32((U32)offset+1) + 4);
- if ((ml2 >= 4) && (gain2 > gain1)) {
- matchLength = ml2, offset = offset2, start = ip;
- continue; /* search a better one */
- } }
-
- /* let's find an even better one */
- if ((depth==2) && (ip<ilimit)) {
- ip ++;
- current++;
- /* check repCode */
- if (offset) {
- const U32 repIndex = (U32)(current - offset_1);
- const BYTE* const repBase = repIndex < dictLimit ? dictBase : base;
- const BYTE* const repMatch = repBase + repIndex;
- if (((U32)((dictLimit-1) - repIndex) >= 3) & (repIndex > lowestIndex)) /* intentional overflow */
- if (MEM_read32(ip) == MEM_read32(repMatch)) {
- /* repcode detected */
- const BYTE* const repEnd = repIndex < dictLimit ? dictEnd : iend;
- size_t const repLength = ZSTD_count_2segments(ip+4, repMatch+4, iend, repEnd, prefixStart) + 4;
- int const gain2 = (int)(repLength * 4);
- int const gain1 = (int)(matchLength*4 - ZSTD_highbit32((U32)offset+1) + 1);
- if ((repLength >= 4) && (gain2 > gain1))
- matchLength = repLength, offset = 0, start = ip;
- } }
-
- /* search match, depth 2 */
- { size_t offset2=99999999;
- size_t const ml2 = searchMax(ctx, ip, iend, &offset2, maxSearches, mls);
- int const gain2 = (int)(ml2*4 - ZSTD_highbit32((U32)offset2+1)); /* raw approx */
- int const gain1 = (int)(matchLength*4 - ZSTD_highbit32((U32)offset+1) + 7);
- if ((ml2 >= 4) && (gain2 > gain1)) {
- matchLength = ml2, offset = offset2, start = ip;
- continue;
- } } }
- break; /* nothing found : store previous solution */
- }
-
- /* catch up */
- if (offset) {
- U32 const matchIndex = (U32)((start-base) - (offset - ZSTD_REP_MOVE));
- const BYTE* match = (matchIndex < dictLimit) ? dictBase + matchIndex : base + matchIndex;
- const BYTE* const mStart = (matchIndex < dictLimit) ? dictStart : prefixStart;
- while ((start>anchor) && (match>mStart) && (start[-1] == match[-1])) { start--; match--; matchLength++; } /* catch up */
- offset_2 = offset_1; offset_1 = (U32)(offset - ZSTD_REP_MOVE);
- }
-
- /* store sequence */
-_storeSequence:
- { size_t const litLength = start - anchor;
- ZSTD_storeSeq(seqStorePtr, litLength, anchor, (U32)offset, matchLength-MINMATCH);
- anchor = ip = start + matchLength;
- }
-
- /* check immediate repcode */
- while (ip <= ilimit) {
- const U32 repIndex = (U32)((ip-base) - offset_2);
- const BYTE* const repBase = repIndex < dictLimit ? dictBase : base;
- const BYTE* const repMatch = repBase + repIndex;
- if (((U32)((dictLimit-1) - repIndex) >= 3) & (repIndex > lowestIndex)) /* intentional overflow */
- if (MEM_read32(ip) == MEM_read32(repMatch)) {
- /* repcode detected we should take it */
- const BYTE* const repEnd = repIndex < dictLimit ? dictEnd : iend;
- matchLength = ZSTD_count_2segments(ip+4, repMatch+4, iend, repEnd, prefixStart) + 4;
- offset = offset_2; offset_2 = offset_1; offset_1 = (U32)offset; /* swap offset history */
- ZSTD_storeSeq(seqStorePtr, 0, anchor, 0, matchLength-MINMATCH);
- ip += matchLength;
- anchor = ip;
- continue; /* faster when present ... (?) */
- }
- break;
- } }
-
- /* Save reps for next block */
- seqStorePtr->repToConfirm[0] = offset_1; seqStorePtr->repToConfirm[1] = offset_2;
-
- /* Last Literals */
- { size_t const lastLLSize = iend - anchor;
- memcpy(seqStorePtr->lit, anchor, lastLLSize);
- seqStorePtr->lit += lastLLSize;
- }
-}
-
-
-void ZSTD_compressBlock_greedy_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
-{
- ZSTD_compressBlock_lazy_extDict_generic(ctx, src, srcSize, 0, 0);
-}
-
-static void ZSTD_compressBlock_lazy_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
-{
- ZSTD_compressBlock_lazy_extDict_generic(ctx, src, srcSize, 0, 1);
-}
-
-static void ZSTD_compressBlock_lazy2_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
-{
- ZSTD_compressBlock_lazy_extDict_generic(ctx, src, srcSize, 0, 2);
-}
-
-static void ZSTD_compressBlock_btlazy2_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
-{
- ZSTD_compressBlock_lazy_extDict_generic(ctx, src, srcSize, 1, 2);
-}
-
-
-/* The optimal parser */
-#include "zstd_opt.h"
-
-static void ZSTD_compressBlock_btopt(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
-{
-#ifdef ZSTD_OPT_H_91842398743
- ZSTD_compressBlock_opt_generic(ctx, src, srcSize, 0);
-#else
- (void)ctx; (void)src; (void)srcSize;
- return;
-#endif
-}
-
-static void ZSTD_compressBlock_btultra(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
-{
-#ifdef ZSTD_OPT_H_91842398743
- ZSTD_compressBlock_opt_generic(ctx, src, srcSize, 1);
-#else
- (void)ctx; (void)src; (void)srcSize;
- return;
-#endif
-}
-
-static void ZSTD_compressBlock_btopt_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
-{
-#ifdef ZSTD_OPT_H_91842398743
- ZSTD_compressBlock_opt_extDict_generic(ctx, src, srcSize, 0);
-#else
- (void)ctx; (void)src; (void)srcSize;
- return;
-#endif
-}
-
-static void ZSTD_compressBlock_btultra_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
-{
-#ifdef ZSTD_OPT_H_91842398743
- ZSTD_compressBlock_opt_extDict_generic(ctx, src, srcSize, 1);
-#else
- (void)ctx; (void)src; (void)srcSize;
- return;
-#endif
-}
-
-
/* ZSTD_selectBlockCompressor() :
+ * Not static, but internal use only (used by long distance matcher)
* assumption : strat is a valid strategy */
-typedef void (*ZSTD_blockCompressor) (ZSTD_CCtx* ctx, const void* src, size_t srcSize);
-static ZSTD_blockCompressor ZSTD_selectBlockCompressor(ZSTD_strategy strat, int extDict)
+typedef size_t (*ZSTD_blockCompressor) (ZSTD_CCtx* ctx, const void* src, size_t srcSize);
+ZSTD_blockCompressor ZSTD_selectBlockCompressor(ZSTD_strategy strat, int extDict)
{
static const ZSTD_blockCompressor blockCompressor[2][(unsigned)ZSTD_btultra+1] = {
{ ZSTD_compressBlock_fast /* default for 0 */,
@@ -2819,18 +1565,37 @@ static ZSTD_blockCompressor ZSTD_selectBlockCompressor(ZSTD_strategy strat, int
return blockCompressor[extDict!=0][(U32)strat];
}
+static void ZSTD_storeLastLiterals(seqStore_t* seqStorePtr,
+ const BYTE* anchor, size_t lastLLSize)
+{
+ memcpy(seqStorePtr->lit, anchor, lastLLSize);
+ seqStorePtr->lit += lastLLSize;
+}
static size_t ZSTD_compressBlock_internal(ZSTD_CCtx* zc, void* dst, size_t dstCapacity, const void* src, size_t srcSize)
{
- ZSTD_blockCompressor const blockCompressor = ZSTD_selectBlockCompressor(zc->appliedParams.cParams.strategy, zc->lowLimit < zc->dictLimit);
const BYTE* const base = zc->base;
const BYTE* const istart = (const BYTE*)src;
const U32 current = (U32)(istart-base);
+ size_t lastLLSize;
+ const BYTE* anchor;
+ U32 const extDict = zc->lowLimit < zc->dictLimit;
+ const ZSTD_blockCompressor blockCompressor =
+ zc->appliedParams.ldmParams.enableLdm
+ ? (extDict ? ZSTD_compressBlock_ldm_extDict : ZSTD_compressBlock_ldm)
+ : ZSTD_selectBlockCompressor(zc->appliedParams.cParams.strategy, extDict);
+
if (srcSize < MIN_CBLOCK_SIZE+ZSTD_blockHeaderSize+1) return 0; /* don't even attempt compression below a certain srcSize */
ZSTD_resetSeqStore(&(zc->seqStore));
if (current > zc->nextToUpdate + 384)
zc->nextToUpdate = current - MIN(192, (U32)(current - zc->nextToUpdate - 384)); /* limited update after finding a very long match */
- blockCompressor(zc, src, srcSize);
+
+ lastLLSize = blockCompressor(zc, src, srcSize);
+
+ /* Last literals */
+ anchor = (const BYTE*)src + srcSize - lastLLSize;
+ ZSTD_storeLastLiterals(&zc->seqStore, anchor, lastLLSize);
+
return ZSTD_compressSequences(&zc->seqStore, zc->entropy, &zc->appliedParams.cParams, dst, dstCapacity, srcSize);
}
@@ -2852,7 +1617,7 @@ static size_t ZSTD_compress_frameChunk (ZSTD_CCtx* cctx,
const BYTE* ip = (const BYTE*)src;
BYTE* const ostart = (BYTE*)dst;
BYTE* op = ostart;
- U32 const maxDist = 1 << cctx->appliedParams.cParams.windowLog;
+ U32 const maxDist = (U32)1 << cctx->appliedParams.cParams.windowLog;
if (cctx->appliedParams.fParams.checksumFlag && srcSize)
XXH64_update(&cctx->xxhState, src, srcSize);
@@ -2865,13 +1630,33 @@ static size_t ZSTD_compress_frameChunk (ZSTD_CCtx* cctx,
return ERROR(dstSize_tooSmall); /* not enough space to store compressed block */
if (remaining < blockSize) blockSize = remaining;
- /* preemptive overflow correction */
+ /* preemptive overflow correction:
+ * 1. correction is large enough:
+ * lowLimit > (3<<29) ==> current > 3<<29 + 1<<windowLog - blockSize
+ * 1<<windowLog <= newCurrent < 1<<chainLog + 1<<windowLog
+ *
+ * current - newCurrent
+ * > (3<<29 + 1<<windowLog - blockSize) - (1<<windowLog + 1<<chainLog)
+ * > (3<<29 - blockSize) - (1<<chainLog)
+ * > (3<<29 - blockSize) - (1<<30) (NOTE: chainLog <= 30)
+ * > 1<<29 - 1<<17
+ *
+ * 2. (ip+blockSize - cctx->base) doesn't overflow:
+ * In 32 bit mode we limit windowLog to 30 so we don't get
+ * differences larger than 1<<31-1.
+ * 3. cctx->lowLimit < 1<<32:
+ * windowLog <= 31 ==> 3<<29 + 1<<windowLog < 7<<29 < 1<<32.
+ */
if (cctx->lowLimit > (3U<<29)) {
- U32 const cycleMask = (1 << ZSTD_cycleLog(cctx->appliedParams.cParams.hashLog, cctx->appliedParams.cParams.strategy)) - 1;
+ U32 const cycleMask = ((U32)1 << ZSTD_cycleLog(cctx->appliedParams.cParams.chainLog, cctx->appliedParams.cParams.strategy)) - 1;
U32 const current = (U32)(ip - cctx->base);
- U32 const newCurrent = (current & cycleMask) + (1 << cctx->appliedParams.cParams.windowLog);
+ U32 const newCurrent = (current & cycleMask) + ((U32)1 << cctx->appliedParams.cParams.windowLog);
U32 const correction = current - newCurrent;
- ZSTD_STATIC_ASSERT(ZSTD_WINDOWLOG_MAX_64 <= 30);
+ ZSTD_STATIC_ASSERT(ZSTD_CHAINLOG_MAX <= 30);
+ ZSTD_STATIC_ASSERT(ZSTD_WINDOWLOG_MAX_32 <= 30);
+ ZSTD_STATIC_ASSERT(ZSTD_WINDOWLOG_MAX <= 31);
+ assert(current > newCurrent);
+ assert(correction > 1<<28); /* Loose bound, should be about 1<<29 */
ZSTD_reduceIndex(cctx, correction);
cctx->base += correction;
cctx->dictBase += correction;
@@ -2879,6 +1664,7 @@ static size_t ZSTD_compress_frameChunk (ZSTD_CCtx* cctx,
cctx->dictLimit -= correction;
if (cctx->nextToUpdate < correction) cctx->nextToUpdate = 0;
else cctx->nextToUpdate -= correction;
+ DEBUGLOG(4, "Correction of 0x%x bytes to lowLimit=0x%x\n", correction, cctx->lowLimit);
}
if ((U32)(ip+blockSize - cctx->base) > cctx->loadedDictEnd + maxDist) {
@@ -2915,25 +1701,29 @@ static size_t ZSTD_compress_frameChunk (ZSTD_CCtx* cctx,
static size_t ZSTD_writeFrameHeader(void* dst, size_t dstCapacity,
- ZSTD_parameters params, U64 pledgedSrcSize, U32 dictID)
+ ZSTD_CCtx_params params, U64 pledgedSrcSize, U32 dictID)
{ BYTE* const op = (BYTE*)dst;
U32 const dictIDSizeCodeLength = (dictID>0) + (dictID>=256) + (dictID>=65536); /* 0-3 */
U32 const dictIDSizeCode = params.fParams.noDictIDFlag ? 0 : dictIDSizeCodeLength; /* 0-3 */
U32 const checksumFlag = params.fParams.checksumFlag>0;
- U32 const windowSize = 1U << params.cParams.windowLog;
+ U32 const windowSize = (U32)1 << params.cParams.windowLog;
U32 const singleSegment = params.fParams.contentSizeFlag && (windowSize >= pledgedSrcSize);
BYTE const windowLogByte = (BYTE)((params.cParams.windowLog - ZSTD_WINDOWLOG_ABSOLUTEMIN) << 3);
U32 const fcsCode = params.fParams.contentSizeFlag ?
(pledgedSrcSize>=256) + (pledgedSrcSize>=65536+256) + (pledgedSrcSize>=0xFFFFFFFFU) : 0; /* 0-3 */
BYTE const frameHeaderDecriptionByte = (BYTE)(dictIDSizeCode + (checksumFlag<<2) + (singleSegment<<5) + (fcsCode<<6) );
- size_t pos;
+ size_t pos=0;
if (dstCapacity < ZSTD_frameHeaderSize_max) return ERROR(dstSize_tooSmall);
- DEBUGLOG(5, "ZSTD_writeFrameHeader : dictIDFlag : %u ; dictID : %u ; dictIDSizeCode : %u",
+ DEBUGLOG(4, "ZSTD_writeFrameHeader : dictIDFlag : %u ; dictID : %u ; dictIDSizeCode : %u",
!params.fParams.noDictIDFlag, dictID, dictIDSizeCode);
- MEM_writeLE32(dst, ZSTD_MAGICNUMBER);
- op[4] = frameHeaderDecriptionByte; pos=5;
+ if (params.format == ZSTD_f_zstd1) {
+ DEBUGLOG(4, "writing zstd magic number");
+ MEM_writeLE32(dst, ZSTD_MAGICNUMBER);
+ pos = 4;
+ }
+ op[pos++] = frameHeaderDecriptionByte;
if (!singleSegment) op[pos++] = windowLogByte;
switch(dictIDSizeCode)
{
@@ -2969,7 +1759,7 @@ static size_t ZSTD_compressContinue_internal (ZSTD_CCtx* cctx,
if (frame && (cctx->stage==ZSTDcs_init)) {
fhSize = ZSTD_writeFrameHeader(dst, dstCapacity, cctx->appliedParams,
- cctx->pledgedSrcSizePlusOne-1, cctx->dictID);
+ cctx->pledgedSrcSizePlusOne-1, cctx->dictID);
if (ZSTD_isError(fhSize)) return fhSize;
dstCapacity -= fhSize;
dst = (char*)dst + fhSize;
@@ -3018,11 +1808,9 @@ size_t ZSTD_compressContinue (ZSTD_CCtx* cctx,
size_t ZSTD_getBlockSize(const ZSTD_CCtx* cctx)
{
- U32 const cLevel = cctx->compressionLevel;
- ZSTD_compressionParameters cParams = (cLevel == ZSTD_CLEVEL_CUSTOM) ?
- cctx->appliedParams.cParams :
- ZSTD_getCParams(cLevel, 0, 0);
- return MIN (ZSTD_BLOCKSIZE_MAX, 1 << cParams.windowLog);
+ ZSTD_compressionParameters const cParams =
+ ZSTD_getCParamsFromCCtxParams(cctx->appliedParams, 0, 0);
+ return MIN (ZSTD_BLOCKSIZE_MAX, (U32)1 << cParams.windowLog);
}
size_t ZSTD_compressBlock(ZSTD_CCtx* cctx, void* dst, size_t dstCapacity, const void* src, size_t srcSize)
@@ -3046,7 +1834,7 @@ static size_t ZSTD_loadDictionaryContent(ZSTD_CCtx* zc, const void* src, size_t
zc->dictBase = zc->base;
zc->base += ip - zc->nextSrc;
zc->nextToUpdate = zc->dictLimit;
- zc->loadedDictEnd = zc->forceWindow ? 0 : (U32)(iend - zc->base);
+ zc->loadedDictEnd = zc->appliedParams.forceWindow ? 0 : (U32)(iend - zc->base);
zc->nextSrc = iend;
if (srcSize <= HASH_READ_SIZE) return 0;
@@ -3056,7 +1844,6 @@ static size_t ZSTD_loadDictionaryContent(ZSTD_CCtx* zc, const void* src, size_t
case ZSTD_fast:
ZSTD_fillHashTable (zc, iend, zc->appliedParams.cParams.searchLength);
break;
-
case ZSTD_dfast:
ZSTD_fillDoubleHashTable (zc, iend, zc->appliedParams.cParams.searchLength);
break;
@@ -3072,7 +1859,7 @@ static size_t ZSTD_loadDictionaryContent(ZSTD_CCtx* zc, const void* src, size_t
case ZSTD_btopt:
case ZSTD_btultra:
if (srcSize >= HASH_READ_SIZE)
- ZSTD_updateTree(zc, iend-HASH_READ_SIZE, iend, 1 << zc->appliedParams.cParams.searchLog, zc->appliedParams.cParams.searchLength);
+ ZSTD_updateTree(zc, iend-HASH_READ_SIZE, iend, (U32)1 << zc->appliedParams.cParams.searchLog, zc->appliedParams.cParams.searchLength);
break;
default:
@@ -3120,8 +1907,10 @@ static size_t ZSTD_loadZstdDictionary(ZSTD_CCtx* cctx, const void* dict, size_t
cctx->dictID = cctx->appliedParams.fParams.noDictIDFlag ? 0 : MEM_readLE32(dictPtr);
dictPtr += 4;
- { size_t const hufHeaderSize = HUF_readCTable((HUF_CElt*)cctx->entropy->hufCTable, 255, dictPtr, dictEnd-dictPtr);
+ { unsigned maxSymbolValue = 255;
+ size_t const hufHeaderSize = HUF_readCTable((HUF_CElt*)cctx->entropy->hufCTable, &maxSymbolValue, dictPtr, dictEnd-dictPtr);
if (HUF_isError(hufHeaderSize)) return ERROR(dictionary_corrupted);
+ if (maxSymbolValue < 255) return ERROR(dictionary_corrupted);
dictPtr += hufHeaderSize;
}
@@ -3221,12 +2010,10 @@ static size_t ZSTD_compressBegin_internal(ZSTD_CCtx* cctx,
const void* dict, size_t dictSize,
ZSTD_dictMode_e dictMode,
const ZSTD_CDict* cdict,
- ZSTD_parameters params, U64 pledgedSrcSize,
+ ZSTD_CCtx_params params, U64 pledgedSrcSize,
ZSTD_buffered_policy_e zbuff)
{
DEBUGLOG(4, "ZSTD_compressBegin_internal");
- DEBUGLOG(4, "dict ? %s", dict ? "dict" : (cdict ? "cdict" : "none"));
- DEBUGLOG(4, "dictMode : %u", (U32)dictMode);
/* params are supposed to be fully validated at this point */
assert(!ZSTD_isError(ZSTD_checkCParams(params.cParams)));
assert(!((dict) && (cdict))); /* either dict or cdict, not both */
@@ -3242,6 +2029,19 @@ static size_t ZSTD_compressBegin_internal(ZSTD_CCtx* cctx,
return ZSTD_compress_insertDictionary(cctx, dict, dictSize, dictMode);
}
+size_t ZSTD_compressBegin_advanced_internal(
+ ZSTD_CCtx* cctx,
+ const void* dict, size_t dictSize,
+ ZSTD_dictMode_e dictMode,
+ ZSTD_CCtx_params params,
+ unsigned long long pledgedSrcSize)
+{
+ /* compression parameters verification and optimization */
+ CHECK_F( ZSTD_checkCParams(params.cParams) );
+ return ZSTD_compressBegin_internal(cctx, dict, dictSize, dictMode, NULL,
+ params, pledgedSrcSize,
+ ZSTDb_not_buffered);
+}
/*! ZSTD_compressBegin_advanced() :
* @return : 0, or an error code */
@@ -3249,21 +2049,22 @@ size_t ZSTD_compressBegin_advanced(ZSTD_CCtx* cctx,
const void* dict, size_t dictSize,
ZSTD_parameters params, unsigned long long pledgedSrcSize)
{
- /* compression parameters verification and optimization */
- CHECK_F(ZSTD_checkCParams(params.cParams));
- return ZSTD_compressBegin_internal(cctx, dict, dictSize, ZSTD_dm_auto, NULL,
- params, pledgedSrcSize, ZSTDb_not_buffered);
+ ZSTD_CCtx_params const cctxParams =
+ ZSTD_assignParamsToCCtxParams(cctx->requestedParams, params);
+ return ZSTD_compressBegin_advanced_internal(cctx, dict, dictSize, ZSTD_dm_auto,
+ cctxParams,
+ pledgedSrcSize);
}
-
size_t ZSTD_compressBegin_usingDict(ZSTD_CCtx* cctx, const void* dict, size_t dictSize, int compressionLevel)
{
ZSTD_parameters const params = ZSTD_getParams(compressionLevel, 0, dictSize);
+ ZSTD_CCtx_params const cctxParams =
+ ZSTD_assignParamsToCCtxParams(cctx->requestedParams, params);
return ZSTD_compressBegin_internal(cctx, dict, dictSize, ZSTD_dm_auto, NULL,
- params, 0, ZSTDb_not_buffered);
+ cctxParams, 0, ZSTDb_not_buffered);
}
-
size_t ZSTD_compressBegin(ZSTD_CCtx* cctx, int compressionLevel)
{
return ZSTD_compressBegin_usingDict(cctx, NULL, 0, compressionLevel);
@@ -3324,9 +2125,9 @@ size_t ZSTD_compressEnd (ZSTD_CCtx* cctx,
endResult = ZSTD_writeEpilogue(cctx, (char*)dst + cSize, dstCapacity-cSize);
if (ZSTD_isError(endResult)) return endResult;
if (cctx->appliedParams.fParams.contentSizeFlag) { /* control src size */
- DEBUGLOG(5, "end of frame : controlling src size");
+ DEBUGLOG(4, "end of frame : controlling src size");
if (cctx->pledgedSrcSizePlusOne != cctx->consumedSrcSize+1) {
- DEBUGLOG(5, "error : pledgedSrcSize = %u, while realSrcSize = %u",
+ DEBUGLOG(4, "error : pledgedSrcSize = %u, while realSrcSize = %u",
(U32)cctx->pledgedSrcSizePlusOne-1, (U32)cctx->consumedSrcSize);
return ERROR(srcSize_wrong);
} }
@@ -3340,9 +2141,13 @@ static size_t ZSTD_compress_internal (ZSTD_CCtx* cctx,
const void* dict,size_t dictSize,
ZSTD_parameters params)
{
- CHECK_F( ZSTD_compressBegin_internal(cctx, dict, dictSize, ZSTD_dm_auto, NULL,
- params, srcSize, ZSTDb_not_buffered) );
- return ZSTD_compressEnd(cctx, dst, dstCapacity, src, srcSize);
+ ZSTD_CCtx_params const cctxParams =
+ ZSTD_assignParamsToCCtxParams(cctx->requestedParams, params);
+ return ZSTD_compress_advanced_internal(cctx,
+ dst, dstCapacity,
+ src, srcSize,
+ dict, dictSize,
+ cctxParams);
}
size_t ZSTD_compress_advanced (ZSTD_CCtx* ctx,
@@ -3355,6 +2160,19 @@ size_t ZSTD_compress_advanced (ZSTD_CCtx* ctx,
return ZSTD_compress_internal(ctx, dst, dstCapacity, src, srcSize, dict, dictSize, params);
}
+/* Internal */
+size_t ZSTD_compress_advanced_internal(
+ ZSTD_CCtx* cctx,
+ void* dst, size_t dstCapacity,
+ const void* src, size_t srcSize,
+ const void* dict,size_t dictSize,
+ ZSTD_CCtx_params params)
+{
+ CHECK_F( ZSTD_compressBegin_internal(cctx, dict, dictSize, ZSTD_dm_auto, NULL,
+ params, srcSize, ZSTDb_not_buffered) );
+ return ZSTD_compressEnd(cctx, dst, dstCapacity, src, srcSize);
+}
+
size_t ZSTD_compress_usingDict(ZSTD_CCtx* ctx, void* dst, size_t dstCapacity, const void* src, size_t srcSize,
const void* dict, size_t dictSize, int compressionLevel)
{
@@ -3384,18 +2202,21 @@ size_t ZSTD_compress(void* dst, size_t dstCapacity, const void* src, size_t srcS
/*! ZSTD_estimateCDictSize_advanced() :
* Estimate amount of memory that will be needed to create a dictionary with following arguments */
-size_t ZSTD_estimateCDictSize_advanced(size_t dictSize, ZSTD_compressionParameters cParams, unsigned byReference)
+size_t ZSTD_estimateCDictSize_advanced(
+ size_t dictSize, ZSTD_compressionParameters cParams,
+ ZSTD_dictLoadMethod_e dictLoadMethod)
{
DEBUGLOG(5, "sizeof(ZSTD_CDict) : %u", (U32)sizeof(ZSTD_CDict));
- DEBUGLOG(5, "CCtx estimate : %u", (U32)ZSTD_estimateCCtxSize_advanced(cParams));
- return sizeof(ZSTD_CDict) + ZSTD_estimateCCtxSize_advanced(cParams)
- + (byReference ? 0 : dictSize);
+ DEBUGLOG(5, "CCtx estimate : %u",
+ (U32)ZSTD_estimateCCtxSize_usingCParams(cParams));
+ return sizeof(ZSTD_CDict) + ZSTD_estimateCCtxSize_usingCParams(cParams)
+ + (dictLoadMethod == ZSTD_dlm_byRef ? 0 : dictSize);
}
size_t ZSTD_estimateCDictSize(size_t dictSize, int compressionLevel)
{
ZSTD_compressionParameters const cParams = ZSTD_getCParams(compressionLevel, 0, dictSize);
- return ZSTD_estimateCDictSize_advanced(dictSize, cParams, 0);
+ return ZSTD_estimateCDictSize_advanced(dictSize, cParams, ZSTD_dlm_byCopy);
}
size_t ZSTD_sizeof_CDict(const ZSTD_CDict* cdict)
@@ -3406,22 +2227,15 @@ size_t ZSTD_sizeof_CDict(const ZSTD_CDict* cdict)
return ZSTD_sizeof_CCtx(cdict->refContext) + (cdict->dictBuffer ? cdict->dictContentSize : 0) + sizeof(*cdict);
}
-static ZSTD_parameters ZSTD_makeParams(ZSTD_compressionParameters cParams, ZSTD_frameParameters fParams)
-{
- ZSTD_parameters params;
- params.cParams = cParams;
- params.fParams = fParams;
- return params;
-}
-
static size_t ZSTD_initCDict_internal(
ZSTD_CDict* cdict,
const void* dictBuffer, size_t dictSize,
- unsigned byReference, ZSTD_dictMode_e dictMode,
+ ZSTD_dictLoadMethod_e dictLoadMethod,
+ ZSTD_dictMode_e dictMode,
ZSTD_compressionParameters cParams)
{
DEBUGLOG(5, "ZSTD_initCDict_internal, mode %u", (U32)dictMode);
- if ((byReference) || (!dictBuffer) || (!dictSize)) {
+ if ((dictLoadMethod == ZSTD_dlm_byRef) || (!dictBuffer) || (!dictSize)) {
cdict->dictBuffer = NULL;
cdict->dictContent = dictBuffer;
} else {
@@ -3433,13 +2247,12 @@ static size_t ZSTD_initCDict_internal(
}
cdict->dictContentSize = dictSize;
- { ZSTD_frameParameters const fParams = { 0 /* contentSizeFlag */,
- 0 /* checksumFlag */, 0 /* noDictIDFlag */ }; /* dummy */
- ZSTD_parameters const params = ZSTD_makeParams(cParams, fParams);
+ { ZSTD_CCtx_params cctxParams = cdict->refContext->requestedParams;
+ cctxParams.cParams = cParams;
CHECK_F( ZSTD_compressBegin_internal(cdict->refContext,
cdict->dictContent, dictSize, dictMode,
NULL,
- params, ZSTD_CONTENTSIZE_UNKNOWN,
+ cctxParams, ZSTD_CONTENTSIZE_UNKNOWN,
ZSTDb_not_buffered) );
}
@@ -3447,7 +2260,8 @@ static size_t ZSTD_initCDict_internal(
}
ZSTD_CDict* ZSTD_createCDict_advanced(const void* dictBuffer, size_t dictSize,
- unsigned byReference, ZSTD_dictMode_e dictMode,
+ ZSTD_dictLoadMethod_e dictLoadMethod,
+ ZSTD_dictMode_e dictMode,
ZSTD_compressionParameters cParams, ZSTD_customMem customMem)
{
DEBUGLOG(5, "ZSTD_createCDict_advanced, mode %u", (U32)dictMode);
@@ -3462,10 +2276,9 @@ ZSTD_CDict* ZSTD_createCDict_advanced(const void* dictBuffer, size_t dictSize,
return NULL;
}
cdict->refContext = cctx;
-
if (ZSTD_isError( ZSTD_initCDict_internal(cdict,
dictBuffer, dictSize,
- byReference, dictMode,
+ dictLoadMethod, dictMode,
cParams) )) {
ZSTD_freeCDict(cdict);
return NULL;
@@ -3479,7 +2292,7 @@ ZSTD_CDict* ZSTD_createCDict(const void* dict, size_t dictSize, int compressionL
{
ZSTD_compressionParameters cParams = ZSTD_getCParams(compressionLevel, 0, dictSize);
return ZSTD_createCDict_advanced(dict, dictSize,
- 0 /* byReference */, ZSTD_dm_auto,
+ ZSTD_dlm_byCopy, ZSTD_dm_auto,
cParams, ZSTD_defaultCMem);
}
@@ -3487,7 +2300,7 @@ ZSTD_CDict* ZSTD_createCDict_byReference(const void* dict, size_t dictSize, int
{
ZSTD_compressionParameters cParams = ZSTD_getCParams(compressionLevel, 0, dictSize);
return ZSTD_createCDict_advanced(dict, dictSize,
- 1 /* byReference */, ZSTD_dm_auto,
+ ZSTD_dlm_byRef, ZSTD_dm_auto,
cParams, ZSTD_defaultCMem);
}
@@ -3517,11 +2330,12 @@ size_t ZSTD_freeCDict(ZSTD_CDict* cdict)
*/
ZSTD_CDict* ZSTD_initStaticCDict(void* workspace, size_t workspaceSize,
const void* dict, size_t dictSize,
- unsigned byReference, ZSTD_dictMode_e dictMode,
+ ZSTD_dictLoadMethod_e dictLoadMethod,
+ ZSTD_dictMode_e dictMode,
ZSTD_compressionParameters cParams)
{
- size_t const cctxSize = ZSTD_estimateCCtxSize_advanced(cParams);
- size_t const neededSize = sizeof(ZSTD_CDict) + (byReference ? 0 : dictSize)
+ size_t const cctxSize = ZSTD_estimateCCtxSize_usingCParams(cParams);
+ size_t const neededSize = sizeof(ZSTD_CDict) + (dictLoadMethod == ZSTD_dlm_byRef ? 0 : dictSize)
+ cctxSize;
ZSTD_CDict* const cdict = (ZSTD_CDict*) workspace;
void* ptr;
@@ -3531,7 +2345,7 @@ ZSTD_CDict* ZSTD_initStaticCDict(void* workspace, size_t workspaceSize,
(U32)workspaceSize, (U32)neededSize, (U32)(workspaceSize < neededSize));
if (workspaceSize < neededSize) return NULL;
- if (!byReference) {
+ if (dictLoadMethod == ZSTD_dlm_byCopy) {
memcpy(cdict+1, dict, dictSize);
dict = cdict+1;
ptr = (char*)workspace + sizeof(ZSTD_CDict) + dictSize;
@@ -3542,15 +2356,15 @@ ZSTD_CDict* ZSTD_initStaticCDict(void* workspace, size_t workspaceSize,
if (ZSTD_isError( ZSTD_initCDict_internal(cdict,
dict, dictSize,
- 1 /* byReference */, dictMode,
+ ZSTD_dlm_byRef, dictMode,
cParams) ))
return NULL;
return cdict;
}
-ZSTD_parameters ZSTD_getParamsFromCDict(const ZSTD_CDict* cdict) {
- return ZSTD_getParamsFromCCtx(cdict->refContext);
+ZSTD_compressionParameters ZSTD_getCParamsFromCDict(const ZSTD_CDict* cdict) {
+ return cdict->refContext->appliedParams.cParams;
}
/* ZSTD_compressBegin_usingCDict_advanced() :
@@ -3560,7 +2374,8 @@ size_t ZSTD_compressBegin_usingCDict_advanced(
ZSTD_frameParameters const fParams, unsigned long long const pledgedSrcSize)
{
if (cdict==NULL) return ERROR(dictionary_wrong);
- { ZSTD_parameters params = cdict->refContext->appliedParams;
+ { ZSTD_CCtx_params params = cctx->requestedParams;
+ params.cParams = ZSTD_getCParamsFromCDict(cdict);
params.fParams = fParams;
DEBUGLOG(5, "ZSTD_compressBegin_usingCDict_advanced");
return ZSTD_compressBegin_internal(cctx,
@@ -3644,7 +2459,7 @@ size_t ZSTD_CStreamOutSize(void)
static size_t ZSTD_resetCStream_internal(ZSTD_CStream* zcs,
const void* dict, size_t dictSize, ZSTD_dictMode_e dictMode,
const ZSTD_CDict* cdict,
- ZSTD_parameters params, unsigned long long pledgedSrcSize)
+ const ZSTD_CCtx_params params, unsigned long long pledgedSrcSize)
{
DEBUGLOG(4, "ZSTD_resetCStream_internal");
/* params are supposed to be fully validated at this point */
@@ -3668,13 +2483,11 @@ static size_t ZSTD_resetCStream_internal(ZSTD_CStream* zcs,
size_t ZSTD_resetCStream(ZSTD_CStream* zcs, unsigned long long pledgedSrcSize)
{
- ZSTD_parameters params = zcs->requestedParams;
+ ZSTD_CCtx_params params = zcs->requestedParams;
params.fParams.contentSizeFlag = (pledgedSrcSize > 0);
- DEBUGLOG(5, "ZSTD_resetCStream");
- if (zcs->compressionLevel != ZSTD_CLEVEL_CUSTOM) {
- params.cParams = ZSTD_getCParams(zcs->compressionLevel, pledgedSrcSize, 0 /* dictSize */);
- }
- return ZSTD_resetCStream_internal(zcs, NULL, 0, zcs->dictMode, zcs->cdict, params, pledgedSrcSize);
+ params.cParams = ZSTD_getCParamsFromCCtxParams(params, pledgedSrcSize, 0);
+ DEBUGLOG(4, "ZSTD_resetCStream");
+ return ZSTD_resetCStream_internal(zcs, NULL, 0, ZSTD_dm_auto, zcs->cdict, params, pledgedSrcSize);
}
/*! ZSTD_initCStream_internal() :
@@ -3683,9 +2496,9 @@ size_t ZSTD_resetCStream(ZSTD_CStream* zcs, unsigned long long pledgedSrcSize)
* Assumption 2 : either dict, or cdict, is defined, not both */
size_t ZSTD_initCStream_internal(ZSTD_CStream* zcs,
const void* dict, size_t dictSize, const ZSTD_CDict* cdict,
- ZSTD_parameters params, unsigned long long pledgedSrcSize)
+ ZSTD_CCtx_params params, unsigned long long pledgedSrcSize)
{
- DEBUGLOG(5, "ZSTD_initCStream_internal");
+ DEBUGLOG(4, "ZSTD_initCStream_internal");
assert(!ZSTD_isError(ZSTD_checkCParams(params.cParams)));
assert(!((dict) && (cdict))); /* either dict or cdict, not both */
@@ -3697,23 +2510,23 @@ size_t ZSTD_initCStream_internal(ZSTD_CStream* zcs,
}
ZSTD_freeCDict(zcs->cdictLocal);
zcs->cdictLocal = ZSTD_createCDict_advanced(dict, dictSize,
- zcs->dictContentByRef, zcs->dictMode,
+ ZSTD_dlm_byCopy, ZSTD_dm_auto,
params.cParams, zcs->customMem);
zcs->cdict = zcs->cdictLocal;
if (zcs->cdictLocal == NULL) return ERROR(memory_allocation);
} else {
if (cdict) {
- ZSTD_parameters const cdictParams = ZSTD_getParamsFromCDict(cdict);
- params.cParams = cdictParams.cParams; /* cParams are enforced from cdict */
+ params.cParams = ZSTD_getCParamsFromCDict(cdict); /* cParams are enforced from cdict */
}
ZSTD_freeCDict(zcs->cdictLocal);
zcs->cdictLocal = NULL;
zcs->cdict = cdict;
}
+ params.compressionLevel = ZSTD_CLEVEL_CUSTOM;
zcs->requestedParams = params;
- zcs->compressionLevel = ZSTD_CLEVEL_CUSTOM;
- return ZSTD_resetCStream_internal(zcs, NULL, 0, zcs->dictMode, zcs->cdict, params, pledgedSrcSize);
+
+ return ZSTD_resetCStream_internal(zcs, NULL, 0, ZSTD_dm_auto, zcs->cdict, params, pledgedSrcSize);
}
/* ZSTD_initCStream_usingCDict_advanced() :
@@ -3724,7 +2537,8 @@ size_t ZSTD_initCStream_usingCDict_advanced(ZSTD_CStream* zcs,
unsigned long long pledgedSrcSize)
{ /* cannot handle NULL cdict (does not know what to do) */
if (!cdict) return ERROR(dictionary_wrong);
- { ZSTD_parameters params = ZSTD_getParamsFromCDict(cdict);
+ { ZSTD_CCtx_params params = zcs->requestedParams;
+ params.cParams = ZSTD_getCParamsFromCDict(cdict);
params.fParams = fParams;
return ZSTD_initCStream_internal(zcs,
NULL, 0, cdict,
@@ -3743,30 +2557,32 @@ size_t ZSTD_initCStream_advanced(ZSTD_CStream* zcs,
const void* dict, size_t dictSize,
ZSTD_parameters params, unsigned long long pledgedSrcSize)
{
+ ZSTD_CCtx_params const cctxParams =
+ ZSTD_assignParamsToCCtxParams(zcs->requestedParams, params);
CHECK_F( ZSTD_checkCParams(params.cParams) );
- zcs->requestedParams = params;
- zcs->compressionLevel = ZSTD_CLEVEL_CUSTOM;
- return ZSTD_initCStream_internal(zcs, dict, dictSize, NULL, params, pledgedSrcSize);
+ return ZSTD_initCStream_internal(zcs, dict, dictSize, NULL, cctxParams, pledgedSrcSize);
}
size_t ZSTD_initCStream_usingDict(ZSTD_CStream* zcs, const void* dict, size_t dictSize, int compressionLevel)
{
ZSTD_parameters const params = ZSTD_getParams(compressionLevel, 0, dictSize);
- zcs->compressionLevel = compressionLevel;
- return ZSTD_initCStream_internal(zcs, dict, dictSize, NULL, params, 0);
+ ZSTD_CCtx_params const cctxParams =
+ ZSTD_assignParamsToCCtxParams(zcs->requestedParams, params);
+ return ZSTD_initCStream_internal(zcs, dict, dictSize, NULL, cctxParams, 0);
}
size_t ZSTD_initCStream_srcSize(ZSTD_CStream* zcs, int compressionLevel, unsigned long long pledgedSrcSize)
{
- ZSTD_parameters params = ZSTD_getParams(compressionLevel, pledgedSrcSize, 0);
- params.fParams.contentSizeFlag = (pledgedSrcSize>0);
- return ZSTD_initCStream_internal(zcs, NULL, 0, NULL, params, pledgedSrcSize);
+ ZSTD_CCtx_params cctxParams;
+ ZSTD_parameters const params = ZSTD_getParams(compressionLevel, pledgedSrcSize, 0);
+ cctxParams = ZSTD_assignParamsToCCtxParams(zcs->requestedParams, params);
+ cctxParams.fParams.contentSizeFlag = (pledgedSrcSize>0);
+ return ZSTD_initCStream_internal(zcs, NULL, 0, NULL, cctxParams, pledgedSrcSize);
}
size_t ZSTD_initCStream(ZSTD_CStream* zcs, int compressionLevel)
{
- ZSTD_parameters const params = ZSTD_getParams(compressionLevel, 0, 0);
- return ZSTD_initCStream_internal(zcs, NULL, 0, NULL, params, 0);
+ return ZSTD_initCStream_srcSize(zcs, compressionLevel, 0);
}
/*====== Compression ======*/
@@ -3781,6 +2597,7 @@ MEM_STATIC size_t ZSTD_limitCopy(void* dst, size_t dstCapacity,
/** ZSTD_compressStream_generic():
* internal function for all *compressStream*() variants and *compress_generic()
+ * non-static, because can be called from zstdmt.c
* @return : hint size for next input */
size_t ZSTD_compressStream_generic(ZSTD_CStream* zcs,
ZSTD_outBuffer* output,
@@ -3934,21 +2751,13 @@ size_t ZSTD_compressStream(ZSTD_CStream* zcs, ZSTD_outBuffer* output, ZSTD_inBuf
return ZSTD_compressStream_generic(zcs, output, input, ZSTD_e_continue);
}
-/*! ZSTDMT_initCStream_internal() :
- * Private use only. Init streaming operation.
- * expects params to be valid.
- * must receive dict, or cdict, or none, but not both.
- * @return : 0, or an error code */
-size_t ZSTDMT_initCStream_internal(ZSTDMT_CCtx* zcs,
- const void* dict, size_t dictSize, const ZSTD_CDict* cdict,
- ZSTD_parameters params, unsigned long long pledgedSrcSize);
-
size_t ZSTD_compress_generic (ZSTD_CCtx* cctx,
ZSTD_outBuffer* output,
ZSTD_inBuffer* input,
ZSTD_EndDirective endOp)
{
+ DEBUGLOG(5, "ZSTD_compress_generic");
/* check conditions */
if (output->pos > output->size) return ERROR(GENERIC);
if (input->pos > input->size) return ERROR(GENERIC);
@@ -3956,31 +2765,42 @@ size_t ZSTD_compress_generic (ZSTD_CCtx* cctx,
/* transparent initialization stage */
if (cctx->streamStage == zcss_init) {
- const void* const prefix = cctx->prefix;
- size_t const prefixSize = cctx->prefixSize;
- ZSTD_parameters params = cctx->requestedParams;
- if (cctx->compressionLevel != ZSTD_CLEVEL_CUSTOM)
- params.cParams = ZSTD_getCParams(cctx->compressionLevel,
- cctx->pledgedSrcSizePlusOne-1, 0 /*dictSize*/);
- cctx->prefix = NULL; cctx->prefixSize = 0; /* single usage */
- assert(prefix==NULL || cctx->cdict==NULL); /* only one can be set */
+ ZSTD_prefixDict const prefixDict = cctx->prefixDict;
+ ZSTD_CCtx_params params = cctx->requestedParams;
+ params.cParams = ZSTD_getCParamsFromCCtxParams(
+ cctx->requestedParams, cctx->pledgedSrcSizePlusOne-1, 0 /*dictSize*/);
+ memset(&cctx->prefixDict, 0, sizeof(cctx->prefixDict)); /* single usage */
+ assert(prefixDict.dict==NULL || cctx->cdict==NULL); /* only one can be set */
+ DEBUGLOG(4, "ZSTD_compress_generic : transparent init stage");
#ifdef ZSTD_MULTITHREAD
- if (cctx->nbThreads > 1) {
- DEBUGLOG(4, "call ZSTDMT_initCStream_internal as nbThreads=%u", cctx->nbThreads);
- CHECK_F( ZSTDMT_initCStream_internal(cctx->mtctx, prefix, prefixSize, cctx->cdict, params, cctx->pledgedSrcSizePlusOne-1) );
+ if (params.nbThreads > 1) {
+ if (cctx->mtctx == NULL || cctx->appliedParams.nbThreads != params.nbThreads) {
+ ZSTDMT_freeCCtx(cctx->mtctx);
+ cctx->mtctx = ZSTDMT_createCCtx_advanced(params.nbThreads, cctx->customMem);
+ if (cctx->mtctx == NULL) return ERROR(memory_allocation);
+ }
+ DEBUGLOG(4, "call ZSTDMT_initCStream_internal as nbThreads=%u", params.nbThreads);
+ CHECK_F( ZSTDMT_initCStream_internal(
+ cctx->mtctx,
+ prefixDict.dict, prefixDict.dictSize, ZSTD_dm_rawContent,
+ cctx->cdict, params, cctx->pledgedSrcSizePlusOne-1) );
cctx->streamStage = zcss_load;
+ cctx->appliedParams.nbThreads = params.nbThreads;
} else
#endif
{
- CHECK_F( ZSTD_resetCStream_internal(cctx, prefix, prefixSize, cctx->dictMode, cctx->cdict, params, cctx->pledgedSrcSizePlusOne-1) );
+ CHECK_F( ZSTD_resetCStream_internal(
+ cctx, prefixDict.dict, prefixDict.dictSize,
+ prefixDict.dictMode, cctx->cdict, params,
+ cctx->pledgedSrcSizePlusOne-1) );
} }
/* compression stage */
#ifdef ZSTD_MULTITHREAD
- if (cctx->nbThreads > 1) {
+ if (cctx->appliedParams.nbThreads > 1) {
size_t const flushMin = ZSTDMT_compressStream_generic(cctx->mtctx, output, input, endOp);
- DEBUGLOG(5, "ZSTDMT_compressStream_generic : %u", (U32)flushMin);
+ DEBUGLOG(5, "ZSTDMT_compressStream_generic result : %u", (U32)flushMin);
if ( ZSTD_isError(flushMin)
|| (endOp == ZSTD_e_end && flushMin == 0) ) { /* compression completed */
ZSTD_startNewCompression(cctx);
@@ -3988,7 +2808,6 @@ size_t ZSTD_compress_generic (ZSTD_CCtx* cctx,
return flushMin;
}
#endif
-
CHECK_F( ZSTD_compressStream_generic(cctx, output, input, endOp) );
DEBUGLOG(5, "completed ZSTD_compress_generic");
return cctx->outBuffContentSize - cctx->outBuffFlushedSize; /* remaining to flush */
@@ -4189,6 +3008,7 @@ ZSTD_compressionParameters ZSTD_getCParams(int compressionLevel, unsigned long l
if (compressionLevel > ZSTD_MAX_CLEVEL) compressionLevel = ZSTD_MAX_CLEVEL;
{ ZSTD_compressionParameters const cp = ZSTD_defaultCParameters[tableID][compressionLevel];
return ZSTD_adjustCParams_internal(cp, srcSizeHint, dictSize); }
+
}
/*! ZSTD_getParams() :
diff --git a/thirdparty/zstd/compress/zstd_compress.h b/thirdparty/zstd/compress/zstd_compress.h
new file mode 100644
index 0000000000..94606edc93
--- /dev/null
+++ b/thirdparty/zstd/compress/zstd_compress.h
@@ -0,0 +1,307 @@
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
+ */
+
+
+#ifndef ZSTD_COMPRESS_H
+#define ZSTD_COMPRESS_H
+
+/*-*************************************
+* Dependencies
+***************************************/
+#include "zstd_internal.h"
+#ifdef ZSTD_MULTITHREAD
+# include "zstdmt_compress.h"
+#endif
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+/*-*************************************
+* Constants
+***************************************/
+static const U32 g_searchStrength = 8;
+#define HASH_READ_SIZE 8
+
+
+/*-*************************************
+* Context memory management
+***************************************/
+typedef enum { ZSTDcs_created=0, ZSTDcs_init, ZSTDcs_ongoing, ZSTDcs_ending } ZSTD_compressionStage_e;
+typedef enum { zcss_init=0, zcss_load, zcss_flush } ZSTD_cStreamStage;
+
+typedef struct ZSTD_prefixDict_s {
+ const void* dict;
+ size_t dictSize;
+ ZSTD_dictMode_e dictMode;
+} ZSTD_prefixDict;
+
+struct ZSTD_CCtx_s {
+ const BYTE* nextSrc; /* next block here to continue on current prefix */
+ const BYTE* base; /* All regular indexes relative to this position */
+ const BYTE* dictBase; /* extDict indexes relative to this position */
+ U32 dictLimit; /* below that point, need extDict */
+ U32 lowLimit; /* below that point, no more data */
+ U32 nextToUpdate; /* index from which to continue dictionary update */
+ U32 nextToUpdate3; /* index from which to continue dictionary update */
+ U32 hashLog3; /* dispatch table : larger == faster, more memory */
+ U32 loadedDictEnd; /* index of end of dictionary */
+ ZSTD_compressionStage_e stage;
+ U32 dictID;
+ ZSTD_CCtx_params requestedParams;
+ ZSTD_CCtx_params appliedParams;
+ void* workSpace;
+ size_t workSpaceSize;
+ size_t blockSize;
+ U64 pledgedSrcSizePlusOne; /* this way, 0 (default) == unknown */
+ U64 consumedSrcSize;
+ XXH64_state_t xxhState;
+ ZSTD_customMem customMem;
+ size_t staticSize;
+
+ seqStore_t seqStore; /* sequences storage ptrs */
+ optState_t optState;
+ ldmState_t ldmState; /* long distance matching state */
+ U32* hashTable;
+ U32* hashTable3;
+ U32* chainTable;
+ ZSTD_entropyCTables_t* entropy;
+
+ /* streaming */
+ char* inBuff;
+ size_t inBuffSize;
+ size_t inToCompress;
+ size_t inBuffPos;
+ size_t inBuffTarget;
+ char* outBuff;
+ size_t outBuffSize;
+ size_t outBuffContentSize;
+ size_t outBuffFlushedSize;
+ ZSTD_cStreamStage streamStage;
+ U32 frameEnded;
+
+ /* Dictionary */
+ ZSTD_CDict* cdictLocal;
+ const ZSTD_CDict* cdict;
+ ZSTD_prefixDict prefixDict; /* single-usage dictionary */
+
+ /* Multi-threading */
+#ifdef ZSTD_MULTITHREAD
+ ZSTDMT_CCtx* mtctx;
+#endif
+};
+
+
+static const BYTE LL_Code[64] = { 0, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 16, 17, 17, 18, 18, 19, 19,
+ 20, 20, 20, 20, 21, 21, 21, 21,
+ 22, 22, 22, 22, 22, 22, 22, 22,
+ 23, 23, 23, 23, 23, 23, 23, 23,
+ 24, 24, 24, 24, 24, 24, 24, 24,
+ 24, 24, 24, 24, 24, 24, 24, 24 };
+
+static const BYTE ML_Code[128] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 36, 36, 37, 37, 37, 37,
+ 38, 38, 38, 38, 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 39,
+ 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
+ 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42 };
+
+/*! ZSTD_storeSeq() :
+ Store a sequence (literal length, literals, offset code and match length code) into seqStore_t.
+ `offsetCode` : distance to match, or 0 == repCode.
+ `matchCode` : matchLength - MINMATCH
+*/
+MEM_STATIC void ZSTD_storeSeq(seqStore_t* seqStorePtr, size_t litLength, const void* literals, U32 offsetCode, size_t matchCode)
+{
+#if defined(ZSTD_DEBUG) && (ZSTD_DEBUG >= 6)
+ static const BYTE* g_start = NULL;
+ U32 const pos = (U32)((const BYTE*)literals - g_start);
+ if (g_start==NULL) g_start = (const BYTE*)literals;
+ if ((pos > 0) && (pos < 1000000000))
+ DEBUGLOG(6, "Cpos %6u :%5u literals & match %3u bytes at distance %6u",
+ pos, (U32)litLength, (U32)matchCode+MINMATCH, (U32)offsetCode);
+#endif
+ /* copy Literals */
+ assert(seqStorePtr->lit + litLength <= seqStorePtr->litStart + 128 KB);
+ ZSTD_wildcopy(seqStorePtr->lit, literals, litLength);
+ seqStorePtr->lit += litLength;
+
+ /* literal Length */
+ if (litLength>0xFFFF) {
+ seqStorePtr->longLengthID = 1;
+ seqStorePtr->longLengthPos = (U32)(seqStorePtr->sequences - seqStorePtr->sequencesStart);
+ }
+ seqStorePtr->sequences[0].litLength = (U16)litLength;
+
+ /* match offset */
+ seqStorePtr->sequences[0].offset = offsetCode + 1;
+
+ /* match Length */
+ if (matchCode>0xFFFF) {
+ seqStorePtr->longLengthID = 2;
+ seqStorePtr->longLengthPos = (U32)(seqStorePtr->sequences - seqStorePtr->sequencesStart);
+ }
+ seqStorePtr->sequences[0].matchLength = (U16)matchCode;
+
+ seqStorePtr->sequences++;
+}
+
+
+/*-*************************************
+* Match length counter
+***************************************/
+static unsigned ZSTD_NbCommonBytes (register size_t val)
+{
+ if (MEM_isLittleEndian()) {
+ if (MEM_64bits()) {
+# if defined(_MSC_VER) && defined(_WIN64)
+ unsigned long r = 0;
+ _BitScanForward64( &r, (U64)val );
+ return (unsigned)(r>>3);
+# elif defined(__GNUC__) && (__GNUC__ >= 4)
+ return (__builtin_ctzll((U64)val) >> 3);
+# else
+ static const int DeBruijnBytePos[64] = { 0, 0, 0, 0, 0, 1, 1, 2,
+ 0, 3, 1, 3, 1, 4, 2, 7,
+ 0, 2, 3, 6, 1, 5, 3, 5,
+ 1, 3, 4, 4, 2, 5, 6, 7,
+ 7, 0, 1, 2, 3, 3, 4, 6,
+ 2, 6, 5, 5, 3, 4, 5, 6,
+ 7, 1, 2, 4, 6, 4, 4, 5,
+ 7, 2, 6, 5, 7, 6, 7, 7 };
+ return DeBruijnBytePos[((U64)((val & -(long long)val) * 0x0218A392CDABBD3FULL)) >> 58];
+# endif
+ } else { /* 32 bits */
+# if defined(_MSC_VER)
+ unsigned long r=0;
+ _BitScanForward( &r, (U32)val );
+ return (unsigned)(r>>3);
+# elif defined(__GNUC__) && (__GNUC__ >= 3)
+ return (__builtin_ctz((U32)val) >> 3);
+# else
+ static const int DeBruijnBytePos[32] = { 0, 0, 3, 0, 3, 1, 3, 0,
+ 3, 2, 2, 1, 3, 2, 0, 1,
+ 3, 3, 1, 2, 2, 2, 2, 0,
+ 3, 1, 2, 0, 1, 0, 1, 1 };
+ return DeBruijnBytePos[((U32)((val & -(S32)val) * 0x077CB531U)) >> 27];
+# endif
+ }
+ } else { /* Big Endian CPU */
+ if (MEM_64bits()) {
+# if defined(_MSC_VER) && defined(_WIN64)
+ unsigned long r = 0;
+ _BitScanReverse64( &r, val );
+ return (unsigned)(r>>3);
+# elif defined(__GNUC__) && (__GNUC__ >= 4)
+ return (__builtin_clzll(val) >> 3);
+# else
+ unsigned r;
+ const unsigned n32 = sizeof(size_t)*4; /* calculate this way due to compiler complaining in 32-bits mode */
+ if (!(val>>n32)) { r=4; } else { r=0; val>>=n32; }
+ if (!(val>>16)) { r+=2; val>>=8; } else { val>>=24; }
+ r += (!val);
+ return r;
+# endif
+ } else { /* 32 bits */
+# if defined(_MSC_VER)
+ unsigned long r = 0;
+ _BitScanReverse( &r, (unsigned long)val );
+ return (unsigned)(r>>3);
+# elif defined(__GNUC__) && (__GNUC__ >= 3)
+ return (__builtin_clz((U32)val) >> 3);
+# else
+ unsigned r;
+ if (!(val>>16)) { r=2; val>>=8; } else { r=0; val>>=24; }
+ r += (!val);
+ return r;
+# endif
+ } }
+}
+
+
+MEM_STATIC size_t ZSTD_count(const BYTE* pIn, const BYTE* pMatch, const BYTE* const pInLimit)
+{
+ const BYTE* const pStart = pIn;
+ const BYTE* const pInLoopLimit = pInLimit - (sizeof(size_t)-1);
+
+ while (pIn < pInLoopLimit) {
+ size_t const diff = MEM_readST(pMatch) ^ MEM_readST(pIn);
+ if (!diff) { pIn+=sizeof(size_t); pMatch+=sizeof(size_t); continue; }
+ pIn += ZSTD_NbCommonBytes(diff);
+ return (size_t)(pIn - pStart);
+ }
+ if (MEM_64bits()) if ((pIn<(pInLimit-3)) && (MEM_read32(pMatch) == MEM_read32(pIn))) { pIn+=4; pMatch+=4; }
+ if ((pIn<(pInLimit-1)) && (MEM_read16(pMatch) == MEM_read16(pIn))) { pIn+=2; pMatch+=2; }
+ if ((pIn<pInLimit) && (*pMatch == *pIn)) pIn++;
+ return (size_t)(pIn - pStart);
+}
+
+/** ZSTD_count_2segments() :
+* can count match length with `ip` & `match` in 2 different segments.
+* convention : on reaching mEnd, match count continue starting from iStart
+*/
+MEM_STATIC size_t ZSTD_count_2segments(const BYTE* ip, const BYTE* match, const BYTE* iEnd, const BYTE* mEnd, const BYTE* iStart)
+{
+ const BYTE* const vEnd = MIN( ip + (mEnd - match), iEnd);
+ size_t const matchLength = ZSTD_count(ip, match, vEnd);
+ if (match + matchLength != mEnd) return matchLength;
+ return matchLength + ZSTD_count(ip+matchLength, iStart, iEnd);
+}
+
+
+/*-*************************************
+* Hashes
+***************************************/
+static const U32 prime3bytes = 506832829U;
+static U32 ZSTD_hash3(U32 u, U32 h) { return ((u << (32-24)) * prime3bytes) >> (32-h) ; }
+MEM_STATIC size_t ZSTD_hash3Ptr(const void* ptr, U32 h) { return ZSTD_hash3(MEM_readLE32(ptr), h); } /* only in zstd_opt.h */
+
+static const U32 prime4bytes = 2654435761U;
+static U32 ZSTD_hash4(U32 u, U32 h) { return (u * prime4bytes) >> (32-h) ; }
+static size_t ZSTD_hash4Ptr(const void* ptr, U32 h) { return ZSTD_hash4(MEM_read32(ptr), h); }
+
+static const U64 prime5bytes = 889523592379ULL;
+static size_t ZSTD_hash5(U64 u, U32 h) { return (size_t)(((u << (64-40)) * prime5bytes) >> (64-h)) ; }
+static size_t ZSTD_hash5Ptr(const void* p, U32 h) { return ZSTD_hash5(MEM_readLE64(p), h); }
+
+static const U64 prime6bytes = 227718039650203ULL;
+static size_t ZSTD_hash6(U64 u, U32 h) { return (size_t)(((u << (64-48)) * prime6bytes) >> (64-h)) ; }
+static size_t ZSTD_hash6Ptr(const void* p, U32 h) { return ZSTD_hash6(MEM_readLE64(p), h); }
+
+static const U64 prime7bytes = 58295818150454627ULL;
+static size_t ZSTD_hash7(U64 u, U32 h) { return (size_t)(((u << (64-56)) * prime7bytes) >> (64-h)) ; }
+static size_t ZSTD_hash7Ptr(const void* p, U32 h) { return ZSTD_hash7(MEM_readLE64(p), h); }
+
+static const U64 prime8bytes = 0xCF1BBCDCB7A56463ULL;
+static size_t ZSTD_hash8(U64 u, U32 h) { return (size_t)(((u) * prime8bytes) >> (64-h)) ; }
+static size_t ZSTD_hash8Ptr(const void* p, U32 h) { return ZSTD_hash8(MEM_readLE64(p), h); }
+
+MEM_STATIC size_t ZSTD_hashPtr(const void* p, U32 hBits, U32 mls)
+{
+ switch(mls)
+ {
+ default:
+ case 4: return ZSTD_hash4Ptr(p, hBits);
+ case 5: return ZSTD_hash5Ptr(p, hBits);
+ case 6: return ZSTD_hash6Ptr(p, hBits);
+ case 7: return ZSTD_hash7Ptr(p, hBits);
+ case 8: return ZSTD_hash8Ptr(p, hBits);
+ }
+}
+
+#if defined (__cplusplus)
+}
+#endif
+
+#endif /* ZSTD_COMPRESS_H */
diff --git a/thirdparty/zstd/compress/zstd_double_fast.c b/thirdparty/zstd/compress/zstd_double_fast.c
new file mode 100644
index 0000000000..876a36042c
--- /dev/null
+++ b/thirdparty/zstd/compress/zstd_double_fast.c
@@ -0,0 +1,308 @@
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
+ */
+
+#include "zstd_double_fast.h"
+
+
+void ZSTD_fillDoubleHashTable(ZSTD_CCtx* cctx, const void* end, const U32 mls)
+{
+ U32* const hashLarge = cctx->hashTable;
+ U32 const hBitsL = cctx->appliedParams.cParams.hashLog;
+ U32* const hashSmall = cctx->chainTable;
+ U32 const hBitsS = cctx->appliedParams.cParams.chainLog;
+ const BYTE* const base = cctx->base;
+ const BYTE* ip = base + cctx->nextToUpdate;
+ const BYTE* const iend = ((const BYTE*)end) - HASH_READ_SIZE;
+ const size_t fastHashFillStep = 3;
+
+ while(ip <= iend) {
+ hashSmall[ZSTD_hashPtr(ip, hBitsS, mls)] = (U32)(ip - base);
+ hashLarge[ZSTD_hashPtr(ip, hBitsL, 8)] = (U32)(ip - base);
+ ip += fastHashFillStep;
+ }
+}
+
+
+FORCE_INLINE_TEMPLATE
+size_t ZSTD_compressBlock_doubleFast_generic(ZSTD_CCtx* cctx,
+ const void* src, size_t srcSize,
+ const U32 mls)
+{
+ U32* const hashLong = cctx->hashTable;
+ const U32 hBitsL = cctx->appliedParams.cParams.hashLog;
+ U32* const hashSmall = cctx->chainTable;
+ const U32 hBitsS = cctx->appliedParams.cParams.chainLog;
+ seqStore_t* seqStorePtr = &(cctx->seqStore);
+ const BYTE* const base = cctx->base;
+ const BYTE* const istart = (const BYTE*)src;
+ const BYTE* ip = istart;
+ const BYTE* anchor = istart;
+ const U32 lowestIndex = cctx->dictLimit;
+ const BYTE* const lowest = base + lowestIndex;
+ const BYTE* const iend = istart + srcSize;
+ const BYTE* const ilimit = iend - HASH_READ_SIZE;
+ U32 offset_1=seqStorePtr->rep[0], offset_2=seqStorePtr->rep[1];
+ U32 offsetSaved = 0;
+
+ /* init */
+ ip += (ip==lowest);
+ { U32 const maxRep = (U32)(ip-lowest);
+ if (offset_2 > maxRep) offsetSaved = offset_2, offset_2 = 0;
+ if (offset_1 > maxRep) offsetSaved = offset_1, offset_1 = 0;
+ }
+
+ /* Main Search Loop */
+ while (ip < ilimit) { /* < instead of <=, because repcode check at (ip+1) */
+ size_t mLength;
+ size_t const h2 = ZSTD_hashPtr(ip, hBitsL, 8);
+ size_t const h = ZSTD_hashPtr(ip, hBitsS, mls);
+ U32 const current = (U32)(ip-base);
+ U32 const matchIndexL = hashLong[h2];
+ U32 const matchIndexS = hashSmall[h];
+ const BYTE* matchLong = base + matchIndexL;
+ const BYTE* match = base + matchIndexS;
+ hashLong[h2] = hashSmall[h] = current; /* update hash tables */
+
+ assert(offset_1 <= current); /* supposed guaranteed by construction */
+ if ((offset_1 > 0) & (MEM_read32(ip+1-offset_1) == MEM_read32(ip+1))) {
+ /* favor repcode */
+ mLength = ZSTD_count(ip+1+4, ip+1+4-offset_1, iend) + 4;
+ ip++;
+ ZSTD_storeSeq(seqStorePtr, ip-anchor, anchor, 0, mLength-MINMATCH);
+ } else {
+ U32 offset;
+ if ( (matchIndexL > lowestIndex) && (MEM_read64(matchLong) == MEM_read64(ip)) ) {
+ mLength = ZSTD_count(ip+8, matchLong+8, iend) + 8;
+ offset = (U32)(ip-matchLong);
+ while (((ip>anchor) & (matchLong>lowest)) && (ip[-1] == matchLong[-1])) { ip--; matchLong--; mLength++; } /* catch up */
+ } else if ( (matchIndexS > lowestIndex) && (MEM_read32(match) == MEM_read32(ip)) ) {
+ size_t const hl3 = ZSTD_hashPtr(ip+1, hBitsL, 8);
+ U32 const matchIndexL3 = hashLong[hl3];
+ const BYTE* matchL3 = base + matchIndexL3;
+ hashLong[hl3] = current + 1;
+ if ( (matchIndexL3 > lowestIndex) && (MEM_read64(matchL3) == MEM_read64(ip+1)) ) {
+ mLength = ZSTD_count(ip+9, matchL3+8, iend) + 8;
+ ip++;
+ offset = (U32)(ip-matchL3);
+ while (((ip>anchor) & (matchL3>lowest)) && (ip[-1] == matchL3[-1])) { ip--; matchL3--; mLength++; } /* catch up */
+ } else {
+ mLength = ZSTD_count(ip+4, match+4, iend) + 4;
+ offset = (U32)(ip-match);
+ while (((ip>anchor) & (match>lowest)) && (ip[-1] == match[-1])) { ip--; match--; mLength++; } /* catch up */
+ }
+ } else {
+ ip += ((ip-anchor) >> g_searchStrength) + 1;
+ continue;
+ }
+
+ offset_2 = offset_1;
+ offset_1 = offset;
+
+ ZSTD_storeSeq(seqStorePtr, ip-anchor, anchor, offset + ZSTD_REP_MOVE, mLength-MINMATCH);
+ }
+
+ /* match found */
+ ip += mLength;
+ anchor = ip;
+
+ if (ip <= ilimit) {
+ /* Fill Table */
+ hashLong[ZSTD_hashPtr(base+current+2, hBitsL, 8)] =
+ hashSmall[ZSTD_hashPtr(base+current+2, hBitsS, mls)] = current+2; /* here because current+2 could be > iend-8 */
+ hashLong[ZSTD_hashPtr(ip-2, hBitsL, 8)] =
+ hashSmall[ZSTD_hashPtr(ip-2, hBitsS, mls)] = (U32)(ip-2-base);
+
+ /* check immediate repcode */
+ while ( (ip <= ilimit)
+ && ( (offset_2>0)
+ & (MEM_read32(ip) == MEM_read32(ip - offset_2)) )) {
+ /* store sequence */
+ size_t const rLength = ZSTD_count(ip+4, ip+4-offset_2, iend) + 4;
+ { U32 const tmpOff = offset_2; offset_2 = offset_1; offset_1 = tmpOff; } /* swap offset_2 <=> offset_1 */
+ hashSmall[ZSTD_hashPtr(ip, hBitsS, mls)] = (U32)(ip-base);
+ hashLong[ZSTD_hashPtr(ip, hBitsL, 8)] = (U32)(ip-base);
+ ZSTD_storeSeq(seqStorePtr, 0, anchor, 0, rLength-MINMATCH);
+ ip += rLength;
+ anchor = ip;
+ continue; /* faster when present ... (?) */
+ } } }
+
+ /* save reps for next block */
+ seqStorePtr->repToConfirm[0] = offset_1 ? offset_1 : offsetSaved;
+ seqStorePtr->repToConfirm[1] = offset_2 ? offset_2 : offsetSaved;
+
+ /* Return the last literals size */
+ return iend - anchor;
+}
+
+
+size_t ZSTD_compressBlock_doubleFast(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
+{
+ const U32 mls = ctx->appliedParams.cParams.searchLength;
+ switch(mls)
+ {
+ default: /* includes case 3 */
+ case 4 :
+ return ZSTD_compressBlock_doubleFast_generic(ctx, src, srcSize, 4);
+ case 5 :
+ return ZSTD_compressBlock_doubleFast_generic(ctx, src, srcSize, 5);
+ case 6 :
+ return ZSTD_compressBlock_doubleFast_generic(ctx, src, srcSize, 6);
+ case 7 :
+ return ZSTD_compressBlock_doubleFast_generic(ctx, src, srcSize, 7);
+ }
+}
+
+
+static size_t ZSTD_compressBlock_doubleFast_extDict_generic(ZSTD_CCtx* ctx,
+ const void* src, size_t srcSize,
+ const U32 mls)
+{
+ U32* const hashLong = ctx->hashTable;
+ U32 const hBitsL = ctx->appliedParams.cParams.hashLog;
+ U32* const hashSmall = ctx->chainTable;
+ U32 const hBitsS = ctx->appliedParams.cParams.chainLog;
+ seqStore_t* seqStorePtr = &(ctx->seqStore);
+ const BYTE* const base = ctx->base;
+ const BYTE* const dictBase = ctx->dictBase;
+ const BYTE* const istart = (const BYTE*)src;
+ const BYTE* ip = istart;
+ const BYTE* anchor = istart;
+ const U32 lowestIndex = ctx->lowLimit;
+ const BYTE* const dictStart = dictBase + lowestIndex;
+ const U32 dictLimit = ctx->dictLimit;
+ const BYTE* const lowPrefixPtr = base + dictLimit;
+ const BYTE* const dictEnd = dictBase + dictLimit;
+ const BYTE* const iend = istart + srcSize;
+ const BYTE* const ilimit = iend - 8;
+ U32 offset_1=seqStorePtr->rep[0], offset_2=seqStorePtr->rep[1];
+
+ /* Search Loop */
+ while (ip < ilimit) { /* < instead of <=, because (ip+1) */
+ const size_t hSmall = ZSTD_hashPtr(ip, hBitsS, mls);
+ const U32 matchIndex = hashSmall[hSmall];
+ const BYTE* matchBase = matchIndex < dictLimit ? dictBase : base;
+ const BYTE* match = matchBase + matchIndex;
+
+ const size_t hLong = ZSTD_hashPtr(ip, hBitsL, 8);
+ const U32 matchLongIndex = hashLong[hLong];
+ const BYTE* matchLongBase = matchLongIndex < dictLimit ? dictBase : base;
+ const BYTE* matchLong = matchLongBase + matchLongIndex;
+
+ const U32 current = (U32)(ip-base);
+ const U32 repIndex = current + 1 - offset_1; /* offset_1 expected <= current +1 */
+ const BYTE* repBase = repIndex < dictLimit ? dictBase : base;
+ const BYTE* repMatch = repBase + repIndex;
+ size_t mLength;
+ hashSmall[hSmall] = hashLong[hLong] = current; /* update hash table */
+
+ if ( (((U32)((dictLimit-1) - repIndex) >= 3) /* intentional underflow */ & (repIndex > lowestIndex))
+ && (MEM_read32(repMatch) == MEM_read32(ip+1)) ) {
+ const BYTE* repMatchEnd = repIndex < dictLimit ? dictEnd : iend;
+ mLength = ZSTD_count_2segments(ip+1+4, repMatch+4, iend, repMatchEnd, lowPrefixPtr) + 4;
+ ip++;
+ ZSTD_storeSeq(seqStorePtr, ip-anchor, anchor, 0, mLength-MINMATCH);
+ } else {
+ if ((matchLongIndex > lowestIndex) && (MEM_read64(matchLong) == MEM_read64(ip))) {
+ const BYTE* matchEnd = matchLongIndex < dictLimit ? dictEnd : iend;
+ const BYTE* lowMatchPtr = matchLongIndex < dictLimit ? dictStart : lowPrefixPtr;
+ U32 offset;
+ mLength = ZSTD_count_2segments(ip+8, matchLong+8, iend, matchEnd, lowPrefixPtr) + 8;
+ offset = current - matchLongIndex;
+ while (((ip>anchor) & (matchLong>lowMatchPtr)) && (ip[-1] == matchLong[-1])) { ip--; matchLong--; mLength++; } /* catch up */
+ offset_2 = offset_1;
+ offset_1 = offset;
+ ZSTD_storeSeq(seqStorePtr, ip-anchor, anchor, offset + ZSTD_REP_MOVE, mLength-MINMATCH);
+
+ } else if ((matchIndex > lowestIndex) && (MEM_read32(match) == MEM_read32(ip))) {
+ size_t const h3 = ZSTD_hashPtr(ip+1, hBitsL, 8);
+ U32 const matchIndex3 = hashLong[h3];
+ const BYTE* const match3Base = matchIndex3 < dictLimit ? dictBase : base;
+ const BYTE* match3 = match3Base + matchIndex3;
+ U32 offset;
+ hashLong[h3] = current + 1;
+ if ( (matchIndex3 > lowestIndex) && (MEM_read64(match3) == MEM_read64(ip+1)) ) {
+ const BYTE* matchEnd = matchIndex3 < dictLimit ? dictEnd : iend;
+ const BYTE* lowMatchPtr = matchIndex3 < dictLimit ? dictStart : lowPrefixPtr;
+ mLength = ZSTD_count_2segments(ip+9, match3+8, iend, matchEnd, lowPrefixPtr) + 8;
+ ip++;
+ offset = current+1 - matchIndex3;
+ while (((ip>anchor) & (match3>lowMatchPtr)) && (ip[-1] == match3[-1])) { ip--; match3--; mLength++; } /* catch up */
+ } else {
+ const BYTE* matchEnd = matchIndex < dictLimit ? dictEnd : iend;
+ const BYTE* lowMatchPtr = matchIndex < dictLimit ? dictStart : lowPrefixPtr;
+ mLength = ZSTD_count_2segments(ip+4, match+4, iend, matchEnd, lowPrefixPtr) + 4;
+ offset = current - matchIndex;
+ while (((ip>anchor) & (match>lowMatchPtr)) && (ip[-1] == match[-1])) { ip--; match--; mLength++; } /* catch up */
+ }
+ offset_2 = offset_1;
+ offset_1 = offset;
+ ZSTD_storeSeq(seqStorePtr, ip-anchor, anchor, offset + ZSTD_REP_MOVE, mLength-MINMATCH);
+
+ } else {
+ ip += ((ip-anchor) >> g_searchStrength) + 1;
+ continue;
+ } }
+
+ /* found a match : store it */
+ ip += mLength;
+ anchor = ip;
+
+ if (ip <= ilimit) {
+ /* Fill Table */
+ hashSmall[ZSTD_hashPtr(base+current+2, hBitsS, mls)] = current+2;
+ hashLong[ZSTD_hashPtr(base+current+2, hBitsL, 8)] = current+2;
+ hashSmall[ZSTD_hashPtr(ip-2, hBitsS, mls)] = (U32)(ip-2-base);
+ hashLong[ZSTD_hashPtr(ip-2, hBitsL, 8)] = (U32)(ip-2-base);
+ /* check immediate repcode */
+ while (ip <= ilimit) {
+ U32 const current2 = (U32)(ip-base);
+ U32 const repIndex2 = current2 - offset_2;
+ const BYTE* repMatch2 = repIndex2 < dictLimit ? dictBase + repIndex2 : base + repIndex2;
+ if ( (((U32)((dictLimit-1) - repIndex2) >= 3) & (repIndex2 > lowestIndex)) /* intentional overflow */
+ && (MEM_read32(repMatch2) == MEM_read32(ip)) ) {
+ const BYTE* const repEnd2 = repIndex2 < dictLimit ? dictEnd : iend;
+ size_t const repLength2 = ZSTD_count_2segments(ip+4, repMatch2+4, iend, repEnd2, lowPrefixPtr) + 4;
+ U32 tmpOffset = offset_2; offset_2 = offset_1; offset_1 = tmpOffset; /* swap offset_2 <=> offset_1 */
+ ZSTD_storeSeq(seqStorePtr, 0, anchor, 0, repLength2-MINMATCH);
+ hashSmall[ZSTD_hashPtr(ip, hBitsS, mls)] = current2;
+ hashLong[ZSTD_hashPtr(ip, hBitsL, 8)] = current2;
+ ip += repLength2;
+ anchor = ip;
+ continue;
+ }
+ break;
+ } } }
+
+ /* save reps for next block */
+ seqStorePtr->repToConfirm[0] = offset_1; seqStorePtr->repToConfirm[1] = offset_2;
+
+ /* Return the last literals size */
+ return iend - anchor;
+}
+
+
+size_t ZSTD_compressBlock_doubleFast_extDict(ZSTD_CCtx* ctx,
+ const void* src, size_t srcSize)
+{
+ U32 const mls = ctx->appliedParams.cParams.searchLength;
+ switch(mls)
+ {
+ default: /* includes case 3 */
+ case 4 :
+ return ZSTD_compressBlock_doubleFast_extDict_generic(ctx, src, srcSize, 4);
+ case 5 :
+ return ZSTD_compressBlock_doubleFast_extDict_generic(ctx, src, srcSize, 5);
+ case 6 :
+ return ZSTD_compressBlock_doubleFast_extDict_generic(ctx, src, srcSize, 6);
+ case 7 :
+ return ZSTD_compressBlock_doubleFast_extDict_generic(ctx, src, srcSize, 7);
+ }
+}
diff --git a/thirdparty/zstd/compress/zstd_double_fast.h b/thirdparty/zstd/compress/zstd_double_fast.h
new file mode 100644
index 0000000000..3dba6c7108
--- /dev/null
+++ b/thirdparty/zstd/compress/zstd_double_fast.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
+ */
+
+#ifndef ZSTD_DOUBLE_FAST_H
+#define ZSTD_DOUBLE_FAST_H
+
+#include "zstd_compress.h"
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+void ZSTD_fillDoubleHashTable(ZSTD_CCtx* cctx, const void* end, const U32 mls);
+size_t ZSTD_compressBlock_doubleFast(ZSTD_CCtx* ctx, const void* src, size_t srcSize);
+size_t ZSTD_compressBlock_doubleFast_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize);
+
+#if defined (__cplusplus)
+}
+#endif
+
+#endif /* ZSTD_DOUBLE_FAST_H */
diff --git a/thirdparty/zstd/compress/zstd_fast.c b/thirdparty/zstd/compress/zstd_fast.c
new file mode 100644
index 0000000000..2e057017b9
--- /dev/null
+++ b/thirdparty/zstd/compress/zstd_fast.c
@@ -0,0 +1,242 @@
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
+ */
+
+#include "zstd_fast.h"
+
+
+void ZSTD_fillHashTable (ZSTD_CCtx* zc, const void* end, const U32 mls)
+{
+ U32* const hashTable = zc->hashTable;
+ U32 const hBits = zc->appliedParams.cParams.hashLog;
+ const BYTE* const base = zc->base;
+ const BYTE* ip = base + zc->nextToUpdate;
+ const BYTE* const iend = ((const BYTE*)end) - HASH_READ_SIZE;
+ const size_t fastHashFillStep = 3;
+
+ while(ip <= iend) {
+ hashTable[ZSTD_hashPtr(ip, hBits, mls)] = (U32)(ip - base);
+ ip += fastHashFillStep;
+ }
+}
+
+
+FORCE_INLINE_TEMPLATE
+size_t ZSTD_compressBlock_fast_generic(ZSTD_CCtx* cctx,
+ const void* src, size_t srcSize,
+ const U32 mls)
+{
+ U32* const hashTable = cctx->hashTable;
+ U32 const hBits = cctx->appliedParams.cParams.hashLog;
+ seqStore_t* seqStorePtr = &(cctx->seqStore);
+ const BYTE* const base = cctx->base;
+ const BYTE* const istart = (const BYTE*)src;
+ const BYTE* ip = istart;
+ const BYTE* anchor = istart;
+ const U32 lowestIndex = cctx->dictLimit;
+ const BYTE* const lowest = base + lowestIndex;
+ const BYTE* const iend = istart + srcSize;
+ const BYTE* const ilimit = iend - HASH_READ_SIZE;
+ U32 offset_1=seqStorePtr->rep[0], offset_2=seqStorePtr->rep[1];
+ U32 offsetSaved = 0;
+
+ /* init */
+ ip += (ip==lowest);
+ { U32 const maxRep = (U32)(ip-lowest);
+ if (offset_2 > maxRep) offsetSaved = offset_2, offset_2 = 0;
+ if (offset_1 > maxRep) offsetSaved = offset_1, offset_1 = 0;
+ }
+
+ /* Main Search Loop */
+ while (ip < ilimit) { /* < instead of <=, because repcode check at (ip+1) */
+ size_t mLength;
+ size_t const h = ZSTD_hashPtr(ip, hBits, mls);
+ U32 const current = (U32)(ip-base);
+ U32 const matchIndex = hashTable[h];
+ const BYTE* match = base + matchIndex;
+ hashTable[h] = current; /* update hash table */
+
+ if ((offset_1 > 0) & (MEM_read32(ip+1-offset_1) == MEM_read32(ip+1))) {
+ mLength = ZSTD_count(ip+1+4, ip+1+4-offset_1, iend) + 4;
+ ip++;
+ ZSTD_storeSeq(seqStorePtr, ip-anchor, anchor, 0, mLength-MINMATCH);
+ } else {
+ U32 offset;
+ if ( (matchIndex <= lowestIndex) || (MEM_read32(match) != MEM_read32(ip)) ) {
+ ip += ((ip-anchor) >> g_searchStrength) + 1;
+ continue;
+ }
+ mLength = ZSTD_count(ip+4, match+4, iend) + 4;
+ offset = (U32)(ip-match);
+ while (((ip>anchor) & (match>lowest)) && (ip[-1] == match[-1])) { ip--; match--; mLength++; } /* catch up */
+ offset_2 = offset_1;
+ offset_1 = offset;
+
+ ZSTD_storeSeq(seqStorePtr, ip-anchor, anchor, offset + ZSTD_REP_MOVE, mLength-MINMATCH);
+ }
+
+ /* match found */
+ ip += mLength;
+ anchor = ip;
+
+ if (ip <= ilimit) {
+ /* Fill Table */
+ hashTable[ZSTD_hashPtr(base+current+2, hBits, mls)] = current+2; /* here because current+2 could be > iend-8 */
+ hashTable[ZSTD_hashPtr(ip-2, hBits, mls)] = (U32)(ip-2-base);
+ /* check immediate repcode */
+ while ( (ip <= ilimit)
+ && ( (offset_2>0)
+ & (MEM_read32(ip) == MEM_read32(ip - offset_2)) )) {
+ /* store sequence */
+ size_t const rLength = ZSTD_count(ip+4, ip+4-offset_2, iend) + 4;
+ { U32 const tmpOff = offset_2; offset_2 = offset_1; offset_1 = tmpOff; } /* swap offset_2 <=> offset_1 */
+ hashTable[ZSTD_hashPtr(ip, hBits, mls)] = (U32)(ip-base);
+ ZSTD_storeSeq(seqStorePtr, 0, anchor, 0, rLength-MINMATCH);
+ ip += rLength;
+ anchor = ip;
+ continue; /* faster when present ... (?) */
+ } } }
+
+ /* save reps for next block */
+ seqStorePtr->repToConfirm[0] = offset_1 ? offset_1 : offsetSaved;
+ seqStorePtr->repToConfirm[1] = offset_2 ? offset_2 : offsetSaved;
+
+ /* Return the last literals size */
+ return iend - anchor;
+}
+
+
+size_t ZSTD_compressBlock_fast(ZSTD_CCtx* ctx,
+ const void* src, size_t srcSize)
+{
+ const U32 mls = ctx->appliedParams.cParams.searchLength;
+ switch(mls)
+ {
+ default: /* includes case 3 */
+ case 4 :
+ return ZSTD_compressBlock_fast_generic(ctx, src, srcSize, 4);
+ case 5 :
+ return ZSTD_compressBlock_fast_generic(ctx, src, srcSize, 5);
+ case 6 :
+ return ZSTD_compressBlock_fast_generic(ctx, src, srcSize, 6);
+ case 7 :
+ return ZSTD_compressBlock_fast_generic(ctx, src, srcSize, 7);
+ }
+}
+
+
+static size_t ZSTD_compressBlock_fast_extDict_generic(ZSTD_CCtx* ctx,
+ const void* src, size_t srcSize,
+ const U32 mls)
+{
+ U32* hashTable = ctx->hashTable;
+ const U32 hBits = ctx->appliedParams.cParams.hashLog;
+ seqStore_t* seqStorePtr = &(ctx->seqStore);
+ const BYTE* const base = ctx->base;
+ const BYTE* const dictBase = ctx->dictBase;
+ const BYTE* const istart = (const BYTE*)src;
+ const BYTE* ip = istart;
+ const BYTE* anchor = istart;
+ const U32 lowestIndex = ctx->lowLimit;
+ const BYTE* const dictStart = dictBase + lowestIndex;
+ const U32 dictLimit = ctx->dictLimit;
+ const BYTE* const lowPrefixPtr = base + dictLimit;
+ const BYTE* const dictEnd = dictBase + dictLimit;
+ const BYTE* const iend = istart + srcSize;
+ const BYTE* const ilimit = iend - 8;
+ U32 offset_1=seqStorePtr->rep[0], offset_2=seqStorePtr->rep[1];
+
+ /* Search Loop */
+ while (ip < ilimit) { /* < instead of <=, because (ip+1) */
+ const size_t h = ZSTD_hashPtr(ip, hBits, mls);
+ const U32 matchIndex = hashTable[h];
+ const BYTE* matchBase = matchIndex < dictLimit ? dictBase : base;
+ const BYTE* match = matchBase + matchIndex;
+ const U32 current = (U32)(ip-base);
+ const U32 repIndex = current + 1 - offset_1; /* offset_1 expected <= current +1 */
+ const BYTE* repBase = repIndex < dictLimit ? dictBase : base;
+ const BYTE* repMatch = repBase + repIndex;
+ size_t mLength;
+ hashTable[h] = current; /* update hash table */
+
+ if ( (((U32)((dictLimit-1) - repIndex) >= 3) /* intentional underflow */ & (repIndex > lowestIndex))
+ && (MEM_read32(repMatch) == MEM_read32(ip+1)) ) {
+ const BYTE* repMatchEnd = repIndex < dictLimit ? dictEnd : iend;
+ mLength = ZSTD_count_2segments(ip+1+4, repMatch+4, iend, repMatchEnd, lowPrefixPtr) + 4;
+ ip++;
+ ZSTD_storeSeq(seqStorePtr, ip-anchor, anchor, 0, mLength-MINMATCH);
+ } else {
+ if ( (matchIndex < lowestIndex) ||
+ (MEM_read32(match) != MEM_read32(ip)) ) {
+ ip += ((ip-anchor) >> g_searchStrength) + 1;
+ continue;
+ }
+ { const BYTE* matchEnd = matchIndex < dictLimit ? dictEnd : iend;
+ const BYTE* lowMatchPtr = matchIndex < dictLimit ? dictStart : lowPrefixPtr;
+ U32 offset;
+ mLength = ZSTD_count_2segments(ip+4, match+4, iend, matchEnd, lowPrefixPtr) + 4;
+ while (((ip>anchor) & (match>lowMatchPtr)) && (ip[-1] == match[-1])) { ip--; match--; mLength++; } /* catch up */
+ offset = current - matchIndex;
+ offset_2 = offset_1;
+ offset_1 = offset;
+ ZSTD_storeSeq(seqStorePtr, ip-anchor, anchor, offset + ZSTD_REP_MOVE, mLength-MINMATCH);
+ } }
+
+ /* found a match : store it */
+ ip += mLength;
+ anchor = ip;
+
+ if (ip <= ilimit) {
+ /* Fill Table */
+ hashTable[ZSTD_hashPtr(base+current+2, hBits, mls)] = current+2;
+ hashTable[ZSTD_hashPtr(ip-2, hBits, mls)] = (U32)(ip-2-base);
+ /* check immediate repcode */
+ while (ip <= ilimit) {
+ U32 const current2 = (U32)(ip-base);
+ U32 const repIndex2 = current2 - offset_2;
+ const BYTE* repMatch2 = repIndex2 < dictLimit ? dictBase + repIndex2 : base + repIndex2;
+ if ( (((U32)((dictLimit-1) - repIndex2) >= 3) & (repIndex2 > lowestIndex)) /* intentional overflow */
+ && (MEM_read32(repMatch2) == MEM_read32(ip)) ) {
+ const BYTE* const repEnd2 = repIndex2 < dictLimit ? dictEnd : iend;
+ size_t const repLength2 = ZSTD_count_2segments(ip+4, repMatch2+4, iend, repEnd2, lowPrefixPtr) + 4;
+ U32 tmpOffset = offset_2; offset_2 = offset_1; offset_1 = tmpOffset; /* swap offset_2 <=> offset_1 */
+ ZSTD_storeSeq(seqStorePtr, 0, anchor, 0, repLength2-MINMATCH);
+ hashTable[ZSTD_hashPtr(ip, hBits, mls)] = current2;
+ ip += repLength2;
+ anchor = ip;
+ continue;
+ }
+ break;
+ } } }
+
+ /* save reps for next block */
+ seqStorePtr->repToConfirm[0] = offset_1; seqStorePtr->repToConfirm[1] = offset_2;
+
+ /* Return the last literals size */
+ return iend - anchor;
+}
+
+
+size_t ZSTD_compressBlock_fast_extDict(ZSTD_CCtx* ctx,
+ const void* src, size_t srcSize)
+{
+ U32 const mls = ctx->appliedParams.cParams.searchLength;
+ switch(mls)
+ {
+ default: /* includes case 3 */
+ case 4 :
+ return ZSTD_compressBlock_fast_extDict_generic(ctx, src, srcSize, 4);
+ case 5 :
+ return ZSTD_compressBlock_fast_extDict_generic(ctx, src, srcSize, 5);
+ case 6 :
+ return ZSTD_compressBlock_fast_extDict_generic(ctx, src, srcSize, 6);
+ case 7 :
+ return ZSTD_compressBlock_fast_extDict_generic(ctx, src, srcSize, 7);
+ }
+}
diff --git a/thirdparty/zstd/compress/zstd_fast.h b/thirdparty/zstd/compress/zstd_fast.h
new file mode 100644
index 0000000000..4205141a9a
--- /dev/null
+++ b/thirdparty/zstd/compress/zstd_fast.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
+ */
+
+#ifndef ZSTD_FAST_H
+#define ZSTD_FAST_H
+
+#include "zstd_compress.h"
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+void ZSTD_fillHashTable(ZSTD_CCtx* zc, const void* end, const U32 mls);
+size_t ZSTD_compressBlock_fast(ZSTD_CCtx* ctx,
+ const void* src, size_t srcSize);
+size_t ZSTD_compressBlock_fast_extDict(ZSTD_CCtx* ctx,
+ const void* src, size_t srcSize);
+
+#if defined (__cplusplus)
+}
+#endif
+
+#endif /* ZSTD_FAST_H */
diff --git a/thirdparty/zstd/compress/zstd_lazy.c b/thirdparty/zstd/compress/zstd_lazy.c
new file mode 100644
index 0000000000..2a7f6a0fe2
--- /dev/null
+++ b/thirdparty/zstd/compress/zstd_lazy.c
@@ -0,0 +1,749 @@
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
+ */
+
+#include "zstd_lazy.h"
+
+
+/*-*************************************
+* Binary Tree search
+***************************************/
+/** ZSTD_insertBt1() : add one or multiple positions to tree.
+* ip : assumed <= iend-8 .
+* @return : nb of positions added */
+static U32 ZSTD_insertBt1(ZSTD_CCtx* zc, const BYTE* const ip, const U32 mls, const BYTE* const iend, U32 nbCompares,
+ U32 extDict)
+{
+ U32* const hashTable = zc->hashTable;
+ U32 const hashLog = zc->appliedParams.cParams.hashLog;
+ size_t const h = ZSTD_hashPtr(ip, hashLog, mls);
+ U32* const bt = zc->chainTable;
+ U32 const btLog = zc->appliedParams.cParams.chainLog - 1;
+ U32 const btMask = (1 << btLog) - 1;
+ U32 matchIndex = hashTable[h];
+ size_t commonLengthSmaller=0, commonLengthLarger=0;
+ const BYTE* const base = zc->base;
+ const BYTE* const dictBase = zc->dictBase;
+ const U32 dictLimit = zc->dictLimit;
+ const BYTE* const dictEnd = dictBase + dictLimit;
+ const BYTE* const prefixStart = base + dictLimit;
+ const BYTE* match;
+ const U32 current = (U32)(ip-base);
+ const U32 btLow = btMask >= current ? 0 : current - btMask;
+ U32* smallerPtr = bt + 2*(current&btMask);
+ U32* largerPtr = smallerPtr + 1;
+ U32 dummy32; /* to be nullified at the end */
+ U32 const windowLow = zc->lowLimit;
+ U32 matchEndIdx = current+8;
+ size_t bestLength = 8;
+#ifdef ZSTD_C_PREDICT
+ U32 predictedSmall = *(bt + 2*((current-1)&btMask) + 0);
+ U32 predictedLarge = *(bt + 2*((current-1)&btMask) + 1);
+ predictedSmall += (predictedSmall>0);
+ predictedLarge += (predictedLarge>0);
+#endif /* ZSTD_C_PREDICT */
+
+ assert(ip <= iend-8); /* required for h calculation */
+ hashTable[h] = current; /* Update Hash Table */
+
+ while (nbCompares-- && (matchIndex > windowLow)) {
+ U32* const nextPtr = bt + 2*(matchIndex & btMask);
+ size_t matchLength = MIN(commonLengthSmaller, commonLengthLarger); /* guaranteed minimum nb of common bytes */
+
+#ifdef ZSTD_C_PREDICT /* note : can create issues when hlog small <= 11 */
+ const U32* predictPtr = bt + 2*((matchIndex-1) & btMask); /* written this way, as bt is a roll buffer */
+ if (matchIndex == predictedSmall) {
+ /* no need to check length, result known */
+ *smallerPtr = matchIndex;
+ if (matchIndex <= btLow) { smallerPtr=&dummy32; break; } /* beyond tree size, stop the search */
+ smallerPtr = nextPtr+1; /* new "smaller" => larger of match */
+ matchIndex = nextPtr[1]; /* new matchIndex larger than previous (closer to current) */
+ predictedSmall = predictPtr[1] + (predictPtr[1]>0);
+ continue;
+ }
+ if (matchIndex == predictedLarge) {
+ *largerPtr = matchIndex;
+ if (matchIndex <= btLow) { largerPtr=&dummy32; break; } /* beyond tree size, stop the search */
+ largerPtr = nextPtr;
+ matchIndex = nextPtr[0];
+ predictedLarge = predictPtr[0] + (predictPtr[0]>0);
+ continue;
+ }
+#endif
+ if ((!extDict) || (matchIndex+matchLength >= dictLimit)) {
+ match = base + matchIndex;
+ if (match[matchLength] == ip[matchLength])
+ matchLength += ZSTD_count(ip+matchLength+1, match+matchLength+1, iend) +1;
+ } else {
+ match = dictBase + matchIndex;
+ matchLength += ZSTD_count_2segments(ip+matchLength, match+matchLength, iend, dictEnd, prefixStart);
+ if (matchIndex+matchLength >= dictLimit)
+ match = base + matchIndex; /* to prepare for next usage of match[matchLength] */
+ }
+
+ if (matchLength > bestLength) {
+ bestLength = matchLength;
+ if (matchLength > matchEndIdx - matchIndex)
+ matchEndIdx = matchIndex + (U32)matchLength;
+ }
+
+ if (ip+matchLength == iend) /* equal : no way to know if inf or sup */
+ break; /* drop , to guarantee consistency ; miss a bit of compression, but other solutions can corrupt tree */
+
+ if (match[matchLength] < ip[matchLength]) { /* necessarily within buffer */
+ /* match+1 is smaller than current */
+ *smallerPtr = matchIndex; /* update smaller idx */
+ commonLengthSmaller = matchLength; /* all smaller will now have at least this guaranteed common length */
+ if (matchIndex <= btLow) { smallerPtr=&dummy32; break; } /* beyond tree size, stop searching */
+ smallerPtr = nextPtr+1; /* new "smaller" => larger of match */
+ matchIndex = nextPtr[1]; /* new matchIndex larger than previous (closer to current) */
+ } else {
+ /* match is larger than current */
+ *largerPtr = matchIndex;
+ commonLengthLarger = matchLength;
+ if (matchIndex <= btLow) { largerPtr=&dummy32; break; } /* beyond tree size, stop searching */
+ largerPtr = nextPtr;
+ matchIndex = nextPtr[0];
+ } }
+
+ *smallerPtr = *largerPtr = 0;
+ if (bestLength > 384) return MIN(192, (U32)(bestLength - 384)); /* speed optimization */
+ if (matchEndIdx > current + 8) return matchEndIdx - (current + 8);
+ return 1;
+}
+
+
+static size_t ZSTD_insertBtAndFindBestMatch (
+ ZSTD_CCtx* zc,
+ const BYTE* const ip, const BYTE* const iend,
+ size_t* offsetPtr,
+ U32 nbCompares, const U32 mls,
+ U32 extDict)
+{
+ U32* const hashTable = zc->hashTable;
+ U32 const hashLog = zc->appliedParams.cParams.hashLog;
+ size_t const h = ZSTD_hashPtr(ip, hashLog, mls);
+ U32* const bt = zc->chainTable;
+ U32 const btLog = zc->appliedParams.cParams.chainLog - 1;
+ U32 const btMask = (1 << btLog) - 1;
+ U32 matchIndex = hashTable[h];
+ size_t commonLengthSmaller=0, commonLengthLarger=0;
+ const BYTE* const base = zc->base;
+ const BYTE* const dictBase = zc->dictBase;
+ const U32 dictLimit = zc->dictLimit;
+ const BYTE* const dictEnd = dictBase + dictLimit;
+ const BYTE* const prefixStart = base + dictLimit;
+ const U32 current = (U32)(ip-base);
+ const U32 btLow = btMask >= current ? 0 : current - btMask;
+ const U32 windowLow = zc->lowLimit;
+ U32* smallerPtr = bt + 2*(current&btMask);
+ U32* largerPtr = bt + 2*(current&btMask) + 1;
+ U32 matchEndIdx = current+8;
+ U32 dummy32; /* to be nullified at the end */
+ size_t bestLength = 0;
+
+ assert(ip <= iend-8); /* required for h calculation */
+ hashTable[h] = current; /* Update Hash Table */
+
+ while (nbCompares-- && (matchIndex > windowLow)) {
+ U32* const nextPtr = bt + 2*(matchIndex & btMask);
+ size_t matchLength = MIN(commonLengthSmaller, commonLengthLarger); /* guaranteed minimum nb of common bytes */
+ const BYTE* match;
+
+ if ((!extDict) || (matchIndex+matchLength >= dictLimit)) {
+ match = base + matchIndex;
+ if (match[matchLength] == ip[matchLength])
+ matchLength += ZSTD_count(ip+matchLength+1, match+matchLength+1, iend) +1;
+ } else {
+ match = dictBase + matchIndex;
+ matchLength += ZSTD_count_2segments(ip+matchLength, match+matchLength, iend, dictEnd, prefixStart);
+ if (matchIndex+matchLength >= dictLimit)
+ match = base + matchIndex; /* to prepare for next usage of match[matchLength] */
+ }
+
+ if (matchLength > bestLength) {
+ if (matchLength > matchEndIdx - matchIndex)
+ matchEndIdx = matchIndex + (U32)matchLength;
+ if ( (4*(int)(matchLength-bestLength)) > (int)(ZSTD_highbit32(current-matchIndex+1) - ZSTD_highbit32((U32)offsetPtr[0]+1)) )
+ bestLength = matchLength, *offsetPtr = ZSTD_REP_MOVE + current - matchIndex;
+ if (ip+matchLength == iend) /* equal : no way to know if inf or sup */
+ break; /* drop, to guarantee consistency (miss a little bit of compression) */
+ }
+
+ if (match[matchLength] < ip[matchLength]) {
+ /* match is smaller than current */
+ *smallerPtr = matchIndex; /* update smaller idx */
+ commonLengthSmaller = matchLength; /* all smaller will now have at least this guaranteed common length */
+ if (matchIndex <= btLow) { smallerPtr=&dummy32; break; } /* beyond tree size, stop the search */
+ smallerPtr = nextPtr+1; /* new "smaller" => larger of match */
+ matchIndex = nextPtr[1]; /* new matchIndex larger than previous (closer to current) */
+ } else {
+ /* match is larger than current */
+ *largerPtr = matchIndex;
+ commonLengthLarger = matchLength;
+ if (matchIndex <= btLow) { largerPtr=&dummy32; break; } /* beyond tree size, stop the search */
+ largerPtr = nextPtr;
+ matchIndex = nextPtr[0];
+ } }
+
+ *smallerPtr = *largerPtr = 0;
+
+ zc->nextToUpdate = (matchEndIdx > current + 8) ? matchEndIdx - 8 : current+1;
+ return bestLength;
+}
+
+
+void ZSTD_updateTree(ZSTD_CCtx* zc, const BYTE* const ip, const BYTE* const iend, const U32 nbCompares, const U32 mls)
+{
+ const BYTE* const base = zc->base;
+ const U32 target = (U32)(ip - base);
+ U32 idx = zc->nextToUpdate;
+
+ while(idx < target)
+ idx += ZSTD_insertBt1(zc, base+idx, mls, iend, nbCompares, 0);
+}
+
+/** ZSTD_BtFindBestMatch() : Tree updater, providing best match */
+static size_t ZSTD_BtFindBestMatch (
+ ZSTD_CCtx* zc,
+ const BYTE* const ip, const BYTE* const iLimit,
+ size_t* offsetPtr,
+ const U32 maxNbAttempts, const U32 mls)
+{
+ if (ip < zc->base + zc->nextToUpdate) return 0; /* skipped area */
+ ZSTD_updateTree(zc, ip, iLimit, maxNbAttempts, mls);
+ return ZSTD_insertBtAndFindBestMatch(zc, ip, iLimit, offsetPtr, maxNbAttempts, mls, 0);
+}
+
+
+static size_t ZSTD_BtFindBestMatch_selectMLS (
+ ZSTD_CCtx* zc, /* Index table will be updated */
+ const BYTE* ip, const BYTE* const iLimit,
+ size_t* offsetPtr,
+ const U32 maxNbAttempts, const U32 matchLengthSearch)
+{
+ switch(matchLengthSearch)
+ {
+ default : /* includes case 3 */
+ case 4 : return ZSTD_BtFindBestMatch(zc, ip, iLimit, offsetPtr, maxNbAttempts, 4);
+ case 5 : return ZSTD_BtFindBestMatch(zc, ip, iLimit, offsetPtr, maxNbAttempts, 5);
+ case 7 :
+ case 6 : return ZSTD_BtFindBestMatch(zc, ip, iLimit, offsetPtr, maxNbAttempts, 6);
+ }
+}
+
+
+void ZSTD_updateTree_extDict(ZSTD_CCtx* zc, const BYTE* const ip, const BYTE* const iend, const U32 nbCompares, const U32 mls)
+{
+ const BYTE* const base = zc->base;
+ const U32 target = (U32)(ip - base);
+ U32 idx = zc->nextToUpdate;
+
+ while (idx < target) idx += ZSTD_insertBt1(zc, base+idx, mls, iend, nbCompares, 1);
+}
+
+
+/** Tree updater, providing best match */
+static size_t ZSTD_BtFindBestMatch_extDict (
+ ZSTD_CCtx* zc,
+ const BYTE* const ip, const BYTE* const iLimit,
+ size_t* offsetPtr,
+ const U32 maxNbAttempts, const U32 mls)
+{
+ if (ip < zc->base + zc->nextToUpdate) return 0; /* skipped area */
+ ZSTD_updateTree_extDict(zc, ip, iLimit, maxNbAttempts, mls);
+ return ZSTD_insertBtAndFindBestMatch(zc, ip, iLimit, offsetPtr, maxNbAttempts, mls, 1);
+}
+
+
+static size_t ZSTD_BtFindBestMatch_selectMLS_extDict (
+ ZSTD_CCtx* zc, /* Index table will be updated */
+ const BYTE* ip, const BYTE* const iLimit,
+ size_t* offsetPtr,
+ const U32 maxNbAttempts, const U32 matchLengthSearch)
+{
+ switch(matchLengthSearch)
+ {
+ default : /* includes case 3 */
+ case 4 : return ZSTD_BtFindBestMatch_extDict(zc, ip, iLimit, offsetPtr, maxNbAttempts, 4);
+ case 5 : return ZSTD_BtFindBestMatch_extDict(zc, ip, iLimit, offsetPtr, maxNbAttempts, 5);
+ case 7 :
+ case 6 : return ZSTD_BtFindBestMatch_extDict(zc, ip, iLimit, offsetPtr, maxNbAttempts, 6);
+ }
+}
+
+
+
+/* *********************************
+* Hash Chain
+***********************************/
+#define NEXT_IN_CHAIN(d, mask) chainTable[(d) & mask]
+
+/* Update chains up to ip (excluded)
+ Assumption : always within prefix (i.e. not within extDict) */
+U32 ZSTD_insertAndFindFirstIndex (ZSTD_CCtx* zc, const BYTE* ip, U32 mls)
+{
+ U32* const hashTable = zc->hashTable;
+ const U32 hashLog = zc->appliedParams.cParams.hashLog;
+ U32* const chainTable = zc->chainTable;
+ const U32 chainMask = (1 << zc->appliedParams.cParams.chainLog) - 1;
+ const BYTE* const base = zc->base;
+ const U32 target = (U32)(ip - base);
+ U32 idx = zc->nextToUpdate;
+
+ while(idx < target) { /* catch up */
+ size_t const h = ZSTD_hashPtr(base+idx, hashLog, mls);
+ NEXT_IN_CHAIN(idx, chainMask) = hashTable[h];
+ hashTable[h] = idx;
+ idx++;
+ }
+
+ zc->nextToUpdate = target;
+ return hashTable[ZSTD_hashPtr(ip, hashLog, mls)];
+}
+
+
+/* inlining is important to hardwire a hot branch (template emulation) */
+FORCE_INLINE_TEMPLATE
+size_t ZSTD_HcFindBestMatch_generic (
+ ZSTD_CCtx* zc, /* Index table will be updated */
+ const BYTE* const ip, const BYTE* const iLimit,
+ size_t* offsetPtr,
+ const U32 maxNbAttempts, const U32 mls, const U32 extDict)
+{
+ U32* const chainTable = zc->chainTable;
+ const U32 chainSize = (1 << zc->appliedParams.cParams.chainLog);
+ const U32 chainMask = chainSize-1;
+ const BYTE* const base = zc->base;
+ const BYTE* const dictBase = zc->dictBase;
+ const U32 dictLimit = zc->dictLimit;
+ const BYTE* const prefixStart = base + dictLimit;
+ const BYTE* const dictEnd = dictBase + dictLimit;
+ const U32 lowLimit = zc->lowLimit;
+ const U32 current = (U32)(ip-base);
+ const U32 minChain = current > chainSize ? current - chainSize : 0;
+ int nbAttempts=maxNbAttempts;
+ size_t ml=4-1;
+
+ /* HC4 match finder */
+ U32 matchIndex = ZSTD_insertAndFindFirstIndex (zc, ip, mls);
+
+ for ( ; (matchIndex>lowLimit) & (nbAttempts>0) ; nbAttempts--) {
+ const BYTE* match;
+ size_t currentMl=0;
+ if ((!extDict) || matchIndex >= dictLimit) {
+ match = base + matchIndex;
+ if (match[ml] == ip[ml]) /* potentially better */
+ currentMl = ZSTD_count(ip, match, iLimit);
+ } else {
+ match = dictBase + matchIndex;
+ if (MEM_read32(match) == MEM_read32(ip)) /* assumption : matchIndex <= dictLimit-4 (by table construction) */
+ currentMl = ZSTD_count_2segments(ip+4, match+4, iLimit, dictEnd, prefixStart) + 4;
+ }
+
+ /* save best solution */
+ if (currentMl > ml) {
+ ml = currentMl;
+ *offsetPtr = current - matchIndex + ZSTD_REP_MOVE;
+ if (ip+currentMl == iLimit) break; /* best possible, avoids read overflow on next attempt */
+ }
+
+ if (matchIndex <= minChain) break;
+ matchIndex = NEXT_IN_CHAIN(matchIndex, chainMask);
+ }
+
+ return ml;
+}
+
+
+FORCE_INLINE_TEMPLATE size_t ZSTD_HcFindBestMatch_selectMLS (
+ ZSTD_CCtx* zc,
+ const BYTE* ip, const BYTE* const iLimit,
+ size_t* offsetPtr,
+ const U32 maxNbAttempts, const U32 matchLengthSearch)
+{
+ switch(matchLengthSearch)
+ {
+ default : /* includes case 3 */
+ case 4 : return ZSTD_HcFindBestMatch_generic(zc, ip, iLimit, offsetPtr, maxNbAttempts, 4, 0);
+ case 5 : return ZSTD_HcFindBestMatch_generic(zc, ip, iLimit, offsetPtr, maxNbAttempts, 5, 0);
+ case 7 :
+ case 6 : return ZSTD_HcFindBestMatch_generic(zc, ip, iLimit, offsetPtr, maxNbAttempts, 6, 0);
+ }
+}
+
+
+FORCE_INLINE_TEMPLATE size_t ZSTD_HcFindBestMatch_extDict_selectMLS (
+ ZSTD_CCtx* zc,
+ const BYTE* ip, const BYTE* const iLimit,
+ size_t* offsetPtr,
+ const U32 maxNbAttempts, const U32 matchLengthSearch)
+{
+ switch(matchLengthSearch)
+ {
+ default : /* includes case 3 */
+ case 4 : return ZSTD_HcFindBestMatch_generic(zc, ip, iLimit, offsetPtr, maxNbAttempts, 4, 1);
+ case 5 : return ZSTD_HcFindBestMatch_generic(zc, ip, iLimit, offsetPtr, maxNbAttempts, 5, 1);
+ case 7 :
+ case 6 : return ZSTD_HcFindBestMatch_generic(zc, ip, iLimit, offsetPtr, maxNbAttempts, 6, 1);
+ }
+}
+
+
+/* *******************************
+* Common parser - lazy strategy
+*********************************/
+FORCE_INLINE_TEMPLATE
+size_t ZSTD_compressBlock_lazy_generic(ZSTD_CCtx* ctx,
+ const void* src, size_t srcSize,
+ const U32 searchMethod, const U32 depth)
+{
+ seqStore_t* seqStorePtr = &(ctx->seqStore);
+ const BYTE* const istart = (const BYTE*)src;
+ const BYTE* ip = istart;
+ const BYTE* anchor = istart;
+ const BYTE* const iend = istart + srcSize;
+ const BYTE* const ilimit = iend - 8;
+ const BYTE* const base = ctx->base + ctx->dictLimit;
+
+ U32 const maxSearches = 1 << ctx->appliedParams.cParams.searchLog;
+ U32 const mls = ctx->appliedParams.cParams.searchLength;
+
+ typedef size_t (*searchMax_f)(ZSTD_CCtx* zc, const BYTE* ip, const BYTE* iLimit,
+ size_t* offsetPtr,
+ U32 maxNbAttempts, U32 matchLengthSearch);
+ searchMax_f const searchMax = searchMethod ? ZSTD_BtFindBestMatch_selectMLS : ZSTD_HcFindBestMatch_selectMLS;
+ U32 offset_1 = seqStorePtr->rep[0], offset_2 = seqStorePtr->rep[1], savedOffset=0;
+
+ /* init */
+ ip += (ip==base);
+ ctx->nextToUpdate3 = ctx->nextToUpdate;
+ { U32 const maxRep = (U32)(ip-base);
+ if (offset_2 > maxRep) savedOffset = offset_2, offset_2 = 0;
+ if (offset_1 > maxRep) savedOffset = offset_1, offset_1 = 0;
+ }
+
+ /* Match Loop */
+ while (ip < ilimit) {
+ size_t matchLength=0;
+ size_t offset=0;
+ const BYTE* start=ip+1;
+
+ /* check repCode */
+ if ((offset_1>0) & (MEM_read32(ip+1) == MEM_read32(ip+1 - offset_1))) {
+ /* repcode : we take it */
+ matchLength = ZSTD_count(ip+1+4, ip+1+4-offset_1, iend) + 4;
+ if (depth==0) goto _storeSequence;
+ }
+
+ /* first search (depth 0) */
+ { size_t offsetFound = 99999999;
+ size_t const ml2 = searchMax(ctx, ip, iend, &offsetFound, maxSearches, mls);
+ if (ml2 > matchLength)
+ matchLength = ml2, start = ip, offset=offsetFound;
+ }
+
+ if (matchLength < 4) {
+ ip += ((ip-anchor) >> g_searchStrength) + 1; /* jump faster over incompressible sections */
+ continue;
+ }
+
+ /* let's try to find a better solution */
+ if (depth>=1)
+ while (ip<ilimit) {
+ ip ++;
+ if ((offset) && ((offset_1>0) & (MEM_read32(ip) == MEM_read32(ip - offset_1)))) {
+ size_t const mlRep = ZSTD_count(ip+4, ip+4-offset_1, iend) + 4;
+ int const gain2 = (int)(mlRep * 3);
+ int const gain1 = (int)(matchLength*3 - ZSTD_highbit32((U32)offset+1) + 1);
+ if ((mlRep >= 4) && (gain2 > gain1))
+ matchLength = mlRep, offset = 0, start = ip;
+ }
+ { size_t offset2=99999999;
+ size_t const ml2 = searchMax(ctx, ip, iend, &offset2, maxSearches, mls);
+ int const gain2 = (int)(ml2*4 - ZSTD_highbit32((U32)offset2+1)); /* raw approx */
+ int const gain1 = (int)(matchLength*4 - ZSTD_highbit32((U32)offset+1) + 4);
+ if ((ml2 >= 4) && (gain2 > gain1)) {
+ matchLength = ml2, offset = offset2, start = ip;
+ continue; /* search a better one */
+ } }
+
+ /* let's find an even better one */
+ if ((depth==2) && (ip<ilimit)) {
+ ip ++;
+ if ((offset) && ((offset_1>0) & (MEM_read32(ip) == MEM_read32(ip - offset_1)))) {
+ size_t const ml2 = ZSTD_count(ip+4, ip+4-offset_1, iend) + 4;
+ int const gain2 = (int)(ml2 * 4);
+ int const gain1 = (int)(matchLength*4 - ZSTD_highbit32((U32)offset+1) + 1);
+ if ((ml2 >= 4) && (gain2 > gain1))
+ matchLength = ml2, offset = 0, start = ip;
+ }
+ { size_t offset2=99999999;
+ size_t const ml2 = searchMax(ctx, ip, iend, &offset2, maxSearches, mls);
+ int const gain2 = (int)(ml2*4 - ZSTD_highbit32((U32)offset2+1)); /* raw approx */
+ int const gain1 = (int)(matchLength*4 - ZSTD_highbit32((U32)offset+1) + 7);
+ if ((ml2 >= 4) && (gain2 > gain1)) {
+ matchLength = ml2, offset = offset2, start = ip;
+ continue;
+ } } }
+ break; /* nothing found : store previous solution */
+ }
+
+ /* NOTE:
+ * start[-offset+ZSTD_REP_MOVE-1] is undefined behavior.
+ * (-offset+ZSTD_REP_MOVE-1) is unsigned, and is added to start, which
+ * overflows the pointer, which is undefined behavior.
+ */
+ /* catch up */
+ if (offset) {
+ while ( (start > anchor)
+ && (start > base+offset-ZSTD_REP_MOVE)
+ && (start[-1] == (start-offset+ZSTD_REP_MOVE)[-1]) ) /* only search for offset within prefix */
+ { start--; matchLength++; }
+ offset_2 = offset_1; offset_1 = (U32)(offset - ZSTD_REP_MOVE);
+ }
+ /* store sequence */
+_storeSequence:
+ { size_t const litLength = start - anchor;
+ ZSTD_storeSeq(seqStorePtr, litLength, anchor, (U32)offset, matchLength-MINMATCH);
+ anchor = ip = start + matchLength;
+ }
+
+ /* check immediate repcode */
+ while ( (ip <= ilimit)
+ && ((offset_2>0)
+ & (MEM_read32(ip) == MEM_read32(ip - offset_2)) )) {
+ /* store sequence */
+ matchLength = ZSTD_count(ip+4, ip+4-offset_2, iend) + 4;
+ offset = offset_2; offset_2 = offset_1; offset_1 = (U32)offset; /* swap repcodes */
+ ZSTD_storeSeq(seqStorePtr, 0, anchor, 0, matchLength-MINMATCH);
+ ip += matchLength;
+ anchor = ip;
+ continue; /* faster when present ... (?) */
+ } }
+
+ /* Save reps for next block */
+ seqStorePtr->repToConfirm[0] = offset_1 ? offset_1 : savedOffset;
+ seqStorePtr->repToConfirm[1] = offset_2 ? offset_2 : savedOffset;
+
+ /* Return the last literals size */
+ return iend - anchor;
+}
+
+
+size_t ZSTD_compressBlock_btlazy2(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
+{
+ return ZSTD_compressBlock_lazy_generic(ctx, src, srcSize, 1, 2);
+}
+
+size_t ZSTD_compressBlock_lazy2(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
+{
+ return ZSTD_compressBlock_lazy_generic(ctx, src, srcSize, 0, 2);
+}
+
+size_t ZSTD_compressBlock_lazy(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
+{
+ return ZSTD_compressBlock_lazy_generic(ctx, src, srcSize, 0, 1);
+}
+
+size_t ZSTD_compressBlock_greedy(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
+{
+ return ZSTD_compressBlock_lazy_generic(ctx, src, srcSize, 0, 0);
+}
+
+
+FORCE_INLINE_TEMPLATE
+size_t ZSTD_compressBlock_lazy_extDict_generic(ZSTD_CCtx* ctx,
+ const void* src, size_t srcSize,
+ const U32 searchMethod, const U32 depth)
+{
+ seqStore_t* seqStorePtr = &(ctx->seqStore);
+ const BYTE* const istart = (const BYTE*)src;
+ const BYTE* ip = istart;
+ const BYTE* anchor = istart;
+ const BYTE* const iend = istart + srcSize;
+ const BYTE* const ilimit = iend - 8;
+ const BYTE* const base = ctx->base;
+ const U32 dictLimit = ctx->dictLimit;
+ const U32 lowestIndex = ctx->lowLimit;
+ const BYTE* const prefixStart = base + dictLimit;
+ const BYTE* const dictBase = ctx->dictBase;
+ const BYTE* const dictEnd = dictBase + dictLimit;
+ const BYTE* const dictStart = dictBase + ctx->lowLimit;
+
+ const U32 maxSearches = 1 << ctx->appliedParams.cParams.searchLog;
+ const U32 mls = ctx->appliedParams.cParams.searchLength;
+
+ typedef size_t (*searchMax_f)(ZSTD_CCtx* zc, const BYTE* ip, const BYTE* iLimit,
+ size_t* offsetPtr,
+ U32 maxNbAttempts, U32 matchLengthSearch);
+ searchMax_f searchMax = searchMethod ? ZSTD_BtFindBestMatch_selectMLS_extDict : ZSTD_HcFindBestMatch_extDict_selectMLS;
+
+ U32 offset_1 = seqStorePtr->rep[0], offset_2 = seqStorePtr->rep[1];
+
+ /* init */
+ ctx->nextToUpdate3 = ctx->nextToUpdate;
+ ip += (ip == prefixStart);
+
+ /* Match Loop */
+ while (ip < ilimit) {
+ size_t matchLength=0;
+ size_t offset=0;
+ const BYTE* start=ip+1;
+ U32 current = (U32)(ip-base);
+
+ /* check repCode */
+ { const U32 repIndex = (U32)(current+1 - offset_1);
+ const BYTE* const repBase = repIndex < dictLimit ? dictBase : base;
+ const BYTE* const repMatch = repBase + repIndex;
+ if (((U32)((dictLimit-1) - repIndex) >= 3) & (repIndex > lowestIndex)) /* intentional overflow */
+ if (MEM_read32(ip+1) == MEM_read32(repMatch)) {
+ /* repcode detected we should take it */
+ const BYTE* const repEnd = repIndex < dictLimit ? dictEnd : iend;
+ matchLength = ZSTD_count_2segments(ip+1+4, repMatch+4, iend, repEnd, prefixStart) + 4;
+ if (depth==0) goto _storeSequence;
+ } }
+
+ /* first search (depth 0) */
+ { size_t offsetFound = 99999999;
+ size_t const ml2 = searchMax(ctx, ip, iend, &offsetFound, maxSearches, mls);
+ if (ml2 > matchLength)
+ matchLength = ml2, start = ip, offset=offsetFound;
+ }
+
+ if (matchLength < 4) {
+ ip += ((ip-anchor) >> g_searchStrength) + 1; /* jump faster over incompressible sections */
+ continue;
+ }
+
+ /* let's try to find a better solution */
+ if (depth>=1)
+ while (ip<ilimit) {
+ ip ++;
+ current++;
+ /* check repCode */
+ if (offset) {
+ const U32 repIndex = (U32)(current - offset_1);
+ const BYTE* const repBase = repIndex < dictLimit ? dictBase : base;
+ const BYTE* const repMatch = repBase + repIndex;
+ if (((U32)((dictLimit-1) - repIndex) >= 3) & (repIndex > lowestIndex)) /* intentional overflow */
+ if (MEM_read32(ip) == MEM_read32(repMatch)) {
+ /* repcode detected */
+ const BYTE* const repEnd = repIndex < dictLimit ? dictEnd : iend;
+ size_t const repLength = ZSTD_count_2segments(ip+4, repMatch+4, iend, repEnd, prefixStart) + 4;
+ int const gain2 = (int)(repLength * 3);
+ int const gain1 = (int)(matchLength*3 - ZSTD_highbit32((U32)offset+1) + 1);
+ if ((repLength >= 4) && (gain2 > gain1))
+ matchLength = repLength, offset = 0, start = ip;
+ } }
+
+ /* search match, depth 1 */
+ { size_t offset2=99999999;
+ size_t const ml2 = searchMax(ctx, ip, iend, &offset2, maxSearches, mls);
+ int const gain2 = (int)(ml2*4 - ZSTD_highbit32((U32)offset2+1)); /* raw approx */
+ int const gain1 = (int)(matchLength*4 - ZSTD_highbit32((U32)offset+1) + 4);
+ if ((ml2 >= 4) && (gain2 > gain1)) {
+ matchLength = ml2, offset = offset2, start = ip;
+ continue; /* search a better one */
+ } }
+
+ /* let's find an even better one */
+ if ((depth==2) && (ip<ilimit)) {
+ ip ++;
+ current++;
+ /* check repCode */
+ if (offset) {
+ const U32 repIndex = (U32)(current - offset_1);
+ const BYTE* const repBase = repIndex < dictLimit ? dictBase : base;
+ const BYTE* const repMatch = repBase + repIndex;
+ if (((U32)((dictLimit-1) - repIndex) >= 3) & (repIndex > lowestIndex)) /* intentional overflow */
+ if (MEM_read32(ip) == MEM_read32(repMatch)) {
+ /* repcode detected */
+ const BYTE* const repEnd = repIndex < dictLimit ? dictEnd : iend;
+ size_t const repLength = ZSTD_count_2segments(ip+4, repMatch+4, iend, repEnd, prefixStart) + 4;
+ int const gain2 = (int)(repLength * 4);
+ int const gain1 = (int)(matchLength*4 - ZSTD_highbit32((U32)offset+1) + 1);
+ if ((repLength >= 4) && (gain2 > gain1))
+ matchLength = repLength, offset = 0, start = ip;
+ } }
+
+ /* search match, depth 2 */
+ { size_t offset2=99999999;
+ size_t const ml2 = searchMax(ctx, ip, iend, &offset2, maxSearches, mls);
+ int const gain2 = (int)(ml2*4 - ZSTD_highbit32((U32)offset2+1)); /* raw approx */
+ int const gain1 = (int)(matchLength*4 - ZSTD_highbit32((U32)offset+1) + 7);
+ if ((ml2 >= 4) && (gain2 > gain1)) {
+ matchLength = ml2, offset = offset2, start = ip;
+ continue;
+ } } }
+ break; /* nothing found : store previous solution */
+ }
+
+ /* catch up */
+ if (offset) {
+ U32 const matchIndex = (U32)((start-base) - (offset - ZSTD_REP_MOVE));
+ const BYTE* match = (matchIndex < dictLimit) ? dictBase + matchIndex : base + matchIndex;
+ const BYTE* const mStart = (matchIndex < dictLimit) ? dictStart : prefixStart;
+ while ((start>anchor) && (match>mStart) && (start[-1] == match[-1])) { start--; match--; matchLength++; } /* catch up */
+ offset_2 = offset_1; offset_1 = (U32)(offset - ZSTD_REP_MOVE);
+ }
+
+ /* store sequence */
+_storeSequence:
+ { size_t const litLength = start - anchor;
+ ZSTD_storeSeq(seqStorePtr, litLength, anchor, (U32)offset, matchLength-MINMATCH);
+ anchor = ip = start + matchLength;
+ }
+
+ /* check immediate repcode */
+ while (ip <= ilimit) {
+ const U32 repIndex = (U32)((ip-base) - offset_2);
+ const BYTE* const repBase = repIndex < dictLimit ? dictBase : base;
+ const BYTE* const repMatch = repBase + repIndex;
+ if (((U32)((dictLimit-1) - repIndex) >= 3) & (repIndex > lowestIndex)) /* intentional overflow */
+ if (MEM_read32(ip) == MEM_read32(repMatch)) {
+ /* repcode detected we should take it */
+ const BYTE* const repEnd = repIndex < dictLimit ? dictEnd : iend;
+ matchLength = ZSTD_count_2segments(ip+4, repMatch+4, iend, repEnd, prefixStart) + 4;
+ offset = offset_2; offset_2 = offset_1; offset_1 = (U32)offset; /* swap offset history */
+ ZSTD_storeSeq(seqStorePtr, 0, anchor, 0, matchLength-MINMATCH);
+ ip += matchLength;
+ anchor = ip;
+ continue; /* faster when present ... (?) */
+ }
+ break;
+ } }
+
+ /* Save reps for next block */
+ seqStorePtr->repToConfirm[0] = offset_1; seqStorePtr->repToConfirm[1] = offset_2;
+
+ /* Return the last literals size */
+ return iend - anchor;
+}
+
+
+size_t ZSTD_compressBlock_greedy_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
+{
+ return ZSTD_compressBlock_lazy_extDict_generic(ctx, src, srcSize, 0, 0);
+}
+
+size_t ZSTD_compressBlock_lazy_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
+{
+ return ZSTD_compressBlock_lazy_extDict_generic(ctx, src, srcSize, 0, 1);
+}
+
+size_t ZSTD_compressBlock_lazy2_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
+{
+ return ZSTD_compressBlock_lazy_extDict_generic(ctx, src, srcSize, 0, 2);
+}
+
+size_t ZSTD_compressBlock_btlazy2_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
+{
+ return ZSTD_compressBlock_lazy_extDict_generic(ctx, src, srcSize, 1, 2);
+}
diff --git a/thirdparty/zstd/compress/zstd_lazy.h b/thirdparty/zstd/compress/zstd_lazy.h
new file mode 100644
index 0000000000..a9c4daed25
--- /dev/null
+++ b/thirdparty/zstd/compress/zstd_lazy.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
+ */
+
+#ifndef ZSTD_LAZY_H
+#define ZSTD_LAZY_H
+
+#include "zstd_compress.h"
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+U32 ZSTD_insertAndFindFirstIndex (ZSTD_CCtx* zc, const BYTE* ip, U32 mls);
+void ZSTD_updateTree(ZSTD_CCtx* zc, const BYTE* const ip, const BYTE* const iend, const U32 nbCompares, const U32 mls);
+void ZSTD_updateTree_extDict(ZSTD_CCtx* zc, const BYTE* const ip, const BYTE* const iend, const U32 nbCompares, const U32 mls);
+
+size_t ZSTD_compressBlock_btlazy2(ZSTD_CCtx* ctx, const void* src, size_t srcSize);
+size_t ZSTD_compressBlock_lazy2(ZSTD_CCtx* ctx, const void* src, size_t srcSize);
+size_t ZSTD_compressBlock_lazy(ZSTD_CCtx* ctx, const void* src, size_t srcSize);
+size_t ZSTD_compressBlock_greedy(ZSTD_CCtx* ctx, const void* src, size_t srcSize);
+
+size_t ZSTD_compressBlock_greedy_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize);
+size_t ZSTD_compressBlock_lazy_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize);
+size_t ZSTD_compressBlock_lazy2_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize);
+size_t ZSTD_compressBlock_btlazy2_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize);
+
+#if defined (__cplusplus)
+}
+#endif
+
+#endif /* ZSTD_LAZY_H */
diff --git a/thirdparty/zstd/compress/zstd_ldm.c b/thirdparty/zstd/compress/zstd_ldm.c
new file mode 100644
index 0000000000..be50872cf7
--- /dev/null
+++ b/thirdparty/zstd/compress/zstd_ldm.c
@@ -0,0 +1,707 @@
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
+ */
+
+#include "zstd_ldm.h"
+
+#include "zstd_fast.h" /* ZSTD_fillHashTable() */
+#include "zstd_double_fast.h" /* ZSTD_fillDoubleHashTable() */
+
+#define LDM_BUCKET_SIZE_LOG 3
+#define LDM_MIN_MATCH_LENGTH 64
+#define LDM_HASH_RLOG 7
+#define LDM_HASH_CHAR_OFFSET 10
+
+size_t ZSTD_ldm_initializeParameters(ldmParams_t* params, U32 enableLdm)
+{
+ ZSTD_STATIC_ASSERT(LDM_BUCKET_SIZE_LOG <= ZSTD_LDM_BUCKETSIZELOG_MAX);
+ params->enableLdm = enableLdm>0;
+ params->hashLog = 0;
+ params->bucketSizeLog = LDM_BUCKET_SIZE_LOG;
+ params->minMatchLength = LDM_MIN_MATCH_LENGTH;
+ params->hashEveryLog = ZSTD_LDM_HASHEVERYLOG_NOTSET;
+ return 0;
+}
+
+void ZSTD_ldm_adjustParameters(ldmParams_t* params, U32 windowLog)
+{
+ if (params->hashLog == 0) {
+ params->hashLog = MAX(ZSTD_HASHLOG_MIN, windowLog - LDM_HASH_RLOG);
+ assert(params->hashLog <= ZSTD_HASHLOG_MAX);
+ }
+ if (params->hashEveryLog == ZSTD_LDM_HASHEVERYLOG_NOTSET) {
+ params->hashEveryLog =
+ windowLog < params->hashLog ? 0 : windowLog - params->hashLog;
+ }
+ params->bucketSizeLog = MIN(params->bucketSizeLog, params->hashLog);
+}
+
+size_t ZSTD_ldm_getTableSize(U32 hashLog, U32 bucketSizeLog) {
+ size_t const ldmHSize = ((size_t)1) << hashLog;
+ size_t const ldmBucketSizeLog = MIN(bucketSizeLog, hashLog);
+ size_t const ldmBucketSize =
+ ((size_t)1) << (hashLog - ldmBucketSizeLog);
+ return ldmBucketSize + (ldmHSize * (sizeof(ldmEntry_t)));
+}
+
+/** ZSTD_ldm_getSmallHash() :
+ * numBits should be <= 32
+ * If numBits==0, returns 0.
+ * @return : the most significant numBits of value. */
+static U32 ZSTD_ldm_getSmallHash(U64 value, U32 numBits)
+{
+ assert(numBits <= 32);
+ return numBits == 0 ? 0 : (U32)(value >> (64 - numBits));
+}
+
+/** ZSTD_ldm_getChecksum() :
+ * numBitsToDiscard should be <= 32
+ * @return : the next most significant 32 bits after numBitsToDiscard */
+static U32 ZSTD_ldm_getChecksum(U64 hash, U32 numBitsToDiscard)
+{
+ assert(numBitsToDiscard <= 32);
+ return (hash >> (64 - 32 - numBitsToDiscard)) & 0xFFFFFFFF;
+}
+
+/** ZSTD_ldm_getTag() ;
+ * Given the hash, returns the most significant numTagBits bits
+ * after (32 + hbits) bits.
+ *
+ * If there are not enough bits remaining, return the last
+ * numTagBits bits. */
+static U32 ZSTD_ldm_getTag(U64 hash, U32 hbits, U32 numTagBits)
+{
+ assert(numTagBits < 32 && hbits <= 32);
+ if (32 - hbits < numTagBits) {
+ return hash & (((U32)1 << numTagBits) - 1);
+ } else {
+ return (hash >> (32 - hbits - numTagBits)) & (((U32)1 << numTagBits) - 1);
+ }
+}
+
+/** ZSTD_ldm_getBucket() :
+ * Returns a pointer to the start of the bucket associated with hash. */
+static ldmEntry_t* ZSTD_ldm_getBucket(
+ ldmState_t* ldmState, size_t hash, ldmParams_t const ldmParams)
+{
+ return ldmState->hashTable + (hash << ldmParams.bucketSizeLog);
+}
+
+/** ZSTD_ldm_insertEntry() :
+ * Insert the entry with corresponding hash into the hash table */
+static void ZSTD_ldm_insertEntry(ldmState_t* ldmState,
+ size_t const hash, const ldmEntry_t entry,
+ ldmParams_t const ldmParams)
+{
+ BYTE* const bucketOffsets = ldmState->bucketOffsets;
+ *(ZSTD_ldm_getBucket(ldmState, hash, ldmParams) + bucketOffsets[hash]) = entry;
+ bucketOffsets[hash]++;
+ bucketOffsets[hash] &= ((U32)1 << ldmParams.bucketSizeLog) - 1;
+}
+
+/** ZSTD_ldm_makeEntryAndInsertByTag() :
+ *
+ * Gets the small hash, checksum, and tag from the rollingHash.
+ *
+ * If the tag matches (1 << ldmParams.hashEveryLog)-1, then
+ * creates an ldmEntry from the offset, and inserts it into the hash table.
+ *
+ * hBits is the length of the small hash, which is the most significant hBits
+ * of rollingHash. The checksum is the next 32 most significant bits, followed
+ * by ldmParams.hashEveryLog bits that make up the tag. */
+static void ZSTD_ldm_makeEntryAndInsertByTag(ldmState_t* ldmState,
+ U64 const rollingHash,
+ U32 const hBits,
+ U32 const offset,
+ ldmParams_t const ldmParams)
+{
+ U32 const tag = ZSTD_ldm_getTag(rollingHash, hBits, ldmParams.hashEveryLog);
+ U32 const tagMask = ((U32)1 << ldmParams.hashEveryLog) - 1;
+ if (tag == tagMask) {
+ U32 const hash = ZSTD_ldm_getSmallHash(rollingHash, hBits);
+ U32 const checksum = ZSTD_ldm_getChecksum(rollingHash, hBits);
+ ldmEntry_t entry;
+ entry.offset = offset;
+ entry.checksum = checksum;
+ ZSTD_ldm_insertEntry(ldmState, hash, entry, ldmParams);
+ }
+}
+
+/** ZSTD_ldm_getRollingHash() :
+ * Get a 64-bit hash using the first len bytes from buf.
+ *
+ * Giving bytes s = s_1, s_2, ... s_k, the hash is defined to be
+ * H(s) = s_1*(a^(k-1)) + s_2*(a^(k-2)) + ... + s_k*(a^0)
+ *
+ * where the constant a is defined to be prime8bytes.
+ *
+ * The implementation adds an offset to each byte, so
+ * H(s) = (s_1 + HASH_CHAR_OFFSET)*(a^(k-1)) + ... */
+static U64 ZSTD_ldm_getRollingHash(const BYTE* buf, U32 len)
+{
+ U64 ret = 0;
+ U32 i;
+ for (i = 0; i < len; i++) {
+ ret *= prime8bytes;
+ ret += buf[i] + LDM_HASH_CHAR_OFFSET;
+ }
+ return ret;
+}
+
+/** ZSTD_ldm_ipow() :
+ * Return base^exp. */
+static U64 ZSTD_ldm_ipow(U64 base, U64 exp)
+{
+ U64 ret = 1;
+ while (exp) {
+ if (exp & 1) { ret *= base; }
+ exp >>= 1;
+ base *= base;
+ }
+ return ret;
+}
+
+U64 ZSTD_ldm_getHashPower(U32 minMatchLength) {
+ assert(minMatchLength >= ZSTD_LDM_MINMATCH_MIN);
+ return ZSTD_ldm_ipow(prime8bytes, minMatchLength - 1);
+}
+
+/** ZSTD_ldm_updateHash() :
+ * Updates hash by removing toRemove and adding toAdd. */
+static U64 ZSTD_ldm_updateHash(U64 hash, BYTE toRemove, BYTE toAdd, U64 hashPower)
+{
+ hash -= ((toRemove + LDM_HASH_CHAR_OFFSET) * hashPower);
+ hash *= prime8bytes;
+ hash += toAdd + LDM_HASH_CHAR_OFFSET;
+ return hash;
+}
+
+/** ZSTD_ldm_countBackwardsMatch() :
+ * Returns the number of bytes that match backwards before pIn and pMatch.
+ *
+ * We count only bytes where pMatch >= pBase and pIn >= pAnchor. */
+static size_t ZSTD_ldm_countBackwardsMatch(
+ const BYTE* pIn, const BYTE* pAnchor,
+ const BYTE* pMatch, const BYTE* pBase)
+{
+ size_t matchLength = 0;
+ while (pIn > pAnchor && pMatch > pBase && pIn[-1] == pMatch[-1]) {
+ pIn--;
+ pMatch--;
+ matchLength++;
+ }
+ return matchLength;
+}
+
+/** ZSTD_ldm_fillFastTables() :
+ *
+ * Fills the relevant tables for the ZSTD_fast and ZSTD_dfast strategies.
+ * This is similar to ZSTD_loadDictionaryContent.
+ *
+ * The tables for the other strategies are filled within their
+ * block compressors. */
+static size_t ZSTD_ldm_fillFastTables(ZSTD_CCtx* zc, const void* end)
+{
+ const BYTE* const iend = (const BYTE*)end;
+ const U32 mls = zc->appliedParams.cParams.searchLength;
+
+ switch(zc->appliedParams.cParams.strategy)
+ {
+ case ZSTD_fast:
+ ZSTD_fillHashTable(zc, iend, mls);
+ zc->nextToUpdate = (U32)(iend - zc->base);
+ break;
+
+ case ZSTD_dfast:
+ ZSTD_fillDoubleHashTable(zc, iend, mls);
+ zc->nextToUpdate = (U32)(iend - zc->base);
+ break;
+
+ case ZSTD_greedy:
+ case ZSTD_lazy:
+ case ZSTD_lazy2:
+ case ZSTD_btlazy2:
+ case ZSTD_btopt:
+ case ZSTD_btultra:
+ break;
+ default:
+ assert(0); /* not possible : not a valid strategy id */
+ }
+
+ return 0;
+}
+
+/** ZSTD_ldm_fillLdmHashTable() :
+ *
+ * Fills hashTable from (lastHashed + 1) to iend (non-inclusive).
+ * lastHash is the rolling hash that corresponds to lastHashed.
+ *
+ * Returns the rolling hash corresponding to position iend-1. */
+static U64 ZSTD_ldm_fillLdmHashTable(ldmState_t* state,
+ U64 lastHash, const BYTE* lastHashed,
+ const BYTE* iend, const BYTE* base,
+ U32 hBits, ldmParams_t const ldmParams)
+{
+ U64 rollingHash = lastHash;
+ const BYTE* cur = lastHashed + 1;
+
+ while (cur < iend) {
+ rollingHash = ZSTD_ldm_updateHash(rollingHash, cur[-1],
+ cur[ldmParams.minMatchLength-1],
+ state->hashPower);
+ ZSTD_ldm_makeEntryAndInsertByTag(state,
+ rollingHash, hBits,
+ (U32)(cur - base), ldmParams);
+ ++cur;
+ }
+ return rollingHash;
+}
+
+
+/** ZSTD_ldm_limitTableUpdate() :
+ *
+ * Sets cctx->nextToUpdate to a position corresponding closer to anchor
+ * if it is far way
+ * (after a long match, only update tables a limited amount). */
+static void ZSTD_ldm_limitTableUpdate(ZSTD_CCtx* cctx, const BYTE* anchor)
+{
+ U32 const current = (U32)(anchor - cctx->base);
+ if (current > cctx->nextToUpdate + 1024) {
+ cctx->nextToUpdate =
+ current - MIN(512, current - cctx->nextToUpdate - 1024);
+ }
+}
+
+typedef size_t (*ZSTD_blockCompressor) (ZSTD_CCtx* ctx, const void* src, size_t srcSize);
+/* defined in zstd_compress.c */
+ZSTD_blockCompressor ZSTD_selectBlockCompressor(ZSTD_strategy strat, int extDict);
+
+FORCE_INLINE_TEMPLATE
+size_t ZSTD_compressBlock_ldm_generic(ZSTD_CCtx* cctx,
+ const void* src, size_t srcSize)
+{
+ ldmState_t* const ldmState = &(cctx->ldmState);
+ const ldmParams_t ldmParams = cctx->appliedParams.ldmParams;
+ const U64 hashPower = ldmState->hashPower;
+ const U32 hBits = ldmParams.hashLog - ldmParams.bucketSizeLog;
+ const U32 ldmBucketSize = ((U32)1 << ldmParams.bucketSizeLog);
+ const U32 ldmTagMask = ((U32)1 << ldmParams.hashEveryLog) - 1;
+ seqStore_t* const seqStorePtr = &(cctx->seqStore);
+ const BYTE* const base = cctx->base;
+ const BYTE* const istart = (const BYTE*)src;
+ const BYTE* ip = istart;
+ const BYTE* anchor = istart;
+ const U32 lowestIndex = cctx->dictLimit;
+ const BYTE* const lowest = base + lowestIndex;
+ const BYTE* const iend = istart + srcSize;
+ const BYTE* const ilimit = iend - MAX(ldmParams.minMatchLength, HASH_READ_SIZE);
+
+ const ZSTD_blockCompressor blockCompressor =
+ ZSTD_selectBlockCompressor(cctx->appliedParams.cParams.strategy, 0);
+ U32* const repToConfirm = seqStorePtr->repToConfirm;
+ U32 savedRep[ZSTD_REP_NUM];
+ U64 rollingHash = 0;
+ const BYTE* lastHashed = NULL;
+ size_t i, lastLiterals;
+
+ /* Save seqStorePtr->rep and copy repToConfirm */
+ for (i = 0; i < ZSTD_REP_NUM; i++)
+ savedRep[i] = repToConfirm[i] = seqStorePtr->rep[i];
+
+ /* Main Search Loop */
+ while (ip < ilimit) { /* < instead of <=, because repcode check at (ip+1) */
+ size_t mLength;
+ U32 const current = (U32)(ip - base);
+ size_t forwardMatchLength = 0, backwardMatchLength = 0;
+ ldmEntry_t* bestEntry = NULL;
+ if (ip != istart) {
+ rollingHash = ZSTD_ldm_updateHash(rollingHash, lastHashed[0],
+ lastHashed[ldmParams.minMatchLength],
+ hashPower);
+ } else {
+ rollingHash = ZSTD_ldm_getRollingHash(ip, ldmParams.minMatchLength);
+ }
+ lastHashed = ip;
+
+ /* Do not insert and do not look for a match */
+ if (ZSTD_ldm_getTag(rollingHash, hBits, ldmParams.hashEveryLog) !=
+ ldmTagMask) {
+ ip++;
+ continue;
+ }
+
+ /* Get the best entry and compute the match lengths */
+ {
+ ldmEntry_t* const bucket =
+ ZSTD_ldm_getBucket(ldmState,
+ ZSTD_ldm_getSmallHash(rollingHash, hBits),
+ ldmParams);
+ ldmEntry_t* cur;
+ size_t bestMatchLength = 0;
+ U32 const checksum = ZSTD_ldm_getChecksum(rollingHash, hBits);
+
+ for (cur = bucket; cur < bucket + ldmBucketSize; ++cur) {
+ const BYTE* const pMatch = cur->offset + base;
+ size_t curForwardMatchLength, curBackwardMatchLength,
+ curTotalMatchLength;
+ if (cur->checksum != checksum || cur->offset <= lowestIndex) {
+ continue;
+ }
+
+ curForwardMatchLength = ZSTD_count(ip, pMatch, iend);
+ if (curForwardMatchLength < ldmParams.minMatchLength) {
+ continue;
+ }
+ curBackwardMatchLength = ZSTD_ldm_countBackwardsMatch(
+ ip, anchor, pMatch, lowest);
+ curTotalMatchLength = curForwardMatchLength +
+ curBackwardMatchLength;
+
+ if (curTotalMatchLength > bestMatchLength) {
+ bestMatchLength = curTotalMatchLength;
+ forwardMatchLength = curForwardMatchLength;
+ backwardMatchLength = curBackwardMatchLength;
+ bestEntry = cur;
+ }
+ }
+ }
+
+ /* No match found -- continue searching */
+ if (bestEntry == NULL) {
+ ZSTD_ldm_makeEntryAndInsertByTag(ldmState, rollingHash,
+ hBits, current,
+ ldmParams);
+ ip++;
+ continue;
+ }
+
+ /* Match found */
+ mLength = forwardMatchLength + backwardMatchLength;
+ ip -= backwardMatchLength;
+
+ /* Call the block compressor on the remaining literals */
+ {
+ U32 const matchIndex = bestEntry->offset;
+ const BYTE* const match = base + matchIndex - backwardMatchLength;
+ U32 const offset = (U32)(ip - match);
+
+ /* Overwrite rep codes */
+ for (i = 0; i < ZSTD_REP_NUM; i++)
+ seqStorePtr->rep[i] = repToConfirm[i];
+
+ /* Fill tables for block compressor */
+ ZSTD_ldm_limitTableUpdate(cctx, anchor);
+ ZSTD_ldm_fillFastTables(cctx, anchor);
+
+ /* Call block compressor and get remaining literals */
+ lastLiterals = blockCompressor(cctx, anchor, ip - anchor);
+ cctx->nextToUpdate = (U32)(ip - base);
+
+ /* Update repToConfirm with the new offset */
+ for (i = ZSTD_REP_NUM - 1; i > 0; i--)
+ repToConfirm[i] = repToConfirm[i-1];
+ repToConfirm[0] = offset;
+
+ /* Store the sequence with the leftover literals */
+ ZSTD_storeSeq(seqStorePtr, lastLiterals, ip - lastLiterals,
+ offset + ZSTD_REP_MOVE, mLength - MINMATCH);
+ }
+
+ /* Insert the current entry into the hash table */
+ ZSTD_ldm_makeEntryAndInsertByTag(ldmState, rollingHash, hBits,
+ (U32)(lastHashed - base),
+ ldmParams);
+
+ assert(ip + backwardMatchLength == lastHashed);
+
+ /* Fill the hash table from lastHashed+1 to ip+mLength*/
+ /* Heuristic: don't need to fill the entire table at end of block */
+ if (ip + mLength < ilimit) {
+ rollingHash = ZSTD_ldm_fillLdmHashTable(
+ ldmState, rollingHash, lastHashed,
+ ip + mLength, base, hBits, ldmParams);
+ lastHashed = ip + mLength - 1;
+ }
+ ip += mLength;
+ anchor = ip;
+ /* Check immediate repcode */
+ while ( (ip < ilimit)
+ && ( (repToConfirm[1] > 0) && (repToConfirm[1] <= (U32)(ip-lowest))
+ && (MEM_read32(ip) == MEM_read32(ip - repToConfirm[1])) )) {
+
+ size_t const rLength = ZSTD_count(ip+4, ip+4-repToConfirm[1],
+ iend) + 4;
+ /* Swap repToConfirm[1] <=> repToConfirm[0] */
+ {
+ U32 const tmpOff = repToConfirm[1];
+ repToConfirm[1] = repToConfirm[0];
+ repToConfirm[0] = tmpOff;
+ }
+
+ ZSTD_storeSeq(seqStorePtr, 0, anchor, 0, rLength-MINMATCH);
+
+ /* Fill the hash table from lastHashed+1 to ip+rLength*/
+ if (ip + rLength < ilimit) {
+ rollingHash = ZSTD_ldm_fillLdmHashTable(
+ ldmState, rollingHash, lastHashed,
+ ip + rLength, base, hBits, ldmParams);
+ lastHashed = ip + rLength - 1;
+ }
+ ip += rLength;
+ anchor = ip;
+ }
+ }
+
+ /* Overwrite rep */
+ for (i = 0; i < ZSTD_REP_NUM; i++)
+ seqStorePtr->rep[i] = repToConfirm[i];
+
+ ZSTD_ldm_limitTableUpdate(cctx, anchor);
+ ZSTD_ldm_fillFastTables(cctx, anchor);
+
+ lastLiterals = blockCompressor(cctx, anchor, iend - anchor);
+ cctx->nextToUpdate = (U32)(iend - base);
+
+ /* Restore seqStorePtr->rep */
+ for (i = 0; i < ZSTD_REP_NUM; i++)
+ seqStorePtr->rep[i] = savedRep[i];
+
+ /* Return the last literals size */
+ return lastLiterals;
+}
+
+size_t ZSTD_compressBlock_ldm(ZSTD_CCtx* ctx,
+ const void* src, size_t srcSize)
+{
+ return ZSTD_compressBlock_ldm_generic(ctx, src, srcSize);
+}
+
+static size_t ZSTD_compressBlock_ldm_extDict_generic(
+ ZSTD_CCtx* ctx,
+ const void* src, size_t srcSize)
+{
+ ldmState_t* const ldmState = &(ctx->ldmState);
+ const ldmParams_t ldmParams = ctx->appliedParams.ldmParams;
+ const U64 hashPower = ldmState->hashPower;
+ const U32 hBits = ldmParams.hashLog - ldmParams.bucketSizeLog;
+ const U32 ldmBucketSize = ((U32)1 << ldmParams.bucketSizeLog);
+ const U32 ldmTagMask = ((U32)1 << ldmParams.hashEveryLog) - 1;
+ seqStore_t* const seqStorePtr = &(ctx->seqStore);
+ const BYTE* const base = ctx->base;
+ const BYTE* const dictBase = ctx->dictBase;
+ const BYTE* const istart = (const BYTE*)src;
+ const BYTE* ip = istart;
+ const BYTE* anchor = istart;
+ const U32 lowestIndex = ctx->lowLimit;
+ const BYTE* const dictStart = dictBase + lowestIndex;
+ const U32 dictLimit = ctx->dictLimit;
+ const BYTE* const lowPrefixPtr = base + dictLimit;
+ const BYTE* const dictEnd = dictBase + dictLimit;
+ const BYTE* const iend = istart + srcSize;
+ const BYTE* const ilimit = iend - MAX(ldmParams.minMatchLength, HASH_READ_SIZE);
+
+ const ZSTD_blockCompressor blockCompressor =
+ ZSTD_selectBlockCompressor(ctx->appliedParams.cParams.strategy, 1);
+ U32* const repToConfirm = seqStorePtr->repToConfirm;
+ U32 savedRep[ZSTD_REP_NUM];
+ U64 rollingHash = 0;
+ const BYTE* lastHashed = NULL;
+ size_t i, lastLiterals;
+
+ /* Save seqStorePtr->rep and copy repToConfirm */
+ for (i = 0; i < ZSTD_REP_NUM; i++) {
+ savedRep[i] = repToConfirm[i] = seqStorePtr->rep[i];
+ }
+
+ /* Search Loop */
+ while (ip < ilimit) { /* < instead of <=, because (ip+1) */
+ size_t mLength;
+ const U32 current = (U32)(ip-base);
+ size_t forwardMatchLength = 0, backwardMatchLength = 0;
+ ldmEntry_t* bestEntry = NULL;
+ if (ip != istart) {
+ rollingHash = ZSTD_ldm_updateHash(rollingHash, lastHashed[0],
+ lastHashed[ldmParams.minMatchLength],
+ hashPower);
+ } else {
+ rollingHash = ZSTD_ldm_getRollingHash(ip, ldmParams.minMatchLength);
+ }
+ lastHashed = ip;
+
+ if (ZSTD_ldm_getTag(rollingHash, hBits, ldmParams.hashEveryLog) !=
+ ldmTagMask) {
+ /* Don't insert and don't look for a match */
+ ip++;
+ continue;
+ }
+
+ /* Get the best entry and compute the match lengths */
+ {
+ ldmEntry_t* const bucket =
+ ZSTD_ldm_getBucket(ldmState,
+ ZSTD_ldm_getSmallHash(rollingHash, hBits),
+ ldmParams);
+ ldmEntry_t* cur;
+ size_t bestMatchLength = 0;
+ U32 const checksum = ZSTD_ldm_getChecksum(rollingHash, hBits);
+
+ for (cur = bucket; cur < bucket + ldmBucketSize; ++cur) {
+ const BYTE* const curMatchBase =
+ cur->offset < dictLimit ? dictBase : base;
+ const BYTE* const pMatch = curMatchBase + cur->offset;
+ const BYTE* const matchEnd =
+ cur->offset < dictLimit ? dictEnd : iend;
+ const BYTE* const lowMatchPtr =
+ cur->offset < dictLimit ? dictStart : lowPrefixPtr;
+ size_t curForwardMatchLength, curBackwardMatchLength,
+ curTotalMatchLength;
+
+ if (cur->checksum != checksum || cur->offset <= lowestIndex) {
+ continue;
+ }
+
+ curForwardMatchLength = ZSTD_count_2segments(
+ ip, pMatch, iend,
+ matchEnd, lowPrefixPtr);
+ if (curForwardMatchLength < ldmParams.minMatchLength) {
+ continue;
+ }
+ curBackwardMatchLength = ZSTD_ldm_countBackwardsMatch(
+ ip, anchor, pMatch, lowMatchPtr);
+ curTotalMatchLength = curForwardMatchLength +
+ curBackwardMatchLength;
+
+ if (curTotalMatchLength > bestMatchLength) {
+ bestMatchLength = curTotalMatchLength;
+ forwardMatchLength = curForwardMatchLength;
+ backwardMatchLength = curBackwardMatchLength;
+ bestEntry = cur;
+ }
+ }
+ }
+
+ /* No match found -- continue searching */
+ if (bestEntry == NULL) {
+ ZSTD_ldm_makeEntryAndInsertByTag(ldmState, rollingHash, hBits,
+ (U32)(lastHashed - base),
+ ldmParams);
+ ip++;
+ continue;
+ }
+
+ /* Match found */
+ mLength = forwardMatchLength + backwardMatchLength;
+ ip -= backwardMatchLength;
+
+ /* Call the block compressor on the remaining literals */
+ {
+ /* ip = current - backwardMatchLength
+ * The match is at (bestEntry->offset - backwardMatchLength) */
+ U32 const matchIndex = bestEntry->offset;
+ U32 const offset = current - matchIndex;
+
+ /* Overwrite rep codes */
+ for (i = 0; i < ZSTD_REP_NUM; i++)
+ seqStorePtr->rep[i] = repToConfirm[i];
+
+ /* Fill the hash table for the block compressor */
+ ZSTD_ldm_limitTableUpdate(ctx, anchor);
+ ZSTD_ldm_fillFastTables(ctx, anchor);
+
+ /* Call block compressor and get remaining literals */
+ lastLiterals = blockCompressor(ctx, anchor, ip - anchor);
+ ctx->nextToUpdate = (U32)(ip - base);
+
+ /* Update repToConfirm with the new offset */
+ for (i = ZSTD_REP_NUM - 1; i > 0; i--)
+ repToConfirm[i] = repToConfirm[i-1];
+ repToConfirm[0] = offset;
+
+ /* Store the sequence with the leftover literals */
+ ZSTD_storeSeq(seqStorePtr, lastLiterals, ip - lastLiterals,
+ offset + ZSTD_REP_MOVE, mLength - MINMATCH);
+ }
+
+ /* Insert the current entry into the hash table */
+ ZSTD_ldm_makeEntryAndInsertByTag(ldmState, rollingHash, hBits,
+ (U32)(lastHashed - base),
+ ldmParams);
+
+ /* Fill the hash table from lastHashed+1 to ip+mLength */
+ assert(ip + backwardMatchLength == lastHashed);
+ if (ip + mLength < ilimit) {
+ rollingHash = ZSTD_ldm_fillLdmHashTable(
+ ldmState, rollingHash, lastHashed,
+ ip + mLength, base, hBits,
+ ldmParams);
+ lastHashed = ip + mLength - 1;
+ }
+ ip += mLength;
+ anchor = ip;
+
+ /* check immediate repcode */
+ while (ip < ilimit) {
+ U32 const current2 = (U32)(ip-base);
+ U32 const repIndex2 = current2 - repToConfirm[1];
+ const BYTE* repMatch2 = repIndex2 < dictLimit ?
+ dictBase + repIndex2 : base + repIndex2;
+ if ( (((U32)((dictLimit-1) - repIndex2) >= 3) &
+ (repIndex2 > lowestIndex)) /* intentional overflow */
+ && (MEM_read32(repMatch2) == MEM_read32(ip)) ) {
+ const BYTE* const repEnd2 = repIndex2 < dictLimit ?
+ dictEnd : iend;
+ size_t const repLength2 =
+ ZSTD_count_2segments(ip+4, repMatch2+4, iend,
+ repEnd2, lowPrefixPtr) + 4;
+
+ U32 tmpOffset = repToConfirm[1];
+ repToConfirm[1] = repToConfirm[0];
+ repToConfirm[0] = tmpOffset;
+
+ ZSTD_storeSeq(seqStorePtr, 0, anchor, 0, repLength2-MINMATCH);
+
+ /* Fill the hash table from lastHashed+1 to ip+repLength2*/
+ if (ip + repLength2 < ilimit) {
+ rollingHash = ZSTD_ldm_fillLdmHashTable(
+ ldmState, rollingHash, lastHashed,
+ ip + repLength2, base, hBits,
+ ldmParams);
+ lastHashed = ip + repLength2 - 1;
+ }
+ ip += repLength2;
+ anchor = ip;
+ continue;
+ }
+ break;
+ }
+ }
+
+ /* Overwrite rep */
+ for (i = 0; i < ZSTD_REP_NUM; i++)
+ seqStorePtr->rep[i] = repToConfirm[i];
+
+ ZSTD_ldm_limitTableUpdate(ctx, anchor);
+ ZSTD_ldm_fillFastTables(ctx, anchor);
+
+ /* Call the block compressor one last time on the last literals */
+ lastLiterals = blockCompressor(ctx, anchor, iend - anchor);
+ ctx->nextToUpdate = (U32)(iend - base);
+
+ /* Restore seqStorePtr->rep */
+ for (i = 0; i < ZSTD_REP_NUM; i++)
+ seqStorePtr->rep[i] = savedRep[i];
+
+ /* Return the last literals size */
+ return lastLiterals;
+}
+
+size_t ZSTD_compressBlock_ldm_extDict(ZSTD_CCtx* ctx,
+ const void* src, size_t srcSize)
+{
+ return ZSTD_compressBlock_ldm_extDict_generic(ctx, src, srcSize);
+}
diff --git a/thirdparty/zstd/compress/zstd_ldm.h b/thirdparty/zstd/compress/zstd_ldm.h
new file mode 100644
index 0000000000..d6d3d42c33
--- /dev/null
+++ b/thirdparty/zstd/compress/zstd_ldm.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
+ */
+
+#ifndef ZSTD_LDM_H
+#define ZSTD_LDM_H
+
+#include "zstd_compress.h"
+
+#if defined (__cplusplus)
+extern "C" {
+#endif
+
+/*-*************************************
+* Long distance matching
+***************************************/
+
+#define ZSTD_LDM_DEFAULT_WINDOW_LOG ZSTD_WINDOWLOG_DEFAULTMAX
+#define ZSTD_LDM_HASHEVERYLOG_NOTSET 9999
+
+/** ZSTD_compressBlock_ldm_generic() :
+ *
+ * This is a block compressor intended for long distance matching.
+ *
+ * The function searches for matches of length at least
+ * ldmParams.minMatchLength using a hash table in cctx->ldmState.
+ * Matches can be at a distance of up to cParams.windowLog.
+ *
+ * Upon finding a match, the unmatched literals are compressed using a
+ * ZSTD_blockCompressor (depending on the strategy in the compression
+ * parameters), which stores the matched sequences. The "long distance"
+ * match is then stored with the remaining literals from the
+ * ZSTD_blockCompressor. */
+size_t ZSTD_compressBlock_ldm(ZSTD_CCtx* cctx, const void* src, size_t srcSize);
+size_t ZSTD_compressBlock_ldm_extDict(ZSTD_CCtx* ctx,
+ const void* src, size_t srcSize);
+
+/** ZSTD_ldm_initializeParameters() :
+ * Initialize the long distance matching parameters to their default values. */
+size_t ZSTD_ldm_initializeParameters(ldmParams_t* params, U32 enableLdm);
+
+/** ZSTD_ldm_getTableSize() :
+ * Estimate the space needed for long distance matching tables. */
+size_t ZSTD_ldm_getTableSize(U32 hashLog, U32 bucketSizeLog);
+
+/** ZSTD_ldm_getTableSize() :
+ * Return prime8bytes^(minMatchLength-1) */
+U64 ZSTD_ldm_getHashPower(U32 minMatchLength);
+
+/** ZSTD_ldm_adjustParameters() :
+ * If the params->hashEveryLog is not set, set it to its default value based on
+ * windowLog and params->hashLog.
+ *
+ * Ensures that params->bucketSizeLog is <= params->hashLog (setting it to
+ * params->hashLog if it is not). */
+void ZSTD_ldm_adjustParameters(ldmParams_t* params, U32 windowLog);
+
+#if defined (__cplusplus)
+}
+#endif
+
+#endif /* ZSTD_FAST_H */
diff --git a/thirdparty/zstd/compress/zstd_opt.c b/thirdparty/zstd/compress/zstd_opt.c
new file mode 100644
index 0000000000..c47ce23ad5
--- /dev/null
+++ b/thirdparty/zstd/compress/zstd_opt.c
@@ -0,0 +1,957 @@
+/*
+ * Copyright (c) 2016-present, Przemyslaw Skibinski, Yann Collet, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under both the BSD-style license (found in the
+ * LICENSE file in the root directory of this source tree) and the GPLv2 (found
+ * in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
+ */
+
+#include "zstd_opt.h"
+#include "zstd_lazy.h"
+
+
+#define ZSTD_LITFREQ_ADD 2
+#define ZSTD_FREQ_DIV 4
+#define ZSTD_MAX_PRICE (1<<30)
+
+/*-*************************************
+* Price functions for optimal parser
+***************************************/
+static void ZSTD_setLog2Prices(optState_t* optPtr)
+{
+ optPtr->log2matchLengthSum = ZSTD_highbit32(optPtr->matchLengthSum+1);
+ optPtr->log2litLengthSum = ZSTD_highbit32(optPtr->litLengthSum+1);
+ optPtr->log2litSum = ZSTD_highbit32(optPtr->litSum+1);
+ optPtr->log2offCodeSum = ZSTD_highbit32(optPtr->offCodeSum+1);
+ optPtr->factor = 1 + ((optPtr->litSum>>5) / optPtr->litLengthSum) + ((optPtr->litSum<<1) / (optPtr->litSum + optPtr->matchSum));
+}
+
+
+static void ZSTD_rescaleFreqs(optState_t* optPtr, const BYTE* src, size_t srcSize)
+{
+ unsigned u;
+
+ optPtr->cachedLiterals = NULL;
+ optPtr->cachedPrice = optPtr->cachedLitLength = 0;
+ optPtr->staticPrices = 0;
+
+ if (optPtr->litLengthSum == 0) {
+ if (srcSize <= 1024) optPtr->staticPrices = 1;
+
+ assert(optPtr->litFreq!=NULL);
+ for (u=0; u<=MaxLit; u++)
+ optPtr->litFreq[u] = 0;
+ for (u=0; u<srcSize; u++)
+ optPtr->litFreq[src[u]]++;
+
+ optPtr->litSum = 0;
+ optPtr->litLengthSum = MaxLL+1;
+ optPtr->matchLengthSum = MaxML+1;
+ optPtr->offCodeSum = (MaxOff+1);
+ optPtr->matchSum = (ZSTD_LITFREQ_ADD<<Litbits);
+
+ for (u=0; u<=MaxLit; u++) {
+ optPtr->litFreq[u] = 1 + (optPtr->litFreq[u]>>ZSTD_FREQ_DIV);
+ optPtr->litSum += optPtr->litFreq[u];
+ }
+ for (u=0; u<=MaxLL; u++)
+ optPtr->litLengthFreq[u] = 1;
+ for (u=0; u<=MaxML; u++)
+ optPtr->matchLengthFreq[u] = 1;
+ for (u=0; u<=MaxOff; u++)
+ optPtr->offCodeFreq[u] = 1;
+ } else {
+ optPtr->matchLengthSum = 0;
+ optPtr->litLengthSum = 0;
+ optPtr->offCodeSum = 0;
+ optPtr->matchSum = 0;
+ optPtr->litSum = 0;
+
+ for (u=0; u<=MaxLit; u++) {
+ optPtr->litFreq[u] = 1 + (optPtr->litFreq[u]>>(ZSTD_FREQ_DIV+1));
+ optPtr->litSum += optPtr->litFreq[u];
+ }
+ for (u=0; u<=MaxLL; u++) {
+ optPtr->litLengthFreq[u] = 1 + (optPtr->litLengthFreq[u]>>(ZSTD_FREQ_DIV+1));
+ optPtr->litLengthSum += optPtr->litLengthFreq[u];
+ }
+ for (u=0; u<=MaxML; u++) {
+ optPtr->matchLengthFreq[u] = 1 + (optPtr->matchLengthFreq[u]>>ZSTD_FREQ_DIV);
+ optPtr->matchLengthSum += optPtr->matchLengthFreq[u];
+ optPtr->matchSum += optPtr->matchLengthFreq[u] * (u + 3);
+ }
+ optPtr->matchSum *= ZSTD_LITFREQ_ADD;
+ for (u=0; u<=MaxOff; u++) {
+ optPtr->offCodeFreq[u] = 1 + (optPtr->offCodeFreq[u]>>ZSTD_FREQ_DIV);
+ optPtr->offCodeSum += optPtr->offCodeFreq[u];
+ }
+ }
+
+ ZSTD_setLog2Prices(optPtr);
+}
+
+
+static U32 ZSTD_getLiteralPrice(optState_t* optPtr, U32 litLength, const BYTE* literals)
+{
+ U32 price, u;
+
+ if (optPtr->staticPrices)
+ return ZSTD_highbit32((U32)litLength+1) + (litLength*6);
+
+ if (litLength == 0)
+ return optPtr->log2litLengthSum - ZSTD_highbit32(optPtr->litLengthFreq[0]+1);
+
+ /* literals */
+ if (optPtr->cachedLiterals == literals) {
+ U32 const additional = litLength - optPtr->cachedLitLength;
+ const BYTE* literals2 = optPtr->cachedLiterals + optPtr->cachedLitLength;
+ price = optPtr->cachedPrice + additional * optPtr->log2litSum;
+ for (u=0; u < additional; u++)
+ price -= ZSTD_highbit32(optPtr->litFreq[literals2[u]]+1);
+ optPtr->cachedPrice = price;
+ optPtr->cachedLitLength = litLength;
+ } else {
+ price = litLength * optPtr->log2litSum;
+ for (u=0; u < litLength; u++)
+ price -= ZSTD_highbit32(optPtr->litFreq[literals[u]]+1);
+
+ if (litLength >= 12) {
+ optPtr->cachedLiterals = literals;
+ optPtr->cachedPrice = price;
+ optPtr->cachedLitLength = litLength;
+ }
+ }
+
+ /* literal Length */
+ { const BYTE LL_deltaCode = 19;
+ const BYTE llCode = (litLength>63) ? (BYTE)ZSTD_highbit32(litLength) + LL_deltaCode : LL_Code[litLength];
+ price += LL_bits[llCode] + optPtr->log2litLengthSum - ZSTD_highbit32(optPtr->litLengthFreq[llCode]+1);
+ }
+
+ return price;
+}
+
+
+FORCE_INLINE_TEMPLATE U32 ZSTD_getPrice(optState_t* optPtr, U32 litLength, const BYTE* literals, U32 offset, U32 matchLength, const int ultra)
+{
+ /* offset */
+ U32 price;
+ BYTE const offCode = (BYTE)ZSTD_highbit32(offset+1);
+
+ if (optPtr->staticPrices)
+ return ZSTD_getLiteralPrice(optPtr, litLength, literals) + ZSTD_highbit32((U32)matchLength+1) + 16 + offCode;
+
+ price = offCode + optPtr->log2offCodeSum - ZSTD_highbit32(optPtr->offCodeFreq[offCode]+1);
+ if (!ultra && offCode >= 20) price += (offCode-19)*2;
+
+ /* match Length */
+ { const BYTE ML_deltaCode = 36;
+ const BYTE mlCode = (matchLength>127) ? (BYTE)ZSTD_highbit32(matchLength) + ML_deltaCode : ML_Code[matchLength];
+ price += ML_bits[mlCode] + optPtr->log2matchLengthSum - ZSTD_highbit32(optPtr->matchLengthFreq[mlCode]+1);
+ }
+
+ return price + ZSTD_getLiteralPrice(optPtr, litLength, literals) + optPtr->factor;
+}
+
+
+static void ZSTD_updatePrice(optState_t* optPtr, U32 litLength, const BYTE* literals, U32 offset, U32 matchLength)
+{
+ U32 u;
+
+ /* literals */
+ optPtr->litSum += litLength*ZSTD_LITFREQ_ADD;
+ for (u=0; u < litLength; u++)
+ optPtr->litFreq[literals[u]] += ZSTD_LITFREQ_ADD;
+
+ /* literal Length */
+ { const BYTE LL_deltaCode = 19;
+ const BYTE llCode = (litLength>63) ? (BYTE)ZSTD_highbit32(litLength) + LL_deltaCode : LL_Code[litLength];
+ optPtr->litLengthFreq[llCode]++;
+ optPtr->litLengthSum++;
+ }
+
+ /* match offset */
+ { BYTE const offCode = (BYTE)ZSTD_highbit32(offset+1);
+ optPtr->offCodeSum++;
+ optPtr->offCodeFreq[offCode]++;
+ }
+
+ /* match Length */
+ { const BYTE ML_deltaCode = 36;
+ const BYTE mlCode = (matchLength>127) ? (BYTE)ZSTD_highbit32(matchLength) + ML_deltaCode : ML_Code[matchLength];
+ optPtr->matchLengthFreq[mlCode]++;
+ optPtr->matchLengthSum++;
+ }
+
+ ZSTD_setLog2Prices(optPtr);
+}
+
+
+#define SET_PRICE(pos, mlen_, offset_, litlen_, price_) \
+ { \
+ while (last_pos < pos) { opt[last_pos+1].price = ZSTD_MAX_PRICE; last_pos++; } \
+ opt[pos].mlen = mlen_; \
+ opt[pos].off = offset_; \
+ opt[pos].litlen = litlen_; \
+ opt[pos].price = price_; \
+ }
+
+
+/* function safe only for comparisons */
+static U32 ZSTD_readMINMATCH(const void* memPtr, U32 length)
+{
+ switch (length)
+ {
+ default :
+ case 4 : return MEM_read32(memPtr);
+ case 3 : if (MEM_isLittleEndian())
+ return MEM_read32(memPtr)<<8;
+ else
+ return MEM_read32(memPtr)>>8;
+ }
+}
+
+
+/* Update hashTable3 up to ip (excluded)
+ Assumption : always within prefix (i.e. not within extDict) */
+static
+U32 ZSTD_insertAndFindFirstIndexHash3 (ZSTD_CCtx* zc, const BYTE* ip)
+{
+ U32* const hashTable3 = zc->hashTable3;
+ U32 const hashLog3 = zc->hashLog3;
+ const BYTE* const base = zc->base;
+ U32 idx = zc->nextToUpdate3;
+ const U32 target = zc->nextToUpdate3 = (U32)(ip - base);
+ const size_t hash3 = ZSTD_hash3Ptr(ip, hashLog3);
+
+ while(idx < target) {
+ hashTable3[ZSTD_hash3Ptr(base+idx, hashLog3)] = idx;
+ idx++;
+ }
+
+ return hashTable3[hash3];
+}
+
+
+/*-*************************************
+* Binary Tree search
+***************************************/
+static U32 ZSTD_insertBtAndGetAllMatches (
+ ZSTD_CCtx* zc,
+ const BYTE* const ip, const BYTE* const iLimit,
+ U32 nbCompares, const U32 mls,
+ U32 extDict, ZSTD_match_t* matches, const U32 minMatchLen)
+{
+ const BYTE* const base = zc->base;
+ const U32 current = (U32)(ip-base);
+ const U32 hashLog = zc->appliedParams.cParams.hashLog;
+ const size_t h = ZSTD_hashPtr(ip, hashLog, mls);
+ U32* const hashTable = zc->hashTable;
+ U32 matchIndex = hashTable[h];
+ U32* const bt = zc->chainTable;
+ const U32 btLog = zc->appliedParams.cParams.chainLog - 1;
+ const U32 btMask= (1U << btLog) - 1;
+ size_t commonLengthSmaller=0, commonLengthLarger=0;
+ const BYTE* const dictBase = zc->dictBase;
+ const U32 dictLimit = zc->dictLimit;
+ const BYTE* const dictEnd = dictBase + dictLimit;
+ const BYTE* const prefixStart = base + dictLimit;
+ const U32 btLow = btMask >= current ? 0 : current - btMask;
+ const U32 windowLow = zc->lowLimit;
+ U32* smallerPtr = bt + 2*(current&btMask);
+ U32* largerPtr = bt + 2*(current&btMask) + 1;
+ U32 matchEndIdx = current+8;
+ U32 dummy32; /* to be nullified at the end */
+ U32 mnum = 0;
+
+ const U32 minMatch = (mls == 3) ? 3 : 4;
+ size_t bestLength = minMatchLen-1;
+
+ if (minMatch == 3) { /* HC3 match finder */
+ U32 const matchIndex3 = ZSTD_insertAndFindFirstIndexHash3 (zc, ip);
+ if (matchIndex3>windowLow && (current - matchIndex3 < (1<<18))) {
+ const BYTE* match;
+ size_t currentMl=0;
+ if ((!extDict) || matchIndex3 >= dictLimit) {
+ match = base + matchIndex3;
+ if (match[bestLength] == ip[bestLength]) currentMl = ZSTD_count(ip, match, iLimit);
+ } else {
+ match = dictBase + matchIndex3;
+ if (ZSTD_readMINMATCH(match, MINMATCH) == ZSTD_readMINMATCH(ip, MINMATCH)) /* assumption : matchIndex3 <= dictLimit-4 (by table construction) */
+ currentMl = ZSTD_count_2segments(ip+MINMATCH, match+MINMATCH, iLimit, dictEnd, prefixStart) + MINMATCH;
+ }
+
+ /* save best solution */
+ if (currentMl > bestLength) {
+ bestLength = currentMl;
+ matches[mnum].off = ZSTD_REP_MOVE_OPT + current - matchIndex3;
+ matches[mnum].len = (U32)currentMl;
+ mnum++;
+ if (currentMl > ZSTD_OPT_NUM) goto update;
+ if (ip+currentMl == iLimit) goto update; /* best possible, and avoid read overflow*/
+ }
+ }
+ }
+
+ hashTable[h] = current; /* Update Hash Table */
+
+ while (nbCompares-- && (matchIndex > windowLow)) {
+ U32* nextPtr = bt + 2*(matchIndex & btMask);
+ size_t matchLength = MIN(commonLengthSmaller, commonLengthLarger); /* guaranteed minimum nb of common bytes */
+ const BYTE* match;
+
+ if ((!extDict) || (matchIndex+matchLength >= dictLimit)) {
+ match = base + matchIndex;
+ if (match[matchLength] == ip[matchLength]) {
+ matchLength += ZSTD_count(ip+matchLength+1, match+matchLength+1, iLimit) +1;
+ }
+ } else {
+ match = dictBase + matchIndex;
+ matchLength += ZSTD_count_2segments(ip+matchLength, match+matchLength, iLimit, dictEnd, prefixStart);
+ if (matchIndex+matchLength >= dictLimit)
+ match = base + matchIndex; /* to prepare for next usage of match[matchLength] */
+ }
+
+ if (matchLength > bestLength) {
+ if (matchLength > matchEndIdx - matchIndex) matchEndIdx = matchIndex + (U32)matchLength;
+ bestLength = matchLength;
+ matches[mnum].off = ZSTD_REP_MOVE_OPT + current - matchIndex;
+ matches[mnum].len = (U32)matchLength;
+ mnum++;
+ if (matchLength > ZSTD_OPT_NUM) break;
+ if (ip+matchLength == iLimit) /* equal : no way to know if inf or sup */
+ break; /* drop, to guarantee consistency (miss a little bit of compression) */
+ }
+
+ if (match[matchLength] < ip[matchLength]) {
+ /* match is smaller than current */
+ *smallerPtr = matchIndex; /* update smaller idx */
+ commonLengthSmaller = matchLength; /* all smaller will now have at least this guaranteed common length */
+ if (matchIndex <= btLow) { smallerPtr=&dummy32; break; } /* beyond tree size, stop the search */
+ smallerPtr = nextPtr+1; /* new "smaller" => larger of match */
+ matchIndex = nextPtr[1]; /* new matchIndex larger than previous (closer to current) */
+ } else {
+ /* match is larger than current */
+ *largerPtr = matchIndex;
+ commonLengthLarger = matchLength;
+ if (matchIndex <= btLow) { largerPtr=&dummy32; break; } /* beyond tree size, stop the search */
+ largerPtr = nextPtr;
+ matchIndex = nextPtr[0];
+ } }
+
+ *smallerPtr = *largerPtr = 0;
+
+update:
+ zc->nextToUpdate = (matchEndIdx > current + 8) ? matchEndIdx - 8 : current+1;
+ return mnum;
+}
+
+
+/** Tree updater, providing best match */
+static U32 ZSTD_BtGetAllMatches (
+ ZSTD_CCtx* zc,
+ const BYTE* const ip, const BYTE* const iLimit,
+ const U32 maxNbAttempts, const U32 mls, ZSTD_match_t* matches, const U32 minMatchLen)
+{
+ if (ip < zc->base + zc->nextToUpdate) return 0; /* skipped area */
+ ZSTD_updateTree(zc, ip, iLimit, maxNbAttempts, mls);
+ return ZSTD_insertBtAndGetAllMatches(zc, ip, iLimit, maxNbAttempts, mls, 0, matches, minMatchLen);
+}
+
+
+static U32 ZSTD_BtGetAllMatches_selectMLS (
+ ZSTD_CCtx* zc, /* Index table will be updated */
+ const BYTE* ip, const BYTE* const iHighLimit,
+ const U32 maxNbAttempts, const U32 matchLengthSearch, ZSTD_match_t* matches, const U32 minMatchLen)
+{
+ switch(matchLengthSearch)
+ {
+ case 3 : return ZSTD_BtGetAllMatches(zc, ip, iHighLimit, maxNbAttempts, 3, matches, minMatchLen);
+ default :
+ case 4 : return ZSTD_BtGetAllMatches(zc, ip, iHighLimit, maxNbAttempts, 4, matches, minMatchLen);
+ case 5 : return ZSTD_BtGetAllMatches(zc, ip, iHighLimit, maxNbAttempts, 5, matches, minMatchLen);
+ case 7 :
+ case 6 : return ZSTD_BtGetAllMatches(zc, ip, iHighLimit, maxNbAttempts, 6, matches, minMatchLen);
+ }
+}
+
+/** Tree updater, providing best match */
+static U32 ZSTD_BtGetAllMatches_extDict (
+ ZSTD_CCtx* zc,
+ const BYTE* const ip, const BYTE* const iLimit,
+ const U32 maxNbAttempts, const U32 mls, ZSTD_match_t* matches, const U32 minMatchLen)
+{
+ if (ip < zc->base + zc->nextToUpdate) return 0; /* skipped area */
+ ZSTD_updateTree_extDict(zc, ip, iLimit, maxNbAttempts, mls);
+ return ZSTD_insertBtAndGetAllMatches(zc, ip, iLimit, maxNbAttempts, mls, 1, matches, minMatchLen);
+}
+
+
+static U32 ZSTD_BtGetAllMatches_selectMLS_extDict (
+ ZSTD_CCtx* zc, /* Index table will be updated */
+ const BYTE* ip, const BYTE* const iHighLimit,
+ const U32 maxNbAttempts, const U32 matchLengthSearch, ZSTD_match_t* matches, const U32 minMatchLen)
+{
+ switch(matchLengthSearch)
+ {
+ case 3 : return ZSTD_BtGetAllMatches_extDict(zc, ip, iHighLimit, maxNbAttempts, 3, matches, minMatchLen);
+ default :
+ case 4 : return ZSTD_BtGetAllMatches_extDict(zc, ip, iHighLimit, maxNbAttempts, 4, matches, minMatchLen);
+ case 5 : return ZSTD_BtGetAllMatches_extDict(zc, ip, iHighLimit, maxNbAttempts, 5, matches, minMatchLen);
+ case 7 :
+ case 6 : return ZSTD_BtGetAllMatches_extDict(zc, ip, iHighLimit, maxNbAttempts, 6, matches, minMatchLen);
+ }
+}
+
+
+/*-*******************************
+* Optimal parser
+*********************************/
+FORCE_INLINE_TEMPLATE
+size_t ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
+ const void* src, size_t srcSize, const int ultra)
+{
+ seqStore_t* seqStorePtr = &(ctx->seqStore);
+ optState_t* optStatePtr = &(ctx->optState);
+ const BYTE* const istart = (const BYTE*)src;
+ const BYTE* ip = istart;
+ const BYTE* anchor = istart;
+ const BYTE* const iend = istart + srcSize;
+ const BYTE* const ilimit = iend - 8;
+ const BYTE* const base = ctx->base;
+ const BYTE* const prefixStart = base + ctx->dictLimit;
+
+ const U32 maxSearches = 1U << ctx->appliedParams.cParams.searchLog;
+ const U32 sufficient_len = ctx->appliedParams.cParams.targetLength;
+ const U32 mls = ctx->appliedParams.cParams.searchLength;
+ const U32 minMatch = (ctx->appliedParams.cParams.searchLength == 3) ? 3 : 4;
+
+ ZSTD_optimal_t* opt = optStatePtr->priceTable;
+ ZSTD_match_t* matches = optStatePtr->matchTable;
+ const BYTE* inr;
+ U32 offset, rep[ZSTD_REP_NUM];
+
+ /* init */
+ ctx->nextToUpdate3 = ctx->nextToUpdate;
+ ZSTD_rescaleFreqs(optStatePtr, (const BYTE*)src, srcSize);
+ ip += (ip==prefixStart);
+ { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) rep[i]=seqStorePtr->rep[i]; }
+
+ /* Match Loop */
+ while (ip < ilimit) {
+ U32 cur, match_num, last_pos, litlen, price;
+ U32 u, mlen, best_mlen, best_off, litLength;
+ memset(opt, 0, sizeof(ZSTD_optimal_t));
+ last_pos = 0;
+ litlen = (U32)(ip - anchor);
+
+ /* check repCode */
+ { U32 i, last_i = ZSTD_REP_CHECK + (ip==anchor);
+ for (i=(ip == anchor); i<last_i; i++) {
+ const S32 repCur = (i==ZSTD_REP_MOVE_OPT) ? (rep[0] - 1) : rep[i];
+ if ( (repCur > 0) && (repCur < (S32)(ip-prefixStart))
+ && (ZSTD_readMINMATCH(ip, minMatch) == ZSTD_readMINMATCH(ip - repCur, minMatch))) {
+ mlen = (U32)ZSTD_count(ip+minMatch, ip+minMatch-repCur, iend) + minMatch;
+ if (mlen > sufficient_len || mlen >= ZSTD_OPT_NUM) {
+ best_mlen = mlen; best_off = i; cur = 0; last_pos = 1;
+ goto _storeSequence;
+ }
+ best_off = i - (ip == anchor);
+ do {
+ price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
+ if (mlen > last_pos || price < opt[mlen].price)
+ SET_PRICE(mlen, mlen, i, litlen, price); /* note : macro modifies last_pos */
+ mlen--;
+ } while (mlen >= minMatch);
+ } } }
+
+ match_num = ZSTD_BtGetAllMatches_selectMLS(ctx, ip, iend, maxSearches, mls, matches, minMatch);
+
+ if (!last_pos && !match_num) { ip++; continue; }
+
+ if (match_num && (matches[match_num-1].len > sufficient_len || matches[match_num-1].len >= ZSTD_OPT_NUM)) {
+ best_mlen = matches[match_num-1].len;
+ best_off = matches[match_num-1].off;
+ cur = 0;
+ last_pos = 1;
+ goto _storeSequence;
+ }
+
+ /* set prices using matches at position = 0 */
+ best_mlen = (last_pos) ? last_pos : minMatch;
+ for (u = 0; u < match_num; u++) {
+ mlen = (u>0) ? matches[u-1].len+1 : best_mlen;
+ best_mlen = matches[u].len;
+ while (mlen <= best_mlen) {
+ price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
+ if (mlen > last_pos || price < opt[mlen].price)
+ SET_PRICE(mlen, mlen, matches[u].off, litlen, price); /* note : macro modifies last_pos */
+ mlen++;
+ } }
+
+ if (last_pos < minMatch) { ip++; continue; }
+
+ /* initialize opt[0] */
+ { U32 i ; for (i=0; i<ZSTD_REP_NUM; i++) opt[0].rep[i] = rep[i]; }
+ opt[0].mlen = 1;
+ opt[0].litlen = litlen;
+
+ /* check further positions */
+ for (cur = 1; cur <= last_pos; cur++) {
+ inr = ip + cur;
+
+ if (opt[cur-1].mlen == 1) {
+ litlen = opt[cur-1].litlen + 1;
+ if (cur > litlen) {
+ price = opt[cur - litlen].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-litlen);
+ } else
+ price = ZSTD_getLiteralPrice(optStatePtr, litlen, anchor);
+ } else {
+ litlen = 1;
+ price = opt[cur - 1].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-1);
+ }
+
+ if (cur > last_pos || price <= opt[cur].price)
+ SET_PRICE(cur, 1, 0, litlen, price);
+
+ if (cur == last_pos) break;
+
+ if (inr > ilimit) /* last match must start at a minimum distance of 8 from oend */
+ continue;
+
+ mlen = opt[cur].mlen;
+ if (opt[cur].off > ZSTD_REP_MOVE_OPT) {
+ opt[cur].rep[2] = opt[cur-mlen].rep[1];
+ opt[cur].rep[1] = opt[cur-mlen].rep[0];
+ opt[cur].rep[0] = opt[cur].off - ZSTD_REP_MOVE_OPT;
+ } else {
+ opt[cur].rep[2] = (opt[cur].off > 1) ? opt[cur-mlen].rep[1] : opt[cur-mlen].rep[2];
+ opt[cur].rep[1] = (opt[cur].off > 0) ? opt[cur-mlen].rep[0] : opt[cur-mlen].rep[1];
+ /* If opt[cur].off == ZSTD_REP_MOVE_OPT, then mlen != 1.
+ * offset ZSTD_REP_MOVE_OPT is used for the special case
+ * litLength == 0, where offset 0 means something special.
+ * mlen == 1 means the previous byte was stored as a literal,
+ * so they are mutually exclusive.
+ */
+ assert(!(opt[cur].off == ZSTD_REP_MOVE_OPT && mlen == 1));
+ opt[cur].rep[0] = (opt[cur].off == ZSTD_REP_MOVE_OPT) ? (opt[cur-mlen].rep[0] - 1) : (opt[cur-mlen].rep[opt[cur].off]);
+ }
+
+ best_mlen = minMatch;
+ { U32 i, last_i = ZSTD_REP_CHECK + (mlen != 1);
+ for (i=(opt[cur].mlen != 1); i<last_i; i++) { /* check rep */
+ const S32 repCur = (i==ZSTD_REP_MOVE_OPT) ? (opt[cur].rep[0] - 1) : opt[cur].rep[i];
+ if ( (repCur > 0) && (repCur < (S32)(inr-prefixStart))
+ && (ZSTD_readMINMATCH(inr, minMatch) == ZSTD_readMINMATCH(inr - repCur, minMatch))) {
+ mlen = (U32)ZSTD_count(inr+minMatch, inr+minMatch - repCur, iend) + minMatch;
+
+ if (mlen > sufficient_len || cur + mlen >= ZSTD_OPT_NUM) {
+ best_mlen = mlen; best_off = i; last_pos = cur + 1;
+ goto _storeSequence;
+ }
+
+ best_off = i - (opt[cur].mlen != 1);
+ if (mlen > best_mlen) best_mlen = mlen;
+
+ do {
+ if (opt[cur].mlen == 1) {
+ litlen = opt[cur].litlen;
+ if (cur > litlen) {
+ price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, inr-litlen, best_off, mlen - MINMATCH, ultra);
+ } else
+ price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
+ } else {
+ litlen = 0;
+ price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, best_off, mlen - MINMATCH, ultra);
+ }
+
+ if (cur + mlen > last_pos || price <= opt[cur + mlen].price)
+ SET_PRICE(cur + mlen, mlen, i, litlen, price);
+ mlen--;
+ } while (mlen >= minMatch);
+ } } }
+
+ match_num = ZSTD_BtGetAllMatches_selectMLS(ctx, inr, iend, maxSearches, mls, matches, best_mlen);
+
+ if (match_num > 0 && (matches[match_num-1].len > sufficient_len || cur + matches[match_num-1].len >= ZSTD_OPT_NUM)) {
+ best_mlen = matches[match_num-1].len;
+ best_off = matches[match_num-1].off;
+ last_pos = cur + 1;
+ goto _storeSequence;
+ }
+
+ /* set prices using matches at position = cur */
+ for (u = 0; u < match_num; u++) {
+ mlen = (u>0) ? matches[u-1].len+1 : best_mlen;
+ best_mlen = matches[u].len;
+
+ while (mlen <= best_mlen) {
+ if (opt[cur].mlen == 1) {
+ litlen = opt[cur].litlen;
+ if (cur > litlen)
+ price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, ip+cur-litlen, matches[u].off-1, mlen - MINMATCH, ultra);
+ else
+ price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
+ } else {
+ litlen = 0;
+ price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, matches[u].off-1, mlen - MINMATCH, ultra);
+ }
+
+ if (cur + mlen > last_pos || (price < opt[cur + mlen].price))
+ SET_PRICE(cur + mlen, mlen, matches[u].off, litlen, price);
+
+ mlen++;
+ } } }
+
+ best_mlen = opt[last_pos].mlen;
+ best_off = opt[last_pos].off;
+ cur = last_pos - best_mlen;
+
+ /* store sequence */
+_storeSequence: /* cur, last_pos, best_mlen, best_off have to be set */
+ opt[0].mlen = 1;
+
+ while (1) {
+ mlen = opt[cur].mlen;
+ offset = opt[cur].off;
+ opt[cur].mlen = best_mlen;
+ opt[cur].off = best_off;
+ best_mlen = mlen;
+ best_off = offset;
+ if (mlen > cur) break;
+ cur -= mlen;
+ }
+
+ for (u = 0; u <= last_pos;) {
+ u += opt[u].mlen;
+ }
+
+ for (cur=0; cur < last_pos; ) {
+ mlen = opt[cur].mlen;
+ if (mlen == 1) { ip++; cur++; continue; }
+ offset = opt[cur].off;
+ cur += mlen;
+ litLength = (U32)(ip - anchor);
+
+ if (offset > ZSTD_REP_MOVE_OPT) {
+ rep[2] = rep[1];
+ rep[1] = rep[0];
+ rep[0] = offset - ZSTD_REP_MOVE_OPT;
+ offset--;
+ } else {
+ if (offset != 0) {
+ best_off = (offset==ZSTD_REP_MOVE_OPT) ? (rep[0] - 1) : (rep[offset]);
+ if (offset != 1) rep[2] = rep[1];
+ rep[1] = rep[0];
+ rep[0] = best_off;
+ }
+ if (litLength==0) offset--;
+ }
+
+ ZSTD_updatePrice(optStatePtr, litLength, anchor, offset, mlen-MINMATCH);
+ ZSTD_storeSeq(seqStorePtr, litLength, anchor, offset, mlen-MINMATCH);
+ anchor = ip = ip + mlen;
+ } } /* for (cur=0; cur < last_pos; ) */
+
+ /* Save reps for next block */
+ { int i; for (i=0; i<ZSTD_REP_NUM; i++) seqStorePtr->repToConfirm[i] = rep[i]; }
+
+ /* Return the last literals size */
+ return iend - anchor;
+}
+
+
+size_t ZSTD_compressBlock_btopt(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
+{
+ return ZSTD_compressBlock_opt_generic(ctx, src, srcSize, 0);
+}
+
+size_t ZSTD_compressBlock_btultra(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
+{
+ return ZSTD_compressBlock_opt_generic(ctx, src, srcSize, 1);
+}
+
+
+FORCE_INLINE_TEMPLATE
+size_t ZSTD_compressBlock_opt_extDict_generic(ZSTD_CCtx* ctx,
+ const void* src, size_t srcSize, const int ultra)
+{
+ seqStore_t* seqStorePtr = &(ctx->seqStore);
+ optState_t* optStatePtr = &(ctx->optState);
+ const BYTE* const istart = (const BYTE*)src;
+ const BYTE* ip = istart;
+ const BYTE* anchor = istart;
+ const BYTE* const iend = istart + srcSize;
+ const BYTE* const ilimit = iend - 8;
+ const BYTE* const base = ctx->base;
+ const U32 lowestIndex = ctx->lowLimit;
+ const U32 dictLimit = ctx->dictLimit;
+ const BYTE* const prefixStart = base + dictLimit;
+ const BYTE* const dictBase = ctx->dictBase;
+ const BYTE* const dictEnd = dictBase + dictLimit;
+
+ const U32 maxSearches = 1U << ctx->appliedParams.cParams.searchLog;
+ const U32 sufficient_len = ctx->appliedParams.cParams.targetLength;
+ const U32 mls = ctx->appliedParams.cParams.searchLength;
+ const U32 minMatch = (ctx->appliedParams.cParams.searchLength == 3) ? 3 : 4;
+
+ ZSTD_optimal_t* opt = optStatePtr->priceTable;
+ ZSTD_match_t* matches = optStatePtr->matchTable;
+ const BYTE* inr;
+
+ /* init */
+ U32 offset, rep[ZSTD_REP_NUM];
+ { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) rep[i]=seqStorePtr->rep[i]; }
+
+ ctx->nextToUpdate3 = ctx->nextToUpdate;
+ ZSTD_rescaleFreqs(optStatePtr, (const BYTE*)src, srcSize);
+ ip += (ip==prefixStart);
+
+ /* Match Loop */
+ while (ip < ilimit) {
+ U32 cur, match_num, last_pos, litlen, price;
+ U32 u, mlen, best_mlen, best_off, litLength;
+ U32 current = (U32)(ip-base);
+ memset(opt, 0, sizeof(ZSTD_optimal_t));
+ last_pos = 0;
+ opt[0].litlen = (U32)(ip - anchor);
+
+ /* check repCode */
+ { U32 i, last_i = ZSTD_REP_CHECK + (ip==anchor);
+ for (i = (ip==anchor); i<last_i; i++) {
+ const S32 repCur = (i==ZSTD_REP_MOVE_OPT) ? (rep[0] - 1) : rep[i];
+ const U32 repIndex = (U32)(current - repCur);
+ const BYTE* const repBase = repIndex < dictLimit ? dictBase : base;
+ const BYTE* const repMatch = repBase + repIndex;
+ if ( (repCur > 0 && repCur <= (S32)current)
+ && (((U32)((dictLimit-1) - repIndex) >= 3) & (repIndex>lowestIndex)) /* intentional overflow */
+ && (ZSTD_readMINMATCH(ip, minMatch) == ZSTD_readMINMATCH(repMatch, minMatch)) ) {
+ /* repcode detected we should take it */
+ const BYTE* const repEnd = repIndex < dictLimit ? dictEnd : iend;
+ mlen = (U32)ZSTD_count_2segments(ip+minMatch, repMatch+minMatch, iend, repEnd, prefixStart) + minMatch;
+
+ if (mlen > sufficient_len || mlen >= ZSTD_OPT_NUM) {
+ best_mlen = mlen; best_off = i; cur = 0; last_pos = 1;
+ goto _storeSequence;
+ }
+
+ best_off = i - (ip==anchor);
+ litlen = opt[0].litlen;
+ do {
+ price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
+ if (mlen > last_pos || price < opt[mlen].price)
+ SET_PRICE(mlen, mlen, i, litlen, price); /* note : macro modifies last_pos */
+ mlen--;
+ } while (mlen >= minMatch);
+ } } }
+
+ match_num = ZSTD_BtGetAllMatches_selectMLS_extDict(ctx, ip, iend, maxSearches, mls, matches, minMatch); /* first search (depth 0) */
+
+ if (!last_pos && !match_num) { ip++; continue; }
+
+ { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) opt[0].rep[i] = rep[i]; }
+ opt[0].mlen = 1;
+
+ if (match_num && (matches[match_num-1].len > sufficient_len || matches[match_num-1].len >= ZSTD_OPT_NUM)) {
+ best_mlen = matches[match_num-1].len;
+ best_off = matches[match_num-1].off;
+ cur = 0;
+ last_pos = 1;
+ goto _storeSequence;
+ }
+
+ best_mlen = (last_pos) ? last_pos : minMatch;
+
+ /* set prices using matches at position = 0 */
+ for (u = 0; u < match_num; u++) {
+ mlen = (u>0) ? matches[u-1].len+1 : best_mlen;
+ best_mlen = matches[u].len;
+ litlen = opt[0].litlen;
+ while (mlen <= best_mlen) {
+ price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
+ if (mlen > last_pos || price < opt[mlen].price)
+ SET_PRICE(mlen, mlen, matches[u].off, litlen, price);
+ mlen++;
+ } }
+
+ if (last_pos < minMatch) {
+ ip++; continue;
+ }
+
+ /* check further positions */
+ for (cur = 1; cur <= last_pos; cur++) {
+ inr = ip + cur;
+
+ if (opt[cur-1].mlen == 1) {
+ litlen = opt[cur-1].litlen + 1;
+ if (cur > litlen) {
+ price = opt[cur - litlen].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-litlen);
+ } else
+ price = ZSTD_getLiteralPrice(optStatePtr, litlen, anchor);
+ } else {
+ litlen = 1;
+ price = opt[cur - 1].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-1);
+ }
+
+ if (cur > last_pos || price <= opt[cur].price)
+ SET_PRICE(cur, 1, 0, litlen, price);
+
+ if (cur == last_pos) break;
+
+ if (inr > ilimit) /* last match must start at a minimum distance of 8 from oend */
+ continue;
+
+ mlen = opt[cur].mlen;
+ if (opt[cur].off > ZSTD_REP_MOVE_OPT) {
+ opt[cur].rep[2] = opt[cur-mlen].rep[1];
+ opt[cur].rep[1] = opt[cur-mlen].rep[0];
+ opt[cur].rep[0] = opt[cur].off - ZSTD_REP_MOVE_OPT;
+ } else {
+ opt[cur].rep[2] = (opt[cur].off > 1) ? opt[cur-mlen].rep[1] : opt[cur-mlen].rep[2];
+ opt[cur].rep[1] = (opt[cur].off > 0) ? opt[cur-mlen].rep[0] : opt[cur-mlen].rep[1];
+ assert(!(opt[cur].off == ZSTD_REP_MOVE_OPT && mlen == 1));
+ opt[cur].rep[0] = (opt[cur].off == ZSTD_REP_MOVE_OPT) ? (opt[cur-mlen].rep[0] - 1) : (opt[cur-mlen].rep[opt[cur].off]);
+ }
+
+ best_mlen = minMatch;
+ { U32 i, last_i = ZSTD_REP_CHECK + (mlen != 1);
+ for (i = (mlen != 1); i<last_i; i++) {
+ const S32 repCur = (i==ZSTD_REP_MOVE_OPT) ? (opt[cur].rep[0] - 1) : opt[cur].rep[i];
+ const U32 repIndex = (U32)(current+cur - repCur);
+ const BYTE* const repBase = repIndex < dictLimit ? dictBase : base;
+ const BYTE* const repMatch = repBase + repIndex;
+ if ( (repCur > 0 && repCur <= (S32)(current+cur))
+ && (((U32)((dictLimit-1) - repIndex) >= 3) & (repIndex>lowestIndex)) /* intentional overflow */
+ && (ZSTD_readMINMATCH(inr, minMatch) == ZSTD_readMINMATCH(repMatch, minMatch)) ) {
+ /* repcode detected */
+ const BYTE* const repEnd = repIndex < dictLimit ? dictEnd : iend;
+ mlen = (U32)ZSTD_count_2segments(inr+minMatch, repMatch+minMatch, iend, repEnd, prefixStart) + minMatch;
+
+ if (mlen > sufficient_len || cur + mlen >= ZSTD_OPT_NUM) {
+ best_mlen = mlen; best_off = i; last_pos = cur + 1;
+ goto _storeSequence;
+ }
+
+ best_off = i - (opt[cur].mlen != 1);
+ if (mlen > best_mlen) best_mlen = mlen;
+
+ do {
+ if (opt[cur].mlen == 1) {
+ litlen = opt[cur].litlen;
+ if (cur > litlen) {
+ price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, inr-litlen, best_off, mlen - MINMATCH, ultra);
+ } else
+ price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
+ } else {
+ litlen = 0;
+ price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, best_off, mlen - MINMATCH, ultra);
+ }
+
+ if (cur + mlen > last_pos || price <= opt[cur + mlen].price)
+ SET_PRICE(cur + mlen, mlen, i, litlen, price);
+ mlen--;
+ } while (mlen >= minMatch);
+ } } }
+
+ match_num = ZSTD_BtGetAllMatches_selectMLS_extDict(ctx, inr, iend, maxSearches, mls, matches, minMatch);
+
+ if (match_num > 0 && (matches[match_num-1].len > sufficient_len || cur + matches[match_num-1].len >= ZSTD_OPT_NUM)) {
+ best_mlen = matches[match_num-1].len;
+ best_off = matches[match_num-1].off;
+ last_pos = cur + 1;
+ goto _storeSequence;
+ }
+
+ /* set prices using matches at position = cur */
+ for (u = 0; u < match_num; u++) {
+ mlen = (u>0) ? matches[u-1].len+1 : best_mlen;
+ best_mlen = matches[u].len;
+
+ while (mlen <= best_mlen) {
+ if (opt[cur].mlen == 1) {
+ litlen = opt[cur].litlen;
+ if (cur > litlen)
+ price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, ip+cur-litlen, matches[u].off-1, mlen - MINMATCH, ultra);
+ else
+ price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
+ } else {
+ litlen = 0;
+ price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, matches[u].off-1, mlen - MINMATCH, ultra);
+ }
+
+ if (cur + mlen > last_pos || (price < opt[cur + mlen].price))
+ SET_PRICE(cur + mlen, mlen, matches[u].off, litlen, price);
+
+ mlen++;
+ } } } /* for (cur = 1; cur <= last_pos; cur++) */
+
+ best_mlen = opt[last_pos].mlen;
+ best_off = opt[last_pos].off;
+ cur = last_pos - best_mlen;
+
+ /* store sequence */
+_storeSequence: /* cur, last_pos, best_mlen, best_off have to be set */
+ opt[0].mlen = 1;
+
+ while (1) {
+ mlen = opt[cur].mlen;
+ offset = opt[cur].off;
+ opt[cur].mlen = best_mlen;
+ opt[cur].off = best_off;
+ best_mlen = mlen;
+ best_off = offset;
+ if (mlen > cur) break;
+ cur -= mlen;
+ }
+
+ for (u = 0; u <= last_pos; ) {
+ u += opt[u].mlen;
+ }
+
+ for (cur=0; cur < last_pos; ) {
+ mlen = opt[cur].mlen;
+ if (mlen == 1) { ip++; cur++; continue; }
+ offset = opt[cur].off;
+ cur += mlen;
+ litLength = (U32)(ip - anchor);
+
+ if (offset > ZSTD_REP_MOVE_OPT) {
+ rep[2] = rep[1];
+ rep[1] = rep[0];
+ rep[0] = offset - ZSTD_REP_MOVE_OPT;
+ offset--;
+ } else {
+ if (offset != 0) {
+ best_off = (offset==ZSTD_REP_MOVE_OPT) ? (rep[0] - 1) : (rep[offset]);
+ if (offset != 1) rep[2] = rep[1];
+ rep[1] = rep[0];
+ rep[0] = best_off;
+ }
+
+ if (litLength==0) offset--;
+ }
+
+ ZSTD_updatePrice(optStatePtr, litLength, anchor, offset, mlen-MINMATCH);
+ ZSTD_storeSeq(seqStorePtr, litLength, anchor, offset, mlen-MINMATCH);
+ anchor = ip = ip + mlen;
+ } } /* for (cur=0; cur < last_pos; ) */
+
+ /* Save reps for next block */
+ { int i; for (i=0; i<ZSTD_REP_NUM; i++) seqStorePtr->repToConfirm[i] = rep[i]; }
+
+ /* Return the last literals size */
+ return iend - anchor;
+}
+
+
+size_t ZSTD_compressBlock_btopt_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
+{
+ return ZSTD_compressBlock_opt_extDict_generic(ctx, src, srcSize, 0);
+}
+
+size_t ZSTD_compressBlock_btultra_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize)
+{
+ return ZSTD_compressBlock_opt_extDict_generic(ctx, src, srcSize, 1);
+}
diff --git a/thirdparty/zstd/compress/zstd_opt.h b/thirdparty/zstd/compress/zstd_opt.h
index ae24732c7d..816a1fabbf 100644
--- a/thirdparty/zstd/compress/zstd_opt.h
+++ b/thirdparty/zstd/compress/zstd_opt.h
@@ -5,934 +5,26 @@
* This source code is licensed under both the BSD-style license (found in the
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
* in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
*/
+#ifndef ZSTD_OPT_H
+#define ZSTD_OPT_H
-/* Note : this file is intended to be included within zstd_compress.c */
+#include "zstd_compress.h"
+#if defined (__cplusplus)
+extern "C" {
+#endif
-#ifndef ZSTD_OPT_H_91842398743
-#define ZSTD_OPT_H_91842398743
+size_t ZSTD_compressBlock_btopt(ZSTD_CCtx* ctx, const void* src, size_t srcSize);
+size_t ZSTD_compressBlock_btultra(ZSTD_CCtx* ctx, const void* src, size_t srcSize);
+size_t ZSTD_compressBlock_btopt_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize);
+size_t ZSTD_compressBlock_btultra_extDict(ZSTD_CCtx* ctx, const void* src, size_t srcSize);
-#define ZSTD_LITFREQ_ADD 2
-#define ZSTD_FREQ_DIV 4
-#define ZSTD_MAX_PRICE (1<<30)
-
-/*-*************************************
-* Price functions for optimal parser
-***************************************/
-static void ZSTD_setLog2Prices(optState_t* optPtr)
-{
- optPtr->log2matchLengthSum = ZSTD_highbit32(optPtr->matchLengthSum+1);
- optPtr->log2litLengthSum = ZSTD_highbit32(optPtr->litLengthSum+1);
- optPtr->log2litSum = ZSTD_highbit32(optPtr->litSum+1);
- optPtr->log2offCodeSum = ZSTD_highbit32(optPtr->offCodeSum+1);
- optPtr->factor = 1 + ((optPtr->litSum>>5) / optPtr->litLengthSum) + ((optPtr->litSum<<1) / (optPtr->litSum + optPtr->matchSum));
-}
-
-
-static void ZSTD_rescaleFreqs(optState_t* optPtr, const BYTE* src, size_t srcSize)
-{
- unsigned u;
-
- optPtr->cachedLiterals = NULL;
- optPtr->cachedPrice = optPtr->cachedLitLength = 0;
- optPtr->staticPrices = 0;
-
- if (optPtr->litLengthSum == 0) {
- if (srcSize <= 1024) optPtr->staticPrices = 1;
-
- assert(optPtr->litFreq!=NULL);
- for (u=0; u<=MaxLit; u++)
- optPtr->litFreq[u] = 0;
- for (u=0; u<srcSize; u++)
- optPtr->litFreq[src[u]]++;
-
- optPtr->litSum = 0;
- optPtr->litLengthSum = MaxLL+1;
- optPtr->matchLengthSum = MaxML+1;
- optPtr->offCodeSum = (MaxOff+1);
- optPtr->matchSum = (ZSTD_LITFREQ_ADD<<Litbits);
-
- for (u=0; u<=MaxLit; u++) {
- optPtr->litFreq[u] = 1 + (optPtr->litFreq[u]>>ZSTD_FREQ_DIV);
- optPtr->litSum += optPtr->litFreq[u];
- }
- for (u=0; u<=MaxLL; u++)
- optPtr->litLengthFreq[u] = 1;
- for (u=0; u<=MaxML; u++)
- optPtr->matchLengthFreq[u] = 1;
- for (u=0; u<=MaxOff; u++)
- optPtr->offCodeFreq[u] = 1;
- } else {
- optPtr->matchLengthSum = 0;
- optPtr->litLengthSum = 0;
- optPtr->offCodeSum = 0;
- optPtr->matchSum = 0;
- optPtr->litSum = 0;
-
- for (u=0; u<=MaxLit; u++) {
- optPtr->litFreq[u] = 1 + (optPtr->litFreq[u]>>(ZSTD_FREQ_DIV+1));
- optPtr->litSum += optPtr->litFreq[u];
- }
- for (u=0; u<=MaxLL; u++) {
- optPtr->litLengthFreq[u] = 1 + (optPtr->litLengthFreq[u]>>(ZSTD_FREQ_DIV+1));
- optPtr->litLengthSum += optPtr->litLengthFreq[u];
- }
- for (u=0; u<=MaxML; u++) {
- optPtr->matchLengthFreq[u] = 1 + (optPtr->matchLengthFreq[u]>>ZSTD_FREQ_DIV);
- optPtr->matchLengthSum += optPtr->matchLengthFreq[u];
- optPtr->matchSum += optPtr->matchLengthFreq[u] * (u + 3);
- }
- optPtr->matchSum *= ZSTD_LITFREQ_ADD;
- for (u=0; u<=MaxOff; u++) {
- optPtr->offCodeFreq[u] = 1 + (optPtr->offCodeFreq[u]>>ZSTD_FREQ_DIV);
- optPtr->offCodeSum += optPtr->offCodeFreq[u];
- }
- }
-
- ZSTD_setLog2Prices(optPtr);
-}
-
-
-static U32 ZSTD_getLiteralPrice(optState_t* optPtr, U32 litLength, const BYTE* literals)
-{
- U32 price, u;
-
- if (optPtr->staticPrices)
- return ZSTD_highbit32((U32)litLength+1) + (litLength*6);
-
- if (litLength == 0)
- return optPtr->log2litLengthSum - ZSTD_highbit32(optPtr->litLengthFreq[0]+1);
-
- /* literals */
- if (optPtr->cachedLiterals == literals) {
- U32 const additional = litLength - optPtr->cachedLitLength;
- const BYTE* literals2 = optPtr->cachedLiterals + optPtr->cachedLitLength;
- price = optPtr->cachedPrice + additional * optPtr->log2litSum;
- for (u=0; u < additional; u++)
- price -= ZSTD_highbit32(optPtr->litFreq[literals2[u]]+1);
- optPtr->cachedPrice = price;
- optPtr->cachedLitLength = litLength;
- } else {
- price = litLength * optPtr->log2litSum;
- for (u=0; u < litLength; u++)
- price -= ZSTD_highbit32(optPtr->litFreq[literals[u]]+1);
-
- if (litLength >= 12) {
- optPtr->cachedLiterals = literals;
- optPtr->cachedPrice = price;
- optPtr->cachedLitLength = litLength;
- }
- }
-
- /* literal Length */
- { const BYTE LL_deltaCode = 19;
- const BYTE llCode = (litLength>63) ? (BYTE)ZSTD_highbit32(litLength) + LL_deltaCode : LL_Code[litLength];
- price += LL_bits[llCode] + optPtr->log2litLengthSum - ZSTD_highbit32(optPtr->litLengthFreq[llCode]+1);
- }
-
- return price;
-}
-
-
-FORCE_INLINE_TEMPLATE U32 ZSTD_getPrice(optState_t* optPtr, U32 litLength, const BYTE* literals, U32 offset, U32 matchLength, const int ultra)
-{
- /* offset */
- U32 price;
- BYTE const offCode = (BYTE)ZSTD_highbit32(offset+1);
-
- if (optPtr->staticPrices)
- return ZSTD_getLiteralPrice(optPtr, litLength, literals) + ZSTD_highbit32((U32)matchLength+1) + 16 + offCode;
-
- price = offCode + optPtr->log2offCodeSum - ZSTD_highbit32(optPtr->offCodeFreq[offCode]+1);
- if (!ultra && offCode >= 20) price += (offCode-19)*2;
-
- /* match Length */
- { const BYTE ML_deltaCode = 36;
- const BYTE mlCode = (matchLength>127) ? (BYTE)ZSTD_highbit32(matchLength) + ML_deltaCode : ML_Code[matchLength];
- price += ML_bits[mlCode] + optPtr->log2matchLengthSum - ZSTD_highbit32(optPtr->matchLengthFreq[mlCode]+1);
- }
-
- return price + ZSTD_getLiteralPrice(optPtr, litLength, literals) + optPtr->factor;
-}
-
-
-static void ZSTD_updatePrice(optState_t* optPtr, U32 litLength, const BYTE* literals, U32 offset, U32 matchLength)
-{
- U32 u;
-
- /* literals */
- optPtr->litSum += litLength*ZSTD_LITFREQ_ADD;
- for (u=0; u < litLength; u++)
- optPtr->litFreq[literals[u]] += ZSTD_LITFREQ_ADD;
-
- /* literal Length */
- { const BYTE LL_deltaCode = 19;
- const BYTE llCode = (litLength>63) ? (BYTE)ZSTD_highbit32(litLength) + LL_deltaCode : LL_Code[litLength];
- optPtr->litLengthFreq[llCode]++;
- optPtr->litLengthSum++;
- }
-
- /* match offset */
- { BYTE const offCode = (BYTE)ZSTD_highbit32(offset+1);
- optPtr->offCodeSum++;
- optPtr->offCodeFreq[offCode]++;
- }
-
- /* match Length */
- { const BYTE ML_deltaCode = 36;
- const BYTE mlCode = (matchLength>127) ? (BYTE)ZSTD_highbit32(matchLength) + ML_deltaCode : ML_Code[matchLength];
- optPtr->matchLengthFreq[mlCode]++;
- optPtr->matchLengthSum++;
- }
-
- ZSTD_setLog2Prices(optPtr);
-}
-
-
-#define SET_PRICE(pos, mlen_, offset_, litlen_, price_) \
- { \
- while (last_pos < pos) { opt[last_pos+1].price = ZSTD_MAX_PRICE; last_pos++; } \
- opt[pos].mlen = mlen_; \
- opt[pos].off = offset_; \
- opt[pos].litlen = litlen_; \
- opt[pos].price = price_; \
- }
-
-
-/* function safe only for comparisons */
-static U32 ZSTD_readMINMATCH(const void* memPtr, U32 length)
-{
- switch (length)
- {
- default :
- case 4 : return MEM_read32(memPtr);
- case 3 : if (MEM_isLittleEndian())
- return MEM_read32(memPtr)<<8;
- else
- return MEM_read32(memPtr)>>8;
- }
-}
-
-
-/* Update hashTable3 up to ip (excluded)
- Assumption : always within prefix (i.e. not within extDict) */
-static
-U32 ZSTD_insertAndFindFirstIndexHash3 (ZSTD_CCtx* zc, const BYTE* ip)
-{
- U32* const hashTable3 = zc->hashTable3;
- U32 const hashLog3 = zc->hashLog3;
- const BYTE* const base = zc->base;
- U32 idx = zc->nextToUpdate3;
- const U32 target = zc->nextToUpdate3 = (U32)(ip - base);
- const size_t hash3 = ZSTD_hash3Ptr(ip, hashLog3);
-
- while(idx < target) {
- hashTable3[ZSTD_hash3Ptr(base+idx, hashLog3)] = idx;
- idx++;
- }
-
- return hashTable3[hash3];
-}
-
-
-/*-*************************************
-* Binary Tree search
-***************************************/
-static U32 ZSTD_insertBtAndGetAllMatches (
- ZSTD_CCtx* zc,
- const BYTE* const ip, const BYTE* const iLimit,
- U32 nbCompares, const U32 mls,
- U32 extDict, ZSTD_match_t* matches, const U32 minMatchLen)
-{
- const BYTE* const base = zc->base;
- const U32 current = (U32)(ip-base);
- const U32 hashLog = zc->appliedParams.cParams.hashLog;
- const size_t h = ZSTD_hashPtr(ip, hashLog, mls);
- U32* const hashTable = zc->hashTable;
- U32 matchIndex = hashTable[h];
- U32* const bt = zc->chainTable;
- const U32 btLog = zc->appliedParams.cParams.chainLog - 1;
- const U32 btMask= (1U << btLog) - 1;
- size_t commonLengthSmaller=0, commonLengthLarger=0;
- const BYTE* const dictBase = zc->dictBase;
- const U32 dictLimit = zc->dictLimit;
- const BYTE* const dictEnd = dictBase + dictLimit;
- const BYTE* const prefixStart = base + dictLimit;
- const U32 btLow = btMask >= current ? 0 : current - btMask;
- const U32 windowLow = zc->lowLimit;
- U32* smallerPtr = bt + 2*(current&btMask);
- U32* largerPtr = bt + 2*(current&btMask) + 1;
- U32 matchEndIdx = current+8;
- U32 dummy32; /* to be nullified at the end */
- U32 mnum = 0;
-
- const U32 minMatch = (mls == 3) ? 3 : 4;
- size_t bestLength = minMatchLen-1;
-
- if (minMatch == 3) { /* HC3 match finder */
- U32 const matchIndex3 = ZSTD_insertAndFindFirstIndexHash3 (zc, ip);
- if (matchIndex3>windowLow && (current - matchIndex3 < (1<<18))) {
- const BYTE* match;
- size_t currentMl=0;
- if ((!extDict) || matchIndex3 >= dictLimit) {
- match = base + matchIndex3;
- if (match[bestLength] == ip[bestLength]) currentMl = ZSTD_count(ip, match, iLimit);
- } else {
- match = dictBase + matchIndex3;
- if (ZSTD_readMINMATCH(match, MINMATCH) == ZSTD_readMINMATCH(ip, MINMATCH)) /* assumption : matchIndex3 <= dictLimit-4 (by table construction) */
- currentMl = ZSTD_count_2segments(ip+MINMATCH, match+MINMATCH, iLimit, dictEnd, prefixStart) + MINMATCH;
- }
-
- /* save best solution */
- if (currentMl > bestLength) {
- bestLength = currentMl;
- matches[mnum].off = ZSTD_REP_MOVE_OPT + current - matchIndex3;
- matches[mnum].len = (U32)currentMl;
- mnum++;
- if (currentMl > ZSTD_OPT_NUM) goto update;
- if (ip+currentMl == iLimit) goto update; /* best possible, and avoid read overflow*/
- }
- }
- }
-
- hashTable[h] = current; /* Update Hash Table */
-
- while (nbCompares-- && (matchIndex > windowLow)) {
- U32* nextPtr = bt + 2*(matchIndex & btMask);
- size_t matchLength = MIN(commonLengthSmaller, commonLengthLarger); /* guaranteed minimum nb of common bytes */
- const BYTE* match;
-
- if ((!extDict) || (matchIndex+matchLength >= dictLimit)) {
- match = base + matchIndex;
- if (match[matchLength] == ip[matchLength]) {
- matchLength += ZSTD_count(ip+matchLength+1, match+matchLength+1, iLimit) +1;
- }
- } else {
- match = dictBase + matchIndex;
- matchLength += ZSTD_count_2segments(ip+matchLength, match+matchLength, iLimit, dictEnd, prefixStart);
- if (matchIndex+matchLength >= dictLimit)
- match = base + matchIndex; /* to prepare for next usage of match[matchLength] */
- }
-
- if (matchLength > bestLength) {
- if (matchLength > matchEndIdx - matchIndex) matchEndIdx = matchIndex + (U32)matchLength;
- bestLength = matchLength;
- matches[mnum].off = ZSTD_REP_MOVE_OPT + current - matchIndex;
- matches[mnum].len = (U32)matchLength;
- mnum++;
- if (matchLength > ZSTD_OPT_NUM) break;
- if (ip+matchLength == iLimit) /* equal : no way to know if inf or sup */
- break; /* drop, to guarantee consistency (miss a little bit of compression) */
- }
-
- if (match[matchLength] < ip[matchLength]) {
- /* match is smaller than current */
- *smallerPtr = matchIndex; /* update smaller idx */
- commonLengthSmaller = matchLength; /* all smaller will now have at least this guaranteed common length */
- if (matchIndex <= btLow) { smallerPtr=&dummy32; break; } /* beyond tree size, stop the search */
- smallerPtr = nextPtr+1; /* new "smaller" => larger of match */
- matchIndex = nextPtr[1]; /* new matchIndex larger than previous (closer to current) */
- } else {
- /* match is larger than current */
- *largerPtr = matchIndex;
- commonLengthLarger = matchLength;
- if (matchIndex <= btLow) { largerPtr=&dummy32; break; } /* beyond tree size, stop the search */
- largerPtr = nextPtr;
- matchIndex = nextPtr[0];
- } }
-
- *smallerPtr = *largerPtr = 0;
-
-update:
- zc->nextToUpdate = (matchEndIdx > current + 8) ? matchEndIdx - 8 : current+1;
- return mnum;
-}
-
-
-/** Tree updater, providing best match */
-static U32 ZSTD_BtGetAllMatches (
- ZSTD_CCtx* zc,
- const BYTE* const ip, const BYTE* const iLimit,
- const U32 maxNbAttempts, const U32 mls, ZSTD_match_t* matches, const U32 minMatchLen)
-{
- if (ip < zc->base + zc->nextToUpdate) return 0; /* skipped area */
- ZSTD_updateTree(zc, ip, iLimit, maxNbAttempts, mls);
- return ZSTD_insertBtAndGetAllMatches(zc, ip, iLimit, maxNbAttempts, mls, 0, matches, minMatchLen);
-}
-
-
-static U32 ZSTD_BtGetAllMatches_selectMLS (
- ZSTD_CCtx* zc, /* Index table will be updated */
- const BYTE* ip, const BYTE* const iHighLimit,
- const U32 maxNbAttempts, const U32 matchLengthSearch, ZSTD_match_t* matches, const U32 minMatchLen)
-{
- switch(matchLengthSearch)
- {
- case 3 : return ZSTD_BtGetAllMatches(zc, ip, iHighLimit, maxNbAttempts, 3, matches, minMatchLen);
- default :
- case 4 : return ZSTD_BtGetAllMatches(zc, ip, iHighLimit, maxNbAttempts, 4, matches, minMatchLen);
- case 5 : return ZSTD_BtGetAllMatches(zc, ip, iHighLimit, maxNbAttempts, 5, matches, minMatchLen);
- case 7 :
- case 6 : return ZSTD_BtGetAllMatches(zc, ip, iHighLimit, maxNbAttempts, 6, matches, minMatchLen);
- }
-}
-
-/** Tree updater, providing best match */
-static U32 ZSTD_BtGetAllMatches_extDict (
- ZSTD_CCtx* zc,
- const BYTE* const ip, const BYTE* const iLimit,
- const U32 maxNbAttempts, const U32 mls, ZSTD_match_t* matches, const U32 minMatchLen)
-{
- if (ip < zc->base + zc->nextToUpdate) return 0; /* skipped area */
- ZSTD_updateTree_extDict(zc, ip, iLimit, maxNbAttempts, mls);
- return ZSTD_insertBtAndGetAllMatches(zc, ip, iLimit, maxNbAttempts, mls, 1, matches, minMatchLen);
-}
-
-
-static U32 ZSTD_BtGetAllMatches_selectMLS_extDict (
- ZSTD_CCtx* zc, /* Index table will be updated */
- const BYTE* ip, const BYTE* const iHighLimit,
- const U32 maxNbAttempts, const U32 matchLengthSearch, ZSTD_match_t* matches, const U32 minMatchLen)
-{
- switch(matchLengthSearch)
- {
- case 3 : return ZSTD_BtGetAllMatches_extDict(zc, ip, iHighLimit, maxNbAttempts, 3, matches, minMatchLen);
- default :
- case 4 : return ZSTD_BtGetAllMatches_extDict(zc, ip, iHighLimit, maxNbAttempts, 4, matches, minMatchLen);
- case 5 : return ZSTD_BtGetAllMatches_extDict(zc, ip, iHighLimit, maxNbAttempts, 5, matches, minMatchLen);
- case 7 :
- case 6 : return ZSTD_BtGetAllMatches_extDict(zc, ip, iHighLimit, maxNbAttempts, 6, matches, minMatchLen);
- }
-}
-
-
-/*-*******************************
-* Optimal parser
-*********************************/
-FORCE_INLINE_TEMPLATE
-void ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
- const void* src, size_t srcSize, const int ultra)
-{
- seqStore_t* seqStorePtr = &(ctx->seqStore);
- optState_t* optStatePtr = &(ctx->optState);
- const BYTE* const istart = (const BYTE*)src;
- const BYTE* ip = istart;
- const BYTE* anchor = istart;
- const BYTE* const iend = istart + srcSize;
- const BYTE* const ilimit = iend - 8;
- const BYTE* const base = ctx->base;
- const BYTE* const prefixStart = base + ctx->dictLimit;
-
- const U32 maxSearches = 1U << ctx->appliedParams.cParams.searchLog;
- const U32 sufficient_len = ctx->appliedParams.cParams.targetLength;
- const U32 mls = ctx->appliedParams.cParams.searchLength;
- const U32 minMatch = (ctx->appliedParams.cParams.searchLength == 3) ? 3 : 4;
-
- ZSTD_optimal_t* opt = optStatePtr->priceTable;
- ZSTD_match_t* matches = optStatePtr->matchTable;
- const BYTE* inr;
- U32 offset, rep[ZSTD_REP_NUM];
-
- /* init */
- ctx->nextToUpdate3 = ctx->nextToUpdate;
- ZSTD_rescaleFreqs(optStatePtr, (const BYTE*)src, srcSize);
- ip += (ip==prefixStart);
- { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) rep[i]=seqStorePtr->rep[i]; }
-
- /* Match Loop */
- while (ip < ilimit) {
- U32 cur, match_num, last_pos, litlen, price;
- U32 u, mlen, best_mlen, best_off, litLength;
- memset(opt, 0, sizeof(ZSTD_optimal_t));
- last_pos = 0;
- litlen = (U32)(ip - anchor);
-
- /* check repCode */
- { U32 i, last_i = ZSTD_REP_CHECK + (ip==anchor);
- for (i=(ip == anchor); i<last_i; i++) {
- const S32 repCur = (i==ZSTD_REP_MOVE_OPT) ? (rep[0] - 1) : rep[i];
- if ( (repCur > 0) && (repCur < (S32)(ip-prefixStart))
- && (ZSTD_readMINMATCH(ip, minMatch) == ZSTD_readMINMATCH(ip - repCur, minMatch))) {
- mlen = (U32)ZSTD_count(ip+minMatch, ip+minMatch-repCur, iend) + minMatch;
- if (mlen > sufficient_len || mlen >= ZSTD_OPT_NUM) {
- best_mlen = mlen; best_off = i; cur = 0; last_pos = 1;
- goto _storeSequence;
- }
- best_off = i - (ip == anchor);
- do {
- price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
- if (mlen > last_pos || price < opt[mlen].price)
- SET_PRICE(mlen, mlen, i, litlen, price); /* note : macro modifies last_pos */
- mlen--;
- } while (mlen >= minMatch);
- } } }
-
- match_num = ZSTD_BtGetAllMatches_selectMLS(ctx, ip, iend, maxSearches, mls, matches, minMatch);
-
- if (!last_pos && !match_num) { ip++; continue; }
-
- if (match_num && (matches[match_num-1].len > sufficient_len || matches[match_num-1].len >= ZSTD_OPT_NUM)) {
- best_mlen = matches[match_num-1].len;
- best_off = matches[match_num-1].off;
- cur = 0;
- last_pos = 1;
- goto _storeSequence;
- }
-
- /* set prices using matches at position = 0 */
- best_mlen = (last_pos) ? last_pos : minMatch;
- for (u = 0; u < match_num; u++) {
- mlen = (u>0) ? matches[u-1].len+1 : best_mlen;
- best_mlen = matches[u].len;
- while (mlen <= best_mlen) {
- price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
- if (mlen > last_pos || price < opt[mlen].price)
- SET_PRICE(mlen, mlen, matches[u].off, litlen, price); /* note : macro modifies last_pos */
- mlen++;
- } }
-
- if (last_pos < minMatch) { ip++; continue; }
-
- /* initialize opt[0] */
- { U32 i ; for (i=0; i<ZSTD_REP_NUM; i++) opt[0].rep[i] = rep[i]; }
- opt[0].mlen = 1;
- opt[0].litlen = litlen;
-
- /* check further positions */
- for (cur = 1; cur <= last_pos; cur++) {
- inr = ip + cur;
-
- if (opt[cur-1].mlen == 1) {
- litlen = opt[cur-1].litlen + 1;
- if (cur > litlen) {
- price = opt[cur - litlen].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-litlen);
- } else
- price = ZSTD_getLiteralPrice(optStatePtr, litlen, anchor);
- } else {
- litlen = 1;
- price = opt[cur - 1].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-1);
- }
-
- if (cur > last_pos || price <= opt[cur].price)
- SET_PRICE(cur, 1, 0, litlen, price);
-
- if (cur == last_pos) break;
-
- if (inr > ilimit) /* last match must start at a minimum distance of 8 from oend */
- continue;
-
- mlen = opt[cur].mlen;
- if (opt[cur].off > ZSTD_REP_MOVE_OPT) {
- opt[cur].rep[2] = opt[cur-mlen].rep[1];
- opt[cur].rep[1] = opt[cur-mlen].rep[0];
- opt[cur].rep[0] = opt[cur].off - ZSTD_REP_MOVE_OPT;
- } else {
- opt[cur].rep[2] = (opt[cur].off > 1) ? opt[cur-mlen].rep[1] : opt[cur-mlen].rep[2];
- opt[cur].rep[1] = (opt[cur].off > 0) ? opt[cur-mlen].rep[0] : opt[cur-mlen].rep[1];
- opt[cur].rep[0] = ((opt[cur].off==ZSTD_REP_MOVE_OPT) && (mlen != 1)) ? (opt[cur-mlen].rep[0] - 1) : (opt[cur-mlen].rep[opt[cur].off]);
- }
-
- best_mlen = minMatch;
- { U32 i, last_i = ZSTD_REP_CHECK + (mlen != 1);
- for (i=(opt[cur].mlen != 1); i<last_i; i++) { /* check rep */
- const S32 repCur = (i==ZSTD_REP_MOVE_OPT) ? (opt[cur].rep[0] - 1) : opt[cur].rep[i];
- if ( (repCur > 0) && (repCur < (S32)(inr-prefixStart))
- && (ZSTD_readMINMATCH(inr, minMatch) == ZSTD_readMINMATCH(inr - repCur, minMatch))) {
- mlen = (U32)ZSTD_count(inr+minMatch, inr+minMatch - repCur, iend) + minMatch;
-
- if (mlen > sufficient_len || cur + mlen >= ZSTD_OPT_NUM) {
- best_mlen = mlen; best_off = i; last_pos = cur + 1;
- goto _storeSequence;
- }
-
- best_off = i - (opt[cur].mlen != 1);
- if (mlen > best_mlen) best_mlen = mlen;
-
- do {
- if (opt[cur].mlen == 1) {
- litlen = opt[cur].litlen;
- if (cur > litlen) {
- price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, inr-litlen, best_off, mlen - MINMATCH, ultra);
- } else
- price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
- } else {
- litlen = 0;
- price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, best_off, mlen - MINMATCH, ultra);
- }
-
- if (cur + mlen > last_pos || price <= opt[cur + mlen].price)
- SET_PRICE(cur + mlen, mlen, i, litlen, price);
- mlen--;
- } while (mlen >= minMatch);
- } } }
-
- match_num = ZSTD_BtGetAllMatches_selectMLS(ctx, inr, iend, maxSearches, mls, matches, best_mlen);
-
- if (match_num > 0 && (matches[match_num-1].len > sufficient_len || cur + matches[match_num-1].len >= ZSTD_OPT_NUM)) {
- best_mlen = matches[match_num-1].len;
- best_off = matches[match_num-1].off;
- last_pos = cur + 1;
- goto _storeSequence;
- }
-
- /* set prices using matches at position = cur */
- for (u = 0; u < match_num; u++) {
- mlen = (u>0) ? matches[u-1].len+1 : best_mlen;
- best_mlen = matches[u].len;
-
- while (mlen <= best_mlen) {
- if (opt[cur].mlen == 1) {
- litlen = opt[cur].litlen;
- if (cur > litlen)
- price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, ip+cur-litlen, matches[u].off-1, mlen - MINMATCH, ultra);
- else
- price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
- } else {
- litlen = 0;
- price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, matches[u].off-1, mlen - MINMATCH, ultra);
- }
-
- if (cur + mlen > last_pos || (price < opt[cur + mlen].price))
- SET_PRICE(cur + mlen, mlen, matches[u].off, litlen, price);
-
- mlen++;
- } } }
-
- best_mlen = opt[last_pos].mlen;
- best_off = opt[last_pos].off;
- cur = last_pos - best_mlen;
-
- /* store sequence */
-_storeSequence: /* cur, last_pos, best_mlen, best_off have to be set */
- opt[0].mlen = 1;
-
- while (1) {
- mlen = opt[cur].mlen;
- offset = opt[cur].off;
- opt[cur].mlen = best_mlen;
- opt[cur].off = best_off;
- best_mlen = mlen;
- best_off = offset;
- if (mlen > cur) break;
- cur -= mlen;
- }
-
- for (u = 0; u <= last_pos;) {
- u += opt[u].mlen;
- }
-
- for (cur=0; cur < last_pos; ) {
- mlen = opt[cur].mlen;
- if (mlen == 1) { ip++; cur++; continue; }
- offset = opt[cur].off;
- cur += mlen;
- litLength = (U32)(ip - anchor);
-
- if (offset > ZSTD_REP_MOVE_OPT) {
- rep[2] = rep[1];
- rep[1] = rep[0];
- rep[0] = offset - ZSTD_REP_MOVE_OPT;
- offset--;
- } else {
- if (offset != 0) {
- best_off = (offset==ZSTD_REP_MOVE_OPT) ? (rep[0] - 1) : (rep[offset]);
- if (offset != 1) rep[2] = rep[1];
- rep[1] = rep[0];
- rep[0] = best_off;
- }
- if (litLength==0) offset--;
- }
-
- ZSTD_updatePrice(optStatePtr, litLength, anchor, offset, mlen-MINMATCH);
- ZSTD_storeSeq(seqStorePtr, litLength, anchor, offset, mlen-MINMATCH);
- anchor = ip = ip + mlen;
- } } /* for (cur=0; cur < last_pos; ) */
-
- /* Save reps for next block */
- { int i; for (i=0; i<ZSTD_REP_NUM; i++) seqStorePtr->repToConfirm[i] = rep[i]; }
-
- /* Last Literals */
- { size_t const lastLLSize = iend - anchor;
- memcpy(seqStorePtr->lit, anchor, lastLLSize);
- seqStorePtr->lit += lastLLSize;
- }
-}
-
-
-FORCE_INLINE_TEMPLATE
-void ZSTD_compressBlock_opt_extDict_generic(ZSTD_CCtx* ctx,
- const void* src, size_t srcSize, const int ultra)
-{
- seqStore_t* seqStorePtr = &(ctx->seqStore);
- optState_t* optStatePtr = &(ctx->optState);
- const BYTE* const istart = (const BYTE*)src;
- const BYTE* ip = istart;
- const BYTE* anchor = istart;
- const BYTE* const iend = istart + srcSize;
- const BYTE* const ilimit = iend - 8;
- const BYTE* const base = ctx->base;
- const U32 lowestIndex = ctx->lowLimit;
- const U32 dictLimit = ctx->dictLimit;
- const BYTE* const prefixStart = base + dictLimit;
- const BYTE* const dictBase = ctx->dictBase;
- const BYTE* const dictEnd = dictBase + dictLimit;
-
- const U32 maxSearches = 1U << ctx->appliedParams.cParams.searchLog;
- const U32 sufficient_len = ctx->appliedParams.cParams.targetLength;
- const U32 mls = ctx->appliedParams.cParams.searchLength;
- const U32 minMatch = (ctx->appliedParams.cParams.searchLength == 3) ? 3 : 4;
-
- ZSTD_optimal_t* opt = optStatePtr->priceTable;
- ZSTD_match_t* matches = optStatePtr->matchTable;
- const BYTE* inr;
-
- /* init */
- U32 offset, rep[ZSTD_REP_NUM];
- { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) rep[i]=seqStorePtr->rep[i]; }
-
- ctx->nextToUpdate3 = ctx->nextToUpdate;
- ZSTD_rescaleFreqs(optStatePtr, (const BYTE*)src, srcSize);
- ip += (ip==prefixStart);
-
- /* Match Loop */
- while (ip < ilimit) {
- U32 cur, match_num, last_pos, litlen, price;
- U32 u, mlen, best_mlen, best_off, litLength;
- U32 current = (U32)(ip-base);
- memset(opt, 0, sizeof(ZSTD_optimal_t));
- last_pos = 0;
- opt[0].litlen = (U32)(ip - anchor);
-
- /* check repCode */
- { U32 i, last_i = ZSTD_REP_CHECK + (ip==anchor);
- for (i = (ip==anchor); i<last_i; i++) {
- const S32 repCur = (i==ZSTD_REP_MOVE_OPT) ? (rep[0] - 1) : rep[i];
- const U32 repIndex = (U32)(current - repCur);
- const BYTE* const repBase = repIndex < dictLimit ? dictBase : base;
- const BYTE* const repMatch = repBase + repIndex;
- if ( (repCur > 0 && repCur <= (S32)current)
- && (((U32)((dictLimit-1) - repIndex) >= 3) & (repIndex>lowestIndex)) /* intentional overflow */
- && (ZSTD_readMINMATCH(ip, minMatch) == ZSTD_readMINMATCH(repMatch, minMatch)) ) {
- /* repcode detected we should take it */
- const BYTE* const repEnd = repIndex < dictLimit ? dictEnd : iend;
- mlen = (U32)ZSTD_count_2segments(ip+minMatch, repMatch+minMatch, iend, repEnd, prefixStart) + minMatch;
-
- if (mlen > sufficient_len || mlen >= ZSTD_OPT_NUM) {
- best_mlen = mlen; best_off = i; cur = 0; last_pos = 1;
- goto _storeSequence;
- }
-
- best_off = i - (ip==anchor);
- litlen = opt[0].litlen;
- do {
- price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
- if (mlen > last_pos || price < opt[mlen].price)
- SET_PRICE(mlen, mlen, i, litlen, price); /* note : macro modifies last_pos */
- mlen--;
- } while (mlen >= minMatch);
- } } }
-
- match_num = ZSTD_BtGetAllMatches_selectMLS_extDict(ctx, ip, iend, maxSearches, mls, matches, minMatch); /* first search (depth 0) */
-
- if (!last_pos && !match_num) { ip++; continue; }
-
- { U32 i; for (i=0; i<ZSTD_REP_NUM; i++) opt[0].rep[i] = rep[i]; }
- opt[0].mlen = 1;
-
- if (match_num && (matches[match_num-1].len > sufficient_len || matches[match_num-1].len >= ZSTD_OPT_NUM)) {
- best_mlen = matches[match_num-1].len;
- best_off = matches[match_num-1].off;
- cur = 0;
- last_pos = 1;
- goto _storeSequence;
- }
-
- best_mlen = (last_pos) ? last_pos : minMatch;
-
- /* set prices using matches at position = 0 */
- for (u = 0; u < match_num; u++) {
- mlen = (u>0) ? matches[u-1].len+1 : best_mlen;
- best_mlen = matches[u].len;
- litlen = opt[0].litlen;
- while (mlen <= best_mlen) {
- price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
- if (mlen > last_pos || price < opt[mlen].price)
- SET_PRICE(mlen, mlen, matches[u].off, litlen, price);
- mlen++;
- } }
-
- if (last_pos < minMatch) {
- ip++; continue;
- }
-
- /* check further positions */
- for (cur = 1; cur <= last_pos; cur++) {
- inr = ip + cur;
-
- if (opt[cur-1].mlen == 1) {
- litlen = opt[cur-1].litlen + 1;
- if (cur > litlen) {
- price = opt[cur - litlen].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-litlen);
- } else
- price = ZSTD_getLiteralPrice(optStatePtr, litlen, anchor);
- } else {
- litlen = 1;
- price = opt[cur - 1].price + ZSTD_getLiteralPrice(optStatePtr, litlen, inr-1);
- }
-
- if (cur > last_pos || price <= opt[cur].price)
- SET_PRICE(cur, 1, 0, litlen, price);
-
- if (cur == last_pos) break;
-
- if (inr > ilimit) /* last match must start at a minimum distance of 8 from oend */
- continue;
-
- mlen = opt[cur].mlen;
- if (opt[cur].off > ZSTD_REP_MOVE_OPT) {
- opt[cur].rep[2] = opt[cur-mlen].rep[1];
- opt[cur].rep[1] = opt[cur-mlen].rep[0];
- opt[cur].rep[0] = opt[cur].off - ZSTD_REP_MOVE_OPT;
- } else {
- opt[cur].rep[2] = (opt[cur].off > 1) ? opt[cur-mlen].rep[1] : opt[cur-mlen].rep[2];
- opt[cur].rep[1] = (opt[cur].off > 0) ? opt[cur-mlen].rep[0] : opt[cur-mlen].rep[1];
- opt[cur].rep[0] = ((opt[cur].off==ZSTD_REP_MOVE_OPT) && (mlen != 1)) ? (opt[cur-mlen].rep[0] - 1) : (opt[cur-mlen].rep[opt[cur].off]);
- }
-
- best_mlen = minMatch;
- { U32 i, last_i = ZSTD_REP_CHECK + (mlen != 1);
- for (i = (mlen != 1); i<last_i; i++) {
- const S32 repCur = (i==ZSTD_REP_MOVE_OPT) ? (opt[cur].rep[0] - 1) : opt[cur].rep[i];
- const U32 repIndex = (U32)(current+cur - repCur);
- const BYTE* const repBase = repIndex < dictLimit ? dictBase : base;
- const BYTE* const repMatch = repBase + repIndex;
- if ( (repCur > 0 && repCur <= (S32)(current+cur))
- && (((U32)((dictLimit-1) - repIndex) >= 3) & (repIndex>lowestIndex)) /* intentional overflow */
- && (ZSTD_readMINMATCH(inr, minMatch) == ZSTD_readMINMATCH(repMatch, minMatch)) ) {
- /* repcode detected */
- const BYTE* const repEnd = repIndex < dictLimit ? dictEnd : iend;
- mlen = (U32)ZSTD_count_2segments(inr+minMatch, repMatch+minMatch, iend, repEnd, prefixStart) + minMatch;
-
- if (mlen > sufficient_len || cur + mlen >= ZSTD_OPT_NUM) {
- best_mlen = mlen; best_off = i; last_pos = cur + 1;
- goto _storeSequence;
- }
-
- best_off = i - (opt[cur].mlen != 1);
- if (mlen > best_mlen) best_mlen = mlen;
-
- do {
- if (opt[cur].mlen == 1) {
- litlen = opt[cur].litlen;
- if (cur > litlen) {
- price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, inr-litlen, best_off, mlen - MINMATCH, ultra);
- } else
- price = ZSTD_getPrice(optStatePtr, litlen, anchor, best_off, mlen - MINMATCH, ultra);
- } else {
- litlen = 0;
- price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, best_off, mlen - MINMATCH, ultra);
- }
-
- if (cur + mlen > last_pos || price <= opt[cur + mlen].price)
- SET_PRICE(cur + mlen, mlen, i, litlen, price);
- mlen--;
- } while (mlen >= minMatch);
- } } }
-
- match_num = ZSTD_BtGetAllMatches_selectMLS_extDict(ctx, inr, iend, maxSearches, mls, matches, minMatch);
-
- if (match_num > 0 && (matches[match_num-1].len > sufficient_len || cur + matches[match_num-1].len >= ZSTD_OPT_NUM)) {
- best_mlen = matches[match_num-1].len;
- best_off = matches[match_num-1].off;
- last_pos = cur + 1;
- goto _storeSequence;
- }
-
- /* set prices using matches at position = cur */
- for (u = 0; u < match_num; u++) {
- mlen = (u>0) ? matches[u-1].len+1 : best_mlen;
- best_mlen = matches[u].len;
-
- while (mlen <= best_mlen) {
- if (opt[cur].mlen == 1) {
- litlen = opt[cur].litlen;
- if (cur > litlen)
- price = opt[cur - litlen].price + ZSTD_getPrice(optStatePtr, litlen, ip+cur-litlen, matches[u].off-1, mlen - MINMATCH, ultra);
- else
- price = ZSTD_getPrice(optStatePtr, litlen, anchor, matches[u].off-1, mlen - MINMATCH, ultra);
- } else {
- litlen = 0;
- price = opt[cur].price + ZSTD_getPrice(optStatePtr, 0, NULL, matches[u].off-1, mlen - MINMATCH, ultra);
- }
-
- if (cur + mlen > last_pos || (price < opt[cur + mlen].price))
- SET_PRICE(cur + mlen, mlen, matches[u].off, litlen, price);
-
- mlen++;
- } } } /* for (cur = 1; cur <= last_pos; cur++) */
-
- best_mlen = opt[last_pos].mlen;
- best_off = opt[last_pos].off;
- cur = last_pos - best_mlen;
-
- /* store sequence */
-_storeSequence: /* cur, last_pos, best_mlen, best_off have to be set */
- opt[0].mlen = 1;
-
- while (1) {
- mlen = opt[cur].mlen;
- offset = opt[cur].off;
- opt[cur].mlen = best_mlen;
- opt[cur].off = best_off;
- best_mlen = mlen;
- best_off = offset;
- if (mlen > cur) break;
- cur -= mlen;
- }
-
- for (u = 0; u <= last_pos; ) {
- u += opt[u].mlen;
- }
-
- for (cur=0; cur < last_pos; ) {
- mlen = opt[cur].mlen;
- if (mlen == 1) { ip++; cur++; continue; }
- offset = opt[cur].off;
- cur += mlen;
- litLength = (U32)(ip - anchor);
-
- if (offset > ZSTD_REP_MOVE_OPT) {
- rep[2] = rep[1];
- rep[1] = rep[0];
- rep[0] = offset - ZSTD_REP_MOVE_OPT;
- offset--;
- } else {
- if (offset != 0) {
- best_off = (offset==ZSTD_REP_MOVE_OPT) ? (rep[0] - 1) : (rep[offset]);
- if (offset != 1) rep[2] = rep[1];
- rep[1] = rep[0];
- rep[0] = best_off;
- }
-
- if (litLength==0) offset--;
- }
-
- ZSTD_updatePrice(optStatePtr, litLength, anchor, offset, mlen-MINMATCH);
- ZSTD_storeSeq(seqStorePtr, litLength, anchor, offset, mlen-MINMATCH);
- anchor = ip = ip + mlen;
- } } /* for (cur=0; cur < last_pos; ) */
-
- /* Save reps for next block */
- { int i; for (i=0; i<ZSTD_REP_NUM; i++) seqStorePtr->repToConfirm[i] = rep[i]; }
-
- /* Last Literals */
- { size_t lastLLSize = iend - anchor;
- memcpy(seqStorePtr->lit, anchor, lastLLSize);
- seqStorePtr->lit += lastLLSize;
- }
+#if defined (__cplusplus)
}
+#endif
-#endif /* ZSTD_OPT_H_91842398743 */
+#endif /* ZSTD_OPT_H */
diff --git a/thirdparty/zstd/compress/zstdmt_compress.c b/thirdparty/zstd/compress/zstdmt_compress.c
index 8564bc4392..7831cd3bd8 100644
--- a/thirdparty/zstd/compress/zstdmt_compress.c
+++ b/thirdparty/zstd/compress/zstdmt_compress.c
@@ -5,11 +5,12 @@
* This source code is licensed under both the BSD-style license (found in the
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
* in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
*/
/* ====== Tuning parameters ====== */
-#define ZSTDMT_NBTHREADS_MAX 256
+#define ZSTDMT_NBTHREADS_MAX 200
#define ZSTDMT_OVERLAPLOG_DEFAULT 6
@@ -52,22 +53,24 @@ static unsigned long long GetCurrentClockTimeMicroseconds(void)
}
#define MUTEX_WAIT_TIME_DLEVEL 6
-#define PTHREAD_MUTEX_LOCK(mutex) { \
- if (ZSTD_DEBUG>=MUTEX_WAIT_TIME_DLEVEL) { \
+#define ZSTD_PTHREAD_MUTEX_LOCK(mutex) { \
+ if (ZSTD_DEBUG >= MUTEX_WAIT_TIME_DLEVEL) { \
unsigned long long const beforeTime = GetCurrentClockTimeMicroseconds(); \
- pthread_mutex_lock(mutex); \
+ ZSTD_pthread_mutex_lock(mutex); \
{ unsigned long long const afterTime = GetCurrentClockTimeMicroseconds(); \
unsigned long long const elapsedTime = (afterTime-beforeTime); \
if (elapsedTime > 1000) { /* or whatever threshold you like; I'm using 1 millisecond here */ \
DEBUGLOG(MUTEX_WAIT_TIME_DLEVEL, "Thread took %llu microseconds to acquire mutex %s \n", \
elapsedTime, #mutex); \
} } \
- } else pthread_mutex_lock(mutex); \
+ } else { \
+ ZSTD_pthread_mutex_lock(mutex); \
+ } \
}
#else
-# define PTHREAD_MUTEX_LOCK(m) pthread_mutex_lock(m)
+# define ZSTD_PTHREAD_MUTEX_LOCK(m) ZSTD_pthread_mutex_lock(m)
# define DEBUG_PRINTHEX(l,p,n) {}
#endif
@@ -84,7 +87,7 @@ typedef struct buffer_s {
static const buffer_t g_nullBuffer = { NULL, 0 };
typedef struct ZSTDMT_bufferPool_s {
- pthread_mutex_t poolMutex;
+ ZSTD_pthread_mutex_t poolMutex;
size_t bufferSize;
unsigned totalBuffers;
unsigned nbBuffers;
@@ -98,7 +101,7 @@ static ZSTDMT_bufferPool* ZSTDMT_createBufferPool(unsigned nbThreads, ZSTD_custo
ZSTDMT_bufferPool* const bufPool = (ZSTDMT_bufferPool*)ZSTD_calloc(
sizeof(ZSTDMT_bufferPool) + (maxNbBuffers-1) * sizeof(buffer_t), cMem);
if (bufPool==NULL) return NULL;
- if (pthread_mutex_init(&bufPool->poolMutex, NULL)) {
+ if (ZSTD_pthread_mutex_init(&bufPool->poolMutex, NULL)) {
ZSTD_free(bufPool, cMem);
return NULL;
}
@@ -112,10 +115,13 @@ static ZSTDMT_bufferPool* ZSTDMT_createBufferPool(unsigned nbThreads, ZSTD_custo
static void ZSTDMT_freeBufferPool(ZSTDMT_bufferPool* bufPool)
{
unsigned u;
+ DEBUGLOG(3, "ZSTDMT_freeBufferPool (address:%08X)", (U32)(size_t)bufPool);
if (!bufPool) return; /* compatibility with free on NULL */
- for (u=0; u<bufPool->totalBuffers; u++)
+ for (u=0; u<bufPool->totalBuffers; u++) {
+ DEBUGLOG(4, "free buffer %2u (address:%08X)", u, (U32)(size_t)bufPool->bTable[u].start);
ZSTD_free(bufPool->bTable[u].start, bufPool->cMem);
- pthread_mutex_destroy(&bufPool->poolMutex);
+ }
+ ZSTD_pthread_mutex_destroy(&bufPool->poolMutex);
ZSTD_free(bufPool, bufPool->cMem);
}
@@ -126,10 +132,10 @@ static size_t ZSTDMT_sizeof_bufferPool(ZSTDMT_bufferPool* bufPool)
+ (bufPool->totalBuffers - 1) * sizeof(buffer_t);
unsigned u;
size_t totalBufferSize = 0;
- pthread_mutex_lock(&bufPool->poolMutex);
+ ZSTD_pthread_mutex_lock(&bufPool->poolMutex);
for (u=0; u<bufPool->totalBuffers; u++)
totalBufferSize += bufPool->bTable[u].size;
- pthread_mutex_unlock(&bufPool->poolMutex);
+ ZSTD_pthread_mutex_unlock(&bufPool->poolMutex);
return poolSize + totalBufferSize;
}
@@ -145,20 +151,21 @@ static buffer_t ZSTDMT_getBuffer(ZSTDMT_bufferPool* bufPool)
{
size_t const bSize = bufPool->bufferSize;
DEBUGLOG(5, "ZSTDMT_getBuffer");
- pthread_mutex_lock(&bufPool->poolMutex);
+ ZSTD_pthread_mutex_lock(&bufPool->poolMutex);
if (bufPool->nbBuffers) { /* try to use an existing buffer */
buffer_t const buf = bufPool->bTable[--(bufPool->nbBuffers)];
size_t const availBufferSize = buf.size;
+ bufPool->bTable[bufPool->nbBuffers] = g_nullBuffer;
if ((availBufferSize >= bSize) & (availBufferSize <= 10*bSize)) {
/* large enough, but not too much */
- pthread_mutex_unlock(&bufPool->poolMutex);
+ ZSTD_pthread_mutex_unlock(&bufPool->poolMutex);
return buf;
}
/* size conditions not respected : scratch this buffer, create new one */
DEBUGLOG(5, "existing buffer does not meet size conditions => freeing");
ZSTD_free(buf.start, bufPool->cMem);
}
- pthread_mutex_unlock(&bufPool->poolMutex);
+ ZSTD_pthread_mutex_unlock(&bufPool->poolMutex);
/* create new buffer */
DEBUGLOG(5, "create a new buffer");
{ buffer_t buffer;
@@ -174,24 +181,38 @@ static void ZSTDMT_releaseBuffer(ZSTDMT_bufferPool* bufPool, buffer_t buf)
{
if (buf.start == NULL) return; /* compatible with release on NULL */
DEBUGLOG(5, "ZSTDMT_releaseBuffer");
- pthread_mutex_lock(&bufPool->poolMutex);
+ ZSTD_pthread_mutex_lock(&bufPool->poolMutex);
if (bufPool->nbBuffers < bufPool->totalBuffers) {
bufPool->bTable[bufPool->nbBuffers++] = buf; /* stored for later use */
- pthread_mutex_unlock(&bufPool->poolMutex);
+ ZSTD_pthread_mutex_unlock(&bufPool->poolMutex);
return;
}
- pthread_mutex_unlock(&bufPool->poolMutex);
+ ZSTD_pthread_mutex_unlock(&bufPool->poolMutex);
/* Reached bufferPool capacity (should not happen) */
DEBUGLOG(5, "buffer pool capacity reached => freeing ");
ZSTD_free(buf.start, bufPool->cMem);
}
+/* Sets parameters relevant to the compression job, initializing others to
+ * default values. Notably, nbThreads should probably be zero. */
+static ZSTD_CCtx_params ZSTDMT_makeJobCCtxParams(ZSTD_CCtx_params const params)
+{
+ ZSTD_CCtx_params jobParams;
+ memset(&jobParams, 0, sizeof(jobParams));
+
+ jobParams.cParams = params.cParams;
+ jobParams.fParams = params.fParams;
+ jobParams.compressionLevel = params.compressionLevel;
+
+ jobParams.ldmParams = params.ldmParams;
+ return jobParams;
+}
/* ===== CCtx Pool ===== */
/* a single CCtx Pool can be invoked from multiple threads in parallel */
typedef struct {
- pthread_mutex_t poolMutex;
+ ZSTD_pthread_mutex_t poolMutex;
unsigned totalCCtx;
unsigned availCCtx;
ZSTD_customMem cMem;
@@ -204,7 +225,7 @@ static void ZSTDMT_freeCCtxPool(ZSTDMT_CCtxPool* pool)
unsigned u;
for (u=0; u<pool->totalCCtx; u++)
ZSTD_freeCCtx(pool->cctx[u]); /* note : compatible with free on NULL */
- pthread_mutex_destroy(&pool->poolMutex);
+ ZSTD_pthread_mutex_destroy(&pool->poolMutex);
ZSTD_free(pool, pool->cMem);
}
@@ -216,7 +237,7 @@ static ZSTDMT_CCtxPool* ZSTDMT_createCCtxPool(unsigned nbThreads,
ZSTDMT_CCtxPool* const cctxPool = (ZSTDMT_CCtxPool*) ZSTD_calloc(
sizeof(ZSTDMT_CCtxPool) + (nbThreads-1)*sizeof(ZSTD_CCtx*), cMem);
if (!cctxPool) return NULL;
- if (pthread_mutex_init(&cctxPool->poolMutex, NULL)) {
+ if (ZSTD_pthread_mutex_init(&cctxPool->poolMutex, NULL)) {
ZSTD_free(cctxPool, cMem);
return NULL;
}
@@ -232,7 +253,7 @@ static ZSTDMT_CCtxPool* ZSTDMT_createCCtxPool(unsigned nbThreads,
/* only works during initialization phase, not during compression */
static size_t ZSTDMT_sizeof_CCtxPool(ZSTDMT_CCtxPool* cctxPool)
{
- pthread_mutex_lock(&cctxPool->poolMutex);
+ ZSTD_pthread_mutex_lock(&cctxPool->poolMutex);
{ unsigned const nbThreads = cctxPool->totalCCtx;
size_t const poolSize = sizeof(*cctxPool)
+ (nbThreads-1)*sizeof(ZSTD_CCtx*);
@@ -241,7 +262,7 @@ static size_t ZSTDMT_sizeof_CCtxPool(ZSTDMT_CCtxPool* cctxPool)
for (u=0; u<nbThreads; u++) {
totalCCtxSize += ZSTD_sizeof_CCtx(cctxPool->cctx[u]);
}
- pthread_mutex_unlock(&cctxPool->poolMutex);
+ ZSTD_pthread_mutex_unlock(&cctxPool->poolMutex);
return poolSize + totalCCtxSize;
}
}
@@ -249,14 +270,14 @@ static size_t ZSTDMT_sizeof_CCtxPool(ZSTDMT_CCtxPool* cctxPool)
static ZSTD_CCtx* ZSTDMT_getCCtx(ZSTDMT_CCtxPool* cctxPool)
{
DEBUGLOG(5, "ZSTDMT_getCCtx");
- pthread_mutex_lock(&cctxPool->poolMutex);
+ ZSTD_pthread_mutex_lock(&cctxPool->poolMutex);
if (cctxPool->availCCtx) {
cctxPool->availCCtx--;
{ ZSTD_CCtx* const cctx = cctxPool->cctx[cctxPool->availCCtx];
- pthread_mutex_unlock(&cctxPool->poolMutex);
+ ZSTD_pthread_mutex_unlock(&cctxPool->poolMutex);
return cctx;
} }
- pthread_mutex_unlock(&cctxPool->poolMutex);
+ ZSTD_pthread_mutex_unlock(&cctxPool->poolMutex);
DEBUGLOG(5, "create one more CCtx");
return ZSTD_createCCtx_advanced(cctxPool->cMem); /* note : can be NULL, when creation fails ! */
}
@@ -264,7 +285,7 @@ static ZSTD_CCtx* ZSTDMT_getCCtx(ZSTDMT_CCtxPool* cctxPool)
static void ZSTDMT_releaseCCtx(ZSTDMT_CCtxPool* pool, ZSTD_CCtx* cctx)
{
if (cctx==NULL) return; /* compatibility with release on NULL */
- pthread_mutex_lock(&pool->poolMutex);
+ ZSTD_pthread_mutex_lock(&pool->poolMutex);
if (pool->availCCtx < pool->totalCCtx)
pool->cctx[pool->availCCtx++] = cctx;
else {
@@ -272,7 +293,7 @@ static void ZSTDMT_releaseCCtx(ZSTDMT_CCtxPool* pool, ZSTD_CCtx* cctx)
DEBUGLOG(5, "CCtx pool overflow : free cctx");
ZSTD_freeCCtx(cctx);
}
- pthread_mutex_unlock(&pool->poolMutex);
+ ZSTD_pthread_mutex_unlock(&pool->poolMutex);
}
@@ -290,9 +311,9 @@ typedef struct {
unsigned lastChunk;
unsigned jobCompleted;
unsigned jobScanned;
- pthread_mutex_t* jobCompleted_mutex;
- pthread_cond_t* jobCompleted_cond;
- ZSTD_parameters params;
+ ZSTD_pthread_mutex_t* jobCompleted_mutex;
+ ZSTD_pthread_cond_t* jobCompleted_cond;
+ ZSTD_CCtx_params params;
const ZSTD_CDict* cdict;
ZSTDMT_CCtxPool* cctxPool;
ZSTDMT_bufferPool* bufPool;
@@ -329,10 +350,15 @@ void ZSTDMT_compressChunk(void* jobDescription)
if (ZSTD_isError(initError)) { job->cSize = initError; goto _endJob; }
} else { /* srcStart points at reloaded section */
if (!job->firstChunk) job->params.fParams.contentSizeFlag = 0; /* ensure no srcSize control */
- { size_t const dictModeError = ZSTD_setCCtxParameter(cctx, ZSTD_p_forceRawDict, 1); /* Force loading dictionary in "content-only" mode (no header analysis) */
- size_t const initError = ZSTD_compressBegin_advanced(cctx, job->srcStart, job->dictSize, job->params, job->fullFrameSize);
- if (ZSTD_isError(initError) || ZSTD_isError(dictModeError)) { job->cSize = initError; goto _endJob; }
- ZSTD_setCCtxParameter(cctx, ZSTD_p_forceWindow, 1);
+ { ZSTD_CCtx_params jobParams = job->params;
+ size_t const forceWindowError =
+ ZSTD_CCtxParam_setParameter(&jobParams, ZSTD_p_forceMaxWindow, !job->firstChunk);
+ /* Force loading dictionary in "content-only" mode (no header analysis) */
+ size_t const initError = ZSTD_compressBegin_advanced_internal(cctx, job->srcStart, job->dictSize, ZSTD_dm_rawContent, jobParams, job->fullFrameSize);
+ if (ZSTD_isError(initError) || ZSTD_isError(forceWindowError)) {
+ job->cSize = initError;
+ goto _endJob;
+ }
} }
if (!job->firstChunk) { /* flush and overwrite frame header when it's not first segment */
size_t const hSize = ZSTD_compressContinue(cctx, dstBuff.start, dstBuff.size, src, 0);
@@ -353,11 +379,11 @@ _endJob:
ZSTDMT_releaseCCtx(job->cctxPool, cctx);
ZSTDMT_releaseBuffer(job->bufPool, job->src);
job->src = g_nullBuffer; job->srcStart = NULL;
- PTHREAD_MUTEX_LOCK(job->jobCompleted_mutex);
+ ZSTD_PTHREAD_MUTEX_LOCK(job->jobCompleted_mutex);
job->jobCompleted = 1;
job->jobScanned = 0;
- pthread_cond_signal(job->jobCompleted_cond);
- pthread_mutex_unlock(job->jobCompleted_mutex);
+ ZSTD_pthread_cond_signal(job->jobCompleted_cond);
+ ZSTD_pthread_mutex_unlock(job->jobCompleted_mutex);
}
@@ -375,24 +401,21 @@ struct ZSTDMT_CCtx_s {
ZSTDMT_jobDescription* jobs;
ZSTDMT_bufferPool* bufPool;
ZSTDMT_CCtxPool* cctxPool;
- pthread_mutex_t jobCompleted_mutex;
- pthread_cond_t jobCompleted_cond;
+ ZSTD_pthread_mutex_t jobCompleted_mutex;
+ ZSTD_pthread_cond_t jobCompleted_cond;
size_t targetSectionSize;
size_t inBuffSize;
size_t dictSize;
size_t targetDictSize;
inBuff_t inBuff;
- ZSTD_parameters params;
+ ZSTD_CCtx_params params;
XXH64_state_t xxhState;
- unsigned nbThreads;
unsigned jobIDMask;
unsigned doneJobID;
unsigned nextJobID;
unsigned frameEnded;
unsigned allJobsCompleted;
- unsigned overlapLog;
unsigned long long frameContentSize;
- size_t sectionSize;
ZSTD_customMem cMem;
ZSTD_CDict* cdictLocal;
const ZSTD_CDict* cdict;
@@ -407,6 +430,15 @@ static ZSTDMT_jobDescription* ZSTDMT_allocJobsTable(U32* nbJobsPtr, ZSTD_customM
nbJobs * sizeof(ZSTDMT_jobDescription), cMem);
}
+/* Internal only */
+size_t ZSTDMT_initializeCCtxParameters(ZSTD_CCtx_params* params, unsigned nbThreads)
+{
+ params->nbThreads = nbThreads;
+ params->overlapSizeLog = ZSTDMT_OVERLAPLOG_DEFAULT;
+ params->jobSize = 0;
+ return 0;
+}
+
ZSTDMT_CCtx* ZSTDMT_createCCtx_advanced(unsigned nbThreads, ZSTD_customMem cMem)
{
ZSTDMT_CCtx* mtctx;
@@ -421,12 +453,10 @@ ZSTDMT_CCtx* ZSTDMT_createCCtx_advanced(unsigned nbThreads, ZSTD_customMem cMem)
mtctx = (ZSTDMT_CCtx*) ZSTD_calloc(sizeof(ZSTDMT_CCtx), cMem);
if (!mtctx) return NULL;
+ ZSTDMT_initializeCCtxParameters(&mtctx->params, nbThreads);
mtctx->cMem = cMem;
- mtctx->nbThreads = nbThreads;
mtctx->allJobsCompleted = 1;
- mtctx->sectionSize = 0;
- mtctx->overlapLog = ZSTDMT_OVERLAPLOG_DEFAULT;
- mtctx->factory = POOL_create(nbThreads, 0);
+ mtctx->factory = POOL_create_advanced(nbThreads, 0, cMem);
mtctx->jobs = ZSTDMT_allocJobsTable(&nbJobs, cMem);
mtctx->jobIDMask = nbJobs - 1;
mtctx->bufPool = ZSTDMT_createBufferPool(nbThreads, cMem);
@@ -435,11 +465,11 @@ ZSTDMT_CCtx* ZSTDMT_createCCtx_advanced(unsigned nbThreads, ZSTD_customMem cMem)
ZSTDMT_freeCCtx(mtctx);
return NULL;
}
- if (pthread_mutex_init(&mtctx->jobCompleted_mutex, NULL)) {
+ if (ZSTD_pthread_mutex_init(&mtctx->jobCompleted_mutex, NULL)) {
ZSTDMT_freeCCtx(mtctx);
return NULL;
}
- if (pthread_cond_init(&mtctx->jobCompleted_cond, NULL)) {
+ if (ZSTD_pthread_cond_init(&mtctx->jobCompleted_cond, NULL)) {
ZSTDMT_freeCCtx(mtctx);
return NULL;
}
@@ -459,28 +489,46 @@ static void ZSTDMT_releaseAllJobResources(ZSTDMT_CCtx* mtctx)
unsigned jobID;
DEBUGLOG(3, "ZSTDMT_releaseAllJobResources");
for (jobID=0; jobID <= mtctx->jobIDMask; jobID++) {
+ DEBUGLOG(4, "job%02u: release dst address %08X", jobID, (U32)(size_t)mtctx->jobs[jobID].dstBuff.start);
ZSTDMT_releaseBuffer(mtctx->bufPool, mtctx->jobs[jobID].dstBuff);
mtctx->jobs[jobID].dstBuff = g_nullBuffer;
+ DEBUGLOG(4, "job%02u: release src address %08X", jobID, (U32)(size_t)mtctx->jobs[jobID].src.start);
ZSTDMT_releaseBuffer(mtctx->bufPool, mtctx->jobs[jobID].src);
mtctx->jobs[jobID].src = g_nullBuffer;
}
memset(mtctx->jobs, 0, (mtctx->jobIDMask+1)*sizeof(ZSTDMT_jobDescription));
+ DEBUGLOG(4, "input: release address %08X", (U32)(size_t)mtctx->inBuff.buffer.start);
ZSTDMT_releaseBuffer(mtctx->bufPool, mtctx->inBuff.buffer);
mtctx->inBuff.buffer = g_nullBuffer;
mtctx->allJobsCompleted = 1;
}
+static void ZSTDMT_waitForAllJobsCompleted(ZSTDMT_CCtx* zcs)
+{
+ DEBUGLOG(4, "ZSTDMT_waitForAllJobsCompleted");
+ while (zcs->doneJobID < zcs->nextJobID) {
+ unsigned const jobID = zcs->doneJobID & zcs->jobIDMask;
+ ZSTD_PTHREAD_MUTEX_LOCK(&zcs->jobCompleted_mutex);
+ while (zcs->jobs[jobID].jobCompleted==0) {
+ DEBUGLOG(5, "waiting for jobCompleted signal from chunk %u", zcs->doneJobID); /* we want to block when waiting for data to flush */
+ ZSTD_pthread_cond_wait(&zcs->jobCompleted_cond, &zcs->jobCompleted_mutex);
+ }
+ ZSTD_pthread_mutex_unlock(&zcs->jobCompleted_mutex);
+ zcs->doneJobID++;
+ }
+}
+
size_t ZSTDMT_freeCCtx(ZSTDMT_CCtx* mtctx)
{
if (mtctx==NULL) return 0; /* compatible with free on NULL */
- POOL_free(mtctx->factory);
- if (!mtctx->allJobsCompleted) ZSTDMT_releaseAllJobResources(mtctx); /* stop workers first */
- ZSTDMT_freeBufferPool(mtctx->bufPool); /* release job resources into pools first */
+ POOL_free(mtctx->factory); /* stop and free worker threads */
+ ZSTDMT_releaseAllJobResources(mtctx); /* release job resources into pools first */
ZSTD_free(mtctx->jobs, mtctx->cMem);
+ ZSTDMT_freeBufferPool(mtctx->bufPool);
ZSTDMT_freeCCtxPool(mtctx->cctxPool);
ZSTD_freeCDict(mtctx->cdictLocal);
- pthread_mutex_destroy(&mtctx->jobCompleted_mutex);
- pthread_cond_destroy(&mtctx->jobCompleted_cond);
+ ZSTD_pthread_mutex_destroy(&mtctx->jobCompleted_mutex);
+ ZSTD_pthread_cond_destroy(&mtctx->jobCompleted_cond);
ZSTD_free(mtctx, mtctx->cMem);
return 0;
}
@@ -496,22 +544,35 @@ size_t ZSTDMT_sizeof_CCtx(ZSTDMT_CCtx* mtctx)
+ ZSTD_sizeof_CDict(mtctx->cdictLocal);
}
-size_t ZSTDMT_setMTCtxParameter(ZSTDMT_CCtx* mtctx, ZSDTMT_parameter parameter, unsigned value)
-{
+/* Internal only */
+size_t ZSTDMT_CCtxParam_setMTCtxParameter(
+ ZSTD_CCtx_params* params, ZSTDMT_parameter parameter, unsigned value) {
switch(parameter)
{
case ZSTDMT_p_sectionSize :
- mtctx->sectionSize = value;
+ params->jobSize = value;
return 0;
case ZSTDMT_p_overlapSectionLog :
- DEBUGLOG(5, "ZSTDMT_p_overlapSectionLog : %u", value);
- mtctx->overlapLog = (value >= 9) ? 9 : value;
+ DEBUGLOG(4, "ZSTDMT_p_overlapSectionLog : %u", value);
+ params->overlapSizeLog = (value >= 9) ? 9 : value;
return 0;
default :
return ERROR(parameter_unsupported);
}
}
+size_t ZSTDMT_setMTCtxParameter(ZSTDMT_CCtx* mtctx, ZSTDMT_parameter parameter, unsigned value)
+{
+ switch(parameter)
+ {
+ case ZSTDMT_p_sectionSize :
+ return ZSTDMT_CCtxParam_setMTCtxParameter(&mtctx->params, parameter, value);
+ case ZSTDMT_p_overlapSectionLog :
+ return ZSTDMT_CCtxParam_setMTCtxParameter(&mtctx->params, parameter, value);
+ default :
+ return ERROR(parameter_unsupported);
+ }
+}
/* ------------------------------------------ */
/* ===== Multi-threaded compression ===== */
@@ -528,17 +589,17 @@ static unsigned computeNbChunks(size_t srcSize, unsigned windowLog, unsigned nbT
return (multiplier>1) ? nbChunksLarge : nbChunksSmall;
}
-
-size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
- void* dst, size_t dstCapacity,
- const void* src, size_t srcSize,
- const ZSTD_CDict* cdict,
- ZSTD_parameters const params,
- unsigned overlapLog)
+static size_t ZSTDMT_compress_advanced_internal(
+ ZSTDMT_CCtx* mtctx,
+ void* dst, size_t dstCapacity,
+ const void* src, size_t srcSize,
+ const ZSTD_CDict* cdict,
+ ZSTD_CCtx_params const params)
{
- unsigned const overlapRLog = (overlapLog>9) ? 0 : 9-overlapLog;
+ ZSTD_CCtx_params const jobParams = ZSTDMT_makeJobCCtxParams(params);
+ unsigned const overlapRLog = (params.overlapSizeLog>9) ? 0 : 9-params.overlapSizeLog;
size_t const overlapSize = (overlapRLog>=9) ? 0 : (size_t)1 << (params.cParams.windowLog - overlapRLog);
- unsigned nbChunks = computeNbChunks(srcSize, params.cParams.windowLog, mtctx->nbThreads);
+ unsigned nbChunks = computeNbChunks(srcSize, params.cParams.windowLog, params.nbThreads);
size_t const proposedChunkSize = (srcSize + (nbChunks-1)) / nbChunks;
size_t const avgChunkSize = ((proposedChunkSize & 0x1FFFF) < 0x7FFF) ? proposedChunkSize + 0xFFFF : proposedChunkSize; /* avoid too small last block */
const char* const srcStart = (const char*)src;
@@ -546,12 +607,14 @@ size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
unsigned const compressWithinDst = (dstCapacity >= ZSTD_compressBound(srcSize)) ? nbChunks : (unsigned)(dstCapacity / ZSTD_compressBound(avgChunkSize)); /* presumes avgChunkSize >= 256 KB, which should be the case */
size_t frameStartPos = 0, dstBufferPos = 0;
XXH64_state_t xxh64;
+ assert(jobParams.nbThreads == 0);
+ assert(mtctx->cctxPool->totalCCtx == params.nbThreads);
DEBUGLOG(4, "nbChunks : %2u (chunkSize : %u bytes) ", nbChunks, (U32)avgChunkSize);
if (nbChunks==1) { /* fallback to single-thread mode */
ZSTD_CCtx* const cctx = mtctx->cctxPool->cctx[0];
- if (cdict) return ZSTD_compress_usingCDict_advanced(cctx, dst, dstCapacity, src, srcSize, cdict, params.fParams);
- return ZSTD_compress_advanced(cctx, dst, dstCapacity, src, srcSize, NULL, 0, params);
+ if (cdict) return ZSTD_compress_usingCDict_advanced(cctx, dst, dstCapacity, src, srcSize, cdict, jobParams.fParams);
+ return ZSTD_compress_advanced_internal(cctx, dst, dstCapacity, src, srcSize, NULL, 0, jobParams);
}
assert(avgChunkSize >= 256 KB); /* condition for ZSTD_compressBound(A) + ZSTD_compressBound(B) <= ZSTD_compressBound(A+B), which is required for compressWithinDst */
ZSTDMT_setBufferSize(mtctx->bufPool, ZSTD_compressBound(avgChunkSize) );
@@ -580,7 +643,7 @@ size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
mtctx->jobs[u].srcSize = chunkSize;
mtctx->jobs[u].cdict = mtctx->nextJobID==0 ? cdict : NULL;
mtctx->jobs[u].fullFrameSize = srcSize;
- mtctx->jobs[u].params = params;
+ mtctx->jobs[u].params = jobParams;
/* do not calculate checksum within sections, but write it in header for first section */
if (u!=0) mtctx->jobs[u].params.fParams.checksumFlag = 0;
mtctx->jobs[u].dstBuff = dstBuffer;
@@ -610,12 +673,12 @@ size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
unsigned chunkID;
for (chunkID=0; chunkID<nbChunks; chunkID++) {
DEBUGLOG(5, "waiting for chunk %u ", chunkID);
- PTHREAD_MUTEX_LOCK(&mtctx->jobCompleted_mutex);
+ ZSTD_PTHREAD_MUTEX_LOCK(&mtctx->jobCompleted_mutex);
while (mtctx->jobs[chunkID].jobCompleted==0) {
DEBUGLOG(5, "waiting for jobCompleted signal from chunk %u", chunkID);
- pthread_cond_wait(&mtctx->jobCompleted_cond, &mtctx->jobCompleted_mutex);
+ ZSTD_pthread_cond_wait(&mtctx->jobCompleted_cond, &mtctx->jobCompleted_mutex);
}
- pthread_mutex_unlock(&mtctx->jobCompleted_mutex);
+ ZSTD_pthread_mutex_unlock(&mtctx->jobCompleted_mutex);
DEBUGLOG(5, "ready to write chunk %u ", chunkID);
mtctx->jobs[chunkID].srcStart = NULL;
@@ -628,9 +691,8 @@ size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
if (chunkID >= compressWithinDst) { /* chunk compressed into its own buffer, which must be released */
DEBUGLOG(5, "releasing buffer %u>=%u", chunkID, compressWithinDst);
ZSTDMT_releaseBuffer(mtctx->bufPool, mtctx->jobs[chunkID].dstBuff);
- }
- mtctx->jobs[chunkID].dstBuff = g_nullBuffer;
- }
+ } }
+ mtctx->jobs[chunkID].dstBuff = g_nullBuffer;
dstPos += cSize ;
}
} /* for (chunkID=0; chunkID<nbChunks; chunkID++) */
@@ -651,6 +713,23 @@ size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
}
}
+size_t ZSTDMT_compress_advanced(ZSTDMT_CCtx* mtctx,
+ void* dst, size_t dstCapacity,
+ const void* src, size_t srcSize,
+ const ZSTD_CDict* cdict,
+ ZSTD_parameters const params,
+ unsigned overlapLog)
+{
+ ZSTD_CCtx_params cctxParams = mtctx->params;
+ cctxParams.cParams = params.cParams;
+ cctxParams.fParams = params.fParams;
+ cctxParams.overlapSizeLog = overlapLog;
+ return ZSTDMT_compress_advanced_internal(mtctx,
+ dst, dstCapacity,
+ src, srcSize,
+ cdict, cctxParams);
+}
+
size_t ZSTDMT_compressCCtx(ZSTDMT_CCtx* mtctx,
void* dst, size_t dstCapacity,
@@ -668,38 +747,25 @@ size_t ZSTDMT_compressCCtx(ZSTDMT_CCtx* mtctx,
/* ======= Streaming API ======= */
/* ====================================== */
-static void ZSTDMT_waitForAllJobsCompleted(ZSTDMT_CCtx* zcs)
-{
- DEBUGLOG(4, "ZSTDMT_waitForAllJobsCompleted");
- while (zcs->doneJobID < zcs->nextJobID) {
- unsigned const jobID = zcs->doneJobID & zcs->jobIDMask;
- PTHREAD_MUTEX_LOCK(&zcs->jobCompleted_mutex);
- while (zcs->jobs[jobID].jobCompleted==0) {
- DEBUGLOG(5, "waiting for jobCompleted signal from chunk %u", zcs->doneJobID); /* we want to block when waiting for data to flush */
- pthread_cond_wait(&zcs->jobCompleted_cond, &zcs->jobCompleted_mutex);
- }
- pthread_mutex_unlock(&zcs->jobCompleted_mutex);
- zcs->doneJobID++;
- }
-}
-
-
-/** ZSTDMT_initCStream_internal() :
- * internal usage only */
-size_t ZSTDMT_initCStream_internal(ZSTDMT_CCtx* zcs,
- const void* dict, size_t dictSize, const ZSTD_CDict* cdict,
- ZSTD_parameters params, unsigned long long pledgedSrcSize)
+size_t ZSTDMT_initCStream_internal(
+ ZSTDMT_CCtx* zcs,
+ const void* dict, size_t dictSize, ZSTD_dictMode_e dictMode,
+ const ZSTD_CDict* cdict, ZSTD_CCtx_params params,
+ unsigned long long pledgedSrcSize)
{
DEBUGLOG(4, "ZSTDMT_initCStream_internal");
/* params are supposed to be fully validated at this point */
assert(!ZSTD_isError(ZSTD_checkCParams(params.cParams)));
assert(!((dict) && (cdict))); /* either dict or cdict, not both */
+ assert(zcs->cctxPool->totalCCtx == params.nbThreads);
- if (zcs->nbThreads==1) {
+ if (params.nbThreads==1) {
+ ZSTD_CCtx_params const singleThreadParams = ZSTDMT_makeJobCCtxParams(params);
DEBUGLOG(4, "single thread mode");
+ assert(singleThreadParams.nbThreads == 0);
return ZSTD_initCStream_internal(zcs->cctxPool->cctx[0],
- dict, dictSize, cdict,
- params, pledgedSrcSize);
+ dict, dictSize, cdict,
+ singleThreadParams, pledgedSrcSize);
}
if (zcs->allJobsCompleted == 0) { /* previous compression not correctly finished */
@@ -714,7 +780,7 @@ size_t ZSTDMT_initCStream_internal(ZSTDMT_CCtx* zcs,
DEBUGLOG(4,"cdictLocal: %08X", (U32)(size_t)zcs->cdictLocal);
ZSTD_freeCDict(zcs->cdictLocal);
zcs->cdictLocal = ZSTD_createCDict_advanced(dict, dictSize,
- 0 /* byRef */, ZSTD_dm_auto, /* note : a loadPrefix becomes an internal CDict */
+ ZSTD_dlm_byCopy, dictMode, /* note : a loadPrefix becomes an internal CDict */
params.cParams, zcs->cMem);
zcs->cdict = zcs->cdictLocal;
if (zcs->cdictLocal == NULL) return ERROR(memory_allocation);
@@ -725,10 +791,10 @@ size_t ZSTDMT_initCStream_internal(ZSTDMT_CCtx* zcs,
zcs->cdict = cdict;
}
- zcs->targetDictSize = (zcs->overlapLog==0) ? 0 : (size_t)1 << (zcs->params.cParams.windowLog - (9 - zcs->overlapLog));
- DEBUGLOG(4, "overlapLog : %u ", zcs->overlapLog);
+ zcs->targetDictSize = (params.overlapSizeLog==0) ? 0 : (size_t)1 << (params.cParams.windowLog - (9 - params.overlapSizeLog));
+ DEBUGLOG(4, "overlapLog : %u ", params.overlapSizeLog);
DEBUGLOG(4, "overlap Size : %u KB", (U32)(zcs->targetDictSize>>10));
- zcs->targetSectionSize = zcs->sectionSize ? zcs->sectionSize : (size_t)1 << (zcs->params.cParams.windowLog + 2);
+ zcs->targetSectionSize = params.jobSize ? params.jobSize : (size_t)1 << (params.cParams.windowLog + 2);
zcs->targetSectionSize = MAX(ZSTDMT_SECTION_SIZE_MIN, zcs->targetSectionSize);
zcs->targetSectionSize = MAX(zcs->targetDictSize, zcs->targetSectionSize);
DEBUGLOG(4, "Section Size : %u KB", (U32)(zcs->targetSectionSize>>10));
@@ -749,8 +815,12 @@ size_t ZSTDMT_initCStream_advanced(ZSTDMT_CCtx* mtctx,
ZSTD_parameters params,
unsigned long long pledgedSrcSize)
{
+ ZSTD_CCtx_params cctxParams = mtctx->params;
DEBUGLOG(5, "ZSTDMT_initCStream_advanced");
- return ZSTDMT_initCStream_internal(mtctx, dict, dictSize, NULL, params, pledgedSrcSize);
+ cctxParams.cParams = params.cParams;
+ cctxParams.fParams = params.fParams;
+ return ZSTDMT_initCStream_internal(mtctx, dict, dictSize, ZSTD_dm_auto, NULL,
+ cctxParams, pledgedSrcSize);
}
size_t ZSTDMT_initCStream_usingCDict(ZSTDMT_CCtx* mtctx,
@@ -758,11 +828,12 @@ size_t ZSTDMT_initCStream_usingCDict(ZSTDMT_CCtx* mtctx,
ZSTD_frameParameters fParams,
unsigned long long pledgedSrcSize)
{
- ZSTD_parameters params = ZSTD_getParamsFromCDict(cdict);
+ ZSTD_CCtx_params cctxParams = mtctx->params;
+ cctxParams.cParams = ZSTD_getCParamsFromCDict(cdict);
+ cctxParams.fParams = fParams;
if (cdict==NULL) return ERROR(dictionary_wrong); /* method incompatible with NULL cdict */
- params.fParams = fParams;
- return ZSTDMT_initCStream_internal(mtctx, NULL, 0 /*dictSize*/, cdict,
- params, pledgedSrcSize);
+ return ZSTDMT_initCStream_internal(mtctx, NULL, 0 /*dictSize*/, ZSTD_dm_auto, cdict,
+ cctxParams, pledgedSrcSize);
}
@@ -770,14 +841,18 @@ size_t ZSTDMT_initCStream_usingCDict(ZSTDMT_CCtx* mtctx,
* pledgedSrcSize is optional and can be zero == unknown */
size_t ZSTDMT_resetCStream(ZSTDMT_CCtx* zcs, unsigned long long pledgedSrcSize)
{
- if (zcs->nbThreads==1)
+ if (zcs->params.nbThreads==1)
return ZSTD_resetCStream(zcs->cctxPool->cctx[0], pledgedSrcSize);
- return ZSTDMT_initCStream_internal(zcs, NULL, 0, 0, zcs->params, pledgedSrcSize);
+ return ZSTDMT_initCStream_internal(zcs, NULL, 0, ZSTD_dm_auto, 0, zcs->params,
+ pledgedSrcSize);
}
size_t ZSTDMT_initCStream(ZSTDMT_CCtx* zcs, int compressionLevel) {
ZSTD_parameters const params = ZSTD_getParams(compressionLevel, 0, 0);
- return ZSTDMT_initCStream_internal(zcs, NULL, 0, NULL, params, 0);
+ ZSTD_CCtx_params cctxParams = zcs->params;
+ cctxParams.cParams = params.cParams;
+ cctxParams.fParams = params.fParams;
+ return ZSTDMT_initCStream_internal(zcs, NULL, 0, ZSTD_dm_auto, NULL, cctxParams, 0);
}
@@ -856,13 +931,13 @@ static size_t ZSTDMT_flushNextJob(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* output, unsi
{
unsigned const wJobID = zcs->doneJobID & zcs->jobIDMask;
if (zcs->doneJobID == zcs->nextJobID) return 0; /* all flushed ! */
- PTHREAD_MUTEX_LOCK(&zcs->jobCompleted_mutex);
+ ZSTD_PTHREAD_MUTEX_LOCK(&zcs->jobCompleted_mutex);
while (zcs->jobs[wJobID].jobCompleted==0) {
DEBUGLOG(5, "waiting for jobCompleted signal from job %u", zcs->doneJobID);
- if (!blockToFlush) { pthread_mutex_unlock(&zcs->jobCompleted_mutex); return 0; } /* nothing ready to be flushed => skip */
- pthread_cond_wait(&zcs->jobCompleted_cond, &zcs->jobCompleted_mutex); /* block when nothing available to flush */
+ if (!blockToFlush) { ZSTD_pthread_mutex_unlock(&zcs->jobCompleted_mutex); return 0; } /* nothing ready to be flushed => skip */
+ ZSTD_pthread_cond_wait(&zcs->jobCompleted_cond, &zcs->jobCompleted_mutex); /* block when nothing available to flush */
}
- pthread_mutex_unlock(&zcs->jobCompleted_mutex);
+ ZSTD_pthread_mutex_unlock(&zcs->jobCompleted_mutex);
/* compression job completed : output can be flushed */
{ ZSTDMT_jobDescription job = zcs->jobs[wJobID];
if (!job.jobScanned) {
@@ -906,7 +981,7 @@ static size_t ZSTDMT_flushNextJob(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* output, unsi
/** ZSTDMT_compressStream_generic() :
- * internal use only
+ * internal use only - exposed to be invoked from zstd_compress.c
* assumption : output and input are valid (pos <= size)
* @return : minimum amount of data remaining to flush, 0 if none */
size_t ZSTDMT_compressStream_generic(ZSTDMT_CCtx* mtctx,
@@ -915,25 +990,26 @@ size_t ZSTDMT_compressStream_generic(ZSTDMT_CCtx* mtctx,
ZSTD_EndDirective endOp)
{
size_t const newJobThreshold = mtctx->dictSize + mtctx->targetSectionSize;
+ unsigned forwardInputProgress = 0;
assert(output->pos <= output->size);
assert(input->pos <= input->size);
if ((mtctx->frameEnded) && (endOp==ZSTD_e_continue)) {
- /* current frame being ended. Only flush/end are allowed. Or start new frame with init */
+ /* current frame being ended. Only flush/end are allowed */
return ERROR(stage_wrong);
}
- if (mtctx->nbThreads==1) { /* delegate to single-thread (synchronous) */
+ if (mtctx->params.nbThreads==1) { /* delegate to single-thread (synchronous) */
return ZSTD_compressStream_generic(mtctx->cctxPool->cctx[0], output, input, endOp);
}
- /* single-pass shortcut (note : this is synchronous-mode) */
- if ( (mtctx->nextJobID==0) /* just started */
- && (mtctx->inBuff.filled==0) /* nothing buffered */
- && (endOp==ZSTD_e_end) /* end order */
+ /* single-pass shortcut (note : synchronous-mode) */
+ if ( (mtctx->nextJobID == 0) /* just started */
+ && (mtctx->inBuff.filled == 0) /* nothing buffered */
+ && (endOp == ZSTD_e_end) /* end order */
&& (output->size - output->pos >= ZSTD_compressBound(input->size - input->pos)) ) { /* enough room */
- size_t const cSize = ZSTDMT_compress_advanced(mtctx,
+ size_t const cSize = ZSTDMT_compress_advanced_internal(mtctx,
(char*)output->dst + output->pos, output->size - output->pos,
(const char*)input->src + input->pos, input->size - input->pos,
- mtctx->cdict, mtctx->params, mtctx->overlapLog);
+ mtctx->cdict, mtctx->params);
if (ZSTD_isError(cSize)) return cSize;
input->pos = input->size;
output->pos += cSize;
@@ -946,15 +1022,16 @@ size_t ZSTDMT_compressStream_generic(ZSTDMT_CCtx* mtctx,
/* fill input buffer */
if (input->size > input->pos) { /* support NULL input */
if (mtctx->inBuff.buffer.start == NULL) {
- mtctx->inBuff.buffer = ZSTDMT_getBuffer(mtctx->bufPool);
- if (mtctx->inBuff.buffer.start == NULL) return ERROR(memory_allocation);
+ mtctx->inBuff.buffer = ZSTDMT_getBuffer(mtctx->bufPool); /* note : may fail, in which case, no forward input progress */
mtctx->inBuff.filled = 0;
}
- { size_t const toLoad = MIN(input->size - input->pos, mtctx->inBuffSize - mtctx->inBuff.filled);
+ if (mtctx->inBuff.buffer.start) {
+ size_t const toLoad = MIN(input->size - input->pos, mtctx->inBuffSize - mtctx->inBuff.filled);
DEBUGLOG(5, "inBuff:%08X; inBuffSize=%u; ToCopy=%u", (U32)(size_t)mtctx->inBuff.buffer.start, (U32)mtctx->inBuffSize, (U32)toLoad);
memcpy((char*)mtctx->inBuff.buffer.start + mtctx->inBuff.filled, (const char*)input->src + input->pos, toLoad);
input->pos += toLoad;
mtctx->inBuff.filled += toLoad;
+ forwardInputProgress = toLoad>0;
} }
if ( (mtctx->inBuff.filled >= newJobThreshold) /* filled enough : let's compress */
@@ -963,7 +1040,7 @@ size_t ZSTDMT_compressStream_generic(ZSTDMT_CCtx* mtctx,
}
/* check for potential compressed data ready to be flushed */
- CHECK_F( ZSTDMT_flushNextJob(mtctx, output, (mtctx->inBuff.filled == mtctx->inBuffSize) /* blockToFlush */) ); /* block if it wasn't possible to create new job due to saturation */
+ CHECK_F( ZSTDMT_flushNextJob(mtctx, output, !forwardInputProgress /* blockToFlush */) ); /* block if there was no forward input progress */
if (input->pos < input->size) /* input not consumed : do not flush yet */
endOp = ZSTD_e_continue;
@@ -1008,7 +1085,7 @@ static size_t ZSTDMT_flushStream_internal(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* outp
size_t ZSTDMT_flushStream(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* output)
{
DEBUGLOG(5, "ZSTDMT_flushStream");
- if (zcs->nbThreads==1)
+ if (zcs->params.nbThreads==1)
return ZSTD_flushStream(zcs->cctxPool->cctx[0], output);
return ZSTDMT_flushStream_internal(zcs, output, 0 /* endFrame */);
}
@@ -1016,7 +1093,7 @@ size_t ZSTDMT_flushStream(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* output)
size_t ZSTDMT_endStream(ZSTDMT_CCtx* zcs, ZSTD_outBuffer* output)
{
DEBUGLOG(4, "ZSTDMT_endStream");
- if (zcs->nbThreads==1)
+ if (zcs->params.nbThreads==1)
return ZSTD_endStream(zcs->cctxPool->cctx[0], output);
return ZSTDMT_flushStream_internal(zcs, output, 1 /* endFrame */);
}
diff --git a/thirdparty/zstd/compress/zstdmt_compress.h b/thirdparty/zstd/compress/zstdmt_compress.h
index 0f0fc2b03f..8c59c684f1 100644
--- a/thirdparty/zstd/compress/zstdmt_compress.h
+++ b/thirdparty/zstd/compress/zstdmt_compress.h
@@ -5,6 +5,7 @@
* This source code is licensed under both the BSD-style license (found in the
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
* in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
*/
#ifndef ZSTDMT_COMPRESS_H
@@ -80,19 +81,19 @@ ZSTDLIB_API size_t ZSTDMT_initCStream_usingCDict(ZSTDMT_CCtx* mtctx,
ZSTD_frameParameters fparams,
unsigned long long pledgedSrcSize); /* note : zero means empty */
-/* ZSDTMT_parameter :
+/* ZSTDMT_parameter :
* List of parameters that can be set using ZSTDMT_setMTCtxParameter() */
typedef enum {
ZSTDMT_p_sectionSize, /* size of input "section". Each section is compressed in parallel. 0 means default, which is dynamically determined within compression functions */
ZSTDMT_p_overlapSectionLog /* Log of overlapped section; 0 == no overlap, 6(default) == use 1/8th of window, >=9 == use full window */
-} ZSDTMT_parameter;
+} ZSTDMT_parameter;
/* ZSTDMT_setMTCtxParameter() :
* allow setting individual parameters, one at a time, among a list of enums defined in ZSTDMT_parameter.
* The function must be called typically after ZSTD_createCCtx().
* Parameters not explicitly reset by ZSTDMT_init*() remain the same in consecutive compression sessions.
* @return : 0, or an error code (which can be tested using ZSTD_isError()) */
-ZSTDLIB_API size_t ZSTDMT_setMTCtxParameter(ZSTDMT_CCtx* mtctx, ZSDTMT_parameter parameter, unsigned value);
+ZSTDLIB_API size_t ZSTDMT_setMTCtxParameter(ZSTDMT_CCtx* mtctx, ZSTDMT_parameter parameter, unsigned value);
/*! ZSTDMT_compressStream_generic() :
@@ -107,6 +108,22 @@ ZSTDLIB_API size_t ZSTDMT_compressStream_generic(ZSTDMT_CCtx* mtctx,
ZSTD_EndDirective endOp);
+/* === Private definitions; never ever use directly === */
+
+size_t ZSTDMT_CCtxParam_setMTCtxParameter(ZSTD_CCtx_params* params, ZSTDMT_parameter parameter, unsigned value);
+
+size_t ZSTDMT_initializeCCtxParameters(ZSTD_CCtx_params* params, unsigned nbThreads);
+
+/*! ZSTDMT_initCStream_internal() :
+ * Private use only. Init streaming operation.
+ * expects params to be valid.
+ * must receive dict, or cdict, or none, but not both.
+ * @return : 0, or an error code */
+size_t ZSTDMT_initCStream_internal(ZSTDMT_CCtx* zcs,
+ const void* dict, size_t dictSize, ZSTD_dictMode_e dictMode,
+ const ZSTD_CDict* cdict,
+ ZSTD_CCtx_params params, unsigned long long pledgedSrcSize);
+
#if defined (__cplusplus)
}
diff --git a/thirdparty/zstd/decompress/zstd_decompress.c b/thirdparty/zstd/decompress/zstd_decompress.c
index d2bc545e52..96fc609089 100644
--- a/thirdparty/zstd/decompress/zstd_decompress.c
+++ b/thirdparty/zstd/decompress/zstd_decompress.c
@@ -5,6 +5,7 @@
* This source code is licensed under both the BSD-style license (found in the
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
* in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
*/
@@ -34,7 +35,7 @@
* Frames requiring more memory will be rejected.
*/
#ifndef ZSTD_MAXWINDOWSIZE_DEFAULT
-# define ZSTD_MAXWINDOWSIZE_DEFAULT ((1 << ZSTD_WINDOWLOG_MAX) + 1) /* defined within zstd.h */
+# define ZSTD_MAXWINDOWSIZE_DEFAULT (((U32)1 << ZSTD_WINDOWLOG_DEFAULTMAX) + 1)
#endif
@@ -101,13 +102,15 @@ struct ZSTD_DCtx_s
const void* dictEnd; /* end of previous segment */
size_t expected;
ZSTD_frameHeader fParams;
- blockType_e bType; /* used in ZSTD_decompressContinue(), to transfer blockType between header decoding and block decoding stages */
+ U64 decodedSize;
+ blockType_e bType; /* used in ZSTD_decompressContinue(), store blockType between block header decoding and block decompression stages */
ZSTD_dStage stage;
U32 litEntropy;
U32 fseEntropy;
XXH64_state_t xxhState;
size_t headerSize;
U32 dictID;
+ ZSTD_format_e format;
const BYTE* litPtr;
ZSTD_customMem customMem;
size_t litSize;
@@ -126,7 +129,6 @@ struct ZSTD_DCtx_s
size_t outBuffSize;
size_t outStart;
size_t outEnd;
- size_t blockSize;
size_t lhSize;
void* legacyContext;
U32 previousLegacyVersion;
@@ -148,39 +150,44 @@ size_t ZSTD_sizeof_DCtx (const ZSTD_DCtx* dctx)
size_t ZSTD_estimateDCtxSize(void) { return sizeof(ZSTD_DCtx); }
-size_t ZSTD_decompressBegin(ZSTD_DCtx* dctx)
+
+static size_t ZSTD_startingInputLength(ZSTD_format_e format)
{
- dctx->expected = ZSTD_frameHeaderSize_prefix;
- dctx->stage = ZSTDds_getFrameHeaderSize;
- dctx->previousDstEnd = NULL;
- dctx->base = NULL;
- dctx->vBase = NULL;
- dctx->dictEnd = NULL;
- dctx->entropy.hufTable[0] = (HUF_DTable)((HufLog)*0x1000001); /* cover both little and big endian */
- dctx->litEntropy = dctx->fseEntropy = 0;
- dctx->dictID = 0;
- MEM_STATIC_ASSERT(sizeof(dctx->entropy.rep) == sizeof(repStartValue));
- memcpy(dctx->entropy.rep, repStartValue, sizeof(repStartValue)); /* initial repcodes */
- dctx->LLTptr = dctx->entropy.LLTable;
- dctx->MLTptr = dctx->entropy.MLTable;
- dctx->OFTptr = dctx->entropy.OFTable;
- dctx->HUFptr = dctx->entropy.hufTable;
- return 0;
+ size_t const startingInputLength = (format==ZSTD_f_zstd1_magicless) ?
+ ZSTD_frameHeaderSize_prefix - ZSTD_frameIdSize :
+ ZSTD_frameHeaderSize_prefix;
+ ZSTD_STATIC_ASSERT(ZSTD_FRAMEHEADERSIZE_PREFIX >= ZSTD_FRAMEIDSIZE);
+ /* only supports formats ZSTD_f_zstd1 and ZSTD_f_zstd1_magicless */
+ assert( (format == ZSTD_f_zstd1) || (format == ZSTD_f_zstd1_magicless) );
+ return startingInputLength;
}
static void ZSTD_initDCtx_internal(ZSTD_DCtx* dctx)
{
- ZSTD_decompressBegin(dctx); /* cannot fail */
- dctx->staticSize = 0;
+ dctx->format = ZSTD_f_zstd1; /* ZSTD_decompressBegin() invokes ZSTD_startingInputLength() with argument dctx->format */
+ dctx->staticSize = 0;
dctx->maxWindowSize = ZSTD_MAXWINDOWSIZE_DEFAULT;
- dctx->ddict = NULL;
- dctx->ddictLocal = NULL;
- dctx->inBuff = NULL;
- dctx->inBuffSize = 0;
- dctx->outBuffSize= 0;
+ dctx->ddict = NULL;
+ dctx->ddictLocal = NULL;
+ dctx->inBuff = NULL;
+ dctx->inBuffSize = 0;
+ dctx->outBuffSize = 0;
dctx->streamStage = zdss_init;
}
+ZSTD_DCtx* ZSTD_initStaticDCtx(void *workspace, size_t workspaceSize)
+{
+ ZSTD_DCtx* const dctx = (ZSTD_DCtx*) workspace;
+
+ if ((size_t)workspace & 7) return NULL; /* 8-aligned */
+ if (workspaceSize < sizeof(ZSTD_DCtx)) return NULL; /* minimum size */
+
+ ZSTD_initDCtx_internal(dctx);
+ dctx->staticSize = workspaceSize;
+ dctx->inBuff = (char*)(dctx+1);
+ return dctx;
+}
+
ZSTD_DCtx* ZSTD_createDCtx_advanced(ZSTD_customMem customMem)
{
if (!customMem.customAlloc ^ !customMem.customFree) return NULL;
@@ -195,19 +202,6 @@ ZSTD_DCtx* ZSTD_createDCtx_advanced(ZSTD_customMem customMem)
}
}
-ZSTD_DCtx* ZSTD_initStaticDCtx(void *workspace, size_t workspaceSize)
-{
- ZSTD_DCtx* dctx = (ZSTD_DCtx*) workspace;
-
- if ((size_t)workspace & 7) return NULL; /* 8-aligned */
- if (workspaceSize < sizeof(ZSTD_DCtx)) return NULL; /* minimum size */
-
- ZSTD_initDCtx_internal(dctx);
- dctx->staticSize = workspaceSize;
- dctx->inBuff = (char*)(dctx+1);
- return dctx;
-}
-
ZSTD_DCtx* ZSTD_createDCtx(void)
{
return ZSTD_createDCtx_advanced(ZSTD_defaultCMem);
@@ -250,7 +244,7 @@ void ZSTD_copyDCtx(ZSTD_DCtx* dstDCtx, const ZSTD_DCtx* srcDCtx)
* Note 3 : Skippable Frame Identifiers are considered valid. */
unsigned ZSTD_isFrame(const void* buffer, size_t size)
{
- if (size < 4) return 0;
+ if (size < ZSTD_frameIdSize) return 0;
{ U32 const magic = MEM_readLE32(buffer);
if (magic == ZSTD_MAGICNUMBER) return 1;
if ((magic & 0xFFFFFFF0U) == ZSTD_MAGIC_SKIPPABLE_START) return 1;
@@ -261,55 +255,70 @@ unsigned ZSTD_isFrame(const void* buffer, size_t size)
return 0;
}
-
-/** ZSTD_frameHeaderSize() :
-* srcSize must be >= ZSTD_frameHeaderSize_prefix.
-* @return : size of the Frame Header */
-size_t ZSTD_frameHeaderSize(const void* src, size_t srcSize)
+/** ZSTD_frameHeaderSize_internal() :
+ * srcSize must be large enough to reach header size fields.
+ * note : only works for formats ZSTD_f_zstd1 and ZSTD_f_zstd1_magicless
+ * @return : size of the Frame Header
+ * or an error code, which can be tested with ZSTD_isError() */
+static size_t ZSTD_frameHeaderSize_internal(const void* src, size_t srcSize, ZSTD_format_e format)
{
- if (srcSize < ZSTD_frameHeaderSize_prefix) return ERROR(srcSize_wrong);
- { BYTE const fhd = ((const BYTE*)src)[4];
+ size_t const minInputSize = ZSTD_startingInputLength(format);
+ if (srcSize < minInputSize) return ERROR(srcSize_wrong);
+
+ { BYTE const fhd = ((const BYTE*)src)[minInputSize-1];
U32 const dictID= fhd & 3;
U32 const singleSegment = (fhd >> 5) & 1;
U32 const fcsId = fhd >> 6;
- return ZSTD_frameHeaderSize_prefix + !singleSegment + ZSTD_did_fieldSize[dictID] + ZSTD_fcs_fieldSize[fcsId]
- + (singleSegment && !fcsId);
+ return minInputSize + !singleSegment
+ + ZSTD_did_fieldSize[dictID] + ZSTD_fcs_fieldSize[fcsId]
+ + (singleSegment && !fcsId);
}
}
+/** ZSTD_frameHeaderSize() :
+ * srcSize must be >= ZSTD_frameHeaderSize_prefix.
+ * @return : size of the Frame Header */
+size_t ZSTD_frameHeaderSize(const void* src, size_t srcSize)
+{
+ return ZSTD_frameHeaderSize_internal(src, srcSize, ZSTD_f_zstd1);
+}
-/** ZSTD_getFrameHeader() :
-* decode Frame Header, or require larger `srcSize`.
-* @return : 0, `zfhPtr` is correctly filled,
-* >0, `srcSize` is too small, result is expected `srcSize`,
-* or an error code, which can be tested using ZSTD_isError() */
-size_t ZSTD_getFrameHeader(ZSTD_frameHeader* zfhPtr, const void* src, size_t srcSize)
+
+/** ZSTD_getFrameHeader_internal() :
+ * decode Frame Header, or require larger `srcSize`.
+ * note : only works for formats ZSTD_f_zstd1 and ZSTD_f_zstd1_magicless
+ * @return : 0, `zfhPtr` is correctly filled,
+ * >0, `srcSize` is too small, value is wanted `srcSize` amount,
+ * or an error code, which can be tested using ZSTD_isError() */
+static size_t ZSTD_getFrameHeader_internal(ZSTD_frameHeader* zfhPtr, const void* src, size_t srcSize, ZSTD_format_e format)
{
const BYTE* ip = (const BYTE*)src;
- if (srcSize < ZSTD_frameHeaderSize_prefix) return ZSTD_frameHeaderSize_prefix;
+ size_t const minInputSize = ZSTD_startingInputLength(format);
- if (MEM_readLE32(src) != ZSTD_MAGICNUMBER) {
+ if (srcSize < minInputSize) return minInputSize;
+
+ if ( (format != ZSTD_f_zstd1_magicless)
+ && (MEM_readLE32(src) != ZSTD_MAGICNUMBER) ) {
if ((MEM_readLE32(src) & 0xFFFFFFF0U) == ZSTD_MAGIC_SKIPPABLE_START) {
/* skippable frame */
if (srcSize < ZSTD_skippableHeaderSize)
return ZSTD_skippableHeaderSize; /* magic number + frame length */
memset(zfhPtr, 0, sizeof(*zfhPtr));
- zfhPtr->frameContentSize = MEM_readLE32((const char *)src + 4);
+ zfhPtr->frameContentSize = MEM_readLE32((const char *)src + ZSTD_frameIdSize);
zfhPtr->frameType = ZSTD_skippableFrame;
- zfhPtr->windowSize = 0;
return 0;
}
return ERROR(prefix_unknown);
}
/* ensure there is enough `srcSize` to fully read/decode frame header */
- { size_t const fhsize = ZSTD_frameHeaderSize(src, srcSize);
+ { size_t const fhsize = ZSTD_frameHeaderSize_internal(src, srcSize, format);
if (srcSize < fhsize) return fhsize;
zfhPtr->headerSize = (U32)fhsize;
}
- { BYTE const fhdByte = ip[4];
- size_t pos = 5;
+ { BYTE const fhdByte = ip[minInputSize-1];
+ size_t pos = minInputSize;
U32 const dictIDSizeCode = fhdByte&3;
U32 const checksumFlag = (fhdByte>>2)&1;
U32 const singleSegment = (fhdByte>>5)&1;
@@ -349,12 +358,25 @@ size_t ZSTD_getFrameHeader(ZSTD_frameHeader* zfhPtr, const void* src, size_t src
zfhPtr->frameType = ZSTD_frame;
zfhPtr->frameContentSize = frameContentSize;
zfhPtr->windowSize = windowSize;
+ zfhPtr->blockSizeMax = (unsigned) MIN(windowSize, ZSTD_BLOCKSIZE_MAX);
zfhPtr->dictID = dictID;
zfhPtr->checksumFlag = checksumFlag;
}
return 0;
}
+/** ZSTD_getFrameHeader() :
+ * decode Frame Header, or require larger `srcSize`.
+ * note : this function does not consume input, it only reads it.
+ * @return : 0, `zfhPtr` is correctly filled,
+ * >0, `srcSize` is too small, value is wanted `srcSize` amount,
+ * or an error code, which can be tested using ZSTD_isError() */
+size_t ZSTD_getFrameHeader(ZSTD_frameHeader* zfhPtr, const void* src, size_t srcSize)
+{
+ return ZSTD_getFrameHeader_internal(zfhPtr, src, srcSize, ZSTD_f_zstd1);
+}
+
+
/** ZSTD_getFrameContentSize() :
* compatible with legacy mode
* @return : decompressed size of the single frame pointed to be `src` if known, otherwise
@@ -388,14 +410,14 @@ unsigned long long ZSTD_findDecompressedSize(const void* src, size_t srcSize)
unsigned long long totalDstSize = 0;
while (srcSize >= ZSTD_frameHeaderSize_prefix) {
- const U32 magicNumber = MEM_readLE32(src);
+ U32 const magicNumber = MEM_readLE32(src);
if ((magicNumber & 0xFFFFFFF0U) == ZSTD_MAGIC_SKIPPABLE_START) {
size_t skippableSize;
if (srcSize < ZSTD_skippableHeaderSize)
return ERROR(srcSize_wrong);
- skippableSize = MEM_readLE32((const BYTE *)src + 4) +
- ZSTD_skippableHeaderSize;
+ skippableSize = MEM_readLE32((const BYTE *)src + ZSTD_frameIdSize)
+ + ZSTD_skippableHeaderSize;
if (srcSize < skippableSize) {
return ZSTD_CONTENTSIZE_ERROR;
}
@@ -420,11 +442,9 @@ unsigned long long ZSTD_findDecompressedSize(const void* src, size_t srcSize)
src = (const BYTE *)src + frameSrcSize;
srcSize -= frameSrcSize;
}
- }
+ } /* while (srcSize >= ZSTD_frameHeaderSize_prefix) */
- if (srcSize) {
- return ZSTD_CONTENTSIZE_ERROR;
- }
+ if (srcSize) return ZSTD_CONTENTSIZE_ERROR;
return totalDstSize;
}
@@ -440,7 +460,8 @@ unsigned long long ZSTD_findDecompressedSize(const void* src, size_t srcSize)
unsigned long long ZSTD_getDecompressedSize(const void* src, size_t srcSize)
{
unsigned long long const ret = ZSTD_getFrameContentSize(src, srcSize);
- return ret >= ZSTD_CONTENTSIZE_ERROR ? 0 : ret;
+ ZSTD_STATIC_ASSERT(ZSTD_CONTENTSIZE_ERROR < ZSTD_CONTENTSIZE_UNKNOWN);
+ return (ret >= ZSTD_CONTENTSIZE_ERROR) ? 0 : ret;
}
@@ -449,9 +470,9 @@ unsigned long long ZSTD_getDecompressedSize(const void* src, size_t srcSize)
* @return : 0 if success, or an error code, which can be tested using ZSTD_isError() */
static size_t ZSTD_decodeFrameHeader(ZSTD_DCtx* dctx, const void* src, size_t headerSize)
{
- size_t const result = ZSTD_getFrameHeader(&(dctx->fParams), src, headerSize);
- if (ZSTD_isError(result)) return result; /* invalid header */
- if (result>0) return ERROR(srcSize_wrong); /* headerSize too small */
+ size_t const result = ZSTD_getFrameHeader_internal(&(dctx->fParams), src, headerSize, dctx->format);
+ if (ZSTD_isError(result)) return result; /* invalid header */
+ if (result>0) return ERROR(srcSize_wrong); /* headerSize too small */
if (dctx->fParams.dictID && (dctx->dictID != dctx->fParams.dictID))
return ERROR(dictionary_wrong);
if (dctx->fParams.checksumFlag) XXH64_reset(&dctx->xxhState, 0);
@@ -497,7 +518,8 @@ static size_t ZSTD_setRleBlock(void* dst, size_t dstCapacity,
}
/*! ZSTD_decodeLiteralsBlock() :
- @return : nb of bytes read from src (< srcSize ) */
+ * @return : nb of bytes read from src (< srcSize )
+ * note : symbol not declared but exposed for fullbench */
size_t ZSTD_decodeLiteralsBlock(ZSTD_DCtx* dctx,
const void* src, size_t srcSize) /* note : srcSize < BLOCKSIZE */
{
@@ -698,9 +720,9 @@ static const FSE_decode_t4 OF_defaultDTable[(1<<OF_DEFAULTNORMLOG)+1] = {
}; /* OF_defaultDTable */
/*! ZSTD_buildSeqTable() :
- @return : nb bytes read from src,
- or an error code if it fails, testable with ZSTD_isError()
-*/
+ * @return : nb bytes read from src,
+ * or an error code if it fails, testable with ZSTD_isError()
+ */
static size_t ZSTD_buildSeqTable(FSE_DTable* DTableSpace, const FSE_DTable** DTablePtr,
symbolEncodingType_e type, U32 max, U32 maxLog,
const void* src, size_t srcSize,
@@ -858,13 +880,25 @@ size_t ZSTD_execSequenceLast7(BYTE* op,
}
-static seq_t ZSTD_decodeSequence(seqState_t* seqState)
+typedef enum { ZSTD_lo_isRegularOffset, ZSTD_lo_isLongOffset=1 } ZSTD_longOffset_e;
+
+/* We need to add at most (ZSTD_WINDOWLOG_MAX_32 - 1) bits to read the maximum
+ * offset bits. But we can only read at most (STREAM_ACCUMULATOR_MIN_32 - 1)
+ * bits before reloading. This value is the maximum number of bytes we read
+ * after reloading when we are decoding long offets.
+ */
+#define LONG_OFFSETS_MAX_EXTRA_BITS_32 \
+ (ZSTD_WINDOWLOG_MAX_32 > STREAM_ACCUMULATOR_MIN_32 \
+ ? ZSTD_WINDOWLOG_MAX_32 - STREAM_ACCUMULATOR_MIN_32 \
+ : 0)
+
+static seq_t ZSTD_decodeSequence(seqState_t* seqState, const ZSTD_longOffset_e longOffsets)
{
seq_t seq;
U32 const llCode = FSE_peekSymbol(&seqState->stateLL);
U32 const mlCode = FSE_peekSymbol(&seqState->stateML);
- U32 const ofCode = FSE_peekSymbol(&seqState->stateOffb); /* <= maxOff, by table construction */
+ U32 const ofCode = FSE_peekSymbol(&seqState->stateOffb); /* <= MaxOff, by table construction */
U32 const llBits = LL_bits[llCode];
U32 const mlBits = ML_bits[mlCode];
@@ -891,15 +925,25 @@ static seq_t ZSTD_decodeSequence(seqState_t* seqState)
0, 1, 1, 5, 0xD, 0x1D, 0x3D, 0x7D,
0xFD, 0x1FD, 0x3FD, 0x7FD, 0xFFD, 0x1FFD, 0x3FFD, 0x7FFD,
0xFFFD, 0x1FFFD, 0x3FFFD, 0x7FFFD, 0xFFFFD, 0x1FFFFD, 0x3FFFFD, 0x7FFFFD,
- 0xFFFFFD, 0x1FFFFFD, 0x3FFFFFD, 0x7FFFFFD, 0xFFFFFFD };
+ 0xFFFFFD, 0x1FFFFFD, 0x3FFFFFD, 0x7FFFFFD, 0xFFFFFFD, 0x1FFFFFFD, 0x3FFFFFFD, 0x7FFFFFFD };
/* sequence */
{ size_t offset;
if (!ofCode)
offset = 0;
else {
- offset = OF_base[ofCode] + BIT_readBitsFast(&seqState->DStream, ofBits); /* <= (ZSTD_WINDOWLOG_MAX-1) bits */
- if (MEM_32bits()) BIT_reloadDStream(&seqState->DStream);
+ ZSTD_STATIC_ASSERT(ZSTD_lo_isLongOffset == 1);
+ ZSTD_STATIC_ASSERT(LONG_OFFSETS_MAX_EXTRA_BITS_32 == 5);
+ assert(ofBits <= MaxOff);
+ if (MEM_32bits() && longOffsets) {
+ U32 const extraBits = ofBits - MIN(ofBits, STREAM_ACCUMULATOR_MIN_32-1);
+ offset = OF_base[ofCode] + (BIT_readBitsFast(&seqState->DStream, ofBits - extraBits) << extraBits);
+ if (MEM_32bits() || extraBits) BIT_reloadDStream(&seqState->DStream);
+ if (extraBits) offset += BIT_readBitsFast(&seqState->DStream, extraBits);
+ } else {
+ offset = OF_base[ofCode] + BIT_readBitsFast(&seqState->DStream, ofBits); /* <= (ZSTD_WINDOWLOG_MAX-1) bits */
+ if (MEM_32bits()) BIT_reloadDStream(&seqState->DStream);
+ }
}
if (ofCode <= 1) {
@@ -923,13 +967,17 @@ static seq_t ZSTD_decodeSequence(seqState_t* seqState)
seq.matchLength = ML_base[mlCode]
+ ((mlCode>31) ? BIT_readBitsFast(&seqState->DStream, mlBits) : 0); /* <= 16 bits */
- if (MEM_32bits() && (mlBits+llBits>24)) BIT_reloadDStream(&seqState->DStream);
+ if (MEM_32bits() && (mlBits+llBits >= STREAM_ACCUMULATOR_MIN_32-LONG_OFFSETS_MAX_EXTRA_BITS_32))
+ BIT_reloadDStream(&seqState->DStream);
+ if (MEM_64bits() && (totalBits >= STREAM_ACCUMULATOR_MIN_64-(LLFSELog+MLFSELog+OffFSELog)))
+ BIT_reloadDStream(&seqState->DStream);
+ /* Verify that there is enough bits to read the rest of the data in 64-bit mode. */
+ ZSTD_STATIC_ASSERT(16+LLFSELog+MLFSELog+OffFSELog < STREAM_ACCUMULATOR_MIN_64);
seq.litLength = LL_base[llCode]
+ ((llCode>15) ? BIT_readBitsFast(&seqState->DStream, llBits) : 0); /* <= 16 bits */
- if ( MEM_32bits()
- || (totalBits > 64 - 7 - (LLFSELog+MLFSELog+OffFSELog)) )
- BIT_reloadDStream(&seqState->DStream);
+ if (MEM_32bits())
+ BIT_reloadDStream(&seqState->DStream);
DEBUGLOG(6, "seq: litL=%u, matchL=%u, offset=%u",
(U32)seq.litLength, (U32)seq.matchLength, (U32)seq.offset);
@@ -1028,7 +1076,8 @@ size_t ZSTD_execSequence(BYTE* op,
static size_t ZSTD_decompressSequences(
ZSTD_DCtx* dctx,
void* dst, size_t maxDstSize,
- const void* seqStart, size_t seqSize)
+ const void* seqStart, size_t seqSize,
+ const ZSTD_longOffset_e isLongOffset)
{
const BYTE* ip = (const BYTE*)seqStart;
const BYTE* const iend = ip + seqSize;
@@ -1063,7 +1112,7 @@ static size_t ZSTD_decompressSequences(
for ( ; (BIT_reloadDStream(&(seqState.DStream)) <= BIT_DStream_completed) && nbSeq ; ) {
nbSeq--;
- { seq_t const sequence = ZSTD_decodeSequence(&seqState);
+ { seq_t const sequence = ZSTD_decodeSequence(&seqState, isLongOffset);
size_t const oneSeqSize = ZSTD_execSequence(op, oend, sequence, &litPtr, litEnd, base, vBase, dictEnd);
DEBUGLOG(6, "regenerated sequence size : %u", (U32)oneSeqSize);
if (ZSTD_isError(oneSeqSize)) return oneSeqSize;
@@ -1088,13 +1137,14 @@ static size_t ZSTD_decompressSequences(
}
-FORCE_INLINE_TEMPLATE seq_t ZSTD_decodeSequenceLong_generic(seqState_t* seqState, int const longOffsets)
+HINT_INLINE
+seq_t ZSTD_decodeSequenceLong(seqState_t* seqState, ZSTD_longOffset_e const longOffsets)
{
seq_t seq;
U32 const llCode = FSE_peekSymbol(&seqState->stateLL);
U32 const mlCode = FSE_peekSymbol(&seqState->stateML);
- U32 const ofCode = FSE_peekSymbol(&seqState->stateOffb); /* <= maxOff, by table construction */
+ U32 const ofCode = FSE_peekSymbol(&seqState->stateOffb); /* <= MaxOff, by table construction */
U32 const llBits = LL_bits[llCode];
U32 const mlBits = ML_bits[mlCode];
@@ -1121,15 +1171,18 @@ FORCE_INLINE_TEMPLATE seq_t ZSTD_decodeSequenceLong_generic(seqState_t* seqState
0, 1, 1, 5, 0xD, 0x1D, 0x3D, 0x7D,
0xFD, 0x1FD, 0x3FD, 0x7FD, 0xFFD, 0x1FFD, 0x3FFD, 0x7FFD,
0xFFFD, 0x1FFFD, 0x3FFFD, 0x7FFFD, 0xFFFFD, 0x1FFFFD, 0x3FFFFD, 0x7FFFFD,
- 0xFFFFFD, 0x1FFFFFD, 0x3FFFFFD, 0x7FFFFFD, 0xFFFFFFD };
+ 0xFFFFFD, 0x1FFFFFD, 0x3FFFFFD, 0x7FFFFFD, 0xFFFFFFD, 0x1FFFFFFD, 0x3FFFFFFD, 0x7FFFFFFD };
/* sequence */
{ size_t offset;
if (!ofCode)
offset = 0;
else {
- if (longOffsets) {
- int const extraBits = ofBits - MIN(ofBits, STREAM_ACCUMULATOR_MIN);
+ ZSTD_STATIC_ASSERT(ZSTD_lo_isLongOffset == 1);
+ ZSTD_STATIC_ASSERT(LONG_OFFSETS_MAX_EXTRA_BITS_32 == 5);
+ assert(ofBits <= MaxOff);
+ if (MEM_32bits() && longOffsets) {
+ U32 const extraBits = ofBits - MIN(ofBits, STREAM_ACCUMULATOR_MIN_32-1);
offset = OF_base[ofCode] + (BIT_readBitsFast(&seqState->DStream, ofBits - extraBits) << extraBits);
if (MEM_32bits() || extraBits) BIT_reloadDStream(&seqState->DStream);
if (extraBits) offset += BIT_readBitsFast(&seqState->DStream, extraBits);
@@ -1159,11 +1212,16 @@ FORCE_INLINE_TEMPLATE seq_t ZSTD_decodeSequenceLong_generic(seqState_t* seqState
}
seq.matchLength = ML_base[mlCode] + ((mlCode>31) ? BIT_readBitsFast(&seqState->DStream, mlBits) : 0); /* <= 16 bits */
- if (MEM_32bits() && (mlBits+llBits>24)) BIT_reloadDStream(&seqState->DStream);
+ if (MEM_32bits() && (mlBits+llBits >= STREAM_ACCUMULATOR_MIN_32-LONG_OFFSETS_MAX_EXTRA_BITS_32))
+ BIT_reloadDStream(&seqState->DStream);
+ if (MEM_64bits() && (totalBits >= STREAM_ACCUMULATOR_MIN_64-(LLFSELog+MLFSELog+OffFSELog)))
+ BIT_reloadDStream(&seqState->DStream);
+ /* Verify that there is enough bits to read the rest of the data in 64-bit mode. */
+ ZSTD_STATIC_ASSERT(16+LLFSELog+MLFSELog+OffFSELog < STREAM_ACCUMULATOR_MIN_64);
seq.litLength = LL_base[llCode] + ((llCode>15) ? BIT_readBitsFast(&seqState->DStream, llBits) : 0); /* <= 16 bits */
- if (MEM_32bits() ||
- (totalBits > 64 - 7 - (LLFSELog+MLFSELog+OffFSELog)) ) BIT_reloadDStream(&seqState->DStream);
+ if (MEM_32bits())
+ BIT_reloadDStream(&seqState->DStream);
{ size_t const pos = seqState->pos + seq.litLength;
seq.match = seqState->base + pos - seq.offset; /* single memory segment */
@@ -1180,19 +1238,12 @@ FORCE_INLINE_TEMPLATE seq_t ZSTD_decodeSequenceLong_generic(seqState_t* seqState
return seq;
}
-static seq_t ZSTD_decodeSequenceLong(seqState_t* seqState, unsigned const windowSize) {
- if (ZSTD_highbit32(windowSize) > STREAM_ACCUMULATOR_MIN) {
- return ZSTD_decodeSequenceLong_generic(seqState, 1);
- } else {
- return ZSTD_decodeSequenceLong_generic(seqState, 0);
- }
-}
HINT_INLINE
size_t ZSTD_execSequenceLong(BYTE* op,
- BYTE* const oend, seq_t sequence,
- const BYTE** litPtr, const BYTE* const litLimit,
- const BYTE* const base, const BYTE* const vBase, const BYTE* const dictEnd)
+ BYTE* const oend, seq_t sequence,
+ const BYTE** litPtr, const BYTE* const litLimit,
+ const BYTE* const base, const BYTE* const vBase, const BYTE* const dictEnd)
{
BYTE* const oLitEnd = op + sequence.litLength;
size_t const sequenceLength = sequence.litLength + sequence.matchLength;
@@ -1202,11 +1253,9 @@ size_t ZSTD_execSequenceLong(BYTE* op,
const BYTE* match = sequence.match;
/* check */
-#if 1
if (oMatchEnd>oend) return ERROR(dstSize_tooSmall); /* last match must start at a minimum distance of WILDCOPY_OVERLENGTH from oend */
if (iLitEnd > litLimit) return ERROR(corruption_detected); /* over-read beyond lit buffer */
if (oLitEnd>oend_w) return ZSTD_execSequenceLast7(op, oend, sequence, litPtr, litLimit, base, vBase, dictEnd);
-#endif
/* copy Literals */
ZSTD_copy8(op, *litPtr);
@@ -1216,7 +1265,6 @@ size_t ZSTD_execSequenceLong(BYTE* op,
*litPtr = iLitEnd; /* update for next sequence */
/* copy Match */
-#if 1
if (sequence.offset > (size_t)(oLitEnd - base)) {
/* offset beyond prefix */
if (sequence.offset > (size_t)(oLitEnd - vBase)) return ERROR(corruption_detected);
@@ -1236,8 +1284,8 @@ size_t ZSTD_execSequenceLong(BYTE* op,
return sequenceLength;
}
} }
- /* Requirement: op <= oend_w && sequence.matchLength >= MINMATCH */
-#endif
+ assert(op <= oend_w);
+ assert(sequence.matchLength >= MINMATCH);
/* match within prefix */
if (sequence.offset < 8) {
@@ -1273,7 +1321,8 @@ size_t ZSTD_execSequenceLong(BYTE* op,
static size_t ZSTD_decompressSequencesLong(
ZSTD_DCtx* dctx,
void* dst, size_t maxDstSize,
- const void* seqStart, size_t seqSize)
+ const void* seqStart, size_t seqSize,
+ const ZSTD_longOffset_e isLongOffset)
{
const BYTE* ip = (const BYTE*)seqStart;
const BYTE* const iend = ip + seqSize;
@@ -1285,7 +1334,6 @@ static size_t ZSTD_decompressSequencesLong(
const BYTE* const base = (const BYTE*) (dctx->base);
const BYTE* const vBase = (const BYTE*) (dctx->vBase);
const BYTE* const dictEnd = (const BYTE*) (dctx->dictEnd);
- unsigned const windowSize32 = (unsigned)dctx->fParams.windowSize;
int nbSeq;
/* Build Decoding Tables */
@@ -1315,13 +1363,13 @@ static size_t ZSTD_decompressSequencesLong(
/* prepare in advance */
for (seqNb=0; (BIT_reloadDStream(&seqState.DStream) <= BIT_DStream_completed) && seqNb<seqAdvance; seqNb++) {
- sequences[seqNb] = ZSTD_decodeSequenceLong(&seqState, windowSize32);
+ sequences[seqNb] = ZSTD_decodeSequenceLong(&seqState, isLongOffset);
}
if (seqNb<seqAdvance) return ERROR(corruption_detected);
/* decode and decompress */
for ( ; (BIT_reloadDStream(&(seqState.DStream)) <= BIT_DStream_completed) && seqNb<nbSeq ; seqNb++) {
- seq_t const sequence = ZSTD_decodeSequenceLong(&seqState, windowSize32);
+ seq_t const sequence = ZSTD_decodeSequenceLong(&seqState, isLongOffset);
size_t const oneSeqSize = ZSTD_execSequenceLong(op, oend, sequences[(seqNb-ADVANCED_SEQS) & STOSEQ_MASK], &litPtr, litEnd, base, vBase, dictEnd);
if (ZSTD_isError(oneSeqSize)) return oneSeqSize;
PREFETCH(sequence.match);
@@ -1355,10 +1403,20 @@ static size_t ZSTD_decompressSequencesLong(
static size_t ZSTD_decompressBlock_internal(ZSTD_DCtx* dctx,
void* dst, size_t dstCapacity,
- const void* src, size_t srcSize)
+ const void* src, size_t srcSize, const int frame)
{ /* blockType == blockCompressed */
const BYTE* ip = (const BYTE*)src;
- DEBUGLOG(5, "ZSTD_decompressBlock_internal");
+ /* isLongOffset must be true if there are long offsets.
+ * Offsets are long if they are larger than 2^STREAM_ACCUMULATOR_MIN.
+ * We don't expect that to be the case in 64-bit mode.
+ * If we are in block mode we don't know the window size, so we have to be
+ * conservative.
+ */
+ ZSTD_longOffset_e const isLongOffset = (ZSTD_longOffset_e)(MEM_32bits() && (!frame || dctx->fParams.windowSize > (1ULL << STREAM_ACCUMULATOR_MIN)));
+ /* windowSize could be any value at this point, since it is only validated
+ * in the streaming API.
+ */
+ DEBUGLOG(5, "ZSTD_decompressBlock_internal (size : %u)", (U32)srcSize);
if (srcSize >= ZSTD_BLOCKSIZE_MAX) return ERROR(srcSize_wrong);
@@ -1369,13 +1427,9 @@ static size_t ZSTD_decompressBlock_internal(ZSTD_DCtx* dctx,
ip += litCSize;
srcSize -= litCSize;
}
- if (sizeof(size_t) > 4) /* do not enable prefetching on 32-bits x86, as it's performance detrimental */
- /* likely because of register pressure */
- /* if that's the correct cause, then 32-bits ARM should be affected differently */
- /* it would be good to test this on ARM real hardware, to see if prefetch version improves speed */
- if (dctx->fParams.windowSize > (1<<23))
- return ZSTD_decompressSequencesLong(dctx, dst, dstCapacity, ip, srcSize);
- return ZSTD_decompressSequences(dctx, dst, dstCapacity, ip, srcSize);
+ if (frame && dctx->fParams.windowSize > (1<<23))
+ return ZSTD_decompressSequencesLong(dctx, dst, dstCapacity, ip, srcSize, isLongOffset);
+ return ZSTD_decompressSequences(dctx, dst, dstCapacity, ip, srcSize, isLongOffset);
}
@@ -1395,7 +1449,7 @@ size_t ZSTD_decompressBlock(ZSTD_DCtx* dctx,
{
size_t dSize;
ZSTD_checkContinuity(dctx, dst);
- dSize = ZSTD_decompressBlock_internal(dctx, dst, dstCapacity, src, srcSize);
+ dSize = ZSTD_decompressBlock_internal(dctx, dst, dstCapacity, src, srcSize, /* frame */ 0);
dctx->previousDstEnd = (char*)dst + dSize;
return dSize;
}
@@ -1411,7 +1465,7 @@ ZSTDLIB_API size_t ZSTD_insertBlock(ZSTD_DCtx* dctx, const void* blockStart, siz
}
-size_t ZSTD_generateNxBytes(void* dst, size_t dstCapacity, BYTE byte, size_t length)
+static size_t ZSTD_generateNxBytes(void* dst, size_t dstCapacity, BYTE byte, size_t length)
{
if (length > dstCapacity) return ERROR(dstSize_tooSmall);
memset(dst, byte, length);
@@ -1431,7 +1485,7 @@ size_t ZSTD_findFrameCompressedSize(const void *src, size_t srcSize)
#endif
if ( (srcSize >= ZSTD_skippableHeaderSize)
&& (MEM_readLE32(src) & 0xFFFFFFF0U) == ZSTD_MAGIC_SKIPPABLE_START ) {
- return ZSTD_skippableHeaderSize + MEM_readLE32((const BYTE*)src + 4);
+ return ZSTD_skippableHeaderSize + MEM_readLE32((const BYTE*)src + ZSTD_frameIdSize);
} else {
const BYTE* ip = (const BYTE*)src;
const BYTE* const ipstart = ip;
@@ -1511,7 +1565,7 @@ static size_t ZSTD_decompressFrame(ZSTD_DCtx* dctx,
switch(blockProperties.blockType)
{
case bt_compressed:
- decodedSize = ZSTD_decompressBlock_internal(dctx, op, oend-op, ip, cBlockSize);
+ decodedSize = ZSTD_decompressBlock_internal(dctx, op, oend-op, ip, cBlockSize, /* frame */ 1);
break;
case bt_raw :
decodedSize = ZSTD_copyRawBlock(op, oend-op, ip, cBlockSize);
@@ -1533,6 +1587,10 @@ static size_t ZSTD_decompressFrame(ZSTD_DCtx* dctx,
if (blockProperties.lastBlock) break;
}
+ if (dctx->fParams.frameContentSize != ZSTD_CONTENTSIZE_UNKNOWN) {
+ if ((U64)(op-ostart) != dctx->fParams.frameContentSize) {
+ return ERROR(corruption_detected);
+ } }
if (dctx->fParams.checksumFlag) { /* Frame content checksum verification */
U32 const checkCalc = (U32)XXH64_digest(&dctx->xxhState);
U32 checkRead;
@@ -1590,13 +1648,15 @@ static size_t ZSTD_decompressMultiFrame(ZSTD_DCtx* dctx,
#endif
magicNumber = MEM_readLE32(src);
+ DEBUGLOG(4, "reading magic number %08X (expecting %08X)",
+ (U32)magicNumber, (U32)ZSTD_MAGICNUMBER);
if (magicNumber != ZSTD_MAGICNUMBER) {
if ((magicNumber & 0xFFFFFFF0U) == ZSTD_MAGIC_SKIPPABLE_START) {
size_t skippableSize;
if (srcSize < ZSTD_skippableHeaderSize)
return ERROR(srcSize_wrong);
- skippableSize = MEM_readLE32((const BYTE *)src + 4) +
- ZSTD_skippableHeaderSize;
+ skippableSize = MEM_readLE32((const BYTE*)src + ZSTD_frameIdSize)
+ + ZSTD_skippableHeaderSize;
if (srcSize < skippableSize) return ERROR(srcSize_wrong);
src = (const BYTE *)src + skippableSize;
@@ -1699,33 +1759,31 @@ size_t ZSTD_decompressContinue(ZSTD_DCtx* dctx, void* dst, size_t dstCapacity, c
{
DEBUGLOG(5, "ZSTD_decompressContinue");
/* Sanity check */
- if (srcSize != dctx->expected) return ERROR(srcSize_wrong); /* unauthorized */
+ if (srcSize != dctx->expected) return ERROR(srcSize_wrong); /* not allowed */
if (dstCapacity) ZSTD_checkContinuity(dctx, dst);
switch (dctx->stage)
{
case ZSTDds_getFrameHeaderSize :
- if (srcSize != ZSTD_frameHeaderSize_prefix) return ERROR(srcSize_wrong); /* unauthorized */
assert(src != NULL);
- if ((MEM_readLE32(src) & 0xFFFFFFF0U) == ZSTD_MAGIC_SKIPPABLE_START) { /* skippable frame */
- memcpy(dctx->headerBuffer, src, ZSTD_frameHeaderSize_prefix);
- dctx->expected = ZSTD_skippableHeaderSize - ZSTD_frameHeaderSize_prefix; /* magic number + skippable frame length */
- dctx->stage = ZSTDds_decodeSkippableHeader;
- return 0;
- }
- dctx->headerSize = ZSTD_frameHeaderSize(src, ZSTD_frameHeaderSize_prefix);
+ if (dctx->format == ZSTD_f_zstd1) { /* allows header */
+ assert(srcSize >= ZSTD_frameIdSize); /* to read skippable magic number */
+ if ((MEM_readLE32(src) & 0xFFFFFFF0U) == ZSTD_MAGIC_SKIPPABLE_START) { /* skippable frame */
+ memcpy(dctx->headerBuffer, src, srcSize);
+ dctx->expected = ZSTD_skippableHeaderSize - srcSize; /* remaining to load to get full skippable frame header */
+ dctx->stage = ZSTDds_decodeSkippableHeader;
+ return 0;
+ } }
+ dctx->headerSize = ZSTD_frameHeaderSize_internal(src, srcSize, dctx->format);
if (ZSTD_isError(dctx->headerSize)) return dctx->headerSize;
- memcpy(dctx->headerBuffer, src, ZSTD_frameHeaderSize_prefix);
- if (dctx->headerSize > ZSTD_frameHeaderSize_prefix) {
- dctx->expected = dctx->headerSize - ZSTD_frameHeaderSize_prefix;
- dctx->stage = ZSTDds_decodeFrameHeader;
- return 0;
- }
- dctx->expected = 0; /* not necessary to copy more */
- /* fall-through */
+ memcpy(dctx->headerBuffer, src, srcSize);
+ dctx->expected = dctx->headerSize - srcSize;
+ dctx->stage = ZSTDds_decodeFrameHeader;
+ return 0;
+
case ZSTDds_decodeFrameHeader:
assert(src != NULL);
- memcpy(dctx->headerBuffer + ZSTD_frameHeaderSize_prefix, src, dctx->expected);
+ memcpy(dctx->headerBuffer + (dctx->headerSize - srcSize), src, srcSize);
CHECK_F(ZSTD_decodeFrameHeader(dctx, dctx->headerBuffer, dctx->headerSize));
dctx->expected = ZSTD_blockHeaderSize;
dctx->stage = ZSTDds_decodeBlockHeader;
@@ -1757,6 +1815,7 @@ size_t ZSTD_decompressContinue(ZSTD_DCtx* dctx, void* dst, size_t dstCapacity, c
}
return 0;
}
+
case ZSTDds_decompressLastBlock:
case ZSTDds_decompressBlock:
DEBUGLOG(5, "case ZSTDds_decompressBlock");
@@ -1765,7 +1824,7 @@ size_t ZSTD_decompressContinue(ZSTD_DCtx* dctx, void* dst, size_t dstCapacity, c
{
case bt_compressed:
DEBUGLOG(5, "case bt_compressed");
- rSize = ZSTD_decompressBlock_internal(dctx, dst, dstCapacity, src, srcSize);
+ rSize = ZSTD_decompressBlock_internal(dctx, dst, dstCapacity, src, srcSize, /* frame */ 1);
break;
case bt_raw :
rSize = ZSTD_copyRawBlock(dst, dstCapacity, src, srcSize);
@@ -1778,9 +1837,16 @@ size_t ZSTD_decompressContinue(ZSTD_DCtx* dctx, void* dst, size_t dstCapacity, c
return ERROR(corruption_detected);
}
if (ZSTD_isError(rSize)) return rSize;
+ DEBUGLOG(5, "decoded size from block : %u", (U32)rSize);
+ dctx->decodedSize += rSize;
if (dctx->fParams.checksumFlag) XXH64_update(&dctx->xxhState, dst, rSize);
if (dctx->stage == ZSTDds_decompressLastBlock) { /* end of frame */
+ DEBUGLOG(4, "decoded size from frame : %u", (U32)dctx->decodedSize);
+ if (dctx->fParams.frameContentSize != ZSTD_CONTENTSIZE_UNKNOWN) {
+ if (dctx->decodedSize != dctx->fParams.frameContentSize) {
+ return ERROR(corruption_detected);
+ } }
if (dctx->fParams.checksumFlag) { /* another round for frame checksum */
dctx->expected = 4;
dctx->stage = ZSTDds_checkChecksum;
@@ -1795,26 +1861,31 @@ size_t ZSTD_decompressContinue(ZSTD_DCtx* dctx, void* dst, size_t dstCapacity, c
}
return rSize;
}
+
case ZSTDds_checkChecksum:
+ assert(srcSize == 4); /* guaranteed by dctx->expected */
{ U32 const h32 = (U32)XXH64_digest(&dctx->xxhState);
- U32 const check32 = MEM_readLE32(src); /* srcSize == 4, guaranteed by dctx->expected */
+ U32 const check32 = MEM_readLE32(src);
+ DEBUGLOG(4, "checksum : calculated %08X :: %08X read", h32, check32);
if (check32 != h32) return ERROR(checksum_wrong);
dctx->expected = 0;
dctx->stage = ZSTDds_getFrameHeaderSize;
return 0;
}
+
case ZSTDds_decodeSkippableHeader:
- { assert(src != NULL);
- memcpy(dctx->headerBuffer + ZSTD_frameHeaderSize_prefix, src, dctx->expected);
- dctx->expected = MEM_readLE32(dctx->headerBuffer + 4);
- dctx->stage = ZSTDds_skipFrame;
- return 0;
- }
+ assert(src != NULL);
+ assert(srcSize <= ZSTD_skippableHeaderSize);
+ memcpy(dctx->headerBuffer + (ZSTD_skippableHeaderSize - srcSize), src, srcSize); /* complete skippable header */
+ dctx->expected = MEM_readLE32(dctx->headerBuffer + ZSTD_frameIdSize); /* note : dctx->expected can grow seriously large, beyond local buffer size */
+ dctx->stage = ZSTDds_skipFrame;
+ return 0;
+
case ZSTDds_skipFrame:
- { dctx->expected = 0;
- dctx->stage = ZSTDds_getFrameHeaderSize;
- return 0;
- }
+ dctx->expected = 0;
+ dctx->stage = ZSTDds_getFrameHeaderSize;
+ return 0;
+
default:
return ERROR(GENERIC); /* impossible */
}
@@ -1895,7 +1966,7 @@ static size_t ZSTD_decompress_insertDictionary(ZSTD_DCtx* dctx, const void* dict
if (magic != ZSTD_MAGIC_DICTIONARY) {
return ZSTD_refDictContent(dctx, dict, dictSize); /* pure content mode */
} }
- dctx->dictID = MEM_readLE32((const char*)dict + 4);
+ dctx->dictID = MEM_readLE32((const char*)dict + ZSTD_frameIdSize);
/* load entropy tables */
{ size_t const eSize = ZSTD_loadEntropy(&dctx->entropy, dict, dictSize);
@@ -1909,6 +1980,29 @@ static size_t ZSTD_decompress_insertDictionary(ZSTD_DCtx* dctx, const void* dict
return ZSTD_refDictContent(dctx, dict, dictSize);
}
+/* Note : this function cannot fail */
+size_t ZSTD_decompressBegin(ZSTD_DCtx* dctx)
+{
+ assert(dctx != NULL);
+ dctx->expected = ZSTD_startingInputLength(dctx->format); /* dctx->format must be properly set */
+ dctx->stage = ZSTDds_getFrameHeaderSize;
+ dctx->decodedSize = 0;
+ dctx->previousDstEnd = NULL;
+ dctx->base = NULL;
+ dctx->vBase = NULL;
+ dctx->dictEnd = NULL;
+ dctx->entropy.hufTable[0] = (HUF_DTable)((HufLog)*0x1000001); /* cover both little and big endian */
+ dctx->litEntropy = dctx->fseEntropy = 0;
+ dctx->dictID = 0;
+ ZSTD_STATIC_ASSERT(sizeof(dctx->entropy.rep) == sizeof(repStartValue));
+ memcpy(dctx->entropy.rep, repStartValue, sizeof(repStartValue)); /* initial repcodes */
+ dctx->LLTptr = dctx->entropy.LLTable;
+ dctx->MLTptr = dctx->entropy.MLTable;
+ dctx->OFTptr = dctx->entropy.OFTable;
+ dctx->HUFptr = dctx->entropy.hufTable;
+ return 0;
+}
+
size_t ZSTD_decompressBegin_usingDict(ZSTD_DCtx* dctx, const void* dict, size_t dictSize)
{
CHECK_F( ZSTD_decompressBegin(dctx) );
@@ -1975,7 +2069,7 @@ static size_t ZSTD_loadEntropy_inDDict(ZSTD_DDict* ddict)
{ U32 const magic = MEM_readLE32(ddict->dictContent);
if (magic != ZSTD_MAGIC_DICTIONARY) return 0; /* pure content mode */
}
- ddict->dictID = MEM_readLE32((const char*)ddict->dictContent + 4);
+ ddict->dictID = MEM_readLE32((const char*)ddict->dictContent + ZSTD_frameIdSize);
/* load entropy tables */
CHECK_E( ZSTD_loadEntropy(&ddict->entropy, ddict->dictContent, ddict->dictSize), dictionary_corrupted );
@@ -1984,9 +2078,9 @@ static size_t ZSTD_loadEntropy_inDDict(ZSTD_DDict* ddict)
}
-static size_t ZSTD_initDDict_internal(ZSTD_DDict* ddict, const void* dict, size_t dictSize, unsigned byReference)
+static size_t ZSTD_initDDict_internal(ZSTD_DDict* ddict, const void* dict, size_t dictSize, ZSTD_dictLoadMethod_e dictLoadMethod)
{
- if ((byReference) || (!dict) || (!dictSize)) {
+ if ((dictLoadMethod == ZSTD_dlm_byRef) || (!dict) || (!dictSize)) {
ddict->dictBuffer = NULL;
ddict->dictContent = dict;
} else {
@@ -2005,7 +2099,7 @@ static size_t ZSTD_initDDict_internal(ZSTD_DDict* ddict, const void* dict, size_
return 0;
}
-ZSTD_DDict* ZSTD_createDDict_advanced(const void* dict, size_t dictSize, unsigned byReference, ZSTD_customMem customMem)
+ZSTD_DDict* ZSTD_createDDict_advanced(const void* dict, size_t dictSize, ZSTD_dictLoadMethod_e dictLoadMethod, ZSTD_customMem customMem)
{
if (!customMem.customAlloc ^ !customMem.customFree) return NULL;
@@ -2013,7 +2107,7 @@ ZSTD_DDict* ZSTD_createDDict_advanced(const void* dict, size_t dictSize, unsigne
if (!ddict) return NULL;
ddict->cMem = customMem;
- if (ZSTD_isError( ZSTD_initDDict_internal(ddict, dict, dictSize, byReference) )) {
+ if (ZSTD_isError( ZSTD_initDDict_internal(ddict, dict, dictSize, dictLoadMethod) )) {
ZSTD_freeDDict(ddict);
return NULL;
}
@@ -2029,7 +2123,7 @@ ZSTD_DDict* ZSTD_createDDict_advanced(const void* dict, size_t dictSize, unsigne
ZSTD_DDict* ZSTD_createDDict(const void* dict, size_t dictSize)
{
ZSTD_customMem const allocator = { NULL, NULL, NULL };
- return ZSTD_createDDict_advanced(dict, dictSize, 0, allocator);
+ return ZSTD_createDDict_advanced(dict, dictSize, ZSTD_dlm_byCopy, allocator);
}
/*! ZSTD_createDDict_byReference() :
@@ -2039,25 +2133,26 @@ ZSTD_DDict* ZSTD_createDDict(const void* dict, size_t dictSize)
ZSTD_DDict* ZSTD_createDDict_byReference(const void* dictBuffer, size_t dictSize)
{
ZSTD_customMem const allocator = { NULL, NULL, NULL };
- return ZSTD_createDDict_advanced(dictBuffer, dictSize, 1, allocator);
+ return ZSTD_createDDict_advanced(dictBuffer, dictSize, ZSTD_dlm_byRef, allocator);
}
ZSTD_DDict* ZSTD_initStaticDDict(void* workspace, size_t workspaceSize,
const void* dict, size_t dictSize,
- unsigned byReference)
+ ZSTD_dictLoadMethod_e dictLoadMethod)
{
- size_t const neededSpace = sizeof(ZSTD_DDict) + (byReference ? 0 : dictSize);
+ size_t const neededSpace =
+ sizeof(ZSTD_DDict) + (dictLoadMethod == ZSTD_dlm_byRef ? 0 : dictSize);
ZSTD_DDict* const ddict = (ZSTD_DDict*)workspace;
assert(workspace != NULL);
assert(dict != NULL);
if ((size_t)workspace & 7) return NULL; /* 8-aligned */
if (workspaceSize < neededSpace) return NULL;
- if (!byReference) {
+ if (dictLoadMethod == ZSTD_dlm_byCopy) {
memcpy(ddict+1, dict, dictSize); /* local copy */
dict = ddict+1;
}
- if (ZSTD_isError( ZSTD_initDDict_internal(ddict, dict, dictSize, 1 /* byRef */) ))
+ if (ZSTD_isError( ZSTD_initDDict_internal(ddict, dict, dictSize, ZSTD_dlm_byRef) ))
return NULL;
return ddict;
}
@@ -2075,10 +2170,10 @@ size_t ZSTD_freeDDict(ZSTD_DDict* ddict)
/*! ZSTD_estimateDDictSize() :
* Estimate amount of memory that will be needed to create a dictionary for decompression.
- * Note : dictionary created "byReference" are smaller */
-size_t ZSTD_estimateDDictSize(size_t dictSize, unsigned byReference)
+ * Note : dictionary created by reference using ZSTD_dlm_byRef are smaller */
+size_t ZSTD_estimateDDictSize(size_t dictSize, ZSTD_dictLoadMethod_e dictLoadMethod)
{
- return sizeof(ZSTD_DDict) + (byReference ? 0 : dictSize);
+ return sizeof(ZSTD_DDict) + (dictLoadMethod == ZSTD_dlm_byRef ? 0 : dictSize);
}
size_t ZSTD_sizeof_DDict(const ZSTD_DDict* ddict)
@@ -2095,7 +2190,7 @@ unsigned ZSTD_getDictID_fromDict(const void* dict, size_t dictSize)
{
if (dictSize < 8) return 0;
if (MEM_readLE32(dict) != ZSTD_MAGIC_DICTIONARY) return 0;
- return MEM_readLE32((const char*)dict + 4);
+ return MEM_readLE32((const char*)dict + ZSTD_frameIdSize);
}
/*! ZSTD_getDictID_fromDDict() :
@@ -2123,7 +2218,7 @@ unsigned ZSTD_getDictID_fromDDict(const ZSTD_DDict* ddict)
* ZSTD_getFrameHeader(), which will provide a more precise error code. */
unsigned ZSTD_getDictID_fromFrame(const void* src, size_t srcSize)
{
- ZSTD_frameHeader zfp = { 0, 0, ZSTD_frame, 0, 0, 0 };
+ ZSTD_frameHeader zfp = { 0, 0, 0, ZSTD_frame, 0, 0, 0 };
size_t const hError = ZSTD_getFrameHeader(&zfp, src, srcSize);
if (ZSTD_isError(hError)) return 0;
return zfp.dictID;
@@ -2190,13 +2285,15 @@ size_t ZSTD_initDStream_usingDict(ZSTD_DStream* zds, const void* dict, size_t di
return ZSTD_frameHeaderSize_prefix;
}
+/* note : this variant can't fail */
size_t ZSTD_initDStream(ZSTD_DStream* zds)
{
return ZSTD_initDStream_usingDict(zds, NULL, 0);
}
/* ZSTD_initDStream_usingDDict() :
- * ddict will just be referenced, and must outlive decompression session */
+ * ddict will just be referenced, and must outlive decompression session
+ * this function cannot fail */
size_t ZSTD_initDStream_usingDDict(ZSTD_DStream* zds, const ZSTD_DDict* ddict)
{
size_t const initResult = ZSTD_initDStream(zds);
@@ -2216,31 +2313,66 @@ size_t ZSTD_resetDStream(ZSTD_DStream* zds)
size_t ZSTD_setDStreamParameter(ZSTD_DStream* zds,
ZSTD_DStreamParameter_e paramType, unsigned paramValue)
{
+ ZSTD_STATIC_ASSERT((unsigned)zdss_loadHeader >= (unsigned)zdss_init);
+ if ((unsigned)zds->streamStage > (unsigned)zdss_loadHeader)
+ return ERROR(stage_wrong);
switch(paramType)
{
default : return ERROR(parameter_unsupported);
- case DStream_p_maxWindowSize : zds->maxWindowSize = paramValue ? paramValue : (U32)(-1); break;
+ case DStream_p_maxWindowSize :
+ DEBUGLOG(4, "setting maxWindowSize = %u KB", paramValue >> 10);
+ zds->maxWindowSize = paramValue ? paramValue : (U32)(-1);
+ break;
}
return 0;
}
+size_t ZSTD_DCtx_setMaxWindowSize(ZSTD_DCtx* dctx, size_t maxWindowSize)
+{
+ ZSTD_STATIC_ASSERT((unsigned)zdss_loadHeader >= (unsigned)zdss_init);
+ if ((unsigned)dctx->streamStage > (unsigned)zdss_loadHeader)
+ return ERROR(stage_wrong);
+ dctx->maxWindowSize = maxWindowSize;
+ return 0;
+}
+
+size_t ZSTD_DCtx_setFormat(ZSTD_DCtx* dctx, ZSTD_format_e format)
+{
+ DEBUGLOG(4, "ZSTD_DCtx_setFormat : %u", (unsigned)format);
+ ZSTD_STATIC_ASSERT((unsigned)zdss_loadHeader >= (unsigned)zdss_init);
+ if ((unsigned)dctx->streamStage > (unsigned)zdss_loadHeader)
+ return ERROR(stage_wrong);
+ dctx->format = format;
+ return 0;
+}
+
size_t ZSTD_sizeof_DStream(const ZSTD_DStream* zds)
{
return ZSTD_sizeof_DCtx(zds);
}
+size_t ZSTD_decodingBufferSize_min(unsigned long long windowSize, unsigned long long frameContentSize)
+{
+ size_t const blockSize = (size_t) MIN(windowSize, ZSTD_BLOCKSIZE_MAX);
+ unsigned long long const neededRBSize = windowSize + blockSize + (WILDCOPY_OVERLENGTH * 2);
+ unsigned long long const neededSize = MIN(frameContentSize, neededRBSize);
+ size_t const minRBSize = (size_t) neededSize;
+ if ((unsigned long long)minRBSize != neededSize) return ERROR(frameParameter_windowTooLarge);
+ return minRBSize;
+}
+
size_t ZSTD_estimateDStreamSize(size_t windowSize)
{
size_t const blockSize = MIN(windowSize, ZSTD_BLOCKSIZE_MAX);
size_t const inBuffSize = blockSize; /* no block can be larger */
- size_t const outBuffSize = windowSize + blockSize + (WILDCOPY_OVERLENGTH * 2);
+ size_t const outBuffSize = ZSTD_decodingBufferSize_min(windowSize, ZSTD_CONTENTSIZE_UNKNOWN);
return ZSTD_estimateDCtxSize() + inBuffSize + outBuffSize;
}
-ZSTDLIB_API size_t ZSTD_estimateDStreamSize_fromFrame(const void* src, size_t srcSize)
+size_t ZSTD_estimateDStreamSize_fromFrame(const void* src, size_t srcSize)
{
- U32 const windowSizeMax = 1U << ZSTD_WINDOWLOG_MAX;
+ U32 const windowSizeMax = 1U << ZSTD_WINDOWLOG_MAX; /* note : should be user-selectable */
ZSTD_frameHeader zfh;
size_t const err = ZSTD_getFrameHeader(&zfh, src, srcSize);
if (ZSTD_isError(err)) return err;
@@ -2272,7 +2404,18 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
U32 someMoreWork = 1;
DEBUGLOG(5, "ZSTD_decompressStream");
+ if (input->pos > input->size) { /* forbidden */
+ DEBUGLOG(5, "in: pos: %u vs size: %u",
+ (U32)input->pos, (U32)input->size);
+ return ERROR(srcSize_wrong);
+ }
+ if (output->pos > output->size) { /* forbidden */
+ DEBUGLOG(5, "out: pos: %u vs size: %u",
+ (U32)output->pos, (U32)output->size);
+ return ERROR(dstSize_tooSmall);
+ }
DEBUGLOG(5, "input size : %u", (U32)(input->size - input->pos));
+
#if defined(ZSTD_LEGACY_SUPPORT) && (ZSTD_LEGACY_SUPPORT>=1)
if (zds->legacyVersion) {
/* legacy support is incompatible with static dctx */
@@ -2289,7 +2432,9 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
/* fall-through */
case zdss_loadHeader :
- { size_t const hSize = ZSTD_getFrameHeader(&zds->fParams, zds->headerBuffer, zds->lhSize);
+ DEBUGLOG(5, "stage zdss_loadHeader (srcSize : %u)", (U32)(iend - ip));
+ { size_t const hSize = ZSTD_getFrameHeader_internal(&zds->fParams, zds->headerBuffer, zds->lhSize, zds->format);
+ DEBUGLOG(5, "header size : %u", (U32)hSize);
if (ZSTD_isError(hSize)) {
#if defined(ZSTD_LEGACY_SUPPORT) && (ZSTD_LEGACY_SUPPORT>=1)
U32 const legacyVersion = ZSTD_isLegacy(istart, iend-istart);
@@ -2342,7 +2487,7 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
CHECK_F(ZSTD_decompressBegin_usingDDict(zds, zds->ddict));
if ((MEM_readLE32(zds->headerBuffer) & 0xFFFFFFF0U) == ZSTD_MAGIC_SKIPPABLE_START) { /* skippable frame */
- zds->expected = MEM_readLE32(zds->headerBuffer + 4);
+ zds->expected = MEM_readLE32(zds->headerBuffer + ZSTD_frameIdSize);
zds->stage = ZSTDds_skipFrame;
} else {
CHECK_F(ZSTD_decodeFrameHeader(zds, zds->headerBuffer, zds->lhSize));
@@ -2351,20 +2496,20 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
}
/* control buffer memory usage */
- DEBUGLOG(4, "Control max buffer memory usage");
+ DEBUGLOG(4, "Control max buffer memory usage (max %u KB)",
+ (U32)(zds->maxWindowSize >> 10));
zds->fParams.windowSize = MAX(zds->fParams.windowSize, 1U << ZSTD_WINDOWLOG_ABSOLUTEMIN);
if (zds->fParams.windowSize > zds->maxWindowSize) return ERROR(frameParameter_windowTooLarge);
/* Adapt buffer sizes to frame header instructions */
- { size_t const blockSize = (size_t)(MIN(zds->fParams.windowSize, ZSTD_BLOCKSIZE_MAX));
- size_t const neededOutSize = (size_t)(zds->fParams.windowSize + blockSize + WILDCOPY_OVERLENGTH * 2);
- zds->blockSize = blockSize;
- if ((zds->inBuffSize < blockSize) || (zds->outBuffSize < neededOutSize)) {
- size_t const bufferSize = blockSize + neededOutSize;
+ { size_t const neededInBuffSize = MAX(zds->fParams.blockSizeMax, 4 /* frame checksum */);
+ size_t const neededOutBuffSize = ZSTD_decodingBufferSize_min(zds->fParams.windowSize, zds->fParams.frameContentSize);
+ if ((zds->inBuffSize < neededInBuffSize) || (zds->outBuffSize < neededOutBuffSize)) {
+ size_t const bufferSize = neededInBuffSize + neededOutBuffSize;
DEBUGLOG(4, "inBuff : from %u to %u",
- (U32)zds->inBuffSize, (U32)blockSize);
+ (U32)zds->inBuffSize, (U32)neededInBuffSize);
DEBUGLOG(4, "outBuff : from %u to %u",
- (U32)zds->outBuffSize, (U32)neededOutSize);
+ (U32)zds->outBuffSize, (U32)neededOutBuffSize);
if (zds->staticSize) { /* static DCtx */
DEBUGLOG(4, "staticSize : %u", (U32)zds->staticSize);
assert(zds->staticSize >= sizeof(ZSTD_DCtx)); /* controlled at init */
@@ -2377,9 +2522,9 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
zds->inBuff = (char*)ZSTD_malloc(bufferSize, zds->customMem);
if (zds->inBuff == NULL) return ERROR(memory_allocation);
}
- zds->inBuffSize = blockSize;
+ zds->inBuffSize = neededInBuffSize;
zds->outBuff = zds->inBuff + zds->inBuffSize;
- zds->outBuffSize = neededOutSize;
+ zds->outBuffSize = neededOutBuffSize;
} }
zds->streamStage = zdss_read;
/* fall-through */
@@ -2437,8 +2582,13 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
zds->outStart += flushedSize;
if (flushedSize == toFlushSize) { /* flush completed */
zds->streamStage = zdss_read;
- if (zds->outStart + zds->blockSize > zds->outBuffSize)
+ if ( (zds->outBuffSize < zds->fParams.frameContentSize)
+ && (zds->outStart + zds->fParams.blockSizeMax > zds->outBuffSize) ) {
+ DEBUGLOG(5, "restart filling outBuff from beginning (left:%i, needed:%u)",
+ (int)(zds->outBuffSize - zds->outStart),
+ (U32)zds->fParams.blockSizeMax);
zds->outStart = zds->outEnd = 0;
+ }
break;
} }
/* cannot complete flush */
@@ -2476,3 +2626,30 @@ size_t ZSTD_decompressStream(ZSTD_DStream* zds, ZSTD_outBuffer* output, ZSTD_inB
return nextSrcSizeHint;
}
}
+
+
+size_t ZSTD_decompress_generic(ZSTD_DCtx* dctx, ZSTD_outBuffer* output, ZSTD_inBuffer* input)
+{
+ return ZSTD_decompressStream(dctx, output, input);
+}
+
+size_t ZSTD_decompress_generic_simpleArgs (
+ ZSTD_DCtx* dctx,
+ void* dst, size_t dstCapacity, size_t* dstPos,
+ const void* src, size_t srcSize, size_t* srcPos)
+{
+ ZSTD_outBuffer output = { dst, dstCapacity, *dstPos };
+ ZSTD_inBuffer input = { src, srcSize, *srcPos };
+ /* ZSTD_compress_generic() will check validity of dstPos and srcPos */
+ size_t const cErr = ZSTD_decompress_generic(dctx, &output, &input);
+ *dstPos = output.pos;
+ *srcPos = input.pos;
+ return cErr;
+}
+
+void ZSTD_DCtx_reset(ZSTD_DCtx* dctx)
+{
+ (void)ZSTD_initDStream(dctx);
+ dctx->format = ZSTD_f_zstd1;
+ dctx->maxWindowSize = ZSTD_MAXWINDOWSIZE_DEFAULT;
+}
diff --git a/thirdparty/zstd/zstd.h b/thirdparty/zstd/zstd.h
index 13b4563fd6..2194a3b23d 100644
--- a/thirdparty/zstd/zstd.h
+++ b/thirdparty/zstd/zstd.h
@@ -5,6 +5,7 @@
* This source code is licensed under both the BSD-style license (found in the
* LICENSE file in the root directory of this source tree) and the GPLv2 (found
* in the COPYING file in the root directory of this source tree).
+ * You may select, at your option, one of the above-listed licenses.
*/
#if defined (__cplusplus)
extern "C" {
@@ -58,7 +59,7 @@ extern "C" {
/*------ Version ------*/
#define ZSTD_VERSION_MAJOR 1
#define ZSTD_VERSION_MINOR 3
-#define ZSTD_VERSION_RELEASE 1
+#define ZSTD_VERSION_RELEASE 2
#define ZSTD_VERSION_NUMBER (ZSTD_VERSION_MAJOR *100*100 + ZSTD_VERSION_MINOR *100 + ZSTD_VERSION_RELEASE)
ZSTDLIB_API unsigned ZSTD_versionNumber(void); /**< useful to check dll version */
@@ -130,10 +131,11 @@ ZSTDLIB_API unsigned long long ZSTD_getDecompressedSize(const void* src, size_t
/*====== Helper functions ======*/
-ZSTDLIB_API int ZSTD_maxCLevel(void); /*!< maximum compression level available */
+#define ZSTD_COMPRESSBOUND(srcSize) ((srcSize) + ((srcSize)>>8) + (((srcSize) < 128 KB) ? ((128 KB - (srcSize)) >> 11) /* margin, from 64 to 0 */ : 0)) /* this formula ensures that bound(A) + bound(B) <= bound(A+B) as long as A and B >= 128 KB */
ZSTDLIB_API size_t ZSTD_compressBound(size_t srcSize); /*!< maximum compressed size in worst case scenario */
ZSTDLIB_API unsigned ZSTD_isError(size_t code); /*!< tells if a `size_t` function result is an error code */
ZSTDLIB_API const char* ZSTD_getErrorName(size_t code); /*!< provides readable string from an error code */
+ZSTDLIB_API int ZSTD_maxCLevel(void); /*!< maximum compression level available */
/***************************************
@@ -375,27 +377,31 @@ ZSTDLIB_API size_t ZSTD_DStreamOutSize(void); /*!< recommended size for output
#define ZSTD_MAGIC_SKIPPABLE_START 0x184D2A50U
#define ZSTD_MAGIC_DICTIONARY 0xEC30A437 /* v0.7+ */
-#define ZSTD_WINDOWLOG_MAX_32 27
-#define ZSTD_WINDOWLOG_MAX_64 27
+#define ZSTD_WINDOWLOG_MAX_32 30
+#define ZSTD_WINDOWLOG_MAX_64 31
#define ZSTD_WINDOWLOG_MAX ((unsigned)(sizeof(size_t) == 4 ? ZSTD_WINDOWLOG_MAX_32 : ZSTD_WINDOWLOG_MAX_64))
-#define ZSTD_WINDOWLOG_MIN 10
-#define ZSTD_HASHLOG_MAX ZSTD_WINDOWLOG_MAX
-#define ZSTD_HASHLOG_MIN 6
-#define ZSTD_CHAINLOG_MAX (ZSTD_WINDOWLOG_MAX+1)
-#define ZSTD_CHAINLOG_MIN ZSTD_HASHLOG_MIN
-#define ZSTD_HASHLOG3_MAX 17
-#define ZSTD_SEARCHLOG_MAX (ZSTD_WINDOWLOG_MAX-1)
-#define ZSTD_SEARCHLOG_MIN 1
-#define ZSTD_SEARCHLENGTH_MAX 7 /* only for ZSTD_fast, other strategies are limited to 6 */
-#define ZSTD_SEARCHLENGTH_MIN 3 /* only for ZSTD_btopt, other strategies are limited to 4 */
-#define ZSTD_TARGETLENGTH_MIN 4
-#define ZSTD_TARGETLENGTH_MAX 999
-
-#define ZSTD_FRAMEHEADERSIZE_MAX 18 /* for static allocation */
-#define ZSTD_FRAMEHEADERSIZE_MIN 6
-static const size_t ZSTD_frameHeaderSize_prefix = 5; /* minimum input size to know frame header size */
-static const size_t ZSTD_frameHeaderSize_max = ZSTD_FRAMEHEADERSIZE_MAX;
+#define ZSTD_WINDOWLOG_MIN 10
+#define ZSTD_HASHLOG_MAX MIN(ZSTD_WINDOWLOG_MAX, 30)
+#define ZSTD_HASHLOG_MIN 6
+#define ZSTD_CHAINLOG_MAX MIN(ZSTD_WINDOWLOG_MAX+1, 30)
+#define ZSTD_CHAINLOG_MIN ZSTD_HASHLOG_MIN
+#define ZSTD_HASHLOG3_MAX 17
+#define ZSTD_SEARCHLOG_MAX (ZSTD_WINDOWLOG_MAX-1)
+#define ZSTD_SEARCHLOG_MIN 1
+#define ZSTD_SEARCHLENGTH_MAX 7 /* only for ZSTD_fast, other strategies are limited to 6 */
+#define ZSTD_SEARCHLENGTH_MIN 3 /* only for ZSTD_btopt, other strategies are limited to 4 */
+#define ZSTD_TARGETLENGTH_MIN 4 /* only useful for btopt */
+#define ZSTD_TARGETLENGTH_MAX 999 /* only useful for btopt */
+#define ZSTD_LDM_MINMATCH_MIN 4
+#define ZSTD_LDM_MINMATCH_MAX 4096
+#define ZSTD_LDM_BUCKETSIZELOG_MAX 8
+
+#define ZSTD_FRAMEHEADERSIZE_PREFIX 5 /* minimum input size to know frame header size */
+#define ZSTD_FRAMEHEADERSIZE_MIN 6
+#define ZSTD_FRAMEHEADERSIZE_MAX 18 /* for static allocation */
+static const size_t ZSTD_frameHeaderSize_prefix = ZSTD_FRAMEHEADERSIZE_PREFIX;
static const size_t ZSTD_frameHeaderSize_min = ZSTD_FRAMEHEADERSIZE_MIN;
+static const size_t ZSTD_frameHeaderSize_max = ZSTD_FRAMEHEADERSIZE_MAX;
static const size_t ZSTD_skippableHeaderSize = 8; /* magic number + skippable frame length */
@@ -424,6 +430,8 @@ typedef struct {
ZSTD_frameParameters fParams;
} ZSTD_parameters;
+typedef struct ZSTD_CCtx_params_s ZSTD_CCtx_params;
+
/*= Custom memory allocation functions */
typedef void* (*ZSTD_allocFunction) (void* opaque, size_t size);
typedef void (*ZSTD_freeFunction) (void* opaque, void* address);
@@ -480,7 +488,7 @@ ZSTDLIB_API size_t ZSTD_frameHeaderSize(const void* src, size_t srcSize);
/*! ZSTD_sizeof_*() :
* These functions give the current memory usage of selected object.
- * Object memory usage can evolve if it's re-used multiple times. */
+ * Object memory usage can evolve when re-used multiple times. */
ZSTDLIB_API size_t ZSTD_sizeof_CCtx(const ZSTD_CCtx* cctx);
ZSTDLIB_API size_t ZSTD_sizeof_DCtx(const ZSTD_DCtx* dctx);
ZSTDLIB_API size_t ZSTD_sizeof_CStream(const ZSTD_CStream* zcs);
@@ -493,18 +501,21 @@ ZSTDLIB_API size_t ZSTD_sizeof_DDict(const ZSTD_DDict* ddict);
* of a future {D,C}Ctx, before its creation.
* ZSTD_estimateCCtxSize() will provide a budget large enough for any compression level up to selected one.
* It will also consider src size to be arbitrarily "large", which is worst case.
- * If srcSize is known to always be small, ZSTD_estimateCCtxSize_advanced() can provide a tighter estimation.
- * ZSTD_estimateCCtxSize_advanced() can be used in tandem with ZSTD_getCParams() to create cParams from compressionLevel.
+ * If srcSize is known to always be small, ZSTD_estimateCCtxSize_usingCParams() can provide a tighter estimation.
+ * ZSTD_estimateCCtxSize_usingCParams() can be used in tandem with ZSTD_getCParams() to create cParams from compressionLevel.
+ * ZSTD_estimateCCtxSize_usingCCtxParams() can be used in tandem with ZSTD_CCtxParam_setParameter(). Only single-threaded compression is supported. This function will return an error code if ZSTD_p_nbThreads is > 1.
* Note : CCtx estimation is only correct for single-threaded compression */
ZSTDLIB_API size_t ZSTD_estimateCCtxSize(int compressionLevel);
-ZSTDLIB_API size_t ZSTD_estimateCCtxSize_advanced(ZSTD_compressionParameters cParams);
+ZSTDLIB_API size_t ZSTD_estimateCCtxSize_usingCParams(ZSTD_compressionParameters cParams);
+ZSTDLIB_API size_t ZSTD_estimateCCtxSize_usingCCtxParams(const ZSTD_CCtx_params* params);
ZSTDLIB_API size_t ZSTD_estimateDCtxSize(void);
-/*! ZSTD_estimate?StreamSize() :
+/*! ZSTD_estimateCStreamSize() :
* ZSTD_estimateCStreamSize() will provide a budget large enough for any compression level up to selected one.
* It will also consider src size to be arbitrarily "large", which is worst case.
- * If srcSize is known to always be small, ZSTD_estimateCStreamSize_advanced() can provide a tighter estimation.
- * ZSTD_estimateCStreamSize_advanced() can be used in tandem with ZSTD_getCParams() to create cParams from compressionLevel.
+ * If srcSize is known to always be small, ZSTD_estimateCStreamSize_usingCParams() can provide a tighter estimation.
+ * ZSTD_estimateCStreamSize_usingCParams() can be used in tandem with ZSTD_getCParams() to create cParams from compressionLevel.
+ * ZSTD_estimateCStreamSize_usingCCtxParams() can be used in tandem with ZSTD_CCtxParam_setParameter(). Only single-threaded compression is supported. This function will return an error code if ZSTD_p_nbThreads is set to a value > 1.
* Note : CStream estimation is only correct for single-threaded compression.
* ZSTD_DStream memory budget depends on window Size.
* This information can be passed manually, using ZSTD_estimateDStreamSize,
@@ -513,17 +524,24 @@ ZSTDLIB_API size_t ZSTD_estimateDCtxSize(void);
* an internal ?Dict will be created, which additional size is not estimated here.
* In this case, get total size by adding ZSTD_estimate?DictSize */
ZSTDLIB_API size_t ZSTD_estimateCStreamSize(int compressionLevel);
-ZSTDLIB_API size_t ZSTD_estimateCStreamSize_advanced(ZSTD_compressionParameters cParams);
+ZSTDLIB_API size_t ZSTD_estimateCStreamSize_usingCParams(ZSTD_compressionParameters cParams);
+ZSTDLIB_API size_t ZSTD_estimateCStreamSize_usingCCtxParams(const ZSTD_CCtx_params* params);
ZSTDLIB_API size_t ZSTD_estimateDStreamSize(size_t windowSize);
ZSTDLIB_API size_t ZSTD_estimateDStreamSize_fromFrame(const void* src, size_t srcSize);
+typedef enum {
+ ZSTD_dlm_byCopy = 0, /**< Copy dictionary content internally */
+ ZSTD_dlm_byRef, /**< Reference dictionary content -- the dictionary buffer must outlive its users. */
+} ZSTD_dictLoadMethod_e;
+
/*! ZSTD_estimate?DictSize() :
* ZSTD_estimateCDictSize() will bet that src size is relatively "small", and content is copied, like ZSTD_createCDict().
- * ZSTD_estimateCStreamSize_advanced() makes it possible to control precisely compression parameters, like ZSTD_createCDict_advanced().
- * Note : dictionary created "byReference" are smaller */
+ * ZSTD_estimateCStreamSize_advanced_usingCParams() makes it possible to control precisely compression parameters, like ZSTD_createCDict_advanced().
+ * Note : dictionary created by reference using ZSTD_dlm_byRef are smaller
+ */
ZSTDLIB_API size_t ZSTD_estimateCDictSize(size_t dictSize, int compressionLevel);
-ZSTDLIB_API size_t ZSTD_estimateCDictSize_advanced(size_t dictSize, ZSTD_compressionParameters cParams, unsigned byReference);
-ZSTDLIB_API size_t ZSTD_estimateDDictSize(size_t dictSize, unsigned byReference);
+ZSTDLIB_API size_t ZSTD_estimateCDictSize_advanced(size_t dictSize, ZSTD_compressionParameters cParams, ZSTD_dictLoadMethod_e dictLoadMethod);
+ZSTDLIB_API size_t ZSTD_estimateDDictSize(size_t dictSize, ZSTD_dictLoadMethod_e dictLoadMethod);
/***************************************
@@ -551,24 +569,12 @@ ZSTDLIB_API ZSTD_CCtx* ZSTD_createCCtx_advanced(ZSTD_customMem customMem);
ZSTDLIB_API ZSTD_CCtx* ZSTD_initStaticCCtx(void* workspace, size_t workspaceSize);
-/* !!! To be deprecated !!! */
-typedef enum {
- ZSTD_p_forceWindow, /* Force back-references to remain < windowSize, even when referencing Dictionary content (default:0) */
- ZSTD_p_forceRawDict /* Force loading dictionary in "content-only" mode (no header analysis) */
-} ZSTD_CCtxParameter;
-/*! ZSTD_setCCtxParameter() :
- * Set advanced parameters, selected through enum ZSTD_CCtxParameter
- * @result : 0, or an error code (which can be tested with ZSTD_isError()) */
-ZSTDLIB_API size_t ZSTD_setCCtxParameter(ZSTD_CCtx* cctx, ZSTD_CCtxParameter param, unsigned value);
-
-
/*! ZSTD_createCDict_byReference() :
* Create a digested dictionary for compression
* Dictionary content is simply referenced, and therefore stays in dictBuffer.
* It is important that dictBuffer outlives CDict, it must remain read accessible throughout the lifetime of CDict */
ZSTDLIB_API ZSTD_CDict* ZSTD_createCDict_byReference(const void* dictBuffer, size_t dictSize, int compressionLevel);
-
typedef enum { ZSTD_dm_auto=0, /* dictionary is "full" if it starts with ZSTD_MAGIC_DICTIONARY, otherwise it is "rawContent" */
ZSTD_dm_rawContent, /* ensures dictionary is always loaded as rawContent, even if it starts with ZSTD_MAGIC_DICTIONARY */
ZSTD_dm_fullDict /* refuses to load a dictionary if it does not respect Zstandard's specification */
@@ -576,7 +582,8 @@ typedef enum { ZSTD_dm_auto=0, /* dictionary is "full" if it starts with
/*! ZSTD_createCDict_advanced() :
* Create a ZSTD_CDict using external alloc and free, and customized compression parameters */
ZSTDLIB_API ZSTD_CDict* ZSTD_createCDict_advanced(const void* dict, size_t dictSize,
- unsigned byReference, ZSTD_dictMode_e dictMode,
+ ZSTD_dictLoadMethod_e dictLoadMethod,
+ ZSTD_dictMode_e dictMode,
ZSTD_compressionParameters cParams,
ZSTD_customMem customMem);
@@ -596,7 +603,7 @@ ZSTDLIB_API ZSTD_CDict* ZSTD_createCDict_advanced(const void* dict, size_t dictS
ZSTDLIB_API ZSTD_CDict* ZSTD_initStaticCDict(
void* workspace, size_t workspaceSize,
const void* dict, size_t dictSize,
- unsigned byReference, ZSTD_dictMode_e dictMode,
+ ZSTD_dictLoadMethod_e dictLoadMethod, ZSTD_dictMode_e dictMode,
ZSTD_compressionParameters cParams);
/*! ZSTD_getCParams() :
@@ -674,7 +681,8 @@ ZSTDLIB_API ZSTD_DDict* ZSTD_createDDict_byReference(const void* dictBuffer, siz
/*! ZSTD_createDDict_advanced() :
* Create a ZSTD_DDict using external alloc and free, optionally by reference */
ZSTDLIB_API ZSTD_DDict* ZSTD_createDDict_advanced(const void* dict, size_t dictSize,
- unsigned byReference, ZSTD_customMem customMem);
+ ZSTD_dictLoadMethod_e dictLoadMethod,
+ ZSTD_customMem customMem);
/*! ZSTD_initStaticDDict() :
* Generate a digested dictionary in provided memory area.
@@ -689,7 +697,7 @@ ZSTDLIB_API ZSTD_DDict* ZSTD_createDDict_advanced(const void* dict, size_t dictS
*/
ZSTDLIB_API ZSTD_DDict* ZSTD_initStaticDDict(void* workspace, size_t workspaceSize,
const void* dict, size_t dictSize,
- unsigned byReference);
+ ZSTD_dictLoadMethod_e dictLoadMethod);
/*! ZSTD_getDictID_fromDict() :
* Provides the dictID stored within dictionary.
@@ -724,9 +732,9 @@ ZSTDLIB_API unsigned ZSTD_getDictID_fromFrame(const void* src, size_t srcSize);
ZSTDLIB_API ZSTD_CStream* ZSTD_createCStream_advanced(ZSTD_customMem customMem);
ZSTDLIB_API ZSTD_CStream* ZSTD_initStaticCStream(void* workspace, size_t workspaceSize); /**< same as ZSTD_initStaticCCtx() */
ZSTDLIB_API size_t ZSTD_initCStream_srcSize(ZSTD_CStream* zcs, int compressionLevel, unsigned long long pledgedSrcSize); /**< pledgedSrcSize must be correct, a size of 0 means unknown. for a frame size of 0 use initCStream_advanced */
-ZSTDLIB_API size_t ZSTD_initCStream_usingDict(ZSTD_CStream* zcs, const void* dict, size_t dictSize, int compressionLevel); /**< creates of an internal CDict (incompatible with static CCtx), except if dict == NULL or dictSize < 8, in which case no dict is used. */
+ZSTDLIB_API size_t ZSTD_initCStream_usingDict(ZSTD_CStream* zcs, const void* dict, size_t dictSize, int compressionLevel); /**< creates of an internal CDict (incompatible with static CCtx), except if dict == NULL or dictSize < 8, in which case no dict is used. Note: dict is loaded with ZSTD_dm_auto (treated as a full zstd dictionary if it begins with ZSTD_MAGIC_DICTIONARY, else as raw content) and ZSTD_dlm_byCopy.*/
ZSTDLIB_API size_t ZSTD_initCStream_advanced(ZSTD_CStream* zcs, const void* dict, size_t dictSize,
- ZSTD_parameters params, unsigned long long pledgedSrcSize); /**< pledgedSrcSize is optional and can be 0 (meaning unknown). note: if the contentSizeFlag is set, pledgedSrcSize == 0 means the source size is actually 0 */
+ ZSTD_parameters params, unsigned long long pledgedSrcSize); /**< pledgedSrcSize is optional and can be 0 (meaning unknown). note: if the contentSizeFlag is set, pledgedSrcSize == 0 means the source size is actually 0. dict is loaded with ZSTD_dm_auto and ZSTD_dlm_byCopy. */
ZSTDLIB_API size_t ZSTD_initCStream_usingCDict(ZSTD_CStream* zcs, const ZSTD_CDict* cdict); /**< note : cdict will just be referenced, and must outlive compression session */
ZSTDLIB_API size_t ZSTD_initCStream_usingCDict_advanced(ZSTD_CStream* zcs, const ZSTD_CDict* cdict, ZSTD_frameParameters fParams, unsigned long long pledgedSrcSize); /**< same as ZSTD_initCStream_usingCDict(), with control over frame parameters */
@@ -741,12 +749,12 @@ ZSTDLIB_API size_t ZSTD_resetCStream(ZSTD_CStream* zcs, unsigned long long pledg
/*===== Advanced Streaming decompression functions =====*/
-typedef enum { DStream_p_maxWindowSize } ZSTD_DStreamParameter_e;
ZSTDLIB_API ZSTD_DStream* ZSTD_createDStream_advanced(ZSTD_customMem customMem);
ZSTDLIB_API ZSTD_DStream* ZSTD_initStaticDStream(void* workspace, size_t workspaceSize); /**< same as ZSTD_initStaticDCtx() */
-ZSTDLIB_API size_t ZSTD_setDStreamParameter(ZSTD_DStream* zds, ZSTD_DStreamParameter_e paramType, unsigned paramValue);
-ZSTDLIB_API size_t ZSTD_initDStream_usingDict(ZSTD_DStream* zds, const void* dict, size_t dictSize); /**< note: a dict will not be used if dict == NULL or dictSize < 8 */
-ZSTDLIB_API size_t ZSTD_initDStream_usingDDict(ZSTD_DStream* zds, const ZSTD_DDict* ddict); /**< note : ddict will just be referenced, and must outlive decompression session */
+typedef enum { DStream_p_maxWindowSize } ZSTD_DStreamParameter_e;
+ZSTDLIB_API size_t ZSTD_setDStreamParameter(ZSTD_DStream* zds, ZSTD_DStreamParameter_e paramType, unsigned paramValue); /* obsolete : this API will be removed in a future version */
+ZSTDLIB_API size_t ZSTD_initDStream_usingDict(ZSTD_DStream* zds, const void* dict, size_t dictSize); /**< note: no dictionary will be used if dict == NULL or dictSize < 8 */
+ZSTDLIB_API size_t ZSTD_initDStream_usingDDict(ZSTD_DStream* zds, const ZSTD_DDict* ddict); /**< note : ddict is referenced, it must outlive decompression session */
ZSTDLIB_API size_t ZSTD_resetDStream(ZSTD_DStream* zds); /**< re-use decompression parameters from previous init; saves dictionary loading */
@@ -754,8 +762,8 @@ ZSTDLIB_API size_t ZSTD_resetDStream(ZSTD_DStream* zds); /**< re-use decompress
* Buffer-less and synchronous inner streaming functions
*
* This is an advanced API, giving full control over buffer management, for users which need direct control over memory.
-* But it's also a complex one, with many restrictions (documented below).
-* Prefer using normal streaming API for an easier experience
+* But it's also a complex one, with several restrictions, documented below.
+* Prefer normal streaming API for an easier experience.
********************************************************************* */
/**
@@ -772,8 +780,8 @@ ZSTDLIB_API size_t ZSTD_resetDStream(ZSTD_DStream* zds); /**< re-use decompress
Then, consume your input using ZSTD_compressContinue().
There are some important considerations to keep in mind when using this advanced function :
- - ZSTD_compressContinue() has no internal buffer. It uses externally provided buffer only.
- - Interface is synchronous : input is consumed entirely and produce 1+ (or more) compressed blocks.
+ - ZSTD_compressContinue() has no internal buffer. It uses externally provided buffers only.
+ - Interface is synchronous : input is consumed entirely and produces 1+ compressed blocks.
- Caller must ensure there is enough space in `dst` to store compressed data under worst case scenario.
Worst case evaluation is provided by ZSTD_compressBound().
ZSTD_compressContinue() doesn't guarantee recover after a failed compression.
@@ -784,9 +792,9 @@ ZSTDLIB_API size_t ZSTD_resetDStream(ZSTD_DStream* zds); /**< re-use decompress
Finish a frame with ZSTD_compressEnd(), which will write the last block(s) and optional checksum.
It's possible to use srcSize==0, in which case, it will write a final empty block to end the frame.
- Without last block mark, frames will be considered unfinished (corrupted) by decoders.
+ Without last block mark, frames are considered unfinished (hence corrupted) by compliant decoders.
- `ZSTD_CCtx` object can be re-used (ZSTD_compressBegin()) to compress some new frame.
+ `ZSTD_CCtx` object can be re-used (ZSTD_compressBegin()) to compress again.
*/
/*===== Buffer-less streaming compression functions =====*/
@@ -809,40 +817,53 @@ ZSTDLIB_API size_t ZSTD_compressEnd(ZSTD_CCtx* cctx, void* dst, size_t dstCapaci
A ZSTD_DCtx object can be re-used multiple times.
First typical operation is to retrieve frame parameters, using ZSTD_getFrameHeader().
- It fills a ZSTD_frameHeader structure with important information to correctly decode the frame,
- such as minimum rolling buffer size to allocate to decompress data (`windowSize`),
- and the dictionary ID in use.
- (Note : content size is optional, it may not be present. 0 means : content size unknown).
- Note that these values could be wrong, either because of data malformation, or because an attacker is spoofing deliberate false information.
- As a consequence, check that values remain within valid application range, especially `windowSize`, before allocation.
- Each application can set its own limit, depending on local restrictions.
- For extended interoperability, it is recommended to support windowSize of at least 8 MB.
Frame header is extracted from the beginning of compressed frame, so providing only the frame's beginning is enough.
Data fragment must be large enough to ensure successful decoding.
- `ZSTD_frameHeaderSize_max` bytes is guaranteed to always be large enough.
+ `ZSTD_frameHeaderSize_max` bytes is guaranteed to always be large enough.
@result : 0 : successful decoding, the `ZSTD_frameHeader` structure is correctly filled.
>0 : `srcSize` is too small, please provide at least @result bytes on next attempt.
errorCode, which can be tested using ZSTD_isError().
- Start decompression, with ZSTD_decompressBegin().
+ It fills a ZSTD_frameHeader structure with important information to correctly decode the frame,
+ such as the dictionary ID, content size, or maximum back-reference distance (`windowSize`).
+ Note that these values could be wrong, either because of data corruption, or because a 3rd party deliberately spoofs false information.
+ As a consequence, check that values remain within valid application range.
+ For example, do not allocate memory blindly, check that `windowSize` is within expectation.
+ Each application can set its own limits, depending on local restrictions.
+ For extended interoperability, it is recommended to support `windowSize` of at least 8 MB.
+
+ ZSTD_decompressContinue() needs previous data blocks during decompression, up to `windowSize` bytes.
+ ZSTD_decompressContinue() is very sensitive to contiguity,
+ if 2 blocks don't follow each other, make sure that either the compressor breaks contiguity at the same place,
+ or that previous contiguous segment is large enough to properly handle maximum back-reference distance.
+ There are multiple ways to guarantee this condition.
+
+ The most memory efficient way is to use a round buffer of sufficient size.
+ Sufficient size is determined by invoking ZSTD_decodingBufferSize_min(),
+ which can @return an error code if required value is too large for current system (in 32-bits mode).
+ In a round buffer methodology, ZSTD_decompressContinue() decompresses each block next to previous one,
+ up to the moment there is not enough room left in the buffer to guarantee decoding another full block,
+ which maximum size is provided in `ZSTD_frameHeader` structure, field `blockSizeMax`.
+ At which point, decoding can resume from the beginning of the buffer.
+ Note that already decoded data stored in the buffer should be flushed before being overwritten.
+
+ There are alternatives possible, for example using two or more buffers of size `windowSize` each, though they consume more memory.
+
+ Finally, if you control the compression process, you can also ignore all buffer size rules,
+ as long as the encoder and decoder progress in "lock-step",
+ aka use exactly the same buffer sizes, break contiguity at the same place, etc.
+
+ Once buffers are setup, start decompression, with ZSTD_decompressBegin().
If decompression requires a dictionary, use ZSTD_decompressBegin_usingDict() or ZSTD_decompressBegin_usingDDict().
- Alternatively, you can copy a prepared context, using ZSTD_copyDCtx().
Then use ZSTD_nextSrcSizeToDecompress() and ZSTD_decompressContinue() alternatively.
ZSTD_nextSrcSizeToDecompress() tells how many bytes to provide as 'srcSize' to ZSTD_decompressContinue().
ZSTD_decompressContinue() requires this _exact_ amount of bytes, or it will fail.
- @result of ZSTD_decompressContinue() is the number of bytes regenerated within 'dst' (necessarily <= dstCapacity).
- It can be zero, which is not an error; it just means ZSTD_decompressContinue() has decoded some metadata item.
+ @result of ZSTD_decompressContinue() is the number of bytes regenerated within 'dst' (necessarily <= dstCapacity).
+ It can be zero : it just means ZSTD_decompressContinue() has decoded some metadata item.
It can also be an error code, which can be tested with ZSTD_isError().
- ZSTD_decompressContinue() needs previous data blocks during decompression, up to `windowSize`.
- They should preferably be located contiguously, prior to current block.
- Alternatively, a round buffer of sufficient size is also possible. Sufficient size is determined by frame parameters.
- ZSTD_decompressContinue() is very sensitive to contiguity,
- if 2 blocks don't follow each other, make sure that either the compressor breaks contiguity at the same place,
- or that previous contiguous segment is large enough to properly handle maximum back-reference.
-
A frame is fully decoded when ZSTD_nextSrcSizeToDecompress() returns zero.
Context can then be reset to start a new decompression.
@@ -852,75 +873,101 @@ ZSTDLIB_API size_t ZSTD_compressEnd(ZSTD_CCtx* cctx, void* dst, size_t dstCapaci
== Special case : skippable frames ==
Skippable frames allow integration of user-defined data into a flow of concatenated frames.
- Skippable frames will be ignored (skipped) by a decompressor. The format of skippable frames is as follows :
+ Skippable frames will be ignored (skipped) by decompressor.
+ The format of skippable frames is as follows :
a) Skippable frame ID - 4 Bytes, Little endian format, any value from 0x184D2A50 to 0x184D2A5F
b) Frame Size - 4 Bytes, Little endian format, unsigned 32-bits
c) Frame Content - any content (User Data) of length equal to Frame Size
- For skippable frames ZSTD_decompressContinue() always returns 0.
- For skippable frames ZSTD_getFrameHeader() returns fparamsPtr->windowLog==0 what means that a frame is skippable.
- Note : If fparamsPtr->frameContentSize==0, it is ambiguous: the frame might actually be a Zstd encoded frame with no content.
- For purposes of decompression, it is valid in both cases to skip the frame using
- ZSTD_findFrameCompressedSize to find its size in bytes.
- It also returns Frame Size as fparamsPtr->frameContentSize.
+ For skippable frames ZSTD_getFrameHeader() returns zfhPtr->frameType==ZSTD_skippableFrame.
+ For skippable frames ZSTD_decompressContinue() always returns 0 : it only skips the content.
*/
/*===== Buffer-less streaming decompression functions =====*/
typedef enum { ZSTD_frame, ZSTD_skippableFrame } ZSTD_frameType_e;
typedef struct {
- unsigned long long frameContentSize; /* ZSTD_CONTENTSIZE_UNKNOWN means this field is not available. 0 means "empty" */
+ unsigned long long frameContentSize; /* if == ZSTD_CONTENTSIZE_UNKNOWN, it means this field is not available. 0 means "empty" */
unsigned long long windowSize; /* can be very large, up to <= frameContentSize */
+ unsigned blockSizeMax;
ZSTD_frameType_e frameType; /* if == ZSTD_skippableFrame, frameContentSize is the size of skippable content */
unsigned headerSize;
unsigned dictID;
unsigned checksumFlag;
} ZSTD_frameHeader;
ZSTDLIB_API size_t ZSTD_getFrameHeader(ZSTD_frameHeader* zfhPtr, const void* src, size_t srcSize); /**< doesn't consume input */
+ZSTDLIB_API size_t ZSTD_decodingBufferSize_min(unsigned long long windowSize, unsigned long long frameContentSize); /**< when frame content size is not known, pass in frameContentSize == ZSTD_CONTENTSIZE_UNKNOWN */
+
ZSTDLIB_API size_t ZSTD_decompressBegin(ZSTD_DCtx* dctx);
ZSTDLIB_API size_t ZSTD_decompressBegin_usingDict(ZSTD_DCtx* dctx, const void* dict, size_t dictSize);
ZSTDLIB_API size_t ZSTD_decompressBegin_usingDDict(ZSTD_DCtx* dctx, const ZSTD_DDict* ddict);
-ZSTDLIB_API void ZSTD_copyDCtx(ZSTD_DCtx* dctx, const ZSTD_DCtx* preparedDCtx);
ZSTDLIB_API size_t ZSTD_nextSrcSizeToDecompress(ZSTD_DCtx* dctx);
ZSTDLIB_API size_t ZSTD_decompressContinue(ZSTD_DCtx* dctx, void* dst, size_t dstCapacity, const void* src, size_t srcSize);
+
+/* misc */
+ZSTDLIB_API void ZSTD_copyDCtx(ZSTD_DCtx* dctx, const ZSTD_DCtx* preparedDCtx);
typedef enum { ZSTDnit_frameHeader, ZSTDnit_blockHeader, ZSTDnit_block, ZSTDnit_lastBlock, ZSTDnit_checksum, ZSTDnit_skippableFrame } ZSTD_nextInputType_e;
ZSTDLIB_API ZSTD_nextInputType_e ZSTD_nextInputType(ZSTD_DCtx* dctx);
-/*=== New advanced API (experimental, and compression only) ===*/
+/* ============================================ */
+/** New advanced API (experimental) */
+/* ============================================ */
/* notes on API design :
- * In this proposal, parameters are pushed one by one into an existing CCtx,
+ * In this proposal, parameters are pushed one by one into an existing context,
* and then applied on all subsequent compression jobs.
* When no parameter is ever provided, CCtx is created with compression level ZSTD_CLEVEL_DEFAULT.
*
* This API is intended to replace all others experimental API.
* It can basically do all other use cases, and even new ones.
- * It stands a good chance to become "stable",
- * after a reasonable testing period.
+ * In constrast with _advanced() variants, it stands a reasonable chance to become "stable",
+ * after a good testing period.
*/
/* note on naming convention :
* Initially, the API favored names like ZSTD_setCCtxParameter() .
* In this proposal, convention is changed towards ZSTD_CCtx_setParameter() .
* The main driver is that it identifies more clearly the target object type.
- * It feels clearer in light of potential variants :
+ * It feels clearer when considering multiple targets :
* ZSTD_CDict_setParameter() (rather than ZSTD_setCDictParameter())
- * ZSTD_DCtx_setParameter() (rather than ZSTD_setDCtxParameter() )
- * Left variant feels easier to distinguish.
+ * ZSTD_CCtxParams_setParameter() (rather than ZSTD_setCCtxParamsParameter() )
+ * etc...
*/
/* note on enum design :
- * All enum will be manually set to explicit values before reaching "stable API" status */
+ * All enum will be pinned to explicit values before reaching "stable API" status */
typedef enum {
+ /* Question : should we have a format ZSTD_f_auto ?
+ * For the time being, it would mean exactly the same as ZSTD_f_zstd1.
+ * But, in the future, should several formats be supported,
+ * on the compression side, it would mean "default format".
+ * On the decompression side, it would mean "multi format",
+ * and ZSTD_f_zstd1 could be reserved to mean "accept *only* zstd frames".
+ * Since meaning is a little different, another option could be to define different enums for compression and decompression.
+ * This question could be kept for later, when there are actually multiple formats to support,
+ * but there is also the question of pinning enum values, and pinning value `0` is especially important */
+ ZSTD_f_zstd1 = 0, /* zstd frame format, specified in zstd_compression_format.md (default) */
+ ZSTD_f_zstd1_magicless, /* Variant of zstd frame format, without initial 4-bytes magic number.
+ * Useful to save 4 bytes per generated frame.
+ * Decoder cannot recognise automatically this format, requiring instructions. */
+} ZSTD_format_e;
+
+typedef enum {
+ /* compression format */
+ ZSTD_p_format = 10, /* See ZSTD_format_e enum definition.
+ * Cast selected format as unsigned for ZSTD_CCtx_setParameter() compatibility. */
+
/* compression parameters */
ZSTD_p_compressionLevel=100, /* Update all compression parameters according to pre-defined cLevel table
* Default level is ZSTD_CLEVEL_DEFAULT==3.
* Special: value 0 means "do not change cLevel". */
ZSTD_p_windowLog, /* Maximum allowed back-reference distance, expressed as power of 2.
* Must be clamped between ZSTD_WINDOWLOG_MIN and ZSTD_WINDOWLOG_MAX.
- * Special: value 0 means "do not change windowLog". */
+ * Special: value 0 means "do not change windowLog".
+ * Note: Using a window size greater than ZSTD_MAXWINDOWSIZE_DEFAULT (default: 2^27)
+ * requires setting the maximum window size at least as large during decompression. */
ZSTD_p_hashLog, /* Size of the probe table, as a power of 2.
* Resulting table size is (1 << (hashLog+2)).
* Must be clamped between ZSTD_HASHLOG_MIN and ZSTD_HASHLOG_MAX.
@@ -959,12 +1006,6 @@ typedef enum {
ZSTD_p_checksumFlag, /* A 32-bits checksum of content is written at end of frame (default:0) */
ZSTD_p_dictIDFlag, /* When applicable, dictID of dictionary is provided in frame header (default:1) */
- /* dictionary parameters (must be set before ZSTD_CCtx_loadDictionary) */
- ZSTD_p_dictMode=300, /* Select how dictionary content must be interpreted. Value must be from type ZSTD_dictMode_e.
- * default : 0==auto : dictionary will be "full" if it respects specification, otherwise it will be "rawContent" */
- ZSTD_p_refDictContent, /* Dictionary content will be referenced, instead of copied (default:0==byCopy).
- * It requires that dictionary buffer outlives its users */
-
/* multi-threading parameters */
ZSTD_p_nbThreads=400, /* Select how many threads a compression job can spawn (default:1)
* More threads improve speed, but also increase memory usage.
@@ -980,6 +1021,35 @@ typedef enum {
/* advanced parameters - may not remain available after API update */
ZSTD_p_forceMaxWindow=1100, /* Force back-reference distances to remain < windowSize,
* even when referencing into Dictionary content (default:0) */
+ ZSTD_p_enableLongDistanceMatching=1200, /* Enable long distance matching.
+ * This parameter is designed to improve the compression
+ * ratio for large inputs with long distance matches.
+ * This increases the memory usage as well as window size.
+ * Note: setting this parameter sets all the LDM parameters
+ * as well as ZSTD_p_windowLog. It should be set after
+ * ZSTD_p_compressionLevel and before ZSTD_p_windowLog and
+ * other LDM parameters. Setting the compression level
+ * after this parameter overrides the window log, though LDM
+ * will remain enabled until explicitly disabled. */
+ ZSTD_p_ldmHashLog, /* Size of the table for long distance matching, as a power of 2.
+ * Larger values increase memory usage and compression ratio, but decrease
+ * compression speed.
+ * Must be clamped between ZSTD_HASHLOG_MIN and ZSTD_HASHLOG_MAX
+ * (default: windowlog - 7). */
+ ZSTD_p_ldmMinMatch, /* Minimum size of searched matches for long distance matcher.
+ * Larger/too small values usually decrease compression ratio.
+ * Must be clamped between ZSTD_LDM_MINMATCH_MIN
+ * and ZSTD_LDM_MINMATCH_MAX (default: 64). */
+ ZSTD_p_ldmBucketSizeLog, /* Log size of each bucket in the LDM hash table for collision resolution.
+ * Larger values usually improve collision resolution but may decrease
+ * compression speed.
+ * The maximum value is ZSTD_LDM_BUCKETSIZELOG_MAX (default: 3). */
+ ZSTD_p_ldmHashEveryLog, /* Frequency of inserting/looking up entries in the LDM hash table.
+ * The default is MAX(0, (windowLog - ldmHashLog)) to
+ * optimize hash table usage.
+ * Larger values improve compression speed. Deviating far from the
+ * default value will likely result in a decrease in compression ratio.
+ * Must be clamped between 0 and ZSTD_WINDOWLOG_MAX - ZSTD_HASHLOG_MIN. */
} ZSTD_cParameter;
@@ -1007,14 +1077,22 @@ ZSTDLIB_API size_t ZSTD_CCtx_setPledgedSrcSize(ZSTD_CCtx* cctx, unsigned long lo
* @result : 0, or an error code (which can be tested with ZSTD_isError()).
* Special : Adding a NULL (or 0-size) dictionary invalidates any previous dictionary,
* meaning "return to no-dictionary mode".
- * Note 1 : `dict` content will be copied internally,
- * except if ZSTD_p_refDictContent is set before loading.
+ * Note 1 : `dict` content will be copied internally. Use
+ * ZSTD_CCtx_loadDictionary_byReference() to reference dictionary
+ * content instead. The dictionary buffer must then outlive its
+ * users.
* Note 2 : Loading a dictionary involves building tables, which are dependent on compression parameters.
* For this reason, compression parameters cannot be changed anymore after loading a dictionary.
* It's also a CPU-heavy operation, with non-negligible impact on latency.
* Note 3 : Dictionary will be used for all future compression jobs.
- * To return to "no-dictionary" situation, load a NULL dictionary */
+ * To return to "no-dictionary" situation, load a NULL dictionary
+ * Note 5 : Use ZSTD_CCtx_loadDictionary_advanced() to select how dictionary
+ * content will be interpreted.
+ */
ZSTDLIB_API size_t ZSTD_CCtx_loadDictionary(ZSTD_CCtx* cctx, const void* dict, size_t dictSize);
+ZSTDLIB_API size_t ZSTD_CCtx_loadDictionary_byReference(ZSTD_CCtx* cctx, const void* dict, size_t dictSize);
+ZSTDLIB_API size_t ZSTD_CCtx_loadDictionary_advanced(ZSTD_CCtx* cctx, const void* dict, size_t dictSize, ZSTD_dictLoadMethod_e dictLoadMethod, ZSTD_dictMode_e dictMode);
+
/*! ZSTD_CCtx_refCDict() :
* Reference a prepared dictionary, to be used for all next compression jobs.
@@ -1040,23 +1118,26 @@ ZSTDLIB_API size_t ZSTD_CCtx_refCDict(ZSTD_CCtx* cctx, const ZSTD_CDict* cdict);
* Note 1 : Prefix buffer is referenced. It must outlive compression job.
* Note 2 : Referencing a prefix involves building tables, which are dependent on compression parameters.
* It's a CPU-heavy operation, with non-negligible impact on latency.
- * Note 3 : it's possible to alter ZSTD_p_dictMode using ZSTD_CCtx_setParameter() */
+ * Note 3 : By default, the prefix is treated as raw content
+ * (ZSTD_dm_rawContent). Use ZSTD_CCtx_refPrefix_advanced() to alter
+ * dictMode. */
ZSTDLIB_API size_t ZSTD_CCtx_refPrefix(ZSTD_CCtx* cctx, const void* prefix, size_t prefixSize);
+ZSTDLIB_API size_t ZSTD_CCtx_refPrefix_advanced(ZSTD_CCtx* cctx, const void* prefix, size_t prefixSize, ZSTD_dictMode_e dictMode);
typedef enum {
ZSTD_e_continue=0, /* collect more data, encoder transparently decides when to output result, for optimal conditions */
ZSTD_e_flush, /* flush any data provided so far - frame will continue, future data can still reference previous data for better compression */
- ZSTD_e_end /* flush any remaining data and ends current frame. Any future compression starts a new frame. */
+ ZSTD_e_end /* flush any remaining data and close current frame. Any additional data starts a new frame. */
} ZSTD_EndDirective;
/*! ZSTD_compress_generic() :
* Behave about the same as ZSTD_compressStream. To note :
* - Compression parameters are pushed into CCtx before starting compression, using ZSTD_CCtx_setParameter()
* - Compression parameters cannot be changed once compression is started.
- * - *dstPos must be <= dstCapacity, *srcPos must be <= srcSize
- * - *dspPos and *srcPos will be updated. They are guaranteed to remain below their respective limit.
+ * - outpot->pos must be <= dstCapacity, input->pos must be <= srcSize
+ * - outpot->pos and input->pos will be updated. They are guaranteed to remain below their respective limit.
* - @return provides the minimum amount of data still to flush from internal buffers
* or an error code, which can be tested using ZSTD_isError().
* if @return != 0, flush is not fully completed, there is some data left within internal buffers.
@@ -1075,6 +1156,7 @@ ZSTDLIB_API size_t ZSTD_compress_generic (ZSTD_CCtx* cctx,
* Useful after an error, or to interrupt an ongoing compression job and start a new one.
* Any internal data not yet flushed is cancelled.
* Dictionary (if any) is dropped.
+ * All parameters are back to default values.
* It's possible to modify compression parameters after a reset.
*/
ZSTDLIB_API void ZSTD_CCtx_reset(ZSTD_CCtx* cctx); /* Not ready yet ! */
@@ -1083,21 +1165,187 @@ ZSTDLIB_API void ZSTD_CCtx_reset(ZSTD_CCtx* cctx); /* Not ready yet ! */
/*! ZSTD_compress_generic_simpleArgs() :
* Same as ZSTD_compress_generic(),
* but using only integral types as arguments.
- * Argument list is larger and less expressive than ZSTD_{in,out}Buffer,
+ * Argument list is larger than ZSTD_{in,out}Buffer,
* but can be helpful for binders from dynamic languages
* which have troubles handling structures containing memory pointers.
*/
-size_t ZSTD_compress_generic_simpleArgs (
+ZSTDLIB_API size_t ZSTD_compress_generic_simpleArgs (
ZSTD_CCtx* cctx,
void* dst, size_t dstCapacity, size_t* dstPos,
const void* src, size_t srcSize, size_t* srcPos,
ZSTD_EndDirective endOp);
+/*! ZSTD_CCtx_params :
+ * Quick howto :
+ * - ZSTD_createCCtxParams() : Create a ZSTD_CCtx_params structure
+ * - ZSTD_CCtxParam_setParameter() : Push parameters one by one into
+ * an existing ZSTD_CCtx_params structure.
+ * This is similar to
+ * ZSTD_CCtx_setParameter().
+ * - ZSTD_CCtx_setParametersUsingCCtxParams() : Apply parameters to
+ * an existing CCtx.
+ * These parameters will be applied to
+ * all subsequent compression jobs.
+ * - ZSTD_compress_generic() : Do compression using the CCtx.
+ * - ZSTD_freeCCtxParams() : Free the memory.
+ *
+ * This can be used with ZSTD_estimateCCtxSize_advanced_usingCCtxParams()
+ * for static allocation for single-threaded compression.
+ */
+ZSTDLIB_API ZSTD_CCtx_params* ZSTD_createCCtxParams(void);
-/**
- Block functions
+/*! ZSTD_resetCCtxParams() :
+ * Reset params to default, with the default compression level.
+ */
+ZSTDLIB_API size_t ZSTD_resetCCtxParams(ZSTD_CCtx_params* params);
+
+/*! ZSTD_initCCtxParams() :
+ * Initializes the compression parameters of cctxParams according to
+ * compression level. All other parameters are reset to their default values.
+ */
+ZSTDLIB_API size_t ZSTD_initCCtxParams(ZSTD_CCtx_params* cctxParams, int compressionLevel);
+
+/*! ZSTD_initCCtxParams_advanced() :
+ * Initializes the compression and frame parameters of cctxParams according to
+ * params. All other parameters are reset to their default values.
+ */
+ZSTDLIB_API size_t ZSTD_initCCtxParams_advanced(ZSTD_CCtx_params* cctxParams, ZSTD_parameters params);
+
+ZSTDLIB_API size_t ZSTD_freeCCtxParams(ZSTD_CCtx_params* params);
+
+/*! ZSTD_CCtxParam_setParameter() :
+ * Similar to ZSTD_CCtx_setParameter.
+ * Set one compression parameter, selected by enum ZSTD_cParameter.
+ * Parameters must be applied to a ZSTD_CCtx using ZSTD_CCtx_setParametersUsingCCtxParams().
+ * Note : when `value` is an enum, cast it to unsigned for proper type checking.
+ * @result : 0, or an error code (which can be tested with ZSTD_isError()).
+ */
+ZSTDLIB_API size_t ZSTD_CCtxParam_setParameter(ZSTD_CCtx_params* params, ZSTD_cParameter param, unsigned value);
+
+/*! ZSTD_CCtx_setParametersUsingCCtxParams() :
+ * Apply a set of ZSTD_CCtx_params to the compression context.
+ * This must be done before the dictionary is loaded.
+ * The pledgedSrcSize is treated as unknown.
+ * Multithreading parameters are applied only if nbThreads > 1.
+ */
+ZSTDLIB_API size_t ZSTD_CCtx_setParametersUsingCCtxParams(
+ ZSTD_CCtx* cctx, const ZSTD_CCtx_params* params);
+
+
+/*=== Advanced parameters for decompression API ===*/
+
+/* The following parameters must be set after creating a ZSTD_DCtx* (or ZSTD_DStream*) object,
+ * but before starting decompression of a frame.
+ */
+
+/*! ZSTD_DCtx_loadDictionary() :
+ * Create an internal DDict from dict buffer,
+ * to be used to decompress next frames.
+ * @result : 0, or an error code (which can be tested with ZSTD_isError()).
+ * Special : Adding a NULL (or 0-size) dictionary invalidates any previous dictionary,
+ * meaning "return to no-dictionary mode".
+ * Note 1 : `dict` content will be copied internally.
+ * Use ZSTD_DCtx_loadDictionary_byReference()
+ * to reference dictionary content instead.
+ * In which case, the dictionary buffer must outlive its users.
+ * Note 2 : Loading a dictionary involves building tables,
+ * which has a non-negligible impact on CPU usage and latency.
+ * Note 3 : Use ZSTD_DCtx_loadDictionary_advanced() to select
+ * how dictionary content will be interpreted and loaded.
+ */
+ZSTDLIB_API size_t ZSTD_DCtx_loadDictionary(ZSTD_DCtx* dctx, const void* dict, size_t dictSize); /* not implemented */
+ZSTDLIB_API size_t ZSTD_DCtx_loadDictionary_byReference(ZSTD_DCtx* dctx, const void* dict, size_t dictSize); /* not implemented */
+ZSTDLIB_API size_t ZSTD_DCtx_loadDictionary_advanced(ZSTD_DCtx* dctx, const void* dict, size_t dictSize, ZSTD_dictLoadMethod_e dictLoadMethod, ZSTD_dictMode_e dictMode); /* not implemented */
+
+
+/*! ZSTD_DCtx_refDDict() :
+ * Reference a prepared dictionary, to be used to decompress next frames.
+ * The dictionary remains active for decompression of future frames using same DCtx.
+ * @result : 0, or an error code (which can be tested with ZSTD_isError()).
+ * Note 1 : Currently, only one dictionary can be managed.
+ * Referencing a new dictionary effectively "discards" any previous one.
+ * Special : adding a NULL DDict means "return to no-dictionary mode".
+ * Note 2 : DDict is just referenced, its lifetime must outlive its usage from DCtx.
+ */
+ZSTDLIB_API size_t ZSTD_DCtx_refDDict(ZSTD_DCtx* dctx, const ZSTD_DDict* ddict); /* not implemented */
+
+
+/*! ZSTD_DCtx_refPrefix() :
+ * Reference a prefix (single-usage dictionary) for next compression job.
+ * Prefix is **only used once**. It must be explicitly referenced before each frame.
+ * If there is a need to use same prefix multiple times, consider embedding it into a ZSTD_DDict instead.
+ * @result : 0, or an error code (which can be tested with ZSTD_isError()).
+ * Note 1 : Adding any prefix (including NULL) invalidates any previously set prefix or dictionary
+ * Note 2 : Prefix buffer is referenced. It must outlive compression job.
+ * Note 3 : By default, the prefix is treated as raw content (ZSTD_dm_rawContent).
+ * Use ZSTD_CCtx_refPrefix_advanced() to alter dictMode.
+ * Note 4 : Referencing a raw content prefix has almost no cpu nor memory cost.
+ */
+ZSTDLIB_API size_t ZSTD_DCtx_refPrefix(ZSTD_DCtx* dctx, const void* prefix, size_t prefixSize); /* not implemented */
+ZSTDLIB_API size_t ZSTD_DCtx_refPrefix_advanced(ZSTD_DCtx* dctx, const void* prefix, size_t prefixSize, ZSTD_dictMode_e dictMode); /* not implemented */
+
+
+/*! ZSTD_DCtx_setMaxWindowSize() :
+ * Refuses allocating internal buffers for frames requiring a window size larger than provided limit.
+ * This is useful to prevent a decoder context from reserving too much memory for itself (potential attack scenario).
+ * This parameter is only useful in streaming mode, since no internal buffer is allocated in direct mode.
+ * By default, a decompression context accepts all window sizes <= (1 << ZSTD_WINDOWLOG_MAX)
+ * @return : 0, or an error code (which can be tested using ZSTD_isError()).
+ */
+ZSTDLIB_API size_t ZSTD_DCtx_setMaxWindowSize(ZSTD_DCtx* dctx, size_t maxWindowSize);
+
+
+/*! ZSTD_DCtx_setFormat() :
+ * Instruct the decoder context about what kind of data to decode next.
+ * This instruction is mandatory to decode data without a fully-formed header,
+ * such ZSTD_f_zstd1_magicless for example.
+ * @return : 0, or an error code (which can be tested using ZSTD_isError()).
+ */
+ZSTDLIB_API size_t ZSTD_DCtx_setFormat(ZSTD_DCtx* dctx, ZSTD_format_e format);
+
+
+/*! ZSTD_decompress_generic() :
+ * Behave the same as ZSTD_decompressStream.
+ * Decompression parameters cannot be changed once decompression is started.
+ * @return : an error code, which can be tested using ZSTD_isError()
+ * if >0, a hint, nb of expected input bytes for next invocation.
+ * `0` means : a frame has just been fully decoded and flushed.
+ */
+ZSTDLIB_API size_t ZSTD_decompress_generic(ZSTD_DCtx* dctx,
+ ZSTD_outBuffer* output,
+ ZSTD_inBuffer* input);
+
+
+/*! ZSTD_decompress_generic_simpleArgs() :
+ * Same as ZSTD_decompress_generic(),
+ * but using only integral types as arguments.
+ * Argument list is larger than ZSTD_{in,out}Buffer,
+ * but can be helpful for binders from dynamic languages
+ * which have troubles handling structures containing memory pointers.
+ */
+ZSTDLIB_API size_t ZSTD_decompress_generic_simpleArgs (
+ ZSTD_DCtx* dctx,
+ void* dst, size_t dstCapacity, size_t* dstPos,
+ const void* src, size_t srcSize, size_t* srcPos);
+
+
+/*! ZSTD_DCtx_reset() :
+ * Return a DCtx to clean state.
+ * If a decompression was ongoing, any internal data not yet flushed is cancelled.
+ * All parameters are back to default values, including sticky ones.
+ * Dictionary (if any) is dropped.
+ * Parameters can be modified again after a reset.
+ */
+ZSTDLIB_API void ZSTD_DCtx_reset(ZSTD_DCtx* dctx);
+
+
+
+/* ============================ */
+/** Block level API */
+/* ============================ */
+/*!
Block functions produce and decode raw zstd blocks, without frame metadata.
Frame metadata cost is typically ~18 bytes, which can be non-negligible for very small blocks (< 100 bytes).
User will have to take in charge required information to regenerate data, such as compressed and content sizes.
@@ -1109,7 +1357,7 @@ size_t ZSTD_compress_generic_simpleArgs (
+ compression : any ZSTD_compressBegin*() variant, including with dictionary
+ decompression : any ZSTD_decompressBegin*() variant, including with dictionary
+ copyCCtx() and copyDCtx() can be used too
- - Block size is limited, it must be <= ZSTD_getBlockSize() <= ZSTD_BLOCKSIZE_MAX
+ - Block size is limited, it must be <= ZSTD_getBlockSize() <= ZSTD_BLOCKSIZE_MAX == 128 KB
+ If input is larger than a block size, it's necessary to split input data into multiple blocks
+ For inputs larger than a single block size, consider using the regular ZSTD_compress() instead.
Frame metadata is not that costly, and quickly becomes negligible as source size grows larger.
@@ -1128,7 +1376,7 @@ size_t ZSTD_compress_generic_simpleArgs (
ZSTDLIB_API size_t ZSTD_getBlockSize (const ZSTD_CCtx* cctx);
ZSTDLIB_API size_t ZSTD_compressBlock (ZSTD_CCtx* cctx, void* dst, size_t dstCapacity, const void* src, size_t srcSize);
ZSTDLIB_API size_t ZSTD_decompressBlock(ZSTD_DCtx* dctx, void* dst, size_t dstCapacity, const void* src, size_t srcSize);
-ZSTDLIB_API size_t ZSTD_insertBlock(ZSTD_DCtx* dctx, const void* blockStart, size_t blockSize); /**< insert block into `dctx` history. Useful for uncompressed blocks */
+ZSTDLIB_API size_t ZSTD_insertBlock(ZSTD_DCtx* dctx, const void* blockStart, size_t blockSize); /**< insert uncompressed block into `dctx` history. Useful for multi-blocks decompression */
#endif /* ZSTD_H_ZSTD_STATIC_LINKING_ONLY */